過去雑記

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


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

過去雑記

2005/2/1(火)

ドキュメント更新20:44:39

コンポーネント/コントロール作成に関するメモを追加。まだ、数が少ないですがそのうち増えていく予定(希望)

コメントはありません。

2005/2/2(水)

FOMA普及機23:03:36

ようやくFOMAの普及機が登場ですか。N700iは色はいいのですが、着せ替えが余分ですね。。。

コメントはありません。

2005/2/3(木)

まずい。。。23:32:53

体調が一向によくなりません。どーしよー

コメントはありません。

2005/2/4(金)

Another Century's Episode(3)23:06:27

とらいえずエンディング見ました。あの終わりってことは続編に期待してもいいのでしょうか?

コメントはありません。

2005/2/5(土)

リフレクションで配列のフィールドを設定20:41:19

Type.InvokeMember で配列を設定する場合 Type.InvokeMemeber だと一発で設定できるのに、FeildInfo.SetVale() だとできないので、FieldInfo.GetValue()→PropertyInfo.SetValue() としなくてはいけない。何故?

using System;
using System.Reflection;

namespace ConsoleApplication1 {
    class Program {
        public static string[] field;
        static void Main( string[] args ) {
            field = new string[] { "a", "b", "c" };

            // Type.InvokeMember で配列を設定
            typeof( Program ).InvokeMember( "field",
                BindingFlags.SetField, null, null,
                new object[] { 1, "d" } );

            // FeildInfo を一度とって配列を設定する場合 PropertyInfo をとらなくてはいけない
            FieldInfo fi = typeof( Program ).GetField( "field" );
            PropertyInfo pi = typeof( System.Collections.IList ).GetProperty( "Item" );
            pi.SetValue( fi.GetValue( null ), "e", new object[] { 2 } );

            foreach( string str in field )
                Console.WriteLine( str );
        }
    }
}

まぁフィールドなんてめったに見かけませんが。

コメントはありません。

2005/2/6(日)

Windows.Forms 周りのソースを公開?23:29:41

情報元。どうせならデバッガで見れるようにしてほしいところですが、無理でしょうねぇ。

コメントはありません。

2005/2/7(月)

明日から東京23:45:07

こんな体調で大丈夫か?

コメントはありません。

2005/2/8(火)

てことで行てきます10:01:49

携帯から以下略できますが、たぶんネタないししないでしょう。

コメントはありません。

2005/2/9(水)

帰ってきました23:29:32

買ってきたもの。ラキ☆スタ、食卓にビールを#3。

コメントはありません。

2005/2/10(木)

「HP、PC部門の行方は不透明」だそうで23:47:41

情報元: http://www.itmedia.co.jp/news/articles/0502/10/news128.html

やっぱり無難に国内メーカーにしておきますかねぇ。

コメントはありません。

2005/2/11(金)

1ヶ月前のコードは他人のコード23:20:50

ヤマは超えたのでプログラミング再開。で、みら〜じゅのコード(.NET 2.0で書き直し中のものもの)を見直してみると作った覚えのないクラス(実装が不確定なので作成は保留していたと記憶)がちらほら。何をやっていたか殆ど忘れてる状況。まぁまだリリースまで時間があるし手探りで修正を入れてる段階なので特に問題はありませんが。。。

コメントはありません。

2005/2/12(土)

HWNDラップクラス再構築中23:51:52

以前書いたものが汚いので再構築。VS2005βのエディタは不安定なので2003で書いているのですが、なんかこちらも不安定ですねぇ。プロパティを認識できずにインデントが崩れることがちらほら。なにが悪いのやら。

コメントはありません。

2005/2/13(日)

64bit Windowsの発売も間近なわけですが22:49:55

Win64 APIのdll名って何になるのでしょ?やっぱりxxx64.dll?互換性のためにxxx32.dllも残されると思いますけど。。。RC版試せばわかるのかなぁ?

コメントはありません。

2005/2/14(月)

他スレッドのマウスキャプチャを取得する23:39:25

マウスキャプチャについて勘違いしていたのでメモ。

マウスキャプチャは1つのスレッドにつき1つのウィンドウが実行することが出来ます。マウスキャプチャを実行しているAスレッドのウィンドウを得ようと、Bスレッドから GetCapture() しても正しい値を得ることは出来ません。他スレッドをキャプチャしているウィンドウを得るには GetGUIThreadInfo() を呼び出し、GUITHREADINFO.hwndCapture を参照します。

