ねぇうしくんうしくん

今週のまとめ (一週間で自分が見た技術系サイトのログ)が今のところメインです。プログラミング言語、人工知能、セキュリティ 等

今週のまとめ (2017/5/19)

ぞい。

プログラミング言語

Constrained Category

github.com

ハードウェアや自動微分などの概念の解釈(interpretation)を、圏 (デカルト圏) の言葉に翻訳してコードに落とし込むという技法 (論文:http://conal.net/papers/compiling-to-categories/) のサンプルコード。Deep Embedded な DSL の代替となるらしい。(が、論文もコードも難しくてわからなかった)

アルゴリズム

keon/algorithms: Minimal examples of data structures and algorithms in Python

github.com

Pythonによるアルゴリズム・データ構造の「図鑑」。165個ある。競技プログラミング向けか。

Web

Choo: sturdy 4kb frontend framework

https://choo.io/

Webフロントエンドのフレームワーク。今やフロントエンドフレームワークデファクト・スタンダードとなった Virtual DOM ではなく実際の DOM で差分計算をするnanomorphというのを使っているらしい。

WebGL Fundamentals

webglfundamentals.org

WebGLの入門サイト。解説の図や例が豊富。 WebGLとは何かという基礎の基礎から、(GLでは面倒な)文字の出し方やアンチパターンなどもカバーしている。

機械学習

Picasso: A CNN visualizer

github.com

畳み込みネットワークの可視化。解説記事 によると、ネットワークの内部状態を可視化することにより数値の指標(検出率等)では分からない「誤解」を調べることができるという利点をあげている。

関連して、手書き認識のCNNのWebでの綺麗なビジュアライゼーションデモを紹介しておく。

3D Visualization of a Convolutional Neural Network

データベース

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

github.com

Lock-free な Key-Value store。詳しくは読んでいない。SIMD要素はlock-freeでのcompare-exchangeをまとめてやる部分か?(不明)