Entries from 2010-02-01 to 1 month
gdb + Emacs で VM ループをデバッグしていたら、全然違う行番号にジャンプしてびっくり。caes 内の共通コードがくくりだされたからか。O0 でデバッグしよう。
factories 要求 refactoring toward deeper insight
Memcached のベンチマークツールを公開しました。自作の KVS のパフォーマンス測定に使っていたものです。 以下のように簡単にベンチマークがとれます。 $ mcbench -b 10000 -t 10 -n 1000 -s 127.0.0.1 -p 11211 -c get ==== mcbench started =============…
Mosh 0.2.2 をリリースしました。ソースコードダウンロード。 バグ修正がメインのメンテナンスリリースです。また id:mjt さんによって IrRegex が移植されました。 リリースの詳細。
Erlang OTP アプリケーションのエラー処理について書かれた記事をあまり見かけないのでまとめてみました。 application -> supervisor -> workers という構成を想定。 application:start(app) 中のエラー application:start/1 中のエラーは戻り値 で分かる。…
JIT CALL からの call の前後で this ポインタの値が不正になる事が分かった。レジスタの保存忘れだ。しかしまだ落ちる。何だろう。 JIT RETURN 時に不正な pc_ を引いてしまうな。
repositories 思考の整理学
echo server からレスポンス返ってきた。次は Socket API を触ってみよう。
基数ソート バケツソート 人を説得する モデルと実装 シンクロナイザ
JIT compiled な関数から retq すると、とんでもないところに戻るな。なんだこれは。
課題定義
自分は ~/higepon に雑多なスクリプトとかを入れて Git で管理しているのだけど、小さいプロジェクトのつもりが思ったよりも大きくなってしまう事があった。そのプロジェクだけ別レポジトリにする方法を見つけたので紹介。 ~nabeken/diary/ : Gitリポジトリ…
iVoca で単語の難易度を取得する API を試験リリース(項目反応理論) - Mi manca qualche giovedi`?。 これは Scheme コードバトンで使えそうだ。易しい順に出題とかできる。
発売直後の評判は当てにならない。とても楽しんだ。面白いよ。ありがとう。どんなに歳をとっても次作もプレイしよう。 59時間30分32秒。以下軽いネタバレ感想 戦闘で気を抜けないのが良い 未知な用語がたくさんでてくるがいつの間にかおぼえてしまう不思議 …
カウンティングソート supple design context map エンタープライズアプリに起こりがちな事 shared kernel bounded context
sleep 周りでおかしかったのでシステムコールを疑ったが、単純に移植レイヤーの timer.cpp Mona 実装がバグってただけだった。 このバグの原因に気づきづらかったのはスレッド API の実装が親切じゃないからなのでそこも修正。 それとなく動くようになった。…
モデルにデザインパターンをあてはめる。
Erlang で分散 Key-Value Storage を書いているのだがデータの insert で思うように速度が出ていない。get の 10 倍ほど遅い。 ログを見た印象と直感的には insert の際の lock が競合しているのではないかと思われたがプロファイルをとってみたらボトルネッ…
gen_server のベストプラクティスと思われていた handle_call で spawn して gen_server:reply/2 する方法。これがスループットが悪いという情報が。Deferring gen_server responses | Cliff 。dynomite の中の人の書いた記事なんだけど本当ならやばいね。 …
数学的基礎とデータ構造 (アルゴリズムイントロダクション)の 9章 9.1-1 1, 2 番目に小さい要素を記録していけばよい。 1番目より小さい要素が出たら、今までの1番が2番になる。 1番目より大きく2番目より小さい要素は2番になる。 9.2-1 p = r だから起きな…
(gdb) bt #0 0x000000000000000b in ?? () #1 0x0000000000000000 in ?? ()
VM ループの CALL 命令は case (CALL): { #include "長いコード" } のようになっている。include しているのは CALL の合成命令、例えば REFER_GLOBAL_CALL などで同じコードを使いたいから。 さて CALL 命令を JIT 化するには長いコードをアセンブリでごり…
DDD リファクタリング クイックソート specification 記憶の階層の利用