Entries from 2010-02-01 to 1 month

O3

gdb + Emacs で VM ループをデバッグしていたら、全然違う行番号にジャンプしてびっくり。caes 内の共通コードがくくりだされたからか。O0 でデバッグしよう。

今日の復習

factories 要求 refactoring toward deeper insight

Memcached のベンチマークツールを公開しました

Memcached のベンチマークツールを公開しました。自作の KVS のパフォーマンス測定に使っていたものです。 以下のように簡単にベンチマークがとれます。 $ mcbench -b 10000 -t 10 -n 1000 -s 127.0.0.1 -p 11211 -c get ==== mcbench started =============…

Mosh 0.2.2 をリリースしました

Mosh 0.2.2 をリリースしました。ソースコードダウンロード。 バグ修正がメインのメンテナンスリリースです。また id:mjt さんによって IrRegex が移植されました。 リリースの詳細。

Erlang OTP アプリケーションのエラー処理

Erlang OTP アプリケーションのエラー処理について書かれた記事をあまり見かけないのでまとめてみました。 application -> supervisor -> workers という構成を想定。 application:start(app) 中のエラー application:start/1 中のエラーは戻り値 で分かる。…

JIT call のバグを追う

JIT CALL からの call の前後で this ポインタの値が不正になる事が分かった。レジスタの保存忘れだ。しかしまだ落ちる。何だろう。 JIT RETURN 時に不正な pc_ を引いてしまうな。

今日の復習

repositories 思考の整理学

Mona で lwip 動いた

echo server からレスポンス返ってきた。次は Socket API を触ってみよう。

今日の復習

基数ソート バケツソート 人を説得する モデルと実装 シンクロナイザ

JIT call に悩む

JIT compiled な関数から retq すると、とんでもないところに戻るな。なんだこれは。

今日の復習

課題定義

Git リポジトリの特定のディレクトリ以下のみを新しいリポジトリにする

git

自分は ~/higepon に雑多なスクリプトとかを入れて Git で管理しているのだけど、小さいプロジェクトのつもりが思ったよりも大きくなってしまう事があった。そのプロジェクだけ別レポジトリにする方法を見つけたので紹介。 ~nabeken/diary/ : Gitリポジトリ…

単語の難易度を取得する API

iVoca で単語の難易度を取得する API を試験リリース(項目反応理論) - Mi manca qualche giovedi`?。 これは Scheme コードバトンで使えそうだ。易しい順に出題とかできる。

FF13 クリアした

発売直後の評判は当てにならない。とても楽しんだ。面白いよ。ありがとう。どんなに歳をとっても次作もプレイしよう。 59時間30分32秒。以下軽いネタバレ感想 戦闘で気を抜けないのが良い 未知な用語がたくさんでてくるがいつの間にかおぼえてしまう不思議 …

今日の復習

カウンティングソート supple design context map エンタープライズアプリに起こりがちな事 shared kernel bounded context

lwip 移植のバグ修正

sleep 周りでおかしかったのでシステムコールを疑ったが、単純に移植レイヤーの timer.cpp Mona 実装がバグってただけだった。 このバグの原因に気づきづらかったのはスレッド API の実装が親切じゃないからなのでそこも修正。 それとなく動くようになった。…

今日の復習

モデルにデザインパターンをあてはめる。

Erlang で gen_server を利用してサーバーを書く場合のパフォーマンス懸念事項とその解決法

Erlang で分散 Key-Value Storage を書いているのだがデータの insert で思うように速度が出ていない。get の 10 倍ほど遅い。 ログを見た印象と直感的には insert の際の lock が競合しているのではないかと思われたがプロファイルをとってみたらボトルネッ…

gen_server の handle_call のアレが遅いらしい件

gen_server のベストプラクティスと思われていた handle_call で spawn して gen_server:reply/2 する方法。これがスループットが悪いという情報が。Deferring gen_server responses | Cliff 。dynomite の中の人の書いた記事なんだけど本当ならやばいね。 …

アルゴリズムイントロダクション 9 章「中央値と順序統計量」

数学的基礎とデータ構造 (アルゴリズムイントロダクション)の 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 ?? ()

JIT の CALL インストラクションで手を抜きたい

VM ループの CALL 命令は case (CALL): { #include "長いコード" } のようになっている。include しているのは CALL の合成命令、例えば REFER_GLOBAL_CALL などで同じコードを使いたいから。 さて CALL 命令を JIT 化するには長いコードをアセンブリでごり…

今日の復習

DDD リファクタリング クイックソート specification 記憶の階層の利用