2011-10-01から1ヶ月間の記事一覧

「読み取り専用」は汎化ではない

InfoQ: .NETのリードオンリー コレクションインターフェースの物語 読み取り専用コレクションが.NET4.5で追加されると言う話。 記事は「ようやくかよ!」という感じだが、.NETチームのこれまでの判断は妥当だと思う。 面白いのが、IList<T>は、IReadOnlyList<T>か</t></t>…

リファクタリングはハノイの塔

InfoQ: リファクタリング中は考えることを止めよう 個人的には、リファクタリングに向き合うときはハノイの塔を解いている気分になる。 円盤(コード)を移動させる前に、完成までの手順が見えていなくてはならない。 完成までの手順が見えないなら、円盤を…

Bazaarの概念モデルは過度に複雑すぎる

DVCSを比較すると、いつも Bazaar が良さそうだという結論になる。 そうして試してみるものの、いつも「よくわからない」という結果に終わる。 何度も繰り返してたどり着いたのが Mercurial で、いまのところ不満はない。 しかしながら、Bazaar の何が良くな…

Thrift

Apache Thrift を自作ソフトの通信に使おうかと思って調査。 非同期のサポートがない。(THRIFT-1というプロトタイプがどこかにあるらしいが、リリースにはない。) メモリバッファの扱いが適当で、通信のたびに細かく生成しまくる実装になっている。GCへの…

Ghost in the Stack

メモリリークを取っていたが、最後の最後のヤツはこんなんだった。 次のようなコードでメモリリークする。 void UndertakeOnNewThread() { while(true) { Task task; task = WaitForTask(); Process(task); }} ただし、UndertakeOnNewThread は独立スレッド…

コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、シンタックスに則る。

UMLの重要性は明らかだが、UML記法に従っていれば有用だと思われている節がある。文法的に正しければ良いわけではない。良いUML図とは、コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、そしてシンタックスに則っている。 最も大切なのはイ…

ちょっとひどいと思ったオブジェクト指向の解説

http://www.csg.is.titech.ac.jp/~chiba/notes/aop03/index.html これはひどい。オブジェクト指向を誤解しているのでは。`03年とはいえ、、、。 非常に直感的に説明すると、オブジェクト指向ではシステムを全体から部分へ階層的に分割する。システム全体は、…

相互依存問題への間違ったアプローチ

学習する組織を読んでいる。 ちょっと前に記号と再帰という本も読んだ。 両者に共通するのは、再帰、フィードバックという概念。相互依存、循環、ループ。 現在容易に解決できない種類の問題は、かならずこのような性質を含んでいると思う。 私は昔から、問…

this によるメソッド呼び出しは速い

.NET Framework 4.0 で以下のfuncの呼び出しは、this のほうが速い。 遅い方。 var me = this; me.func(); 速いほう。 this.func(); 「そりゃ変数代入の分だけ遅い」ではなくて、呼び出し単体で遅いのである。 利用は、NullReferenceException チェックのた…

ThreadPool.RegisterWaitForSingleObject は狂っている

http://msdn.microsoft.com/ja-jp/library/system.threading.threadpool.registerwaitforsingleobject.aspx こういうやつで、要は WaitHandle がシグナルしたらスレッドプールを使ってコールバックしてくれる。 public static RegisteredWaitHandle Register…