ARMORED CORE VI アップデート
tag: game, armored-core-6
1章BAWS第2工廠調査でしばらくつまって放置していたけど。 キーボード&マウスから箱コントローラに入力デバイスを変更してなんとか突破。 WASD移動しながらその左側にあるShift/Ctrl/Tab押すの無理w
難易度調整が入ってゲーム序盤に入手できるライフル系の武器が強化された&1章最後の(パーツが揃っていない1週目なら本ゲーム最強と噂される)ボスが弱くなったと聞いて再チャレンジ。
なんとか2章まで進むことができたよw
ミッションの再プレイすると安定して勝てるボスってあんま居ない
p.s. 9/17
まだ2章の最初のスマートクリーナー戦で詰まり中。 これ肩レーザーキャノンとか肩グレネードキャノンみたいなのが欲しくなるな...。 そんなわけでパーツ買うために過去ミッションやって稼ぎ中。
最近は過去ミッションのボスは倒せるようになってきた。 腕が良くなったわけではなくて装備が良くなったからだな。
MA-J-200 RANSETSU-RF の2丁持ちが最近のお気に入り。 MA-J-200 RANSETSU-RF は発射間隔の長いライフルだけど2丁交互に撃つと初期装備フルオートライフルの RF-024 TURNER と発射間隔が似てくるのでいい感じに撃ててスタッガーが取りやすい。 ライフルはスマートクリーナーみたいな短い攻撃チャンスに特定の箇所を狙って大ダメージを与えないといけないボスには向かないけど。
スマートクリーナー戦の不満は垂直ミサイルが何故かほぼ無効なこと。 上から煙突の中を攻撃するボスなんだからこれこそ垂直ミサイルの出番じゃないのか。
結局、プラズマレーザーライフル Vvc-760PR , グレネード IRIDIUM , ミサイル BML-G1/P20MLT-04 , グレネードキャノン SONGBIRDS という 大火力セットにしてスマートクリーナー倒した。 最初は飛び上がって煙突の中を攻撃。 大火力系の武器は2足空中で使うとポーズを取っている間滞空時間が延びるのでこの場合はお得。 スタッガー取ったら着地して正面の赤い所を攻撃。 敵が重装甲で動きが遅いから弾速ゆっくり大火力武器が生きる。
コロコロベンチマーク
tag: コロコロ
コロコロこと粘着式クリーナーのロールを各種買ってみたので比較ベンチマークしたい。
全部使ってみた結果が以下。
無印良品のロールは1巻99円で90枚と安いんだけど使い勝手は最悪で草。
トップバリュよりもダメって色々問題がある気がするが...。
キリトリ線型はキリトリ線でのカットに失敗するとダメージが大きいのである程度紙の強度が必要になるため紙が厚く1ロール40〜45枚が限界ってところか。
斜め螺旋型は紙が最初から切れているので紙の強度はそれほど必要なく紙を薄くできて1ロール90枚が達成できる感じ。
方式的には斜め螺旋型の圧勝でキリトリ線型は淘汰されそうなものだがロールを柔らかくしてフローリングにも対応などで対抗しているように見える。
セクシーでなきゃダメ
www
ヨーロッパで開催されたなんかの環境会議で、隣に座っていたヨーロッパ系のおばあちゃん議員が「環境問題の解決策はセクシーでなきゃダメ」って繰り返し主張していたのを受けて進次郎が「セクシーに、ですよね」みたいな感じで話を受けたのがセクシー騒動の元ネタで、報道で気の毒な切り取り方されてたけど。
当時はセクシーの意味がわからなかったが、上のツイートを見て納得www
なるほどセクシーの訴求力は凄い。あのおばあちゃん議員が言ってた意味がやっとわかったよ。
ARMORED CORE VI 購入
tag: game, armored-core-6
10年ぶりの祭りらしいので購入。
この手の難しいゲームはすぐ投げちゃうんだけどw
過去シリーズはやったことないけどゲームパッド(箱コン)でできるのだろうか? → パッドも選択できる様子。
今回はキーボードとマウスで遊んでみる。
チュートリアルのヘリってこれかw 10回近くやられたゾww
本編が始まってからのミッション2個くらいはボスとかでてこなくて普通。 ミッションクリア後、もう1回やってみたら報酬も出た。(無限に金策はできないだろうが...。→できるらしい) これでやっとパーツが買える。
p.s.
まだ1章の壁超えを通過したあたり。
HashiCorp (terraformなど) 今後リリースする全製品のライセンスをBSL 1.1 に変更
tag: terraform, vagrant
MongoDBと同じライセンスにするようだ。
emacs と wanderlust でメールを表示する
tag: emacs, wanderlust, mail, freebsd-13.2, freebsd
■ WanderLust のインストール
(require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
■ WanderLust の設定
(autoload 'wl "wl" "Wanderlust" t)
# # Folder definition file # # IMAP folder %INBOX %INBOX.inbox2 %INBOX.trash # end of file.
(setq wl-from "Jun Obama <george@yk.rim.or.jp>") ;; デフォルトの接続先サーバを指定。 (setq elmo-imap4-default-server "localhost") (setq elmo-pop3-default-server "localhost") (setq wl-smtp-posting-server "localhost") (setq elmo-nntp-default-server "localhost") (setq wl-nntp-posting-server elmo-nntp-default-server) ;; 認証時の暗号化を設定。ここでは生パスワードを指定。 (setq elmo-imap4-default-authenticate-type 'clear) ; 生パスワード ;; aliasファイルの指定 (setq wl-alias-file "~/aliases")
■ WanderLust の起動
■ 参考文献
FreeBSD用のvagrant box イメージ(Hyper-V)が無いゾ → freebsd公式boxイメージを使う
tag: vagrant, virtualbox, freebsd, freebsd-13.2, freebsd
genericさんの vagrant 用 box イメージ (Hyper-V) の更新が途絶えてしまったようだ。
久しぶりに FreeBSD 公式の virtualbox イメージを使う。
■環境
普通は Windows 上で VirtualBox を動かす場合は Hyper-V をOFFにしないといけない。
ただ VirtualBox も改良が進んでいて、Hyper-Vを有効にしたままでも一応 Guest OS が起動するくらいはするようになっているようだ。
仮想マシンの動作が遅くなるのでオススメはできないけど。
特に、ssh の X11Forwarding yes を使って Firefox とか Thunderbird を使おうとすると起動中にハングするほど重くなるので注意。 emacsならX11Forwarding経由で起動できるけど。
■Vagrantfile
boxイメージのディスク容量が足りないので追加ディスクを指定している。
Vagrant.configure("2") do |config| config.vm.box = "freebsd/FreeBSD-13.2-RELEASE" config.vm.box_version = "2023.04.07" # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. config.vm.box_check_update = false config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [ ".git/" ] config.vm.boot_timeout = 800 config.ssh.shell = "sh" # freebsd64 config.vm.define "freebsd64" do |master1| master1.vm.hostname = "freebsd64.area54.local" master1.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "6000"] vb.customize ["modifyvm", :id, "--cpus", "2"] # add storage /dev/ada1 file_to_disk = "../vagranthdd/64-freebsd-ada1.vdi" unless File.exist?(file_to_disk) vb.customize ['createhd', '--filename', file_to_disk, '--size', 100 * 1024, '--format', 'VDI'] # 100GB end vb.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 0, '--device', 1, '--type', 'hdd', '--medium', file_to_disk] # add storage /dev/ada2 file_to_disk = "../vagranthdd/64-freebsd-ada2.vdi" unless File.exist?(file_to_disk) vb.customize ['createhd', '--filename', file_to_disk, '--size', 100 * 1024, '--format', 'VDI'] # 100GB end vb.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] end # PROXY設定を環境変数PROXY_SERV_PORT,PROXY_USER,PROXY_PASSから読み込んでVM側に持ち込む # https://qiita.com/hakomikan/items/860bb960699889849933 Vagrantfile をコミットするために - Qiita master1.vm.provision "export env", type: "shell", run: "always", privileged: true, inline: <<-SHELL mkdir -p /etc/profile.d echo "# vagrant script for every boot" > /etc/profile.d/vagrant.sh echo export VBOX_HOST_NAME=freebsd64 >> /etc/profile.d/vagrant.sh echo export VBOX_FIXED_IP_ADDR=192.168.54.64 >> /etc/profile.d/vagrant.sh echo export PROXY_SERV_PORT=#{ENV['PROXY_SERV_PORT']} >> /etc/profile.d/vagrant.sh echo export PROXY_USER=#{ENV['PROXY_USER']} >> /etc/profile.d/vagrant.sh echo export PROXY_PASS=#{ENV['PROXY_PASS']} >> /etc/profile.d/vagrant.sh echo export PROXY_SKIP=#{ENV['PROXY_SKIP']} >> /etc/profile.d/vagrant.sh echo export http_proxy=#{ENV['http_proxy']} >> /etc/profile.d/vagrant.sh echo export https_proxy=#{ENV['https_proxy']} >> /etc/profile.d/vagrant.sh echo export no_proxy=#{ENV['no_proxy']} >> /etc/profile.d/vagrant.sh echo "export ADDITIONAL_ETC_HOSTS_1=\\"#{ENV['ADDITIONAL_ETC_HOSTS_1']}\\"" >> /etc/profile.d/vagrant.sh echo "export ADDITIONAL_ETC_HOSTS_2=\\"#{ENV['ADDITIONAL_ETC_HOSTS_2']}\\"" >> /etc/profile.d/vagrant.sh echo "export ADDITIONAL_ETC_HOSTS_3=\\"#{ENV['ADDITIONAL_ETC_HOSTS_3']}\\"" >> /etc/profile.d/vagrant.sh chmod +x /etc/profile.d/vagrant.sh SHELL # shell provisioner master1.vm.provision "shell", path: "setupscripts.sh" end end
■setupscripts.sh
セットアップスクリプトの中では追加ディスクをnewfsしたりzfs作ったりしている。
root(/)の容量が足りないので /usr とか /home とかは追加ディスクの中にコピーして使う。
#!/bin/sh set -e f_log() { echo "■ $(date) $@" } f_cmd_no_err() { if "$@" ; then echo -n "" else echo -n "" fi } f_log "環境変数読み込み" if [ -r /etc/profile.d/vagrant.sh ]; then . /etc/profile.d/vagrant.sh fi # IPアドレスのaliasを追加。 f_log "IPアドレスのaliasを追加" ifconfig em0 inet ${VBOX_FIXED_IP_ADDR}/24 alias # /etc/hosts設定 f_log "/etc/hosts設定" cat /etc/hosts | grep -v ${VBOX_HOST_NAME} > /etc/hosts.2 mv /etc/hosts.2 /etc/hosts echo "${VBOX_FIXED_IP_ADDR} ${VBOX_HOST_NAME}.hyperv.local ${VBOX_HOST_NAME}" >> /etc/hosts if [ ! -z "$ADDITIONAL_ETC_HOSTS_1" ]; then echo "$ADDITIONAL_ETC_HOSTS_1" >> /etc/hosts fi if [ ! -z "$ADDITIONAL_ETC_HOSTS_2" ]; then echo "$ADDITIONAL_ETC_HOSTS_2" >> /etc/hosts fi if [ ! -z "$ADDITIONAL_ETC_HOSTS_3" ]; then echo "$ADDITIONAL_ETC_HOSTS_3" >> /etc/hosts fi f_log "pkg アップデート" pkg update f_log "pkg アップグレード" pkg upgrade -y f_log "bashインストール" pkg install -y bash f_log "ansibleインストール py39-ansible" pkg install -y py39-ansible # ada1をufsでディスクをフォーマットして/newdiskとして使う(ada1) if true ; then if [ ! -d /newdisk ]; then f_log "fpart ada1 チェック" if gpart show ada1 | grep freebsd-ufs ; then f_log "gpart ada1 パーティション設定済み" else f_log "gpartディスク追加 ada1" # GPTを作成 gpart create -s GPT ada1 gpart show ada1 # ada1のほぼ全部をfreebsd-ufsで確保する gpart add -t freebsd-ufs -a 1M ada1 gpart show ada1 # ファイルシステムを作る newfs -U /dev/ada1p1 fi # マウントポイント作成 mkdir /newdisk # fstabに追記 echo "/dev/ada1p1 /newdisk ufs rw 2 2" >> /etc/fstab # マウント実行 mount /newdisk df -h fi fi # newdiskの中に /usr 以下と /home 以下をコピーしてそこを使う if true ; then if [ ! -d /newdisk/usr ] ; then mkdir -p /newdisk/usr OLD_PWD=$PWD cd /newdisk ( cd / ; tar cpf - usr ) | tar xpf - cd / /bin/mv /usr /usr.orig /bin/ln -sf /newdisk/usr /usr cd $OLD_PWD fi if [ ! -d /newdisk/home ] ; then mkdir -p /newdisk/home OLD_PWD=$PWD cd /newdisk ( cd / ; tar cpf - home ) | tar xpf - cd / /bin/mv /home /home.orig /bin/ln -sf /newdisk/home /home cd $OLD_PWD fi fi # ada2全体をzfsとして使用 (ada2) if true ; then if [ ! -d /zpool/rsync ]; then # zfs 有効化 echo 'zfs_enable="YES"' >> /etc/rc.conf # zfs service 開始 service zfs start # zpoolで1台のディスク ada2 全体を使用する echo "zpool create zpool /dev/ada2" zpool create zpool /dev/ada2 df -k zfs create zpool/vm zfs create zpool/rootdisk fi fi f_log "セットアップ完了" exit 0
NVIDIA GeForce Experience のオーバーレイ「alt + Z」のショートカットをオフにする方法
tag: geforce, nvidia, vscode
alt + Z は vscode でよく使うのでこのショートカットをオフにする方法をメモ。
ChatGPTのopenaiライブラリでchatのstreamモードを実装する
tag: chatgpt, openai
openai==0.27.8の話。
以前見た時よりストリームモード実装が簡単になっているような気がする...。
上に載っているサンプルコード。
# Example of an OpenAI ChatCompletion request with stream=True # https://platform.openai.com/docs/guides/chat # a ChatCompletion request response = openai.ChatCompletion.create( model='gpt-3.5-turbo', messages=[ {'role': 'user', 'content': "What's 1+1? Answer in one word."} ], temperature=0, stream=True # this time, we set stream=True ) for chunk in response: print(chunk)
for chunk in response のループにて、続々と到着するストリーミングモードのChatGPTの応答をchunkとして取り出して処理する形になっている。
日本語だとほぼ1文字ずつchunkとして送られてきててちょっとおもしろい。
Firefoxでキャッシュサイズを変更する方法
tag: firefox
diffusers ライブラリで EasyNegativeV2 みたいな補正を読み込む場合
tag: diffusers
a1111形式のtextual inversionの場合は以下のように記述する模様。
from diffusers import StableDiffusionPipeline import torch model_id = "runwayml/stable-diffusion-v1-5" pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda") pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2") prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details." image = pipe(prompt, num_inference_steps=50).images[0] image.save("character.png")
EasyNegativeV2.safetensorsの場合は以下。
第1引数にディレクトリ名を指定。 weight_nameには拡張子safetensorsを残してファイル名を指定。 tokenにはプロンプトで使う文字列を指定。
pipe.load_textual_inversion("./embeddings", weight_name="EasyNegativeV2.safetensors", token="EasyNegativeV2")
一応 seed 固定で実験してみると、絵の形が変わるので効いているっぽい雰囲気はある。
diffusers 0.19 あたりから safetensors 型式のモデル/VAE を読み込めるようになった
tag: diffusers
サンプルコードは以下。
from diffusers import StableDiffusionPipeline pipeline = StableDiffusionPipeline.from_single_file( "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors" )
また、VAEもsafetensors形式の読み込みに対応。
from diffusers import AutoencoderKL url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors" # can also be local file model = AutoencoderKL.from_single_file(url)
これで配布されているモデルデータをdiffusers形式にコンバートしなくても読み込めるようになった。
OpenAI GPT-4モデルのAPI利用を一般ユーザーに公開
tag: chatgpt, openai
8/1を目標に、OpenAI API契約ユーザーは順次利用可能になる予定とのこと。
ちなみにニュースを見て model="gpt-4" 指定してAPI発行してみたらモデルはありませんエラーが返ってきたので自分はまだらしい。
winget upgrade --all したら Node.js v21.0.0-nightly がインスコされて草
tag: winget, windows11, nodejs
nightly build が winget 公式に登録されているとは思わなかったぜ...。
EdgeブラウザのBingは現在表示中のWebページ内容をサーバに送信して回答を作る?
tag: edge, bing
ログインが必要な秘密のWebサイト(192.168.1.xx)を開いているときにEdgeブラウザのBingボタンを押す > 自動的に質問例として表示される「ニュースで何が起こっているの?」ボタンをクリックすると、現在閲覧中の秘密のWebサイト内容がAIによって「これは個人のメモです」って要約されてワロタw
そこはサーバに送って欲しくない所だったがなー
(全世界公開情報を開いている時なら便利な機能なんだけどね)
そういえば、ちょっと前にOpenAIのChatGPT-4のプラグインに Browse with Bing (Beta) ってのがあって(今は削除されてるけど)、これはログインが必要な秘密のWebページ内容をEdge Bingが代わりに取得してサーバに送信してしまう問題が指摘されたヤツ。
OpenAI Webサイト側の ChatGPT-4 のプラグインは消去されたけど、Edge Bing側にはまだAIからの返事の中にある Function Call 要求に応じて<閲覧中のWebページの内容を送信する>みたいな機能が残ってるとすれば、この動作にも納得できるかな。
EdgeのBingは封印しておこう。 ダメだこいつ。
p.s.
ChatGPT-3.5/4のFunction Call機能とは、AIへの問い合わせAPIの中に質問文と共に<私(呼び出し元のプログラム)はget_user_browsing_web_page関数を持っています。機能はこれで引数はこれこれです。>みたいな情報を英語で持たせておくと、AI側が会話の流れを読んで必要ならFunction Call: get_user_browsing_web_page 実行ヨロシク!と返却する機能。 呼び出し元プログラムは、返却結果にFunction Call: 関数名 が来たら、プログラムの中の該当する関数を呼び出して処理結果をもう一度 AI側に送信して、それらの結果をあわせてAI側が最終結果を返す動きをする。
今回は「ニュースはなに?」って聞かれたAIがキョドって「ユーザーが見ているWebページの内容を取得」関数を呼び出す返事をして Edge Bing がそれに答えてデータを送信したって感じかな。
twitter不調というか表示数制限発動らしい
認証済み、っていうのは多分有料会員のことかな。
背景としては、twitter API(ツイート内容取得)の料金値上げ → 業者は昔ながらのWebクローリングで情報取得 → ログインしないとツイート内容を表示しないように変更 → 業者は捨て垢新規登録してWebクローリングで情報取得 → 無料垢からの取得件数を600件に制限、新規垢は300件に制限、という流れらしい。
異説としてtwitter社内のプログラムが無限ループしてた説もある。
また、別の説としてGCPで実現してたスクレイピングに対する高度なレート制限が、契約更新で揉めて今月から使えなくなったんじゃないか疑惑もあるようだ。
→ 06/22に支払い再開という記事があったので、この説はとりあえずナシかな?
p.s.
そういえば先日スパムポリシー違反とか言って制限してたな。 2回いいねしたらtwitterそっ閉じする暮らしに変えた。
p.p.s.
ちょっと緩和する予定らしい。(いつから緩和するのかは不明)
一般人が600件もツイート見るか?という話だが、twitterクライアントは起動時に50件くらいオススメから(フォローからも別途50件くらい)ツイート内容を取得するので人間はそんなに見ていないつもりでも1時間程度操作しているとAPI制限がかかる模様。
p.p.p.s.
0300ごろ。pawoo.net落ちたっぽい
0745ごろ。misskey.ioは過去最高の同時接続4万を突破。
0845ごろ。mstdn.jp落ちたっぽい。
0900ごろ。misskey.ioはDB鯖増やしてるけどそのうち落ちそう