2018-01-01から1年間の記事一覧
1分でプログラミングの練習ができるサイトを作った。 30-seconds-of-code Training データはオープンソースの 30-seconds-of-code を使っていて、それぞれのスニペットを問題にした。 JavaScript なのでコードの実行はブラウザ側で行っている。サーバーサイ…
要約 技能実習生に対する聴取票PDFをOpenCVで画像解析して機械的に集計しようとしたが、前処理がすでに難しかった。 背景 政府が非公開としていた失踪した技能実習生に対する聴取票を野党の国会議員が書き写し、その全PDFが公開された。 失踪した技能実習生…
Eslint には no-return-await というルールがある。Standard JS にも採用されているルールだ。このルールは、return await に警告を出す。 async function foo() { return await bar() } しかし、常に return await しないべきかというとそうでもなくて、必…
daniel.haxx.se のブログ記事 HTTP/3 の翻訳です。この記事は翻訳支援エディタ phra-phra.com を使って翻訳しました(手前味噌)。翻訳の許可は元記事のコメントで了承いただきました。 長い間 HTTP-over-QUIC と呼ばれていたプロトコルは名称が変更され、正…
作った Web サービスはこちら。 https://phra-phra.com 2018年11月現在、Phra Phra (プラ・プラ)はオープン・ベータ版です。 Phra Phra を作った動機 私は翻訳が趣味なのですが、本格的な翻訳支援ツールを使ったことはなく、テキストエディタだけを使って…
https://docs.npmjs.com/cli/ci の翻訳。 このコマンドは npm-install に似ていますが、テストプラットフォームやCIや開発環境といった自動化環境で使われることを意図しています。通常の npm install と比べると、ユーザー指向の機能をスキップして高速に動…
JavaScript は言語レベルでプライベートメソッドをサポートしていないので、プライベートコンストラクタを実現しようとしたら自分で工夫しないといけない。 通常のコンストラクタを隠蔽して、自作の static メソッドからのみインスタンス作成を許すようにす…
https://groups.google.com/forum/#!topic/skywayjs/EBnKa28GWxQ chrome:/webrtc-internals/ を開き、 Conn-audio-1-0 のような項目を開き、 googLocalCandidateType または googRemoteCandidateType を見る
JSON を拡張して Date 型とかも使えるようにしたい。 そういうライブラリはすでにある(ejson)けど、標準の JSON.stringify() の第二引数を上手に使えば、ライブラリに頼らなくても自前で簡単にできる。 JSON.stringify() - JavaScript | MDN JSON.stringif…
いつもググって忘れるのでメモ。 やりたいこと Travis でデプロイスクリプトを走らせる時に、VMにSSHログインして何かする、というのをやりたい。そのために暗号化した SSH キーを git 管理下において、Travis 上でのみそれが使えるようにする。 やること 以…
lodash みたいな便利関数のライブラリ Ramda はちょっと変わり種だけどけっこう便利。 特徴としては、 関数型の思想に基づいている なので関数に副作用がない ほとんどの関数が配列とオブジェクトの両方に適用できる というのがある。 JavaScript は配列の操…
Chromeでアドレスバーにフォーカスするショートカットは Cmd + L 。 っていうだけの小ネタ。 マウスを使わずにキーボードだけでChromeのアドレスバーにフォーカスできたら便利だなと思って調べたら出てきた。
mapとflatMapという便利メソッドを理解する - Qiita によると flatMap() を使うとのことだが、Swift 4 から deprecation warning になる場合があるので、その時には compactMap で置き換える。 [1, 2, 3, nil].flatMap { $0 } // → [1, 2, 3]
やりたいこと ローカル・ループバック・アドレス(127.0.0.1)に localhost 以外のホスト名をつけたい。でも /etc/hosts は編集したくない。 方法 lvh.me というドメインがあり、開発用に 127.0.0.1 で DNS 登録されている。 lvh.meというループバックドメイ…
何回聞いても忘れるので。 frame は親ビューから見た相対座標 bounds はビュー自身の座標系から見た座標 子ビューには bounds を渡す。 let child = UIView() child.frame = self.bounds
こんな感じで行けるようだ。 $ ffmpeg -i input.mp4 -f matroska - | ffplay -i - ffmpeg の出力を標準出力にして、 ffplay がパイプで標準入力を受け取って表示する。 参考: bash - How can I pipe output of ffmpeg to ffplay? - Super User 出力の - は …
知らなかった。Linux の top コマンドと違うなあくらいしか思っていなかった。 MacOSのtopコマンドでCPU使用順にソート - ex1-lab $ top -o cpu こうしたら確かに CPU 使用率順になった。
とにかく機械学習を練習してみようと思って、『Python 機械学習プログラミング』を読みながら、見よう見まねで kaggle の練習問題 Titanic: Machine Learning from Disaster | Kaggle をやったので記録を残す。 [第2版]Python 機械学習プログラミング 達人デ…
HOC(高階関数)は便利なんだけど、型と一緒に使おうとするとどうもうまくいかなくて、試行錯誤の結果やっと最小構成の例が作れたので書いておく。まあジェネリクスの練習ですね。これでそこそこの規模のものを作ろうとしたら消耗する予感しかしない。 Examp…
サーバーサイドを TypeScript で書くなら decorator を活用するとシンプルに書ける。 decorator はむやみに使うと可読性・保守性が下がるけど、汎用性の高いケースに活用すればビジネスロジックに集中した快適コーディングができる、と思う。 decorator ベー…
静的サイトを公開するには GitHub で管理しているリポジトリなら GitHub pages を使えばいいが、そうでない場合に最速で公開したいなら、 Surge が手軽だったのでメモ。 surge.sh # surge コマンドをインストール $ npm install -g surge # これだけでアカウ…
UIApplicationOpenSettingsURLString を使えばよい。 func goToAppSetting () { guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else { return } if UIApplication.shared.canOpenURL(settingsUrl) { UIApplication.shared.open(…
TypeScript を使う時に検索してうっかり古い情報で行うといけないので忘備録。 TypeScript のコンパイラ tsc は DEPRECATED になっているので、 npm install -g tsc とかしてはいけない。 単に npm add typescript すれば node_modules/.bin/tsc が入るので…
history コマンドでコマンドの履歴を確認することができる。 $ history 1 echo foo 2 echo bar 3 history 一覧表示された履歴の中で、過去のコマンドを番号指定して実行することができる。!n を実行すると、番号 n のコマンドが実行される。 $ !1 echo foo f…
詳しく調べていないのでわからないけど、なぜか以下のように普通にテスト動画を作ると、Quick Player で再生できなかった。互換性がないとか言われる。 $ ffmpeg -f lavfi -i testsrc=duration=10:size=640x360:rate=30 -vcodec libx264 test.mp4 ピクセルフ…
忘備録。 動画に適用するフィルタは-vf で指定する。 動画の再生速度を2倍にするなどができる。 $ ffmpeg -i in.mp4 -vf setpts=PTS/2.0 out.mp4 明るさ、彩度も調整できる。 $ ffmpeg -i in.mp4 -vf eq=brightness=0.06:saturation=2 out.mp4 イコールがつ…
何をしたか React で HOC (Higher Order Component) が肥大化するとレンダリングのコストが増大するはずだと思って調べた。 もっと詳しく HOC は要するに高階関数であり、高階関数はロジックを抽象化するために優れたデザインパターンだが、パフォーマンス面…
MediaRecorder API と Canvas の captureStream() を使えば、ブラウザの Canvas 上でお絵描きしている様子を録画できる。 デモサイト 実装は出来心から preact で行ったが、普通に React 使っとけばよかった。やはり細かいところでつまずいたりした。 録画の…
$ pwd /usr/hoge/fuga であるとき文字列 fuga を取得したければ basename コマンドを使う。 $ basename `pwd` fuga pwd コマンドは変数 $PWD で代用できるので $ basename $PWD fuga でもよい。これなら別のコマンドの引数として使いたい時にも $ some_comma…