【JavaScript】オブジェクトをmap()とかするにはRamdaが便利

lodash みたいな便利関数のライブラリ Ramda はちょっと変わり種だけどけっこう便利。 特徴としては、 関数型の思想に基づいている なので関数に副作用がない ほとんどの関数が配列とオブジェクトの両方に適用できる というのがある。 JavaScript は配列の操…

ChromeでアドレスバーにフォーカスするショートカットはCmd + L

Chromeでアドレスバーにフォーカスするショートカットは Cmd + L 。 っていうだけの小ネタ。 マウスを使わずにキーボードだけでChromeのアドレスバーにフォーカスできたら便利だなと思って調べたら出てきた。

【Swift】Optionalの配列からnilを取り除くにはflatMap()またはcompactMap()

mapとflatMapという便利メソッドを理解する - Qiita によると flatMap() を使うとのことだが、Swift 4 から deprecation warning になる場合があるので、その時には compactMap で置き換える。 [1, 2, 3, nil].flatMap { $0 } // → [1, 2, 3]

/etc/hostsを編集せずにlocalhostに別名をつける

やりたいこと ローカル・ループバック・アドレス(127.0.0.1)に localhost 以外のホスト名をつけたい。でも /etc/hosts は編集したくない。 方法 lvh.me というドメインがあり、開発用に 127.0.0.1 で DNS 登録されている。 lvh.meというループバックドメイ…

【iOS】frameとboundsの違いを一言で

何回聞いても忘れるので。 frame は親ビューから見た相対座標 bounds はビュー自身の座標系から見た座標 子ビューには bounds を渡す。 let child = UIView() child.frame = self.bounds

ffmpegの出力をパイプしてffplayで表示する

こんな感じで行けるようだ。 $ ffmpeg -i input.mp4 -f matroska - | ffplay -i - ffmpeg の出力を標準出力にして、 ffplay がパイプで標準入力を受け取って表示する。 参考: bash - How can I pipe output of ffmpeg to ffplay? - Super User 出力の - は …

MacのtopコマンドでCPU使用率順に表示する

知らなかった。Linux の top コマンドと違うなあくらいしか思っていなかった。 MacOSのtopコマンドでCPU使用順にソート - ex1-lab $ top -o cpu こうしたら確かに CPU 使用率順になった。

とにかく機械学習を始める(kaggle練習問題Titanic)

とにかく機械学習を練習してみようと思って、『Python 機械学習プログラミング』を読みながら、見よう見まねで kaggle の練習問題 Titanic: Machine Learning from Disaster | Kaggle をやったので記録を残す。 [第2版]Python 機械学習プログラミング 達人デ…

【React】recomposeモジュールをTypeScriptで使う

HOC(高階関数)は便利なんだけど、型と一緒に使おうとするとどうもうまくいかなくて、試行錯誤の結果やっと最小構成の例が作れたので書いておく。まあジェネリクスの練習ですね。これでそこそこの規模のものを作ろうとしたら消耗する予感しかしない。 Examp…

Server Side TypeScriptでdecoratorを使い倒す

サーバーサイドを TypeScript で書くなら decorator を活用するとシンプルに書ける。 decorator はむやみに使うと可読性・保守性が下がるけど、汎用性の高いケースに活用すればビジネスロジックに集中した快適コーディングができる、と思う。 decorator ベー…

Surgeで一瞬で静的サイトを公開する

静的サイトを公開するには GitHub で管理しているリポジトリなら GitHub pages を使えばいいが、そうでない場合に最速で公開したいなら、 Surge が手軽だったのでメモ。 surge.sh # surge コマンドをインストール $ npm install -g surge # これだけでアカウ…

【Swift3】アプリの設定画面に遷移する

