今週のまとめ (2017/5/19)
ぞい。
プログラミング言語
Constrained Category
ハードウェアや自動微分などの概念の解釈(interpretation)を、圏 (デカルト圏) の言葉に翻訳してコードに落とし込むという技法 (論文:http://conal.net/papers/compiling-to-categories/) のサンプルコード。Deep Embedded な DSL の代替となるらしい。(が、論文もコードも難しくてわからなかった)
アルゴリズム
keon/algorithms: Minimal examples of data structures and algorithms in Python
Pythonによるアルゴリズム・データ構造の「図鑑」。165個ある。競技プログラミング向けか。
Web
Choo: sturdy 4kb frontend framework
Webフロントエンドのフレームワーク。今やフロントエンドフレームワークのデファクト・スタンダードとなった Virtual DOM ではなく実際の DOM で差分計算をするnanomorphというのを使っているらしい。
WebGL Fundamentals
WebGLの入門サイト。解説の図や例が豊富。 WebGLとは何かという基礎の基礎から、(GLでは面倒な)文字の出し方やアンチパターンなどもカバーしている。
機械学習
Picasso: A CNN visualizer
畳み込みネットワークの可視化。解説記事 によると、ネットワークの内部状態を可視化することにより数値の指標(検出率等)では分からない「誤解」を調べることができるという利点をあげている。
関連して、手書き認識のCNNのWebでの綺麗なビジュアライゼーションデモを紹介しておく。
データベース
Badger: Fastest key/value store in Go.
Introducing Badger: A fast key-value store written natively in Go - Dgraph Blog
Repos: github.com
Go言語で書かれた Key/Value ストア。Log-structured merge (LSM) ツリー を用いてキーを格納するが、値はその上ではポインタとして保存しておき、値自体は値ログという場所に分離しておくことにより効率を良くしている。値ログへのアクセスのため、この設計はランダムアクセスが高速で可能な SSD に最適化されたものとなっている。
simdb: A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store
Lock-free な Key-Value store。詳しくは読んでいない。SIMD要素はlock-freeでのcompare-exchangeをまとめてやる部分か?(不明)