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…

バブル崩壊の動画

米国 個人破産・ミニマムペイメント 〜アメリカ経済がおかしい〜 日本 大返済時代 〜借金200兆円 始まった住民負担〜 動画を見て、同じだなと思った。 アメリカ人は個人で借金して、個人が払えなくなって、個人が破産する。 日本人は、国やら自治体が借金し…

BUILD windows のスライドを23個観た

BUILDwindows2011のスライドを観た。世の中的にはMetroデザインがどうとからしいが、そんなの割と些末だった。 特筆すべきトピックは下記の2つ。 Windows Runtime (WinRT) Asynchrony 以下説明。 Windows Runtime (WinRT) とうとうついに Win32 がレガシー…

HttpWebRequest.BeginGetResponse blocks your thread synchronously.

HttpWebRequest.BeginGetResponse は、非同期メソッドのくせにスレッドをブロックする。 なんてこった。今まで気がつかなかった。そんなことあるわけないと思っていた。 手元のコードで実験したら、17秒もリターンに掛かっていた。 どうしよう。 英語のレフ…

モバゲーGREEはパチスロ

モバゲーをけなす30代男性を見て思うこと:http://blogs.itmedia.co.jp/fukuyuki/2010/09/30-d031.html 記事の要点は 「若者文化をけなすのは古来からの繰り返し」 というもの。 そうではないと思うけど、そうかも知れない。 ■社会貢献の欠如 繰り返しではな…

プログラムは難しい

プログラミングに不自由を感じることはなくなったと思っていたが、やはり難しいものだ。 プログラムで日付を扱うことが非常に多いことは論を待たない。したがって、標準ライブラリは日付を扱うための処理を提供することが普通である。.NETにおいては、たとえ…

Windows Phone 7.5 端末は(まだ)買ってはいけない

IS12Tを発売日当日に購入したが、ケータイとしての普段使いは無理。 アドレス帳の移行手続きがバグっている。友人のメアドが消えたりした。データを中継するlive.comがふりがな未対応のため、「姓の前部にふりがなを追記して凌ぐ」というあり得ない応急処置…

Amazonをなるべく使いたくない

Amazon、便利です。が、本屋も好きなのです。 Amazonばかりだと本屋が潰れるので、できるなら本屋も使いたい。わざわざ遠いところから運んでもらわなくても、近くにあるなら近くでいい。 でも、在庫検索ができる本屋が少なすぎる。行ってみるまで売っている…

SMART と CREAQ

