Antoine.st 2005-05

2005-05-31

SQLCLR

SQLCLR で何ができるか考えてみよう! のコーナーだったわけですが、とりあえず、Win32 API は呼べることが確認できました。で、UI についても試してみたんですが、例のごとくサービスの設定を変えて『ユーザーとの対話を許可』しておくと、メッセージボックスも出せます。(笑

もちろん、サーバー側に表示されるので、クライアントから呼び出しても何の意味もありません。『ユーザーとの対話を許可』しないと、えらいことになるのでご注意を。


2005-05-25

TeraStation

TeraStation 買いました。1G のやつ。税込みで 84,465 円。これで、大変なことになってるディスクの整理ができそう。楽しみ楽しみ。


2005-05-19

My Network on DriveListBox - 2

問題は、Drive プロパティの値がおかしいことなので、それを利用せず、リストから値を取ればそれなりにいい感じみたいです。ドライブリストボックスの値を変えたときの、Drive プロパティと List(.ListIndex) の値の違いに注目、と。


  Private Sub Drive1_Change()
    Dim p As String
  
    p = Drive1.List(Drive1.ListIndex)
    If InStr(p, ":") > 0 Then
      Dir1.Path = p
    Else
      Dir1.Path = "\\" & Split(p)(2) & _
                  "\" & Split(p)(0)
    End If
    Label1.Caption = Drive1.Drive
    Label2.Caption = Drive1.List(Drive1.ListIndex)
  End Sub

My Network on DriveListBox

元ネタは、msnews.public.microsoft.com.jp.vb より。ようするに、ドライブリストボックスにマイネットワークの中身を表示したいと。で、いろいろ考えて作ってみたんですが、ダメでした。ドライブリストボックスの仕様として、頭の一文字しか見ていないようです。なので、たとえば「\\devsvr\dev」なんてネットワークパスを選択しても、「d:」になってしまうのでした。ダメだこりゃ。

やっぱり、フルスクラッチで作る必要がありそうです。


  Option Explicit

  Private Declare Function SendMessage Lib "user32.dll" _
    Alias "SendMessageA" _
  ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any _
  ) As Long

  Private Const CB_ADDSTRING = &H143

  Private Sub Drive1_Change()
    If InStr(Drive1.Drive, ":") > 0 Then
      Dir1.Path = Drive1.Drive
    Else
      Dir1.Path = "\\" & Split(Drive1.Drive)(2) & _
                  "\" & Split(Drive1.Drive)(0)
    End If
    Label1.Caption = Drive1.Drive
  End Sub

  Private Sub Form_Load()
    Dim wshShell As Object
    Dim nethood As String
    Dim i As Integer
    Dim result As Long
  
    Set wshShell = CreateObject("WScript.Shell")
    nethood = wshShell.SpecialFolders("NetHood")
    DirDummy.Path = nethood
    For i = 0 To DirDummy.ListCount - 1
      result = _
        SendMessage(Drive1.hwnd, _
                    CB_ADDSTRING, _
                    0, _
                    ByVal ParseFile(Len(nethood) + 2, _
                                    DirDummy.List(i)))
    Next

  End Sub

  Private Function ParseFile( _
    ByVal start As Integer, _
    ByVal src As String) As String
 
    ParseFile = Mid(src, start)

  End Function


2005-05-18

Memo for .NET 2.0

  • 例の ComImport したクラスが怪しい .ctor を吐く件は、予想通り修正されていない模様
  • StartupNextInstance では、TcpChannel を利用したリモーティングが使われている。その際、dns への問い合わせが発生する。その後、メモリマップドファイルを利用してコマンドラインをやり取り。どうも NOD32 と相性が悪い。トラップできない例外が発生する。
  • ADO.NET 2.0 に非同期の ExecuteReader メソッドが搭載。ただし、使い勝手から考えると、マルチスレッドの方が便利かも。
  • Generics は DllImport と一緒には使えない。ちぇ。
  • My.Settings で、アプリケーションスコープにした場合、その値は保存されない

Fix SN85G4's trouble

死んでた自宅サーバーですが、修理に出すまでもなく、自分で修理しました。結局、CPU ファンを兼ねたケースファンが回らなくなってしまったのが原因でしたが、電源の供給元を変更して何とか何とか。Windows 64 も出たことですし、OS の入れ替えでもしようかな。


