つれづれ日記 2020年12月

予定

毎日


2020年12月31日 (木曜日)

09:59:22 # Life なんかChromeが重いなぁとおもったらWebSocketの動作確認実験アプリが5GBメモリを消費していた。 一日放置していたDev Consoleにたまっているエラーメッセージの問題かな。

2020年12月30日 (水曜日)

10:05:15 # Life WebRTC難しい。というかよくわからないでみてなかったICEこそが接続確立の本質だったのか。

16:23:58 # Life httpsでwebsocketをしゃべるためにapp engine flexible environmentを使ってみた。 cloud runではwebsocketが通らないし、自前でサーバ立てるのにDNSたててHTTPSの証明書確保してとかするの超絶にめんどくさいなと思って順番に探していたあらこれを見つけた。 app engine flexible environment. app engine と銘打っているので昔のイメージでAPIが独自なのかなと思ったら結構普通にでdocker imageでHTTPSサーバを起動できるサービス。 app engineの他のサービスと違って0までスケールダウンしないので最低インスタンス課金が必要で、 一日最低サイズの1コアインスタンスを放置すると150円くらいになるというのを試算した上でとりあえずためした。 gcloud app deploy はCloud Buildしてからの一連の操作がのんびりと起動。 おそらく試すには新しいプロジェクトを作成してやめるときにはそのプロジェクトを削除するのが良いと思う。 とりあえず実験用に29時間(朝11時から午後4時まで) くらい動かしっぱなしにしてみて請求は220円くらいだったとおもう。gcloud app deployした直後は多分複数インスタンス走っていると思うんだけど無視して良い量なのかな。

gcloud projects delete プロジェクト名  # プロジェクトの削除
	

2020年12月28日 (月曜日)

10:08:49 # Life リモートのマイクの音をききたいときどうしますか? 別のマシンの音を中継するプロトコルとかあるんかいなとおもったけどいまいちめんどくさいのでssh+ecasoundでお茶を濁す。 本当は多分rtmpとかでやれば良いと思う。 16kHzモノラルで初代raspberrypiでssh がcpu 14%くっている。ステレオ48kHzにすればデータ量が6倍になってギリギリくらいか。

	  remote $ arecord --list-devices  # 入力デバイスを確認
	  remote $ arecord -r 16000 -f S16_LE -D hw:1,0 /tmp/a.wav  # 入力デバイスがサポートしてくれる適切なフォーマットを探す

	  $ ssh remote ecasound -B:nonrt -f 16,1,16000 -i alsahw,1,0 -o stdout |
	  ecasound -B:nonrt -f 16,1,16000 -i stdin  -erc:1,2 -f 16,2,16000 -o alsahw,0,0
	

11:03:39 # Life Nature Remo動かないなぁと思ってたら幼稚園児がリモコンのチャンネルを切り替えていた。うげー。

2020年12月27日 (日曜日)

08:30:59 # Life 年賀状を印刷しようとしてハマる。微妙。 複数のOSバージョンを動かしているんだけど全部微妙。 とりあえず複数部印刷できないバグのため職人がPrint Dialogを何回かクリックしました。

09:44:29 # Life Debian勉強会資料をbullseye環境でビルドしてみる。 cloud buildでビルドしてみたんだけどBusterだと9分前後(プラマイ30秒くらい)なのに Bullseyeだと14分で終わらず、14分40秒かかった。5割時間が増えているのはちょっと増え過ぎな気がするがなにか大きく変わったのだろうか?

2020年12月26日 (土曜日)

10:29:04 # Life 今年のクラウド課金メモ。 今年はつけっぱなしのまま忘れているインスタンスのせいで予算アラート(3000円)がくるという事態が一回あったけどそれいがいは平穏。さくらのVPSに固定で1万円くらい払っているのと比べるとGCPには7千円しか払ってない。これはインターネット固定回線に年7万くらい払っているのとくらべると小さい。 あと全く外にでないのに携帯電話に7万円くらい払っているのよりは有効活用している気がする。

2020年12月25日 (金曜日)