目標はSMARTに、評価指標はCREAQに。 SMART Specific (具体的) Measurable (測定可能) Attainable (達成可能) Relevant (適切) Timely (適時) CREAQ (from BABOK) Clear/Concise (明確簡潔;曖昧でなく必要十分である。) Relevant (適切;評価…

PLINQは黒歴史

PLINQ (Parallel LINQ) は黒歴史かも知れない。 私はLINQが好きだ。愛しているといっても過言ではない。 着実な言語的積み重ねの上に成り立つ、これほどスマートな改善を見たことがない。 LINQを知らない人のために簡単に説明しよう。(知っている人は次のコ…

共通化は目的に相応しくない

ソフトウェアの共通化を作業の目的にしてはいけない。 チームAとチームBの似たコードを括りだしてCを作ることは、一般に良くない。 特に、共通化によって掛る工数が下がるだろうと言うのは大きな間違いである。 工数は決して下がらず、まず間違いなく増加す…

続 setter/getter は不要

友人との議論で、掲題について質問をもらった。質問に答える過程で、さらに深く考えることができたので、続きを書く。 そもそものエントリはsetter/getter は不要である。このエントリにおいて、次のような趣旨の主張をした。 単にフィールドにアクセスする…

抽象化、概念化、一般化、普遍化、演繹、帰納

タイトルの用語について明確に理解していなかったので整理した。まずは用語の一般的定義から。 概念化 まだ概念的に説明されていなかったり、それを言い表すちょうど良い表現がないような特定の現象やものごとなどについて、新しい概念や用語などを作り出し…

階層重視のFreeMind

ずっと、ツリー横断的に階層が揃うツリーエディタがほしかったので、FreeMind にパッチして作ってしまった。

Windows Phone 7 の ListBox コントロールはタッチスクロールに精密に反応しない

Windows Phone 7 の ListBox コントロールは、コンテンツが重いときに、スクロール操作への反応が精密でなくなるというバグがあるように思う。January Update, March Update (NoDo) のどちらでも再現する。 以下、再現手順。リストビューをスクロール開始(…

ListBoxのスクロールがおかしい件

どうも、アイテムごとに高さが違うとダメみたい。 ListBoxはVirtualizingStackPanelを内部で使うけど、こいつが可変長高さに対応し切れてない。 ItemsPanelTemplate を StackPanel にするか、ScrollViewer + ItemsControl の組み合わせにすると、うまく動く…

ソフトウェアにまつわるエラー

ソフトウェアに関するエラーの種類をググってみたが、あまり見つからない。 参考までに、私の認識を示したいと思う。手前のものほど原始的であり、一般には検出しやすい。 ・シンタックスエラー コンパイラが静的に検出できる。 if 文のない else は誤り。 …

Windows Phone 7 (HTC HD7) を購入した

端末購入までの流れ 2/18 深夜 HTC HD7 を衝動買い 56,800円 3Gmobile池袋東口4分BodyANDSoul で購入した。安い。(でも、予算内だったので相場を調べずに即決だったけど。) 最終的にモノは来たが、音沙汰ない上に日本語が微妙なのでかなり不安になる。。。…

setter/getter は不要

Javaに多いと思うが、こんな例をたくさん見かける。 public class MyClass { private int myField; public int getMyField() { return this.myField; } public void setMyField(int value) { this.myField = value; }} 出典はパッと示せないが、教科書みたい…

プログラマの等級

紅茶の等級は番号ではなく、”FOP”などの文字列で表現されます。等級の低い方から紹介します。 S, P, OP, FOP, GFOP, TGFOP, FTGFOP, SFTGFOP なんか呪文みたいですが、実はP以降は一文字ずつ増えているだけです。中身を分解すると、 SFTGFOP: Super Fine Tip…

.NET でゾンビ・スレッド・オブジェクトが出来ちゃうときの参考情報

http://blogs.msdn.com/b/yunjin/archive/2005/08/30/457756.aspx ThreadCount: number of total C++ Thread objects in Thread Store. UnstartedThread: number of C++ Thread objects marked as unstarted. Recall I mentioned in previous blog, if a use…

CUDA, ATI Stream, OpenCL, DirectCompute

自分メモ DirectCompute Benchmark http://www.ngohq.com/home.php?page=Files&go=cat&dwn_cat_id=25&go=giveme&dwn_id=937 NVIDIA DirectCompute http://www.nvidia.co.jp/object/directcompute_new_jp.html GPGPUをWindowsでサポートする「DirectCompute」…

ソフトウェア工学は脳科学に似ている

脳科学 ソフトウェア工学 対象(脳)は常に変化している。 対象(プロジェクト)は常に変化している。 脳の現象は本質的に一回きりである。(同じ状態は再現できない。) プロジェクトの進行はその場限りである。(同じプロジェクトは存在しない。) 脳は物…

ユースケースではなく期待が大事だと思う

要求開発の作業では、ユースケースよりも前に、各アクターのシステムへの期待を明確にした方が良いのではないか。 要求分析として、そういう視点があることがあることは分かる。ステークホルダーとか。 でもシステムを使うのはアクターだ。アクターの期待を…

FC (feature complete) は使える気がする

RC (release candidate), RTM (release to manufacturing) は知っていたが、FCというマイルストーンは知らなかった。 リリースより前の、ソフトウェアスコープ確定を示すマイルストーンの名前を探していたので、ちょうどいい。 今度使ってみよう。

new byte [4096] は本当にちょうどいいのか

プログラマの習性として、バッファのサイズを2の冪にして確保してしまうというのがあると思う。僕もそう。 たとえば、 var buf = new byte[4096]; とかね。 でも、いつもいつも思うけど、これって本当はキリが良くないよね。 確かに、Cのときはmallocに指定…

Twitter のユーザ名は正しくエンコードされていない

Twitterのプロファイルで my&lt;br&gt;name と入力すると、ホーム画面では my<br>name と表示される。 正しくエンコードされているなら、ホーム画面でも my&lt;br&gt;name と表示されるはず。 どうも < と > は無条件に削除しているらしく、プロファイルに my<br>nam…

アレイ人間とマップ人間

他人や自分を観察していると、人は記憶方法によって2種類に大別できる気がしています。仮に、アレイ人間とマップ人間と名付けました。 アレイ人は、決められた順に確実にタスクをこなせるという特技を持つ人たちです。アレイ人間は、ある作業があるとき、一…

Subversion リポジトリの構成(完成版)

最近、リポジトリを作るときは必ずこうしている。 product├─dev│ ├─branches│ ├─tags│ └─trunk (svn:externals で /pub と /res をインポートする)│ ├─doc│ ├─libs│ └─src│ ├─project1│ └─project2├─pub│ ├─20091012│ └─20100821└─res ポイントは3つ。 バ…