過去雑記

旧鯖時代の雑記です。新しいの。リンク切れに注意。


2007: 12345678910
2006: 123456789101112
2005: 123456789101112
2004: 456789101112

過去雑記

2005/1/1(土)

新年明けましておめでとうございます00:07:44

てなわけで例年通りでじこがトップ絵。塗りは間に合わなかったので単色で。

コメントはありません。

バグ@azulog00:33:39

更新する際の時間が世界標準時になってた。。。

コメントはありません。

2005/1/2(日)

Yahoo! さんしっかりしてください20:54:46

Project.Spiceのサイトのアクセスログを見てみると xxxx.inktomisearch.com がやたらとアクセス来ているのですが、対象が index.php?mode=one&number=XXX&type=XXX&space=XX&no=spice って何ですか?たぶん bbs/?... にアクセスしようとしていると思うのですが、何でルートにアクセスしてるのでしょ。

コメントはありません。

2005/1/3(月)

HDDプレイヤーは耐久性に疑問が残るので嫌い20:39:15

以前使ってたシリコンプレイヤーが壊れたので、ソフマップで mpio AD-FL 10-512 を買ってきた。約17000円。以前ケントさんの店で27000くらいしていたのでまぁ納得の価格。なんか最近のシリコンプレイヤーはHDDプレイヤーとの差別化のためか小さすぎです。

コメントはありません。

2005/1/4(火)

そして初期不良22:36:16

っぽい。明日あたり店に行ってみますか。

コメントはありません。

2005/1/5(水)

結果は相性問題22:43:34

サポート側では再現しないそうな。まぁうちのPC、USBが認識したりしなかったりなのでその辺かなぁ。さてさてどうしたものか。

コメントはありません。

2005/1/6(木)

ファイル整理中。。。20:50:29

パソコンを新しく買うということでファイルの整理をしていると、デスクトップにファイルが4Gほどありました。私はデスクトップのファイルは非表示にしてダウンロードしたファイル置き場としており、DirectX SDK だとかのアーカイブを放置したままだったようです。しかし、542項目ですか。何があるんでしょ。めんどくさー。

コメントはありません。

2005/1/7(金)

トップ絵撤去23:45:45

目的は果たせましたし、co.jpからのアクセスが増えてきましたので。

コメントはありません。

2005/1/8(土)

iframe内からtarget=_topでframeページに戻るとIEの挙動がおかしい01:03:31

次のような構成にするとIEの戻るが解除されるんですよね。バグなのか仕様なのか。

<!-- fram.html -->
<html>
  <body>
    <iframe src="item.html"></iframe>
  </body>
</html>

<!-- item.html -->
<html>
  <body>
    <p><a href="item2.html" >リンク1</a></p>
  </body>
</html>

<!-- item2.html -->
<html>
  <body>
    <p><a href="frame.html" target="_top">リンク2</a></p>
  </body>
</html>

コメントはありません。

そういえば23:59:06

Google先生のもしかして機能、昨年中に復活とか言われてましたけど結局どうなったのでしょう?

コメントはありません。

2005/1/9(日)

体調崩した23:24:52

てことでネタもないのでお休み。

コメントはありません。

2005/1/10(月)

HTML Helpに脆弱性23:52:00