10:58:51 # Life 検索してたら8年前に自分でNodejsについてまとめていた資料を見つけた。すっかり忘れている。 それから何か進化しているのかな。 一時期io.jsフォークとかの話題もあったが、Node.js今はすごく安定しているし進化もしている気がする。

2020年12月24日 (木曜日)

10:07:10 # Life webrtcためそうとしてwebsocketつかうことになってhttpsもカメラに必要で。 とここまできてwebsocket over https (wss://)が必要になるとい うことで証明書の確保とかそもそもドメイン名がないとできないん じゃないかとかだいぶハードルが上がってきた。サーバたてないと いかんのかな。しらべてみるとheroku以外の手段がない気がしてきた。

2020年12月23日 (水曜日)

08:57:23 # Life nodejsをcommonjsのモジュールローディングからES modulesに引っ越してみる。 特に大きな違いはない気がするがそのままブラウザでも使えるというのがよい。 scriptタグにtype=moduleを指定しないといけないのが忘れがち。 あとは適当にimport {resizeToMatchDisplay} from './resize.js';とかかいておく。 ロードされる側のモジュールはexport {symbols,..}が必要。 node jsの場合はファイル名の拡張子をmjsにすればよいんだけど、 package.jsonにtype:moduleを指定すればjsのままでも読み込んでくれるみたい。 Nodejs 14以降を使えば標準でサポートしているようだ。

{
    "type": "module"
}

	

10:39:12 # Life Chromeの getDisplayMedia の挙動。 どうもWindowであるときとTabであるときで全然挙動がちがうっぽい。 Windowのときには画面の大きさの黒い背景の大きな画像にWindow部分だけが描画されているものが取得できる、Windowのサイズを取得する方法が特にあるようにみえない。crop-and-scaleでサイズを指定しておくとそのサイズに良い感じにリサイズしてくれる。 TabのときにはTabのサイズの画像がもらえる。crop-and-scaleでリサイズはしてくれなくて、サイズをexactで指定するとサポートしていないというエラーをはいてくる。これどっかに説明あるんかな。

2020年12月22日 (火曜日)

09:56:52 # Life Emacsでsave してからビルドするというのがほしいのでC-cC-cにアサインした。 以前は設定していた気がするんだけど手元の(3世代目の).emacsにはなくなっていたので。


(defun dancer-save-make ()
  "Save current file and run make."
  (interactive)
  (save-buffer)
  (compile "make"))
	

2020年12月21日 (月曜日)

15:39:29 # Life crostiniインストール後の作業。ひさびさにやってみたが一連のパッケージをインストールしたあとなにをするかというと dpkg-reconfigure localesくらいかな。あと何があったか。

16:51:04 # Life javascript import / export が使えるらしいので試してみた。 MDNのImportに大量に選択肢が提示されてて悩む。 javascript.infoを参考にしてなんかそれっぽいものがかけた。 ハマった点は、scriptタグにtype=moduleを指定しないとimportが使えないっぽいこと。 あと普通な使い方をする限りは多分importとexportが {} を期待することかな。 import {hoge,fuga} from './path.js'でパスが./から始まってないと相対ロードしてくれないというのにもはまった。

2020年12月20日 (日曜日)

10:41:49 # Life Debian勉強会資料のwhizzytex動作を試行錯誤してみる。 コンパイルしてからリロードしようとするとxdviが異様に遅い。 とりあえずここまでの組み合わせは確認した気がするがなんか何を間違えているのか。 platexがtexliveにマージされてからの動向を全くといっていいほど追えてないのでそこらへんも困った。

17:16:18 # Life latex のsynctexを使ってみた。emacsのpdf-toolsを使って。 elpa-pdf-toolsをインストール。 platexコマンドに-synctex=1を指定するとよい。 M-x pdf-tools-installを指定してからPDFファイルを開くとDocViewモードじゃなくてPDFViewモードで開く。 するとPDFファイルの中をダブルクリックするとその場所にTeXファイルが移動。 あとはTeXを編集してコンパイルするとPDFファイルファイルがEmacsの別バッファで即リロード。よい。 エディタからPDFビューアはforward search、PDFビューアからエディタへはreverse searchと呼ぶみたいで、forward searchのほうはなんらかの設定がいるっぽいので後で調べる。

