今週のまとめ (2017/4/28)
4月も終わり (ここで家賃振込みを忘れてたことに気づき書くのを中断し銀行へ行く) ですね。
プログラミング言語
Monads to Machine Code
Haskell で LLVMライクな中間言語から x86 の命令を出力する JIT コンパイラを作る記事。それぞれの命令解説があるのでx86の知識がなくても読める。
Helix: Native Ruby Extensions without Fear
Helix: Native Ruby Extensions Without Fear
Rust で Ruby拡張を書くためのライブラリ。Ruby では高速化などの目的で C で拡張を書くことが多々あるが、 Rust もこの目的として使えるようになる。Rust の マクロ機能を用いてより直感的に書きるようになっており、Rust コードで定義したクラスを Ruby でバリアフリーに使うことができる。
Bonobo: data-processing for humans | Python 3.5+
Python3.5のためのデータ処理フレームワーク。Python3 の言語機能を取り込みよりモダンな設計になっている。 開発中のため現時点で利用は推奨されていない。
Kaitai Struct
バイナリ構造をパースするライブラリ・フレームワーク。 バイナリフォーマットを KSL というマークアップ言語で書くと ( GIFでの例 ) 、バイナリデータが構造体やオブジェクトにマップされるようになる。対応言語は、C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby。 KSLを直接各言語のコードに変換するコンパイラやビジュアライザ、Webで動作するIDEなども提供されている。
また、Githubレポジトリ には、画像フォーマットからネットワークプロトコルまでいろいろな KSLでの定義がある。
アルゴリズム
C++ implementation of a fast and memory efficient HAT-trie
HAT-trie木 *1 の C++による実装。HAT-trie木は空間計算量が良い木で連想配列などに用いることができる。 この実装は pure HAT-trie 木の実装で、もっと効率の良い hybrid HAT-trie 木は “may arrive later” とのこと。 Cによる実装は既にある。
セキュリティ
Referrer Policy
See also: Referrer-Policy - HTTP | MDN, Referrer を制御する - Qiita
サイトから出ていく際に付く Refererヘッダ (遷移先のサイトに遷移前のサイトのURLを追加する)をどのように扱うかを制御することができるヘッダ Referrer-Policy についての説明。*2 それぞれの設定項目に対して丁寧に場合分けされている。残念ながら現在 Referrer-Policy を利用できるブラウザは少ない (Firefox等)。
このブログ筆者が運営しているサービスに securityheaders.io というのがある。サイトのセキュリティヘッダが設定されているか確認でき、ランクが付けられる。
securityheaders.io
某大のポータルサイトがF判定だった
Top 10 Developer crypto mistakes
Top 10 Developer Crypto Mistakeslittlemaninmyhead.wordpress.com
「プログラマが暗号にして最も起こりしやすい10の誤り」。目次を引用すると、
データベース
CMU 15-721
Advanced Database Systems
カーネギーメロン大学のデータベースの講義。講義のスライドとビデオ、また参考文献となる論文が公開されている。 DBMS の実装においての並列モデル・データレイアウト・データ圧縮・最適化などを論文を参照しながら行う。
*1: http://crpit.com/confpapers/CRPITV62Askitis.pdf
*2: 前者は Referer で、後者は Referrer。非常にややこしい
*3: HMACなどを使おうという話らしい