2005-05-14

Assignment Operator

C# では、代入演算子のオーバーロード (実装?) はできないってことになってます。嫌な感じの制約で、そのために『HogeType hoge = 100;』みたいな代入ができないと。で、その代わりとして『hoge.SetValue(100)』みたいなダサいメソッドを作る必要がありました... と思ってたんですが、今さら気づきました。変換用のオペレータを定義することで、代入演算子の代わりができることに...。


  class Program {
    static void Main(string[] args) {
      ImitationInt ii;
      int i;

      // int to ImitationInt
      ii = 100;

      // ImitationInt to int
      i = ii;

      // calculate ImitationInt and int
      ii = 10 * ii;
    }
  }


  public class ImitationInt {
    private int _i;
    public ImitationInt(int value) {
      _i = value;
    }

    public static implicit operator ImitationInt(int value) {
      return new ImitationInt(value);
    }

    public static implicit operator int(ImitationInt value) {
      return value.ToInt32();
    }

    public int ToInt32() {
      return _i;
    }
  }

Thinkpad T43 Parts

とりあえず、メモ。タッチパッドなしで指紋センサーありのパームレスト、ってのはないのか...。うーむ。指紋センサーはちょっとそそられるところがありますが、タッチパッドは邪魔だし、あきらめるしかなさげ。

英語版キーボード

  • 39T0643 (NMB) $27.50
  • 39T0704 (ALPS) $26.50
  • 39T0765 (CHICONY) $27.00

タッチパッドなしパームレスト

  • 91P8399 $20.00

9 セルバッテリ

  • 92P1077 (SANYO) $124.00
  • 92P1073 (SONY) $133.00
  • 92P1069 (PANASONIC) $130.00

AC アダプタ

  • 92P1017 (ASTEC) $31.00
  • 92P1021 (DELTA) $30.50
  • 92P1025 (SANKEN) $35.50

Message from Mixi

マイミクシィの追加リクエストですが、Norton 先生に捕まります。基本的にはしばらくしてから確認するようにしているので、漏れがないと思いますが、時間がかかったりしたらごめんなさい、と。


2005-05-13

Positive and Negative

とある人に、『ネガティブなのはダメ。ポジティブに行かないと』と言われました。元来ネガティブな考え方をする方なので、『これは気をつけないとなぁ』と反省することしきり。

でも、と、ちょっと考えてしまうのが悪いクセ。ポジティブ、ネガティブってのは、たとえば何かの『できごと』に対する反応なわけです。友達から『今晩、飲みに行こうよ』と言われたときに、『飲みに行くと -> 溜まってる仕事がこなせないし、予算が足りるかどうか大丈夫かな...』と悪い方向に考えるのがネガティブ。『飲みに行くと -> 気分転換できるし、何か面白いこともあるかも』といい方向に考えるのがポジティブ。

でも、それってあくまで『できごとに対する最初の反応』なんですよね。これを『反射的ポジティブ(ネガティブ)』と呼ぶことにしましょうか。


2005-05-12

Which is better?

どっちを買うべきか、悩んでます。というか、悩んでいる間に、T42p がなくなっちゃいました。26万円で買えるところはすでに売り切れ、最安値は、28万円弱になってます。ということで、有無を言わせず T43 に決定の模様です。

しかし、DDR2-533MHz 1G のメモリも売り切れ。最安値は 4万円弱...。うーん。これは大失敗とみましたよ。

  Thinkpad T43 Thinkpad T42p
本体 200,000 円 260,000 円
メモリを 2G まで追加 2G - 40,000 円 1G - 20,000 円
合計金額 240,000 円 280,000 円
CD/DVD CD-RW/DVD-ROM CD-RW/DVD-RW
バッテリの持続時間 3.6 時間 5.8 時間
CPU 2.0GHz - FSB 533MHz 2.13GHz - FSB 400MHz
VGA MOBILITY RADEON X300 MOBILITY FIRE GL T2
HDD 80G - 5400rpm 60G - 7200rpm

Price down

購入しようかと狙っている PC があって、ここ数日値段のチェックをしています。面白いことに、日々 1,000円ちょっとずつ値段が下がっていってます。チェックを始めたときは 20万円を超えていたのが、今では 19万円台...。価格比較サイトごとに微妙に違っていたりして、なかなか面白いです。さて、いつ買うか...。


