Entries from 2009-06-01 to 1 month

今日の復習

Estimate cost of plan 4割 以下10割 Crash Recovery log Fake It Aggregate

equal? が遅い

R6RS equal? は循環を検知して停止しないといけない。 今の Mosh の equal? 実装は遅いので Efficient Nondestructive Equality Checking for Trees and Graphs Michael D. Adams and R. Kent Dybvig ICFP 2008 という論文を読もうと思う。どこかで無料版を…

Erlang のアプリケーション構築開始

kvs

やったこと ドキュメントを読んでディレクトリを作った。ebin/src/log/test 。 supervisor, gen_server, application それぞれの behaviour のひなたがを作った Common Test を導入して簡単なテストを書いた Makefile を整備 make make check 未解決 supervi…

パケット遅延調査2 - virtio

もう一度ログを吐かせたところ、waitInterrupt で1秒待たされていた。 これでピンと来たのだが、 receive が block しているので ping の送信間隔でしか応答できないことが原因のように思える。 man によると ping の送信間隔は 1 秒だそうだ。 ためしに、pi…

パケット遅延調査 - virtio

QEMU にログを吐かせて調べたところ、予想していなかった部分の spin lock で 1000 msec 待たされていることが分かった。 ほぼ 1000 msec ってのが怪しいなあ。 bool receive(Ether::Frame* dst) { waitInterrupt(); // ここから while (readVring_->used->i…

今日の復習

全て10割。 Ubiquitous Language Crunching Knowledge documents DDD における図 Broken Test

Erlang の application

kvs

Applications を読み ディレクトリ構成 start.sh アプリ名.erl などを整備。 とりあえず空で動かすようにしたければ start/2 が {ok, Pid} を返さないといけない。 pid をねつ造しようと思ったが方法が分からないので何もしない spawn で対処。

今日の復習

Crunching knowledge 3割 Broken Test 0割 以下10割 Value Object Crash Test dummy Starter test

FFI ポインタアクセス手続き追加

以前 ポインタは exact integer として表現していたのだが、「pointer? で検査できる方が安全」というもっともな提案を受け改良中。 INT8_MIN などの最大値、最小値がが定義されるかどうかは? stdint.h で以下のようにチェックされていることを知った。 /* …

(mosh concurrent) ライブラリが Windows で動作

ようやく (mosh concurrent) ライブラリが Windows で動作するようになった。 test/concurrent.scm, concurrent-crash.scm, echo-server など全て意図通り動いている。 さて次は FFI の構造体アクセスサポートのための低レベルレイヤの実装。

Test Driven Development: By Example 読み終わった

Kent Beck の Test Driven Development: By Example読み終わった。自分は原書を読んだが翻訳版はテスト駆動開発入門。 期待していたよりも学べたことが多かった。 まとめ記事を読むことと、良質な生きた技術書を読むことの違いを感じさせられる一冊だった。 …

Mosh 進捗

Conditonal Variable が Windows でも動くようになった。 test/concurrent.scm はまだ全部通らない。落ちるのは pthread_exit 相当の部分かも。

今日の復習

Crunching knowledge 6割 One step test 8割 The heart of software 10割 Persistent strategy 10割

Multi-key Skip Graph の仕組みを学ぶ

kvs

「単一ピアに複数キーを保持可能とするSkip Graph拡張の提案」という論文で提案されている Multi-key Skip Graph を学ぶ。 大変苦労して読み解いたので、以下にまとめた事は間違っている可能性が高いので注意。 誤りがありましたらぜひご指摘ください。 背景…

パケット遅延の場所を見つけたい - virtio

Wireshark のパケットのタイムスタンプを見る限りでは ICMP Request から Reply までに 2000 msec かかっているようだ。 その間に数パケットほど、他の Request を処理しているのだが、それにしても遅い。 どうやったら遅い場所を特定できるかをミルクをやり…

続 Conditional Variables on Windows

Windows 上の Conditional Variables を Strategies for Implementing POSIX Condition Variables on Win32 を参考に実装した。 並行して file-stat-ctime? file-symbolic-link などを実装。 その過程で気付いたのだけど、Windows の ctime と POSIX の ctim…

ミルクのあとのげっぷ

ひげ太。ミルクのあとのげっぷが苦手。そのせいで時々苦しそうにしたり、吐いたり。 でもここ数日で進化し、げっぷを上手に出せるようになった。 体重はもう少しで 4000g 。二重あご。目鼻立ちがはっきりしてきて人間らしい顔に。 こちらも学習しなぜ泣いて…

今日の復習

One Step Test 6割 Heart of Software 5割 以下10割。 Learning Test Texture pipeline Join

Layer と Tier

Web Layer と Web Tier の違いは何だろう?と疑問に思っていたが謎が解けた。 Arefgard.org blog » レイヤー(Layer)とティアー(Tier)

続 単純な場合の Skip Graphs アルゴリズムを実装してみた 4

kvs

ToDo に挙げていたリファクタリング項目を全てクリア。漸く見られるコードになってきたかな。 実装の面白さの肝は 隣接ノードに、再帰的に問い合わせていく部分 レベルを上下する事で検索パスを短くできる事 結果を返すべきノードを持ち回る部分(若干 CPS …

when と and

(when ok? (do-something)) と (and ok? (do-something)) 個人的には、前者の方が直感的だが、後者の方がタイプ数が1少ない。

uIP with virtio-net - virtio

virtio-net で uIP (軽量プロトコルスタック)を動かしてみた。 あっさり動いた。 ARP ICMP (ping) HTTP (TCP/IP) が当たり前のように並列に動くってのは素晴らしいね。 /cgi/tcp にアクセスすればリアルタイムでコネクションが見える。 /cgi/stats では統…

今日の復習

Join 3割 Texturing pipline 2割 モデルとは? Distributed Database

続 単純な場合の Skip Graphs アルゴリズムを実装してみた 3

kvs

動作の主体が明確になるように search-op, insert-op, buddy-op, link-op を書き直した。 buddy-op の実装が論文に載っていないので若干苦労したが多分実装できたと思う。論文中の buddy-op の引数と戻り値は微妙な気がした。 まだまだ実装の重複や未実装が…

SignalObjectAndWait

WIN32 で mutex の unlock と conditon variables の wait を atomic にやるのは SignalObjectAndWait を使えば良さそうだ。

Picasa ウェブアルバム検索でマイフォトの検索をデフォルトにしたい

設定できないのかな。ヘルプを見たがなさそうだ。 検索後毎回、マイフォトタブをクリックするのは面倒。 追記 無さそうなので http://picasaweb.google.co.jp/lh/view?uname=higepon&q=%s&isOwner=true# をブックマークして Firefox のキーワードで検索する…

今日の復習

Distributed database 3割 以下10割 3つのモデルの有効性 モンスターメソッド 世界一わかりやすい株実践 貧乏人のデイトレ TDD 基本 Fake It

Mosh スレッド Windows 対応

ビルドは通ったが GC のエラーが出る。 Boehm GC のドキュメントを読もう。Fatal error in gc. Collecting from unknown thread. 追記 threads should be created with GC_CreateThread or GC_beginthreadex 追記2 #define GC_WIN32_THREADS 1 としてビルド…

今日の復習

貧乏人のデイトレ金持ちのインベストメント 3割 世界一わかりやすい株実践編 2割 以下10割 TDD の心構え Photometry Updating distributed data モンスターメソッド

VirtioNet クラス完成 - virtio

動作や実装に不明点がなくなった。実装の重複も出来る限り取り除いた。 次はいよいよ uIP を組み込んでみよう。