inohilog

/var/log/inohiro.log

こみゅぷらすさんのCommunity Launch 2008に参加

こみゅぷらすさんのCommunity Launch 2008。コミュニティの勉強会への参加はー、たぶん半年ぶりくらい。去年はCodeseekさんのCommunity Launchに参加しました。
だんだん顔を覚えてもらったり、もらえてなかったり、今回はかなり濃い話をたくさんしていただきました。勉強会本来のセッションで、と言うわけではなく、IT業界でお仕事をなさっている先輩方のナマの声ですね。あとはMSの人にいろいろ質問したら、凄く詳しくいろいろな事をお話してくださったのも良かったです。いつもお世話になっている++C++;の中の人ともお話しできました。

メモ帳より。

メモリ管理。

.NETでもリークすることはよくありますよ。
using( hogehoge ){ hogehoge.fuga(); } を使うようにする。GCに任せっぱなしは、実は回収してくれなかったりする。(あとは自分でDispose()を呼ぶとか)

スレッド競合

100万回に1回以上起こる。100万分の1くらいの確率だけど、サーバーアプリケーションで発生すること自体が致命的。そして再現性の低いバグなのでデバッグが困難。
メモリ、スレッド、状態遷移には気をつける。

UIAutomation

WPFでUIのテストをするときに便利。実はWindows Formでもつかる。
AutomationPeerを継承。自分でコントロールを作ったらhogehogeAutomationPeerを書く。
AutomationProperties.Name。
テストは、テストプロジェクトを作り、WPF関連の名前空間(System.Windowsとかかな?)の参照を追加するのを忘れないように。
〜〜AutomationPeerのインスタンスを生成->Show();->子を探して名前を見て値を入れてテストしてくれる。
Xamlで書いた順番で見つかるわけでないので注意。->イベントの実行はforeachで名前を探した後に書く。
RoutedEventArgs。
終了処理、初期化処理は別に。UIPI。

Source Analysis for C#

Fxcop

MSの偉い人に直接ご指導を受ける。

OSから見たら、.NET ApplicationはCOM Serverが動いているようにしか見えない。OLE, v-Table。
COMはC言語C言語はstruct構造体しか作れない)でオブジェクト指向な事をしたいので作った。v-Tableは関数ポインタを配列で持つ。おかげで名前で関数の参照ができる。

IMEはTSF(Textなんとかなんとか)のMS実装。だからATOKが作れる。TSFはCOMの一部(?。

  • 遅いプログラム->ルーズな開発。
  • 早いプログラム->ガチンコな開発。アーリーバインド(実行時にどのように変換されるかを考えてコードを書く)。


DB周りのテクノロジ。JET, DAO, ORBC, RDO, ADO, ADO.NET, LINQ to SQL, ADO.NET for Entitiy Frameworkなど。
1、クライアントからServerへのリクエスト。
2、サーバーからのレスポンス。
究極な理想は、すべて文字列で扱うこと。流れてきたデータがなんなのか(文字列か、数字か、日付なのか)を判断するのにさらに時間がかかる。なので、
0、列1->文字列、列2->数字、列3->日付。
と決めておく。
さらに

  • 1、DBに接続(たとえば「登録」ボタンを押してからDBに接続するような真似はしてはいけない)。


Windows 2003 Server internalとか読みなさい。Inseide Windowsとか読んでみようかな。


DDE -> OLE SDK -> DCOM -> SOAP -> XML WebServices -> WCF
ATL -> COM Server。
VB6ではCOM Serverが作れた(?)、触れた(?)。


MTF

その後

「プログラミングを始めたときには、すでに.NETがあった」と言ったら、「それは幸せなことなんだよ」と言われた。
3-5-7。とくに3がよい。
View3D。くおーたにおん。
Havok(物理シミュレータ)。やはり3Dはおもしろい。
10年間は泥のように働きなさい(笑ってたけど、ほんとそんな感じらしい)。