Python で Variable Byte Code を実装
よる年の瀬の最中、Web開発者のための大規模サービス技術入門という本を読んでる。
ソーシャルゲームが流行っている昨今、大規模サービスの運用論や方法論について、少しは学んでおくか的なノリで読んでる。
こいつは、株式会社はてなで行われたインターン実習が元になってて、負荷対策の基本等が分かりやすく実習形式で解説されてるオシャレな本だ。
OSのページキャッシュの仕組みとかデータの分散とか検索アルゴリズム等、もろもろ興味深いのだ。
今回は、整数データをコンパクトに持つ為の圧縮技術VBCodeをPythonで実装してみたメモり。(本の中ではPerl)
はてなのインターン生に混じった気分で、疑似コードを参考に実装してたら、なんだかんだ1時間ぐらいかかった。
もっとさくっと組めたらいいのに。
つっかかった点は以下2点。
・Pythonにおけるバイトコードの取り扱い(pack, unpack)
・128というマジックコード
おもうさま翻弄された。
特に後者の128ってマジックコード。
2進数であらわすと10000000で、VBCodeのキモになる値。
足したり割ったり眺めたりしてようやく理解したけど、擬似コードがn << 7のようにC言語ライクに書いてくれてたら、もう少し早く理解できたかもな!
できたソースコードはgistに貼り付けた。