自由課題

学んだり、考えたり、試したりしたこと。

makecontext関数でコルーチンを実装してみる

ユーザレベルでコンテキストの切り替えを行う関数としてmakecontextという関数があります(ここでいうコンテキストはこれです)。 これを使うとpthreadやプロセスを利用せずに処理の流れを制御できます。
車輪の再発明感がかなりありますが、この関数と関連する関数を使って簡単なコルーチンライブラリを実装してみました。

レポジトリは以下です。
https://github.com/kimito/libcr

続きを読む

ファイバ・コルーチン実装まとめ

リアクティブプログラミングを行うにあたって、並行処理の方法としてマルチスレッドモデルではなくファイバ(またはコルーチン)を使うことがひとつのポイントに思えたので調査してみました。なお、範囲は普段自分がよく使う言語ということで、C/C++/Ruby/Javascriptにしました。

続きを読む

The Reactive Manifesto 日本語訳

まえがき

ガートナーのレポートInfoQの記事なんかをみると、リアクティブプログラミングというのがこれからくるよ、というのが書いてあったので少し前にちょっと調べていました。その時にアジャイルマニフェストみたいな感じでThe Reactive Manifestoという文書があったのでその時はザクッとみてふーんという感じだったのですが、最近見返そうと思ったらまだ日本語訳がありませんでした。

なので、もうちょっと詳しく読むついでに原文を書いた(一人である)Jonas Bonérさんに日本語訳を書いていいか聞いてみたら(今みたらこの時点で英語が若干間違えてる...)、

とわりとフランクに許可をもらったので訳してみました。
なお、訳が怪しい部分は原語をカッコで併記しています。訳の間違い・日本語のわかりにくさなどあるかも知れませんが、悪しからずご了承ください。

続きを読む

Ruby on Railsをすぐに試せるVagrant環境

Ruby on RailsでWebアプリを作るときには、当たりまえですがRuby on Railsの環境を準備する必要があります。慣れの問題といえばそうなのですが、これが結構面倒くさい。

しかし、ちょっとググってみたところだとVagrantをOSのセットアップの自動化手段として使っている方が多いみたいで、Rails用のProvisioningまで含めてセットアップしている例は(日本語では)あまりみられませんでした。

というわけで、Vagrantを試してみるということも含めて、セットアップ後に'rails new ...'とすぐに試せるところまでの設定をVagrantを使ってやってみました。ちなみにpuppetとかchefは使わずに、シェルスクリプトで書いてます。

続きを読む