コメントはありません。

2005/2/15(火)

何コレ23:02:11

IEで画像をD&Dで保存しようとすると、「このゾーンからファイルを移動したり、コピーできるようにしますか」とかいうダイアログが表示されるようになりました。設定を見てもそれっぽい項目がありません。何なのでしょう?

コメントはありません。

2005/2/16(水)

PrintWindow()の第3引数23:16:02

PrintWindow()の第3引数にPW_CLIENTONLYを指定すると、Only the client area of the window is copied to hdcBlt. By default, the entire window is copied.ってあるのですけど、PW_CLIENTONLYを指定しても全体をコピーするのですよね。。。未実装?

コメントはありません。

2005/2/17(木)

IE 7.0をSP2向けにリリース02:24:38

MSが方針転換、IE 7.0をSP2向けにリリースへ(ITmedia)。だそうですが、XP SP2だけのサポートだとLonghornにくっついているのと大差ない気が。仮にここでCSSが強化され、before,after等が実装されたとしても、後方互換を考えると後数年は使えません。

CNETの記事では2000も考慮すると言ってますけど。。。

コメントはありません。

64bit Windows 5月中旬出荷23:48:40

64bit Windows の出荷が5月中旬に決定したようです。とりあえず自作アプリのサポート環境からは様子見。手持ちに環境ありませんし。

コメントはありません。

2005/2/18(金)

続「このゾーンからファイルを移動したり、コピーできるようにしますか」18:13:28

MS05-014が悪さしてるっぽいので、KB867282, KB873333, KB888113を削除すると直ります。KB入れた状態での回避方法は不明。

コメントはありません。

2005/2/19(土)

インスタンスのプロパティを表示23:38:28

起きたら17時でした。何時間寝てんでしょう、自分。ネタもないのでテスト目的で作ったインスタンスのプロパティを列挙するクラスでも投げておきます。何かの参考になれば。

using System;
using System.Reflection;

class PropertyPrinter {
    private int maxDepth; // 最大深度

    public PropertyPrinter() : this(3) {}
    public PropertyPrinter( int depth ) {
        this.Depth = depth;
    }

    public int Depth {
        get { return this.maxDepth; }
        set {
            if( value <= 0 )
                throw new ArgumentOutOfRangeException();
            this.maxDepth =value;
        }
    }
    public void Print( object o ) {
        Print( o, 0 );
        GC.Collect();
    }

    private void Print( object o, int index ) {
        Type type = o.GetType();
        string space = string.Format(
            string.Format("{{0,{0}}}", index),
            "" );
        PropertyInfo[] pis = type.GetProperties();
        if( (this.maxDepth < index) || (pis.Length == 0) ) return;
        Console.WriteLine( "{0}::{1}:", space, type.FullName  );
        foreach( PropertyInfo pi in pis )
            PrintData( pi, o, index );
        if( o is Array )
            PrintArray( o as Array, index+1 );
    }

    private void PrintArray( Array arry, int index ) {
        string space = string.Format(
            string.Format("{{0,{0}}}", index),
            "" );
        if( this.maxDepth < index ) return;
        for( int i=0; i<arry.Length; i++ ) {
            object o = arry.GetValue( i );
            Type type = o.GetType();
            PropertyInfo[] pis = type.GetProperties();
            Console.WriteLine( "{0}({1}){2}",
                space, i, type.FullName  );
            if( pis.Length == 0 ) continue;
            foreach( PropertyInfo pi in pis )
                PrintData( pi, o, index );
            if( o is Array )
                PrintArray( o as Array, index+1 );
        }
    }

    private void PrintData(  PropertyInfo pi, object o,int index ) {
        string space = string.Format(
            string.Format("{{0,{0}}}", index),
            "" );
        if( pi.CanRead ) {
            try {
                if( pi.GetIndexParameters().Length == 0 ) {
                    object val = pi.GetValue( o, null );
                    Console.WriteLine( "{0}+{1}:¥t{2}",
                        space, pi.Name,
                        (val == null) ? "(null)" : val.ToString() );
                    if( val != null )
                        Print( val, index+1 );
                } else {
                    // index 付プロパティはサポートしない
                    Console.WriteLine(
                        "{0}+{1}:¥t{{Index Property. PropertyType is {2}}}",
                        space, pi.Name, pi.PropertyType.FullName );
                }
            }
            catch( TargetInvocationException e ) {
                Console.WriteLine(
                    "{0}+{1}:¥t(throw TargetInvocationException){2}",
                    space,  pi.Name, e.InnerException.GetType().FullName );
                Console.WriteLine( e.StackTrace );
            }
            catch( Exception e ) {
                Console.WriteLine( "{0}+{1}:¥t(throw Exception){2}",
                    space, pi.Name, e.GetType().FullName );
                Console.WriteLine( e.StackTrace );
            }
        }
    }
}

