2004-05-01から1ヶ月間の記事一覧

Parser

C#のParserが欲しかったのでantlr2.7.4と文法ファイルをダウンロードしてきてビルドを試みました。 $ cantlr cs.g を実行すると次のファイルが生成されます。 CSharpLexer.cs CSharpParser.cs CSharpTokenTypes.cs これを $ csc /r:antlr.runtime.dll /t:lib…

3ヶ月点検

1ヶ月経った時点で立てた目標の3ヶ月休まず日記を達成。今まで何度も挫折していたのに今回続けられているは、毎日アクセスして下さっている方々のおかげです。感謝。

スレッドセーフのコスト

マルチスレッド対応するには同期させる必要があります。.NETではその為に、幾つかの手段を提供していますが、パフォーマンス面でどのような差があるのでしょうか? using System; using System.Threading; using System.Runtime.CompilerServices; class The…

配列と矩形配列

またしてもパフォーマンス測定。 using System; class TheClass { const int LOOP = 20; [STAThread] static void Main(string args) { int width = 640; int height = 480; DateTime t; byte[,] data1 = new byte [height, width]; byte data2 = new byte […

休日出勤、その他

午前中に会社から電話が掛かってきて出勤。すたんばってた甲斐があるってもんだ(嘘)。修正してメール転送。現地でテストして貰ってOK。3時間くらいまって、全てのテストが完了したとの報告があったので、撤収。微妙な時間だったので渋谷のBook1stへ。あ、プ…

飲み会

今日は同期と飲み会。明日は仕事で自宅待機なので夜更かしは出来ない。うーん、なんも出来ん・・・

カスタム属性再び

カスタム属性の使い道としてデータベースのテーブルやカラム情報を持たせて一元管理したらどうかと、サンプルをこさえてみました。 using System; using System.Text; using System.Reflection; // 構造体のみ対象 // フィールドの順序が変わらないように・…

C#のイベント

void Nish(char* szBlog)より The significance of the C# event keyword ここを読みながら、私がC#を勉強したときにピンとこなかったのがイベントだったなぁと振り返ってみたり。単純なイベントの例。 using System; class MyEventArgs { private object ar…

COMポートの謎

今日は客先でRS-232C経由で接続しているプリンタが、ノートパソコンのCOMポートからだと印刷できないという事象がありました(というか解決してない)。会社のノートパソコンでテストすると確かにフレーミングエラーが発生してしまいます。ところが、デスクト…

5/25

Visual Studio 2005 Class Designer 見た感じよさげ。あと、Visual Studio 2005 Community Technology Previewの新しいヤツが出たみたい。会社から落としてやろうかしら。

UMLのお勉強

セキュリティの勉強をはじめようかと思いましたが、読みやすい本から片づけることにしました。・これだけでわかる!初歩のUMLモデリング(ISBN:4774119709) まだ途中ですが、すっきりと要点をまとめてあるので読みやすく、分かりやすいです。また、モデルから…

ゲームミュージック

ふと、古いゲームのBGMが聞きたくなって、wabi用にmidiプラグインを作製しました。一応Format0/1に対応しているつもりですが、Format1のデータがなかったので未確認です。ついでにプラグインのコンパイルエラーも出るように修正しています。 実は、大のゲー…

次のお勉強

積読リスト 暗号技術入門 LHAとZIP Oracle達人技ベスト これでわかる!初歩のUMLモデリング Compiling for the .NET Common Language Runtime Advanced .NET Remoting Windows Forms Programming in C# .NET Security .NET System Management Services 他にも…

似非Iteratorのパフォーマンス

http://d.hatena.ne.jp/akiramei/20040329#p3 もう一つは、スレッドと同期イベントを使うもの。パフォーマンスは悪くても構わないから、簡単に処理を書きたい場合に有効かもしれません。 と書きましたが、どの程度パフォーマンスが悪いか調べてませんでした…

カスタム属性使ってますか?

.NETの特徴的な機能としてカスタム属性があります。NUnitはそれを上手く使っているツールの1つです。また、シリアライズもカスタム属性のパワーを見せつける良い例でしょう。このようにカスタム属性はとても使えそうな気がするのですが、自分ではほとんど使…

5/21

NUnit2.2ベータがリリースされました。Monoがサポートされるみたいですね。

ソケットプログラミング

今日、同僚がソケットプログラミングで嵌っていた。見てみたらソケットの終了処理だったので、早速、勉強した内容を試してみると大当たり。うーん、勉強した甲斐があったです。(笑)

mono-0.91.99-win32-2.exe

Windows用の新しいインストーラが出てたので入れてみました。 This fixes some issues with configuration files and includes latest Boehm GC dll. 最新のGCになっているらしいので、ちょっと期待です。で、ニョキニョキ♪ゲーを動かしてみる・・・あ、やっ…

C#でprintf

.NET Remotingを使ったクラスの合成を実験していたのですが、Remotingを使うと絶望的にパフォーマンスが悪いことに気づいて意気消沈気味なので小ネタへ逃げます(^^; で、本題。.NETではprintfの代わりにConsole.WriteLineあたりを使いますが、本当にprintfを…

DllImportの復権

http://d.hatena.ne.jp/akiramei/20040417#p1にて P/Invoke、結構遅いぞ!ILを使うと半分くらいに出来ますが、ここまで頑張らないと駄目なんでしょうか? とか言いましたが、私が悪かったようです。DllImport経由でUnmanaged関数を呼び出す場合、デフォルト…

配列のパフォーマンスあれこれ

やねうらおさんからC#の配列が(C++と比べて)遅いという話をいただき、色々実験してみました。発端となったコード // loop=1024*64 byte[] a = new byte[loop]; for(int i=0;i<loop;++i) { for(int j=loop-1;j>=0;--j) { a[i] = a[j]; } } C#では13〜14秒掛かりますがC++で同等のコードを書く</loop;++i)>…

車輪の再発明

ちょっと必要になってアーカイブからビットマップやWaveファイルを引っこ抜くツールを作りました。ツール自体は大したことしてないのですがプラグイン形式にしてみたので、そこだけ紹介します。この手のツールは各種フォーマットに対応したりするので、プロ…

何をやっても上手く行かない

色々やろうと*18時に起きたのですが、なんか体調が悪い。あっけなくダウンして次に目を覚ましたら16時。ああ、計画が・・・ もう、出かけるのは無理なので引きこもることにしてネットに接続、途端にブルースクリーンが。犯人はSymfw.sys。ノートン先生のファ…

データ整理

気づけばHDDの空きが3GBになっていたので使ってないツールやゲームを削除。取りあえず15GB開ける。使用頻度の低いデータはDVD-RAMに持って行ったのですが、ノートン先生が動いているとDVD-RAMのフォーマットが出来ません。これってノートン先生の問題なのか…

Windows版の修正

Mono Bata1 Windows版でGACが動いてなかった問題が修正されたようです。でも、相変わらずGCが動くと固まる問題は直らず。

ソケットプログラミングのお勉強その5

ポイント16「TCPの正規解放操作について理解する」まで。正規解放操作とはデータが全て受信できることを保証しながらコネクションを切断することです。例えば、クライアントからデータを送って、サーバーがそれに対するレスポンスを返す場合、クライアント側…

ソケットプログラミングのお勉強その4

ポイント13まで。ポイント10をちゃんと理解できているか怪しいので、プログラム書きながらもう一度復習しないと駄目かも。ポイント12「うまく動作しているLAN戦略がWANにも適応できると思ってはいけない」について。LANで正常動作している(と思いこんでいる)…

5/12

Reflector for .NET クラスブラウザ。・・・なんだけど、DisassemblerやDecompilerを搭載しているし、CallGraphも表示できてしまう優れもの。DecompilerはC#/VB.NET/Delphiに対応してます。更に、こんなアドインを使うとアセンブリをDecompileしてファイルに…

設定変更

今まで1ページに30日分表示していましたが、エラーになることが多いので半分にしてみました。

ソケットプログラミングのお勉強その3

ポイント9「TCPは信頼できるプロトコルだが、絶対に誤りがないとは言い切れないことを認識する」まで。TCPは信頼性のあるプロトコルと言われているのですが、信頼性があるというキーワードを漠然と認識していただけでした。TCPは送ったデータが全て相手に届…