Entries from 2009-01-01 to 1 year

Mosh の ChangeLog を捨ててみた

kosaki さんと naruse さんに Linux & Ruby の git log と ChangeLog の運用を教えていただいた。 Linux: git log に完全移行。昔の ChangeLog が見たかったら Web で探してね Ruby: git log と ChangeLog は手動でプログラマが同期。細かい git log は Chan…

ハイハイ

ひげ太は、まだハイハイが出来ないのだが数日中にできるようになりそう。 今日は前に進もうとして後に進んでた。すごい進化してるなあ。

今日の復習

分割統治法 分散プログラム コンピュータの言葉 乗算 ubiquitous language クラスの品質 挿入ソート factories

memcached の delete プロトコル変更されたんだね

time パラメータがなくなってる。

Jit 組み込み中

やっと Jit コンパイラを VM から呼び出してみるなど。

Git で chmod を無視する方法

git

git config core.filemode false

GDB スタブを書いてみよう その2

gdb 7.0 をダウンロードする。 ./gdb/m68k-stub.c ./gdb/m32r-stub.c ./gdb/i386-stub.c ./gdb/sparc-stub.c 前回の調査で sparc-stub.c が良くまとまっている事が分かっているので見ていこう。 さっそく GDB コマンドなる物があるらしく説明がある。レジス…

sigaltstack でシグナルハンドラ用の代替スタックを指定

SIGSEGV がうまくハンドルできない は代替スタックを指定すべきだったことを id:kazuhooku に教えてもらった。 こうしておけばスタックオーバーフローでも正しくシグナルハンドラが呼ばれる。 man sigaltstack にある例の通り。 stack_t ss; ss.ss_sp = GC_m…

今日の復習

メモリクリア比較。ポインタ vs 配列

SRFI 13 使ってみた

naive な suffix array を実装して重複文字列を検索するコードを書くときに srfi 13 string library を使ってみた。 string-prefix-length 手続きがまさに欲しかったもので感心した。

Erlang の memecached クライアント作った

Erlang の memecached クライアント作った。まだ複数サーバーに対応してなかったり、あまり使わないコマンドはサポートしていない。 既存クライアントの merle は色々と使いづらかったので自作。github に置いてあるので気軽に fork してもらえるとうれしい。

12/8

今日の復習

上流工程要求 Java のメモリモデル ヒープ

Erlang Common Test で init_per_suite, end_per_suite を使うときの注意点

Erlang Common Test ではテスト SUITE の開始と終了時に hook を指定する事が出来る。 これは xUnit にはよくある機能で、例えば開始時にリソースを取得し、テスト中は使い回す、終了時に解放みたいなことに使う。 ところが Erlang Common Test では init_pe…

GDB スタブを書いてみよう その1

そろそろ Mona のデバッグ環境を整えないと色々大変なので GDB スタブを書く事にする。全く分かっていないので調べるところから。 正月休みくらいに動くようになると良いな。 目的 達成したいのは Mona 中のユーザープロセスのデバッグ。ユーザープロセスが…

今日の復習

N個の整数から重複しないm個選ぶ。 コンセプトの輪郭 stand alone classes TDD コピペして良いの? マージソート repositories マージソート

アルゴリズムイントロダクション 4 章「漸化式」

数学的基礎とデータ構造 (アルゴリズムイントロダクション)の 4章 再帰木と分類定理を理解できれば良いのかな。とりあえず練習問題は省略。完全な理解が必要である事が分かった場合は戻ってこよう。

SIGSEGV がうまくハンドルできない

JIT コンパイルされたコードの VM インストラクション毎にスタックトレース用に情報を push しておいて、SIGSEGV が起きたら直近のスタックトレースを出す機能を作っている。 SIGSEGV をハンドルするように sigaction でセットして試しに直後に uintptr_t* p…

アルゴリズムイントロダクション 2 章「本書の枠組みについて」

数学的基礎とデータ構造 (アルゴリズムイントロダクション)の 2章 2.1-1 ( 41 59 26 41 58) ( 59 26 41 58) ( 26 41 58) ( 41 58) ( 58) () 2.1-2 不等号を逆に。 2.1-3 LINEAR-SEARCH(A, v) 1. for i <- 1 to length[A] 2. do val <- A[i] 3. if val = v th…

色々実装完了

条件変数など実装完了。せっかくがっつりテストを書いたので Mutex をリファクタリングしようとしたら、テスト突入以前に Mutex 使っているところがありすぎて挙動不審になり涙目。

ん?

アルゴリズムイントロダクション 3 章「関数の増加」

数学的基礎とデータ構造 (アルゴリズムイントロダクション)の 3章 何だか高校の数学の復習のような。練習問題は省略。

今日の復習

高校生の勉強方法 速読大特訓 ヘネパタ 外部接続 上流工程 intention revealing interface

今日の復習

月の日数 updating distributed data supple design プロセス間通信 ああそうかアルゴリズム associations

Erlang のコードを書くときに注意すべき事

Erlang ライブラリ関数の戻り値を必ずドキュメントでチェックして、以下のようにマッチさせておく事。 ok = hoge(), 少しでもさぼると痛い目にあう。

Erlang でコードカバレッジを取得する方法

Erlang でコードカバレッジでを取得する方法は大きく分けて 2 つある。どちらの場合も cover モジュールを利用している。 方法1 Common Test を使う Erlang Common Test を利用してテストを書き、カバレッジをオプションを有効にしてテストを実行すれば良い…

Erlang Common Test の run_test スクリプトを使わずにテストを実行

Erlang アプリケーションを配布する際には run_test スクリプトを同梱するのは難しい。開発者の環境の絶対パスがうめこまれてしまうから。 そのため ct モジュールを利用して直接テストを実行する必要がある。 ドキュメントを読みあさり、方法が分かったので…

条件変数実装完了

あとはドキュメント。

今日の復習

ヒープ 隠れたコンセプトを探し出す Aggregates concurrency control w/o locking 再利用性へのアプローチ

ひげ太に歯が生えた。下の歯が2本うっすらと。最近やたらとおもちゃをカミカミしていたのは歯が生えてきて、かゆかったのかもしれない。 先月から離乳食もはじまりイモが好きみたい。そういえばイモと言えばゴンスケだよね。