Secunia、IE脆弱性の深刻度を最高レベルに引き上げ(http://www.itmedia.co.jp/news/articles/0501/08/news014.html)より

IEの脆弱性とかはどうでも良くて(ぉ)、気になったのはSecuniaでは、HTML Helpコントロールに2つ目の脆弱性があることも分かった。という点。HTML Help はLonghornで様変わりするので十分に枯れた技術かと思ってたのですが、そうでもなかったようで。

コメントはありません。

2005/1/11(火)

メールが消えた21:31:56

N900i、受信中に電池切れ等で電源が落ちるとメールが消えますね。他の機種はどうなんだろ。

コメントはありません。

2005/1/12(水)

スケッチブック#2@小箱とたん23:02:35

相変わらずまったりとした雰囲気。登場人物がやや多めか。表紙の塗り方は相変わらずいい感じです。

コメントはありません。

2005/1/13(木)

萌えキャラ度チェック!!23:38:47

萌えキャラ度チェック!!やってみた。

方位記号さんの萌えキャラ度は41モエ です よって貴方は筆頭萌えキャラといえるでしょう これはせっちゃん、ゆうたんと双璧を成すほどのの萌え度です ですが、まだカンペキとは言えません 更なる高みを目指すなら、ドジッ娘になりなさい ドジッ娘が失敗しても怒られなく、むしろほほえましく思ってしまうのが人の性 それを最大限に生かしましょう あと、コスプレという手もあります 理想的にはメイド、もしくは巫女でしょうか オプションはネコ耳。 ネコ耳ドジッ娘メイドもしくは巫女・・・ 最強の戦闘スタイルです もう、言葉も出ません さあ目指しましょう!! 世界の萌えキャラを!!!

まぁ人にはそれぞれ好みがありますから。。。

ところで、せっちゃん、ゆうたんって誰ですか?ていうか既にこの2人で双璧をなしてるんじゃ?

コメントはありません。

2005/1/14(金)

C#コントロール作成メモ23:10:18

なんとなく思いついたのでボタンを拡張したものを作ってるのですが、.NET がどうメッセージ処理してるのか謎なので無駄なところで一苦労。とりあえずメモ。

System.Windows.Forms.Button から継承せずにボタンとして振舞うには System.Windows.Forms.IButton を実装する。これで .NET 上からはボタンとして認識されるっぽいです。

VisualStyle のボタンを描画する場合System.Windows.Forms.VisualStyles.VisualStyleElement.Button.PushButton.Default で System.Windows.Forms.VisualStyles.VisualStyleRenderer を作成して VisualStyleRenderer.DrawBackground()

WndProc でメッセージをせき止めても右クリックでContectMenu(Strip)の表示などはとめることは出来ない。どうやってとめんるんでしょ。これ。

コメントはありません。

2005/1/15(土)

ilとして埋めこまれているコードに対してはGenericのパラメータ制限がチェックされない23:26:00

確認した.NET CLRのバージョンは2.0.40607(β1)です。最近のCTP版ではチェックしていません。

とりあえず試した手順は、次のようなコードを書いてコンパイル。その後ildasmで逆アセンブルしてilコードを作ります。

class Hoge<T> {}
class Program {
    Hoge<int> h1 = Hoge<int>();
    Hoge<string> h2 = Hoge<string>();
}

作成したilを書き換えてHoge<T>を構造体のみに制限してilasmでアセンブルします。

.class private auto ansi beforefieldinit 'Hoge`1'<([mscorlib]System.ValueType) T>

このコードはHoge<string>に参照型を渡しているためエラーが出るはずなのですが、問題なくアセンブルでき実行しても例外が出ません。なお、typeof(Hoge<>).BindGenericParameters( typeof(string) );を実行しようとするとちゃんと例外が発生するため型制限自体はかかっています。このことからilとして埋め込まれている場合Genericのパラメータ制限はチェックしていないものと思われます。

不正な型でもインスタンスを作れるので問題になる気がするのですが、いいのですかねぇ。

コメントはありません。

2005/1/16(日)

AvalonのCTPがダウンロード可能に02:19:57

AvalonのCTPダウンロード出来るようになっています。どうせ新しく買い換えるなら環境壊れてもいいし、ためしに入れてみるかという考えがよぎりましたが、よく考えるとうちのスペックではまともに動かないのでやめ。

コメントはありません。

2005/1/17(月)

ilasmは文法チェック程度しか行わない07:09:09

確認した.NET CLRのバージョンは2.0.40607(β1)です。最近のCTP版ではチェックしていません。

前回、ilとして埋めこまれているコードに対してはGenericのパラメータ制限がチェックされないことが分かったのですが、どの程度コードの不整合が無視されるのか調べてみました。

まず、試験用に次のようなクラスを作りました。特に見るべき点はないでしょう。Main()にあるSystem.Console.WriteLine(s)はここで s を使っておかないとアセンブル時に削除されるからで、深い意味はありません。

class Class {
    public string Test {
        get { return "test" }
    }
}
class Program {
    static void Main() {
        string s = "string";
        Class c = new Class();

        System.Console.WriteLine( s );
        Call( c );
    }

    static void Call( Class c ) {
        System.Console.WriteLine( c.Test );
    }
}

コンパイル後逆アセンブルしてilコードを生成、次のようにilを書き換え再アセンブルしました。Program.Call((Class)s);となるわけで不正なキャストエラーが出ることを期待するも、問題なくアセンブルが通り実行しても例外は出ずc.Testはtestと出力しました。Class.Testは定数を返すためJITの際に最適化が働いているのが原因と思われます。

// before
IL_0006:  ldloc.1
IL_0007:  call       void Program::Call(class Class)
// after
IL_0006:  ldloc.0
IL_0007:  call       void Program::Call(class Class)

ちなみに次のように書き換えた場合アセンブルは通るものの、実行時に例外が投げられメソッドが見つからないと言われます。Program.Call(string)というシグネチャをもつメソッドは存在していないため実行できないのは当然なのですが、アセンブル時にメソッドの有無は調べていないようです。

// before
IL_0006:  ldloc.1
IL_0007:  call       void Program::Call(class Class)
// after
IL_0006:  ldloc.0
IL_0007:  call       void Program::Call(string)

以上の結果を踏まえ、Program.Call((Class)s);の先に何が送られているのかを確かめます。JITの最適化がかからないようにClass.Testが返す値を不定なものにし、またProgram.Call()には送られてきたインスタンスがnullであるか、型名を表示するコードを追加しています。

class Class {
    string str;
    public Class( string s ) {
        str = s;
    }

    public string Test {
        get { return str; }
    }
}
class Program {
    static void Main() {
        string s = "string";
        Class c = new Class( "test" );

        System.Console.WriteLine( s );
        Call( c );
    }

    static void Call( Class c ) {
        System.Console.WriteLine( c!=null );
        System.Console.WriteLine( c.ToString() );
        System.Console.WriteLine( c.GetType().ToString() );
        System.Console.WriteLine( c.Test );
    }
}

出力結果は次のとおりであす。c.Testを呼び出そうとする際にSystem.NullReferenceExceptionが投げられました。このことからキャストできない型も無視して(JITコンパイル時にメソッド引数のシグネチャを確認していない?)相手に渡し、実行できない段階で初めて例外を投げる実装のようです。なんでSystem.NullReferenceExceptionが投げられているかは疑問の余地が残るところですが。。。

string
True
string
System.String

Unhandled Exception: System.NullReferenceException: オブジェクト参照がオブジェク
ト インスタンスに設定されていません。
   場所 System.IO.TextWriter.WriteLine(String value)
   場所 System.IO.SyncTextWriter.WriteLine(String value)
   場所 Program.Call(Class c)
   場所 Program.Main()

このことからilasmは最低限の文法上のチェックを行うだけで、メソッド引数の正当性やメソッドの存在の有無などの細かい部分まではチェックしていないと思われます。またJITコンパイラもコンパイルするilが文法上問題がない限りコンパイルしてしまうようです。ilasmはともかくJITまでも引数の正当性を無視してしまっては問題がある気がするのですが。。。

コメントはありません。

2005/1/18(火)

作ったはいいが23:17:55

以前言っていたコントロール完成、、、したと思ったらVS2005のファイル読み込みの際リンクに設定し忘れて消滅。(一時プロジェクト作ってcsを追加して弄っていた)2時間くらいの苦労はいったい。。。ちなみにモノはVSのダイアログについているメニューが出るボタン。まぁ、何に使うんでしょうコレってもので殆ど習作だったわけですが。。。とりあえず、作成中に気づいたことメモ。

System.Windows.Forms.ControlPaint.DrawButton()ではデフォルト状態(強調された)のボタンを描くことは出来ない。中途半端な。

System.Windows.Forms.VisualStyles.VisualStyleRendererはテーマにビジュアルスタイルが適用されていないと使えない。判定はSystem.Windows.Forms.Apprication.RenderWithVisualStylesを見る。アプリケーション起動中にビジュアルスタイルが適用/解除された場合のイベントは不明。System.Windows.Forms.Control.SystemColorsChangedに応答することで実現は可能だが効率が悪い気がする。

System.Windows.Forms.ContextMenu.Show()はメニューが消えるまで処理が返らないが、System.Windows.Forms.ContextMenuStrip.Show()はメニュー表示後即座に処理が返る。

コメントはありません。

2005/1/19(水)

ButtonRendererクラス19:08:26

.NET Framework 2.0にSystem.Windows.Forms.ButtonRendererというボタンを描くそのままずばりなクラス発見。ビジュアルスタイルとクラシックスタイルを意識せずにボタンを描くことが出来ます。が、しかしこのクラスは実際のボタンといくつか異なる描画を行います。

クラシックスタイル時にデフォルトボタンを強調表示しません。これはSystem.Windows.Forms.ControlPaintに該当する描画機能がないから。ビジュアルスタイルは問題なく描画します。また、ボタン押下時に文字位置をずらしません。何でこの程度を実装しないかは不明。

全体的に中途半端なできなので自分で実装したほうが良いかと思われます。まぁβなのでリリース時に直ってるかもしれませんが。

コメントはありません。

System.Internal.Gdiって何さ21:18:14

GDI+が余りに遅いせいか、.NET Framewrok 2.0β1にはSystem.Internal.Gdi名前空間にGDI関数をラップしたクラスが用意されています。(Internal なので普通に使うことは出来ません)で、これの何が問題かというとGDIとGDI+の描画結果は等価ではないのでTextRendererとGraphics.DrawString()で描画結果が異なりどちらを採用するか迷っているのですが。Longhornになると(内部実装が)また変わりそうですし。

ちなみに.NET Framework 1.1ではGDI+で描かれていたボタンが2.0β1ではGDIで描かれていたりと一部の描画がGDIに変更されてるようです。.NET 1.1の時描画にGDI+を使うと散々言っておいて2.0になるとGDIに戻るというのも何かあれな気がします。

コメントはありません。

2005/1/20(木)

ra.hpi考察中23:44:58

MC++ で値型はどこに作成されるのでしょう?参照型と違って、ポインタとして宣言しなくても使えるし普通にアンマネージポインタの上においておいても存在し続けるのですかねぇ。このあたりの資料どこにあるのでしょう?

コメントはありません。

2005/1/21(金)

今日のお買い物20:27:58

まぶらほ〜ふっかつの巻・にし〜。忙しくて読んでません。

コメントはありません。

2005/1/22(土)

MC++で値型が参照されていなくても存在し続けるか以前の問題だった01:40:25

System::Object *からアンボクシングする際対象の型名がコンパイル時に分かってないとアンボクシングできませんでした。動的にil生成して処理すれば出来なくもない気がしますが、面倒ですし返ってパフォーマンスが落ちそう。

コメントはありません。

そうだ京都(のほうに)行こう07:42:33

てことで今から泊りがけで言ってきまふ。

コメントはありません。

2005/1/23(日)

行ってきた22:58:45

北のほうは雪積もってて寒かったです。はい。

コメントはありません。

2005/1/24(月)

NotifyIconとContextMenuStrip19:24:01

NotifyIcon.ContextMenuStrip でContexMenuStripが表示される位置は(mouse_x, mouse_y-menu_height)が起点となるため、通知領域を画面上側に配置している場合は殆どのメニューにアクセスできなくなります。これを回避するためNotifyIcon.MouseDownに応答してContextMenuStrip.Show()を呼び出せばよいかというと、こちらは通常のウィンドウとして表示するため、TopMostウィンドウの下に表示されてしまいます。

2.0に向けてみら〜じゅのUIだけでも設計しておこうと思いましたが、これが仕様なのかイマイチ分からない現状では対応がとりづらいです。なお、後者は継承してCreateParmasをオーバーライド、拡張スタイルにWS_EX_TOPMOSTを指定することで回避できなくはないです。

class TopMostContextMenuStrip : ContextMenuStrip {
    public TopMostContextMenuStrip() : base() {}
    public TopMostContextMenuStrip( IContainer ic ) : base( ic ) {}

    protected override CreateParams CreateParams{
        get {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x8; // WS_WX_TOPMOST
            return cp;
        }
    }
}

ただこんなことしても製品版で直ってると無駄になってしまうのですよね。。。

コメントはありません。

2005/1/25(火)

.NET2.0版みら〜じゅ22:56:46

通知領域にアイコンを追加してクリックするとメニューを表示するようにしただけですがとりあえずここまで。ContextMenuStripの挙動が謎なのでこれ以上作る(設定画面のこと)のはリリース時に挙動が変わる可能性があり危ないので。.Net2.0も年内が怪しくなってきてるっぽいのでPhase.5は.Net1.1でリリースして.Net2.0リリース時にGUIを差し替える方向で言ったほうがいいかなー。

コメントはありません。

2005/1/26(水)

パラメータがref/outであるかの判定19:37:20

次期ra.hpiのためのメモ。現バージョンではこの辺り無視ってたりします(ぉ

パラメータがref、またはoutの場合リフレクションで呼び出した後、値を再度代入する必要があります。ref/out型パラメータは特殊な {typename}& 型をとります。これを判定するには、MethodInfo.GetParameters() でParameterInfoを取得。ParameterInfo.ParameterTypeでTypeを取得してType.IsByRefを調べる(trueの場合{typename}&)という手順でできます。

なお、out型パラメータに限定すればParameterInfo.IsOutを見るという方法もあります。

コメントはありません。

2005/1/27(木)

DBゲームのデモ23:47:34

店頭で流れているDRAGON BALL Z 3のデモでナッパですら見せ場があるのに、ヤムチャが瞬殺されるのというのは流石に扱いがどうかと思います。

コメントはありません。

2005/1/28(金)

体調崩しました22:48:59

まぁずっと崩れてるのですが(何)、立てないくらいってのは次期考えるとまずい。。。

コメントはありません。

2005/1/29(土)

Another Century's Episode22:34:40

Another Century's Episode買ってきた。買ってきたはいいがやる時間あるのか?

コメントはありません。

2005/1/30(日)

タブパソ値下げ23:36:22

http://www.itmedia.co.jp/news/articles/0501/29/news009.htmlより。

アメリカの話しだし次の買い替えではタブパソの選択は無理ですね。というか日本で売れてるのでしょうか?家電店で全く見かけない。。。

コメントはありません。

2005/1/31(月)

Another Century's Episode(2)19:07:39

ユニットの起き差をリアルに再現って言ってますけど、戦艦の大きさが小さい気がするのですが。。。この辺は気にしちゃいけないかな?

コメントはありません。

goto Top

Copyright(C)方位記号