2020/04/26 にっき
弊社、Snap cameraブームがおきているが当方Linuxなので試せず
ということでこれを試すことにする
これが必要
あとminicondaも必要
いれる
% yay -Ss v4l2loopback aur/v4l2loopback-dkms-git 0.12.4.r0.g9bd5553-1 (+12 1.12%) v4l2-loopback device aur/v4l2loopback-dkms 0.12.5-1 (+38 4.89%) v4l2-loopback device % yay -S v4l2loopback-dkms % yay -Ss miniconda aur/miniconda3 4.8.2-1 (+19 0.09%) Mini version of Anaconda Python distribution. % yay -S miniconda3 % echo "[ -f /opt/miniconda3/etc/profile.d/conda.sh ] && source /opt/miniconda3/etc/profile.d/conda.sh" >> ~/.zshrc
確認する
% dkms status v4l2loopback, 0.12.5, 5.6.7-arch1-1, x86_64: installed % conda --version conda 4.8.2
avatarifyをダウンロード
% ghq get https://github.com/alievk/avatarify.git % cd ~/src/github.com/alievk/avatarify
インストールスクリプトを少し読む
% cat scripts/install.sh #!/usr/bin/env bash source scripts/settings.sh # v4l2loopback rm -rf v4l2loopback 2> /dev/null git clone https://github.com/alievk/v4l2loopback.git echo "--- Installing v4l2loopback (sudo privelege required)" cd v4l2loopback make && sudo make install sudo depmod -a cd .. source $(conda info --base)/etc/profile.d/conda.sh conda create -y -n $CONDA_ENV_NAME python=3.7 conda activate $CONDA_ENV_NAME conda install -y pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch # FOMM rm -rf fomm 2> /dev/null git clone https://github.com/alievk/first-order-model.git fomm pip install -r requirements.txt
% cat scripts/settings.sh # Web-camera device id # Call `v4l2-ctl --list-devices` and find your web-camera device, e.g. /dev/videoX, where X is camera id CAMID=0 # ################################################ # Normally you don't want to change settings below # [Linux] Virtual camera device # Make sure this id is greater than maximum device id in the list `v4l2-ctl --list-devices` # Don't set a big number, it's known that Zoom does not detect cameras with id like 99 CAMID_VIRT=9 # Conda environment name CONDA_ENV_NAME=avatarify
確認してみよう
% v4l2-ctl --list-devices HD Pro Webcam C920 (usb-0000:02:00.0-4): /dev/video0 /dev/video1
これvideo0とvideo1あるのはHDかどうじゃないかみたいな違いかしら、とりあえず CAMID
は問題なさそうだし CAMID_VIRT
も9でもんだいなさげ
v4l2loopback
まわりの部分はざっくりコメントアウトしてしまおう
diff --git a/scripts/install.sh b/scripts/install.sh index 4117693..6ba196f 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -3,13 +3,13 @@ source scripts/settings.sh # v4l2loopback -rm -rf v4l2loopback 2> /dev/null -git clone https://github.com/alievk/v4l2loopback.git -echo "--- Installing v4l2loopback (sudo privelege required)" -cd v4l2loopback -make && sudo make install -sudo depmod -a -cd .. +# rm -rf v4l2loopback 2> /dev/null +# git clone https://github.com/alievk/v4l2loopback.git +# echo "--- Installing v4l2loopback (sudo privelege required)" +# cd v4l2loopback +# make && sudo make install +# sudo depmod -a +# cd .. source $(conda info --base)/etc/profile.d/conda.sh conda create -y -n $CONDA_ENV_NAME python=3.7
で bash scripts/install.sh
する
待っている間にちゃんとREADME読んだけどCUDAじゃないと、Geforceじゃないとだめそうじゃん。ぴえん。
まあ気にせずすすめる。 インストールはうまくいったのでDropboxからダウンロード。 md5sumを確認
% md5sum ~/Downloads/vox-adv-cpk.pth.tar 46b26eabacbcf1533ac66dc5cf234c5e /home/sei/Downloads/vox-adv-cpk.pth.tar
大丈夫そうなので移動
% mv ~/Downloads/vox-adv-cpk.pth.tar ~/src/github.com/alievk/avatarify
実行する前にソースを読む
% cat run.sh #!/usr/bin/env bash #set -x source scripts/settings.sh bash scripts/create_virtual_camera.sh source $(conda info --base)/etc/profile.d/conda.sh conda activate $CONDA_ENV_NAME CONFIG=fomm/config/vox-adv-256.yaml CKPT=vox-adv-cpk.pth.tar export PYTHONPATH=$PYTHONPATH:$(pwd)/fomm python cam_fomm.py --config $CONFIG --checkpoint $CKPT --cam $CAMID --virt-cam $CAMID_VIRT --relative --adapt_scale $@%
% cat scripts/create_virtual_camera.sh #!/usr/bin/env bash source scripts/settings.sh FILE=/dev/video$CAMID_VIRT if [[ ! -w "$FILE" ]]; then echo "Creating virtual camera $FILE (sudo privelege required)" sudo modprobe v4l2loopback exclusive_caps=1 video_nr=$CAMID_VIRT card_label="avatarify" #sudo v4l2-ctl -d /dev/video$CAMID_VIRT -c timeout=1000 fi
これで一応動かしてみる、動いたがFPSが低い
% bash run.sh
転がってるEdge TPUのことを思い出しとりあえずライブラリをいれるがavatarifyはPyTorchなのでだめやん
% yay -Ss edgetpu aur/libedgetpu-max 13.0-1 (+1 0.09%) Google Coral Edge TPU library and headers (max speed). aur/libedgetpu-std 13.0-1 (+1 0.09%) Google Coral Edge TPU library and headers (standard speed). aur/edgetpu_api 2.11.1-1 (+1 0.00%) (Orphaned) Google Coral Edge TPU runtime and Python library % yay -S libedgetpu-max
おわり
JSONのoptionの型まじめにつけるのをあきらめて Hash[Symbol, bool]
にして誰かに頑張ってもらいたい
JSONに限らずoptsは魔境....
一応あとから頑張れるよう
type json_options = Hash[Symbol, untyped]
しておいて json_options
を使うようにした
あとかいていて
type encoding = Encoding | string
でもう1 Pull Request出せることに気がついた
なんか他、いろいろ詰まってだめ。おやすみ。
2020/04/07 にっき
下書きに入れたまま忘れていた
活動あまりしていない方と https://github.com/CodeforOkinawa
最近活動している方で2つになっているので https://github.com/Code-for-OKINAWA
なんかいい感じにまとめられたほうがよいのでは、と思ってSlackにでばろうと思ったら入れなかったのでコメントをした。
年度が変わったのでRuby Associationに個人寄付のお申込をした
2020/04/25 にっき: JSが 消えて型付く リポジトリ 働く仲間 増えてほしいなあ
最近職場のとあるリポジトリのコードからJavaScriptが消えつつありほぼほぼTypeScriptに移行された
残っているのは一抹の js.erb
のみ
私はTypeScriptへの移行はぜんぜん関わっていない1のでそこまで型書いてないけど型が付いていて便利なことが多い、書いてみるとレスポンスとかいい感じにしたりpropsの interface
だけまともに書くとあとはいい感じになる 2
新職場でどうOSSと関わって行こうかなあ、というのがぼんやりあったけど「職場のRubyのコードに型を付けていく」というのを趣味的にやろうかなあ
- 足りない型が出てくるはずなのでそれを書いてOSSに還元する
- リポジトリの全てのコードに型がついていると嬉しい
- 働いていて「TypeScriptなら型があったのに」みたいな悔しい気持ちになるがなくなって嬉しいだろう
- 型は欲しいけど自分では書きたくない人にとって働きやすくなる(私)
- 型がある他の言語での書き換えを阻止してRubyをずっと書ける
はい
直近ではJSONの型を書いています
何卒
2020/04/24 にっき
型、optsの型付けが異常に面倒という印象がある。とりあえず何もなしで型付けたほうがいいかな....どうだろう。
2020/04/22 にっき
scrapboxの方が在宅作業環境をまとめるのに適していそうだが構築していくログの流れはにっきに書きたいみたいな感じで使い分けがわからず悩んでいる
COVID-19の話題、自分はアホのような連想で食欲に変換するという傾向があることが分かってきた
- 和牛券の話題を見てステーキを焼きはじめる
- 🔟万円の給付金を知事が寄付をお願い、カツアゲしている様子を見てカツを揚げたくなる
- 次亜塩素酸水の消毒液の話題をみて今ノロウィルス掛かったら絶対消毒薬なくてヤバイだろうなということで生牡蠣を食べたくなる
お魚券はどう料理したらいいかわからない
snapperの設定はうまくいっていそうだった
マイク買ったときのポイントが650ポイントあって650円割引になるのでこれを買った。
- いいところ: アームが50cm + 50cmありながい
- わるいところ: アームの中にXLRケーブルが通っているのだがぶった切らないとケーブル外せない
結局オーディオインターフェイスがないからQ2UをUSB接続するのでXLRケーブルはいらないのだけど、ハサミできって取り外すのにどうしても抵抗を感じてしまうので、きっと外せずつかうんだろう。そう考えると邪魔くさいだろうな、という気持ちになる。 かといってXLRケーブルをつなぐためにオーディオインターフェイスにお金を注ぐかと言うとそんな気持ちはなく、もし注ぐならケーブルもこだわるのでやっぱりぶったぎるんだろうな、とか。 そもそも超こだわるなら値段2倍のマイクアームを買う...んだろうなと思うとなかなか購入を決断できなかった。
今日がポイントの期限なので結局今日このマイクアームかった。もっと早くかえばよかった。
TypeScriptではunknownで型付けたいけどGraphQLではどうなってるんだろう、というのがよく分からずPull Request出したけど着地は遠そう
10万円なにかおうかなあ
ArchLinuxでノイズキャンセルの設定を有効にしてみた
# /etc/pulse/default.pa ### Enable Echo/Noise-Cancelation load-module module-echo-cancel
RealforceにPS/2とUSBの変換器をかましているんだけど
- Caps LockをCtrlにしていてt押すと変換器の都合なのかうまくCtrl+Tとして認識してくれない
- Windowsキーがなくて不便
などの問題があり、フットスイッチを引っ張り出してきた(なんでもあるなわがや...)
yay -S footswitch-git
してこれいれる
←コントロール、真ん中エンター、→Windowsで割り当てる
% lsusb | grep -i foot Bus 003 Device 005: ID 0c45:7403 Microdia Foot Switch # footswitch -1 -m ctrl -2 -k enter -3 -m win
2020/04/21 にっき
久しぶりに pacman -Syu
したらこんなメッセージが出た
エラー: 処理を完了できませんでした (衝突しているファイル) nss: /usr/lib/p11-kit-trust.so がファイルシステムに存在しています エラーが発生したため、パッケージは更新されませんでした。
ググるとこれに当たった
もっと頻繁に pacman -Syu
せねば...
pacman -Syu
前のバックアップのことを全く考えていなかった、snapperをいれる。軟弱者なのでGUIを使う。
% yay -S snapper-gui-git
なんか出た
>>> >>> You must create a default config with snapper cli named root first. >>> Run 'snapper -c root create-config /' as root >>>
snapper --help
で確認すると設定ファイル名の指定が -c
オプションで create-config
の引数はsubvolumeを指定するらしい
とりあえず # snapper -c root create-config /
しておく
ArchLinuxのWikiを見る
なるほど
# snapper get-config キー | 値 -----------------------+------ ALLOW_GROUPS | ALLOW_USERS | BACKGROUND_COMPARISON | yes EMPTY_PRE_POST_CLEANUP | yes EMPTY_PRE_POST_MIN_AGE | 1800 FREE_LIMIT | 0.2 FSTYPE | btrfs NUMBER_CLEANUP | yes NUMBER_LIMIT | 50 NUMBER_LIMIT_IMPORTANT | 10 NUMBER_MIN_AGE | 1800 QGROUP | SPACE_LIMIT | 0.5 SUBVOLUME | / SYNC_ACL | no TIMELINE_CLEANUP | yes TIMELINE_CREATE | yes TIMELINE_LIMIT_DAILY | 10 TIMELINE_LIMIT_HOURLY | 10 TIMELINE_LIMIT_MONTHLY | 10 TIMELINE_LIMIT_WEEKLY | 0 TIMELINE_LIMIT_YEARLY | 10 TIMELINE_MIN_AGE | 1800
/etc/snapper/config-templates/default
に各値の説明がある
とりあえず起動時にバックアップを取るようにし、定期的に取るようにし、定期的に消すようにする
% systemctl enable snapper-boot.timer snapper-cleanup.timer snapper-timeline.timer
こんなに頻繁に長期間残さなくていいので雑に設定を変更、8時間ぐらいは残しておくか...と思ったけど全部はいらないので5時間ぐらいでいいかもしれない。homeの下だけsubvolumeわけて頻繁に取るみたいな設定をすれば(面倒なので今回はそのまま)。明日確認しよ。
snapper get-config キー | 値 -----------------------+------ ALLOW_GROUPS | ALLOW_USERS | BACKGROUND_COMPARISON | yes EMPTY_PRE_POST_CLEANUP | yes EMPTY_PRE_POST_MIN_AGE | 1800 FREE_LIMIT | 0.2 FSTYPE | btrfs NUMBER_CLEANUP | yes NUMBER_LIMIT | 50 NUMBER_LIMIT_IMPORTANT | 10 NUMBER_MIN_AGE | 1800 QGROUP | SPACE_LIMIT | 0.5 SUBVOLUME | / SYNC_ACL | no TIMELINE_CLEANUP | yes TIMELINE_CREATE | yes TIMELINE_LIMIT_DAILY | 7 TIMELINE_LIMIT_HOURLY | 8 TIMELINE_LIMIT_MONTHLY | 0 TIMELINE_LIMIT_WEEKLY | 0 TIMELINE_LIMIT_YEARLY | 0 TIMELINE_MIN_AGE | 1800
2020/04/15 にっき
dev.toの通知周りを読んでいた。お昼に読めばいいんだけど、人はなぜ...
TypeScriptとMaterial UIの筋トレの必要性を感じていて1日にちょっと時間とってガッツリやっていかねば...
今日はrubyに右代入が入っていたのを確認していなかったので手元で動かしてなるほど〜〜となったりRactorで Array#map
するのを実装していたりした
明日はIOしたい