2005-05-10

Beta Documents

考えてみると、ベータ2 日本語版をインストールしてからは、C++/CLI についてしかドキュメントで調べてませんでした。ふと Visual Basic について見てみようと思ったら、目次にありません...。困った。というわけで、オンライン上のドキュメントはこちらから。


2005-05-08

Buy MP3 on the Internet

微妙に怪しげなんですが、MP3SEARCH.RU というところで、MP3 を購入してみました。アルバム 1枚あたり、$1.00 ちょっとです。1曲あたりだと、$0.10 とか。最初に、$30 をクレジットカードで払って、あとは購入するごとにマイナスされていく、って形です。

もちろん日本の曲はありませんし、最新の曲があるのかどうかもわかりませんが、たいてい聞くのは、ちょっと古めな洋楽なので、特に問題ありません。聞きたいときに、すぐ買えるってのがいい感じ。

とりあえず、

などを買ってみましたよ、と。

Personal Information

スラッシュドット でも取り上げられていましたが、原水さんの Blog によると、個人情報保護法をに基づき、ML の過去ログ公開の停止を求められたのだとか。

どう考えても『言いがかり』にしか思えないんですが、いざ訴訟となると、リスクはあるしコストも馬鹿にできないわけで。というか、心理的にきついです。実際訴えられると。

しかし、どういう意図があって公開の停止を求めるんでしょうかね。いつまでも古い所属のままの情報を残したくない、変な発言をしてしまったので恥ずかしい、といった辺りでしょうか。わたしも古い所属の情報がインターネット上、いたるところに残ってますし、恥ずかしい発言もたぶん残ってると思われます。でもまぁ、自分の過去だし、自分の発言だし、それはそれとして、しょうがないかなと思ってます。


2005-05-06

I know

ちょっとやりたいことがあって、Web サイトの更新を RSS 配信してくれるツール、サービスがないかと探してました。と、I know というサイトを発見。結果的に、目的の Web サイトの更新情報は取れないみたいなんですが、何か便利に使えるかも。

結局、更新情報の確認については、何かツールを作ることになりそうです。html を取得する部分、html をパースして RSS を生成すると。うーん。どっかでやったような気がする処理。ま、コンソールアプリでちょいちょいっと。

html パースのルールをうまいこと決められると、汎用的なツールになりますな。ちょっと考えてみようかしらん。

emacs build

ということで、またも emacs のビルド。お? スクロールが引きつる件が改善されたような気が...。動き自体はさくさくしてますし、かなりいい感じです。


2005-05-04

Freeze

この メール によりますと、いよいよ Sarge の Freeze が行われたとのこと。05/30 が正式リリース予定日だそうで。Woody からの入れ替えを検討しようかしらん。


2005-05-03

User Interface

転職サイトやら賃貸アパートのサイトをうろうろしていると、条件のを指定して検索できる画面を見かけます。そこでふと思ったんですが、『601万〜700万』なんて条件指定は、あんまり使う人に優しくないな、と。だって、『601万〜700万』なら OK だけど、『701万〜800万』は NG、なんて人はいないですよね。ご丁寧に、50万円ごとに区切ってくれてるサイトもあったりします。

こっちが払う立場、たとえば家賃『8万〜10万』ならわかります。それ以上、ってのは払えないわけですし。しかし、そうなると安いほうの指定ができないのがちょっと。あんまり安くていわくありげな部屋はちょっと困りますが、一般的には安ければ安いほどうれしいものですし。

ということで、多少画面は占有しますが、下限、上限がそれぞれ指定できる、ってユーザーインターフェイスがよさげですね。さらに、それぞれには『下限なし』、『上限なし』という選択肢を用意しておく、と。


2005-05-02

Thinkpad T43p

Thinkpad T43p が出ているわけですが、T42p との違いはそれほど大きくないみたいです。T42p は 15万円ほど安く買えるようなので、T42p + メモリ 1G、HDD 交換コースがいいかなぁ。IBM もいよいよ Lenovo になってしまったので、最後に買おうかと思ってます。

あとはタイミングだけ。いつ日本に行こうかしらん。

Golden Week

世間的にはすっかりゴールデンウィークなわけですが、普段とあんまり変化がありません。面白くないなぁ。