Entries from 2009-10-01 to 1 month

今日の復習

DDD Documents Crash recovery log extract and override getter テストできない web tier heart of software query plan 最適化 aggregates code complete オブジェクトライフサイクル

Mutex の timeout 機能を実装した

Mutex に timeout 機能を実装した。カーネルのスケジューラやイベント周りのコードを久しぶりに触った。 イベント待ちの API デザインは Windows の WaitForSingleObject や WaitForMultipleObjects が良いのかな。

11章「ソート」 - 珠玉のプログラミング(Programming Pearls)

珠玉のプログラミングの11章。 11.5.1 n 回見ればよい物ばかりなのでソートしなくても良さそう。 11.5.2 コード参照。 11.5.3 データ数で計測して交わるところを考える。 11.5.4 すべて同じ値の配列の場合。 11.5.5 問題の意味が分からないので略。 11.5.6 …

寝返りの寝返り

ふと目を離した隙にひげ太が「うつぶせ」→「あおむけ」の状態になってた。日々成長してうれしい。 理論上はごろごろ転がってどこにでも移動可能になったのか。寝かせたり置いておく場所にさらなる配慮が必要だ。

JIT版 fib が動いた - JIT 実験

いろいろと制限付きではあるが JIT 版の fib が動いた。(正確には JIT コンパイラが吐くコードが動いた。Just in time なコンパイルはしてない) 速度比較 通常の (fib 30) 250msec JIT (fib 30) 200msec JIT 版の fib はまだ速くなる余地がある。 VM の仮…

lwIP に必要で実装が必要な物

timeout つき Semaphore または conditional variable msec 精度の時刻取得 Thread::self() くらいかな。

今日の復習

コードを書く前に プロセス間通信 radiometry 条件 queue hash based indexing 設計チェック

gettimeofday

gettimeofday 相当を実装するには TSC を使う。クロックサイクルを取得しないといけないのか。

GDB のユーザー定義コマンドで VM の状態を知る - JIT 実装中

JIT 実装中に VM の仮想レジスタの内容やスタックを覗きたい事がある。 GDB のユーザー定義コマンドを利用して以下のように定義した。 ## stack top is "sp 1" define sp printf "%d\n", ((intptr_t*)(*(((intptr_t*)$rdi) + 5)))[-$arg0] end define hook-s…

今日の復習

コードを書く前に 2割 設計チェック 2割 プラクティスの決定 準備の重要性 株実践

Mona のプロトコルスタックは lwIP にしようと思う

FreeBSD 系のソケットは移植難度が高い。なので lwIP にしようかと。 採用理由は 移植難易度が低い事 BSD Socket API がついてくる事 今もメンテナンスされている事 uIP とおなじ作者(いまは違う人達がメンテしている) 採用 OS が多い事(組み込みだけど)…

今日の復習

コンストラクションにおける設計 2割 DDD リファクタリング アトミック変数 クラスの品質

Skip Graph concurrent JOIN テスト中

実装してみたところ1つ想定していなかったケースがに遭遇。多分バグ。 上位レベルに存在する key が下位レベルに存在しない。 これだけなら insert の途中と推測されるんだけどいくら待っても表れない

OS のプロトコルスタック

Name URL TCP/IP License Minix http://www.minix3.org/ orignal BSDL http://www.nyx.net/~ctwong/minix/ DexOS http://www.dex4u.com/ original asm BSDL MenuetOS http://www.menuetos.net/ orignal asm original MorphOS http://www.morphos.de/ ? ? Syl…

GDB でレジスタを見る

gdb

GDB でレジスタを表示するときに (gdb) info register rax # もしくは i r rax としていたが、レジスタは変数としても参照可能なことを知った。頭に $ をつけるだけ。 (gdb) print/x $rax 変数として参照できるので、操作の度に自動でレジスタを表示する dis…

今日の復習

クラスの品質 7割 継承の部分が覚えられない。明日がんばる。

今日の復習

クラスの品質 1割 ライブラリ依存に殺される learning test erlang multi core concurrency control B+ tree 貧乏人のデイトレ

lwip も調べてみる

TCP/IP プロトコルスタックは BSD 系の物を移植しようと思っていたが、lwip も調べてみる事にした。 実は lwip には BSD Socket API がついてくる。これさえあれば当座は lwip でしのいであとからごっそり入れ替える事も可能だな。 Mosh の OSCompatSocket.c…

今日の復習

貧乏人のデイトレ 1割 Dead lock projection (3D) services

今日の復習

value objects 課題定義 repositories 要求 factories

今日の復習

コードを書く前に R形式データパス DDD documents 並行処理構築部材 procedural texture データベース raid layered architecture

今日の復習

日付->曜日 ファイル別コスト比較 コード書く前に 2割 並行プログラム試験 投資信託にだまされるな Tree-based indexing

10章「メモリの節約」 - 珠玉のプログラミング(Programming Pearls)

珠玉のプログラミングの10章。 10.6.1 インタプリタのコードとか。 10.6.2 bitmap はどうだろう。用途によるか。 10.6.3 HDD 80GB Mem 1GB 空き 180MB 10.6.4 略 10.6.5 関数の補正に1要素=数ビットの表を利用した。 10.6.6 よく分からなかった。 10.6.7 has…

global:set_lock の Nodes に [] を指定するのは間違い

Sets a lock on the specified nodes (or on all nodes if none are specified) on ResourceId for LockRequesterId.と書いてあるので set_lock の Nodes に [] を指定したら常に true が返ってきて困った。 global モジュールのコードを読んだが set_lock({…

Erlang の global モジュール

こんなのがさらっと提供されている事が分散に強い言語ってことだよな。 The ability to globally register names is a central concept in the programming of distributed Erlang systems. In this module, the equivalent of the register/2 and whereis/1…

コード移植方法のドキュメント

FreeBSD のプロトコルスタックを Mona に移植する計画がある。そこでコードを移植する際の一般的な方法論をまとめた記事を探しているがなかなか見つからない。 根性で移植というのはいやなので探してみた。英語では「Source code porting」がキーワードのよ…

赤ちゃんが生まれてくる前に買うべき物、買わなくてよい物のまとめ

初めての子供が生まれて 4 ヶ月が経ちました。 育児本、育児雑誌、パンフレット、Web などで「出産前にやるべき事、そろえておくべき物」を調べたのですが、子供が実際に生まれてみて分かることも多くありました。 また雑誌や赤ちゃん用品のお店が提供してい…

眠くてぐずる場合の対処法

最近ひげ太は、4ヶ月目に突入。眠いとぐずるようになった。抱っこし動き回ったりしたがあまり効果が無くて困っていたのだが、対処方法が分かってきたのでまとめておく。 静かな部屋に連れて行く(テレビがついていたり、突発的な音が鳴らないところ) うつ…

9章「コードチューニング」 - 珠玉のプログラミング(Programming Pearls)

珠玉のプログラミングの9章。 9.5.1 Mosh でやったことがあるので略。 9.5.2 配布プログラムがうまく動かないので略。 9.5.3 do while なら良さそう。という話だろうか。 9.5.4 配列が小さい順にソートされていると、arrmax が 2倍呼ばれてしまう。 9.5.5 本…

Skip Graph の Concurrent Join をしつこく考える

Erlang の global:set_lock で複数ノードを一括してロックできる事が分かったので考え直した。 一晩寝かせよう。