UIApplicationOpenSettingsURLString を使えばよい。 func goToAppSetting () { guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else { return } if UIApplication.shared.canOpenURL(settingsUrl) { UIApplication.shared.open(…

TypeScriptを使う時にnpm install tscしてはいけない

TypeScript を使う時に検索してうっかり古い情報で行うといけないので忘備録。 TypeScript のコンパイラ tsc は DEPRECATED になっているので、 npm install -g tsc とかしてはいけない。 単に npm add typescript すれば node_modules/.bin/tsc が入るので…

history で表示されるコマンドを番号指定して実行するには !n

history コマンドでコマンドの履歴を確認することができる。 $ history 1 echo foo 2 echo bar 3 history 一覧表示された履歴の中で、過去のコマンドを番号指定して実行することができる。!n を実行すると、番号 n のコマンドが実行される。 $ !1 echo foo f…

ffmpegでMacで再生可能なテスト動画を作る

詳しく調べていないのでわからないけど、なぜか以下のように普通にテスト動画を作ると、Quick Player で再生できなかった。互換性がないとか言われる。 $ ffmpeg -f lavfi -i testsrc=duration=10:size=640x360:rate=30 -vcodec libx264 test.mp4 ピクセルフ…

ffmpegのフィルター処理(再生速度、明るさ、ノイズ除去など)

忘備録。 動画に適用するフィルタは-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のレンダリングコスト

何をしたか React で HOC (Higher Order Component) が肥大化するとレンダリングのコストが増大するはずだと思って調べた。 もっと詳しく HOC は要するに高階関数であり、高階関数はロジックを抽象化するために優れたデザインパターンだが、パフォーマンス面…

Canvas上のお絵かきを録画する

MediaRecorder API と Canvas の captureStream() を使えば、ブラウザの Canvas 上でお絵描きしている様子を録画できる。 デモサイト 実装は出来心から preact で行ったが、普通に React 使っとけばよかった。やはり細かいところでつまずいたりした。 録画の…

カレントディレクトリを取得するコマンドはbasename $PWD

$ pwd /usr/hoge/fuga であるとき文字列 fuga を取得したければ basename コマンドを使う。 $ basename `pwd` fuga pwd コマンドは変数 $PWD で代用できるので $ basename $PWD fuga でもよい。これなら別のコマンドの引数として使いたい時にも $ some_comma…

英和辞書のコマンドラインツールを作った

npm パッケージで作ったので、 npm install -g ejdict ですぐに始められる。 ejdict オフラインで使える英和辞書のコマンドラインツール、探してみたけどなかなかない。いちおう、Linux のコマンドラインでオフライン英和辞書 という記事で、辞書テキストフ…

Preact とかいう React のサブセット。何が違うのか

React よりもファイルサイズが小さいと謳っている Preact。 Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM. React と同じ ES6 の API で 3kb と軽量だし高速だぜ! とのこと。 で、本家 React と何が違うのか。Preact のドキ…

【React】 PureComponent にアロー関数を渡してはいけない

React v15.3 で追加された PureComponent は便利だけど、少し間違えるとパフォーマンス上がりませんよという話。 記事を書こうと思い立ったあとで調べたら先人がいらっしゃった。 React.js pure render performance anti-pattern 二番煎じだが、自戒のために…

オブジェクト指向でモナドするならメソッドチェーンで書くと自然になるかも

オブジェクト指向の言語でモナドっぽいことをするなら、メソッドチェーンできるように実装すると自然になるかなと思った。 JavaScript では Promise がモナドなのだけど、 bind 的なことをしているのは then なわけです。 // doSomethingAsync の型が number…

ヘッドレスChromeでスクレイピングする例

ヘッドレス Chrome でスクレイピング。かなり手軽にやれることがわかった。 簡単な例をいくつか書いてみた。 準備は npm install chromy するだけ。 Google 検索して、タイトルとURLを取ってくる Amazon 検索して、本のタイトルを取ってくる Instagram ハッ…

【JavaScript】reduce(Object.assign)で失敗した

コレクションの配列をオブジェクトにしようとして、こんな感じのコードをよく書くのだけど、 const users = [{ id: 1, name: 'suzuki' }, { id: 2, name: 'sato' }] const usersById = users .map((user) => ({[user.id]: user})) .reduce((obj, userObj) =>…

【JavaScript】配列のreduce関数の可読性を少し上げるテクニック

JavaScript の話題です。配列の reduce 関数、書きやすいけど可読性が低いですよね。 たとえば以下のようにコレクションを変換して id をキーとしたオブジェクトにするという操作。慣れてくれば普通に読めますけど、なんとなく読みにくいんですよね。 const …

Webエンジニアでも圏論したい!(関手篇)

この記事の目標は、「配列の map 関数は関手である」とドヤ顔で言えるようになることです。 初回の記事はこちら。 Webエンジニアでも圏論したい! 配列の map 関数を観察する まずは配列の map 関数をよく観察してみます。 map 関数はこんなやつですね。(コ…

二度と忘れないawkコマンドの基本

結論としては、これだけ。 awkはテキストの各行に対して pattern { action } を実行する。 これだけ覚えれば間違えずに使える。 awk コマンドはテキスト整形に便利だが、使い方をよく忘れるのでいつもググっている。 使い勝手が悪いわけではないけど、多機能…

Rustの練習でenvsubstを車輪再発明

Rustの練習がしたかった。新しくプログラミング言語を学ぶときにはテンプレートエンジンを作るのが手頃な難易度で良いと誰かが言っていたので、envsubst みたいなやつを作ろうと思った。 envsubstはテキスト中の$FOOのような文字列を環境変数の値に置き換え…

.bashrcで機密情報の環境変数を設定するべきではない

npm でマルウェアが発見されました。プロセスの環境変数を勝手に外部サーバーに送るそうです。 npmjs.com で著名ソフトウェアによく似た名前のマルウェアが大量に発見された 環境変数でパスワードや API Key などの機密情報を管理しているとやばい。対策とし…