コメントはありません。

2005/2/20(日)

HSPβ4Dev-MLで公開されたそうで23:45:30

変数型周りのドキュメントとプラグインからのコールバックがどうなるか興味。この辺りの仕様が固まらないと、raのHSP側インタフェースが書けないので。

コメントはありません。

2005/2/21(月)

互換性を考慮するとセキュリティは上げられないと思う23:26:30

IE 7.0をXP向けにのみリリースするという計画についても、古いプラットフォームのユーザーがセキュリティを強化したい場合はアップグレードを強いるというMicrosoftの意図が表れているとマクドナルド氏は分析。責任ある業界のリーダーと見なしてほしいのなら、Windows 2000向けにもIE 7.0を提供すべきであり、セキュリティを念頭に置いてIEのアーキテクチャを根本的に作り直すべきだと提言している。

かなり前にどっかに書いた気がしますけど、セキュリティを考えるのなら対象とするWindowsのバーションを絞ったほうが望ましい、それだけ考慮する要素が少なくなりますので。

コメントはありません。

2005/2/22(火)

TeacupのBBSがバージョンアップ20:00:07

BBSがバージョンアップしてますね。linkの色が指定できるのと記事を引用できるようになってますね。スパムくらいしか書き込みないので無駄ですけど(ぉ

コメントはありません。

2005/2/23(水)

HSP 3.0β4公開22:10:37

プラグインのコールバックラベルのサポートは無しですか。うーん仕様が決まらないのでイマイチ動きづらい。

コメントはありません。

構造体のメソッドをリフレクションで呼び出す22:27:12

構造体の内部データを変更するメソッドを呼び出す場合、type.InvokeMethod() の引数に直にインスタンスを指定して呼び出した場合、当然ですがインスタンスに変更は適用されません。一度object型にボクシングしてそれを元にInvokeした後ボクシングします。

using System;
using System.Reflection;

class Program {
    struct Struct {
        public int Val;
        public Struct( int v ) {
            Val = v;
        }

        public override string ToString() {
            return string.Format( "{{Struct: {0}}}", Val );
        }
        public void Test() {
            Val++;
        }
    }

    static void Main() {
        Struct s = new Struct( 1 );
        object o = new Struct( 1 );

        typeof(Struct).InvokeMember( "Test",
            BindingFlags.InvokeMethod, null, s, null );
        typeof(Struct).InvokeMember( "Test",
            BindingFlags.InvokeMethod, null, o, null );
        Console.WriteLine( s );
        Console.WriteLine( o );
    }
}

raは構造体のみ単独で所持しようかと思いましたが、まとめてArrayListに突っ込むことにします。

コメントはありません。

2005/2/24(木)

ネットつながらない23:02:10

ルータにアクセスできない。何故?

コメントはありません。

2005/2/25(金)

復活01:35:34

ルータ初期化でとりあえずつなげるようになりました。ただ、ipconfgかけてみるとまだ表示がおかしい気が。。。

コメントはありません。

2005/2/26(土)

解決23:07:59

2000とXP SP1のipconfigが異なるのはSP1以降はIPv6に対応しており、そちらも表示されるからのようです。とりあえず解決。

コメントはありません。

2005/2/27(日)

base64エンコードされたテキストを相互変換21:46:52

久々に試したら忘却していたのでメモ。

static string ToBase64( string str, string encode ) {
    byte[] b = System.Text.Encoding.GetEncoding(encode).GetBytes( str );
    return System.Convert.ToBase64String( b );
}


static string FromBase64( string str, string encode ) {
    byte[] b = System.Convert.FromBase64String( str );
    return System.Text.Encoding.GetEncoding(encode).GetString( b );
}

コメントはありません。

2005/2/28(月)

今日の散財23:37:15

ぷぎゅる#3、ぱにぽに[桃月学園絶対合格マニュアル]、お・り・り・が・み#3。

コメントはありません。

goto Top

Copyright(C)方位記号