2011年を振り返る



5月

C/C++のポータブルな実行環境としてのGoogle NaCl


はてなブログは5月13日から始めたようです。実はこれが一番ブクマされた
記事です。たしかこの日にグーグルのイベントがあってNaClってのが旬だったという
ことが大きいと思います。当時はNaClはflagをオンにすれば、どのサイトでも使えた技術だったのですが、flagがなくなると共にchrome webアプリじゃないと使えなくなりました。なので、ここに書かれている内容はすでに古くなっています。あと5月は、他の記事を見るとJavaScriptエンジン(V8)と正規表現エンジン(re2)のソースコードリーディングを試みていたようです。V8がJITということもあって、機械コードをどうやって実行するとかも調べていたようです。



6月

minigcのgc_mark_stack(void):void はいつ動くの?


僕の初めてのプログラム経験というのはfortran 77から始まって、phpにタッチしてから去年くらいからC言語を書くようになりました。そのとき、どうしても自分の中でしっかりと理解しておきたかったことがメモリ管理です。そういったことは、ガベージコレクションの実装を勉強したらわかるんじゃないかと思って、GC本を読むことにしました。その本の中でも紹介されているminigcというのがあるのですが、それについて質問したというのが、この記事の内容です。コメントしてくださった(本とminigcの作者の)authorNariさんには感謝します。


7月


thread/threadingモジュールを使ってエコーサーバーのテストを書く


これからはメニーコアの時代。速いコードを書くには並列、並行処理について学ぶ必要があるなとか勝手に思って、手始めにPythonでスレッドの勉強をした成果としてエコーサーバーのテストを書いたという記事です。PythonのスレッドはJavaのインターフェースを真似ていることろもあるそうです(ソースコードに書いてあった)。しかし、現在にいたってもここのところはモノにできていません。あと、この月にはPythonのテンプレートエンジンのjinja2も読んでいて、それに関する記事もチラホラあります。



8月

Go節電プロジェクトのtracプラグイン


暑いので「節電」というのと、あとはこの時期BTSのtracを読んでいたのもあって、tracのプラグインを書いてみました。tracがIoC(Inversion of Control)パターンということ、BTS流行ってる気がしてきたということもあって読んでいたと思います。個人的には初めてPythonでEggパッケージを書いたというのが大きかったです。



9月

sqliteのデータベースファイルを読み込む


この時期、webアプリ作らないとって思って、そのためにデータベースを勉強し始めました。それでいつの間にかsqliteソースコードリーディングして、pythonsqliteを再実装しようと試みました。データベース上のデータは放って置くとフラグメント化してしまうとか、BTreeの平衡状態を保つとかで、色々難しくて未だに勉強中の分野です。




10月

パッケージを作る


この時期、Go言語のversion 1が出るって話が出てたと思います。sqliteで、アルゴリズムを勉強し直そうと思っていたのもあって、ついでにGo言語で勉強しようかと思っていました。とりあえず、テスト駆動開発する方法だけはっきりさせておきました。




11月

QuickCheckも動かす:test-framework


先月に引き続きアルゴリズム勉強用言語としてHaskellはどうかと思ってテスト駆動開発できるように環境を整えました。その後、モナドが数学的な性質で言語実装とは違うようなことがわかった気がしました。



12月

数学ガールに登場する擬似コード風のプログラミング言語が実行できるwebアプリを作り始めました


昨日のことですが、クラウドサーバーを使って、webアプリを作りました。アルゴリズム、言語処理系、webサーバー、PythonJavaScriptといった僕の興味を総合して作ったアプリです。テーマは「1人で使っても役立つモノ、もしくは楽しいモノ」です。利用者が僕一人でも使われ続けるもの。僕に価値を提供するものとして、このアプリは作っています。