Entries from 2009-11-01 to 1 month

今日の復習

データ格納方法 pull up feature どのメソッドテストすべき Erlang 内包表記 なぜ Code Complete コンストラクションの重大決断

Erlang の application:get_env/1 にはまる

アプリケーションのログディレクトリを erl -xxx log_dir としていたのだが の部分が . (カレントディレクトリ)になると application_controller: syntax error before: '.': . と謎のエラー。 これは get_env/1 の戻り値が Erlang Term であることに気付…

git add -p 便利

git

これは良い。コミット分けたいときあるある。

UTF16 UTF32 変換のバグを修正

Mosh の utf16-codec における UTF16 UTF32 変換のバグを修正。 U+10FFFF (境界値)でバグってた。反省を生かして素直に unicode.org の FAQ のコードの通りに実装。 http://unicode.org/faq/utf_bom.html#utf16-3

Mosh のリポジトリを Git に移行しました

id:mjt さんの協力により Mosh のリポジトリを Git に移行し higepon's mosh at master - GitHub に置きました。 リリース物の配布などは今まで通り Google Code で行います。 今までと違いスクリプトにより生成されるソースコード類を出来るだけリポジトリ…

Git

twitter にも書いたのだけど、個人的に Git が速い(commit, push, clone, merge など)のが気に入った。

今日の復習

パタヘネマルチサイクル ソフトウェア種類特定 コンストラクションの重大決断 2割

14 章「ヒープ」 - 珠玉のプログラミング(Programming Pearls)

珠玉のプログラミングの14章。 14.6.1 分からなかったので答えを見た。実装のチューニングをしろという問題意図らしい。 14.6.2, 14.6.3 略。 14.6.4 ハフマン符号 頻度が少ない順に取り出す 浮動小数 小さい順に足しあわせる ファイル サイズ順に突っ込む。…

今日の復習

上流工程の重要さ supple design Intention revealing interface side effect free function

Mona の条件変数実装

簡単なテストが通った。タイムアウト実装はこれから。 SourceForge - monaos/monaos/commitdiff

今日の復習

disk space management

今日の復習

Smart UI antipattern

Erlang の logger の謎が見えてきた

Erlang で書かれたアプリケーションの logger 。使っていると色々と疑問がわいてくる。 今思いつくだけでも error_logger という名前なのに設定で sasl とか log_mf_h など違う名前が出てくるの? error_logger の吐くログはなぜ rb で見るの?面倒だよね。 …

RabbitMQ 方式の ctl 作った

Apache でいうところの apachectl 相当のものを作った。 構成は xxxctl シェルスクリプト で getopts して nodename などをうけとる Windows なら bat ファイル(まだ作ってない) xxx_control.erl 実際に stop などのコマンドを実行 コマンドは rpc:call(No…

Erlang の inet:setopts と -kernel オプション

man inet(3) すると分かるのだが erl に kernel application へのオプションを渡す事が出来る。 % erl -kernel inet_default_listen_options [{nodelay,true}

Java並行処理プログラミング 復刊決定とのこと

復刊.com で投票してくれた皆さんのおかげですね。 復刊.comの記事 参照 良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - ひげぽん OSとか作っちゃうかMona-

cond_wait, cond_notify_all のテストを書いた

本実装は週末かな。

今日の復習

introduction to lock management changing software ランダムに選ぶ

Erlang プロジェクトの配布形態などを見る

Erlang で書かれたアプリケーションを配布する場合に ビルド方法 ディレクトリ構成 起動・再起動・終了方法 などをどう提供しているのかを調べてみた。 id:Voluntas さんと id:cooldaemon さんに教えてもらった候補たち RabbitMQ, Yaws, MochiWeb, ejabberd,…

named let における list 終端で返す値

(let loop ([lst lst]) (cond [(null? lst) '()] ;; ここ [else ...])) のように値を返さないという意思表示で '() を返していたんだけど。 cond と組み合わせる場合は type 数が少ない (let loop ([lst lst]) (cond [(null? lst)] ;; #t が返る [else ...]))…

SEGV になるバグを修正

定義されているマクロが 750 個を超えると SEGV するバグを修正。スタック自動伸長で一部考慮が足りない部分があった。

今日の復習

Value Objects

アルゴリズムイントロダクション 1 章「計算におけるアルゴリズムの役割」

アルゴリズムイントロダクション 第1巻の 1 章。 1.1-1 子供を背の順に並ばせる。 1.1-2 例えば車なら使用する燃料の量。 1.1-3 配列。 長所:どの要素も定数時間でアクセス 短所:挿入のコストが高い 1.1-4 類似点:経路の組み合わせ。 相違点:巡回行商人…

Gauche 0.9 リリース

Gauche 0.9 がリリースされたようです。正式なアナウンスは明日とのこと。 Gauche | Get Gauche at SourceForge.net

今日の復習

Layered Architecture

Code Complete 3周目

Code Complete読み3周目完了。 読み返すといろいろ気づく。Programming Pearls も言及されてた。

今日の復習

replace global reference Intel 浮動小数

git 中央の共有レポジトリでトピックブランチを共有する

条件変数を実装する途中経過は master には見せたくないので共有レポジトリにトピックブランチを作った。 % git checkout -b cond-var % git push origin cond-var http://monaos.git.sourceforge.net/git/gitweb.cgi?p=monaos/monaos;a=summary 入門Gitの 8…

Mona のテストをより気軽に実行する仕組み

最近書いた Mona の API は TDD で開発したのでテストコードが付属している。 当然ながら Mona の API なので Mona 上にテスト結果が表示されるのだが qemu 立ち上げる qemu のウィンドウが最前面に現れる テスト結果を目視 qemu 終了する と大変面倒で、気…

Conditon Variables の内部実装を考える

wait 側のユーザーコード mutex->lock(); while(!some_condition) { condition->wait(mutex); } // ここでお仕事。必要に応じて some_condition 書き換え。 mutex->unlock(); wait が内部でやる事は (1) mutex->unlock (2) スケジューラーの wait queue へ追…