2020年12月19日 (土曜日)

19:02:06 # Life whizzytexを久しぶりに動かそうと試す。 やっぱりいろいろなレベルで壊れているような気がする。 デバッグが非常に難しい。 なんか最初のスライスのレンダリングで失敗するっぽい。 platexでPDFがコンパイルできない方法をつかうっぽくて、 psだとなんか日本語が通ってないのが表示される。 dviを指定すると表示しようとして即死亡するなにか。 xdviかadviというオプションのはずなんだがそれはきかない。 adviはまだ日本語フォントが通らないままで放置されているようだ。

2020年12月13日 (日曜日)

09:51:54 # Life リモート時代の画面共有のためのEmacs設定。 編集中の画面を共有することが多いのでそれにちょうどよいのはど ういうのかなと思ったら、まぁビデオストリームは720pくらいが普 通で、それは1280x720なのでそれにチューニングするのがよいのだ ろう。そうするとこうかなということでちょうど半分の縦長とちょ うどはまるくらいの横長のウィンドウの設定を考えてみた。手元の フォントではちょうど良いがこれはフォントによる・・。 横160文字を1280で表示すると9pxくらいになるのでこれはちょっと小さいかもしれない。 自分で作業するときにはあまり気にならないけど人の文字を読むときにはもうちょっと大きいほうが良いか。

;; 9px くらい	  
(defun make-frame-video-split ()
  "Create a frame suitable for 720p in the current font config"
  (interactive)
  (make-frame '((name . "video-split") (width . 160) (height . 50))))

;; 10px くらい
(defun make-frame-video-split ()
  "Create a frame suitable for 720p in the current font config"
  (interactive)
  (make-frame '((name . "video-split") (width . 128) (height . 40))))

	

10:40:18 # Life 2020年のWebRTC関連の勉強。 リモート生活が伸びてきたてビデオ会議が中心の生活になってきたのだが、 ffmpegとかOBSとかまぁインストール設定が面倒なんだけど、 HTML5でffmpegでやりたいことがだいたい動くじゃんということで手元で少しづつ習作、勉強をしていたのだった。 こういうコツコツやるのはまぁ好き。 しかしAPIが策定途中で転がっている一年前くらいに誰かが書いたサンプルが権限周りかAPIの仕組みがかわっているかで大体動かなくなっていてつらい。 あとサンプルコードのほとんどがES2015になっていないので大体全部書き直すことに。 varをconstに、多段のfunctionをawaitに。

2020年12月12日 (土曜日)

10:41:45 # Life fincoreを試してみた。 なんか全部オンメモリ(RES)であるような出力になるんだけど何か間違っているのだろうか。 とりあえず試したの。 vm.drop_cachesしてからfreeをみてもbuff/cachedが減ってない気がするんでこれなんか使い方間違えている気がする。

	  sync
	  sudo sysctl vm.drop_caches=3
	  free
	  fincore *	  
	

11:15:49 # Life 録画用のウェブアプリ。 複数のウィンドウを表示したいなぁとおもうことがあるので複数の画面とカメラアングルとかを選べるようにしてみた。 これ。 全く持って自分のワークフロー専用にチューニングされている。

2020年12月5日 (土曜日)

10:03:11 # Life 今朝の勉強。WebAudioの使い方がすこしづつわかってきた気がする ので以前作ろうとして挫折していたマルチトラックレコーダーにむ けてまず一トラックの録音からはじめてみる。 コードはここ

15:31:08 # Life なんかもうちょっといじったらマルチトラックになってきた。

2020年12月3日 (木曜日)

17:12:02 # Life Web Audio APIで試行錯誤。 audioContext.createDelay() が使えるかなとおもったんだけどなんか違うようだ。聞いた感じ全くディレイしてくれない。 new DelayNode(audioContext, {delayTime: 10})のほうが使えた。 なにがどう違うのか、まだよくわかってない。

2020年12月2日 (水曜日)

08:06:37 # Life 12月になっていた。ペア・プログラミング用に画面を共有する仕組みを考えているんだけど それなりに便利そうな何かができてきた気がする。画面さえあればあとはなんとかなる。


Junichi Uekawa