Archive : 2009-01

JAN
10

昨日、大学のAcademic Presentationという英語の授業での話。今週来週と英語でプレゼンの発表をする回だったのですが、今週発表をする筈だった奴が、一人来なかったのです。普通、学期の終わりに授業を切るというのもあまり考えられませんし、就活とバッテングしてしまったのかと自分は思っていて、先生も「外せない用で休むなら事前にメールで連絡を入れるように。そうでなければ休んだ彼のように単位を落とすことになる」、という旨のことを言っていたのですが、授業後直ぐに教室で雑談していたときに、彼が今日来なかった驚愕の理由が発覚。

「あいつ、逮捕されたらしいよ、大麻で。」
教えてくれた奴によれば、年の瀬に、アパートで大麻を隠し持っていたのを管理人に見つかって逮捕されたとこと。

いやいやいやいや…。ありえないでしょう!まさか授業に来なかった奴が、警察に大麻で捕まっていたとは。

「マジかよ!」「えー嘘でしょうー!」「いや、普通に感じのいいイケメンにしか見えなかったのにー。」というのが、口々に出てきた皆の感想。この前、日吉キャンパスの方で慶應でも逮捕者が出ていましたが、まさか自分の知っている人が大麻をやっているとは、全く想像もしていなかったので、驚愕というより他ない出来事でした。

そういえばこんなこともありました。数か月ほど前、日吉時代に入ったサークルが、ミーティングで三田キャンパスで集まったときのこと(自分は後から合流したのでその場にはいませんでしたが)。最初は教室をひとつ使ってミーティングをしていたそうです。そのうち、ちょっとネットを使って調べごとをする必要が出てきたので、皆で図書館に行きました。短時間の筈だったので荷物はそのまま教室に残していたそうです。しかし調べごとを終えて、図書館から戻ってきたときのこと。

女の先輩二人のバッグが無い!

戻ってきてみると、15分かそこらの内に、バッグが忽然となくなっていたそうです。慌てて皆で辺りを探してみると、後輩の一人が女物のバッグを二つ持った怪しいに遭遇。しかし、直ぐに気付かれてしまったようで、追いかけたものの、バッグを捨てて逃げられたそうです。自分はその話を聞いて、「逃がしたのは悔しいけど、とりあえずバッグが戻ってきて良かったじゃないですか」と言ったのですが、なんとその話にはまだ続きがありました。

先輩たちもまぁ取りあえずバッグは戻ってきたのは良かったね、と最初は思っていたそうなのですが、よくバッグを見てみると、入れていたはずの下着が無くなっていたそうです(その日はミーティング後、先輩の家で宅飲みする予定でした)。下着ドロ!どうやら、盗んだ奴は、バッグが目当てではなくて、下着とかそういったものが目当てだったのでしょう、バッグの底に入れていたのを取り出して、財布とかも含め、他の物は綺麗に戻されていたそうです。おそらく、後輩が遭遇したのは、目当ての物を抜き取ったバッグを教室に置きに来たところだったようです。

しかも、その後輩によれば、逃げ方からして学外の人間とは思えなかったとのこと。SFCや日吉とは異なり、三田キャンパスはそこそこ入り組んでいるので、慶應生でも三田キャンパスに通っている人間でないと知らないような、建物から外へでる昇降口があるらしいのですが、犯人は迷わずそこを通って逃げたとのこと。ということは、恐らく犯人も慶應生…。その後輩によれば、これまた「どこにでも居そうなちょっとさわやかな感じの大学生」にしか見えなかったとのこと。

なんだかなぁ…。 大麻で捕まる奴は出るは、下着ドロは出るは…。そういや別のサークルでは一年半ほど前に自転車盗んで警察沙汰になっていた馬鹿野郎の同期も居ました。大麻やろうとか、下着盗るとか、そういう発想をする時点で理解を超えていますが、それより、そういった連中は、その行為が自分の人生に及ぼしうる影響を考えないんですかね?(まぁ下着ドロは逃げおおせたようですが。)二十歳を超えていながら、どうしてその位考えることができないのか。自分も、いまだ約束を破ってしまったり、その場凌ぎのごまかしをやるような駄目な人間であることは自覚していますが、こういった明確な犯罪行為をやる人間のことは全く理解出来ません。

JAN
9

VAIO Type P?Type Z?

Published:2009-01-09 03:21:16 UTC

VAIO Type Pがかなり話題になってますね。SONYらしい超高密度実装の極みというべきガジェットで、ひたすらカッコいいなぁという印象ですが、自分が欲しいかというとあまり食指は動かず。(まぁそもそも貧乏学生には買う余裕なんてありませんけれども)

Type Pにしても、他のネットブックにしても、あんまり必要性を感じないんですよね。安物のサブノートを買う金があるなら、一台最高構成のモバイルノートを買ってしまって、デスクトップPCとサブノートをリプレースしてしまえばいいのでは?と思うのです。サブノートじゃ所詮出来ることと言えば通信カードを繋げてネットを見る位で、いくらType Pがサブノートカテゴリの中で例外的に素晴らしい機種だといってもキーピッチが16mmでは本格的に使い込むマシンとしては厳しいのではないかなぁ、と思うのです。

むしろ、気になるのはType Zです。キーピッチは19mmしっかりと確保した上で1.35kg、しかも確か今モデルから64bit OSが使えるようになったので、強力なCPUを積んでおけば、メモリを2~3年後位に価格低下を待って換装するなどしてメインマシンとして長く使い込める将来性のあるモデルだと思います。家では大きめのサブディスプレイとNASにでも接続すればデスクトップマシンの代わりとして、出先では単体で強力なモバイルPCとしてバリバリ使えるだろうから快適この上ないだろうな、と思うわけです。

自分が今使っているのは二年程前のType Sですが、これもキーピッチが19mmで、重さは2kgのモデルで、毎日大学と家との間で持ち運びながら使っていますが、同期技術がそれなりに発展してきた今日でも、家と大学(あるいは出先)で全くの同一環境が使えるというのは、やはり便利なものです。分散したリソースに対して二重投資をする愚を避ける意味でも、また面倒な同期の設定を避ける意味でも、一台に集約してしまえばいいのでは、と思うわけで、最近のネットブックブームはちょっと理解できません。

(あぁでもType ZはGPUの動的切り替えがWindows 7と相性が悪いと言われているので、Type Zを買うならWindows 7が載ったモデルを待ってどうSonyが対応するかを見た方が良いかも。)

JAN
5

はてブの検索ボックスの挙動

Published:2009-01-05 13:30:48 UTC

 はてなブックマークの細かすぎて伝わりにくい新機能を勝手に紹介 – てっく煮ブログ

というエントリが前に出てたように、知らないところに意外と便利な機能が隠れていたりするわけですが、自分が今日使っていて気付いた機能をちょっと紹介。

image

はてブのページ別詳細ページで、文字列選択をすると、ページ上の検索ボックスに自動で選択文字列がコピーされる!

…え、常識?

JAN
5

Visual Studioのコントロールの配色は、vsThemeColors 列挙体 (EnvDTE80)DTE2.GetThemeColor メソッド (EnvDTE80)の二つを使うことで、取得することが出来ます。これは前に述べた通りです。が、uint型で習得できた色を.NetのSystem.Drawing.Color構造体に直す部分で、daruyanagiさんからの紹介されたColorTranslatorクラスを使うことで楽することができました。

private Color convertFromVsThemeColor(vsThemeColors themeColor) {
    return ColorTranslator.FromWin32((int)_dte2.GetThemeColor(themeColor));
}

なんということでしょう。あれほど無駄の多かったメソッドがたった一行に!

//Before
private Color converVsThemeColor(vsThemeColors themeColor) {  
	uint color = _dte2.GetThemeColor(themeColor);  
	int a = (int)color / 0x1000000;  
	int b = (int)(color - a * 0x1000000) / 0x10000;  
	int g = (int)(color - a * 0x1000000 - b * 0x10000) / 0x100;  
	int r = (int)(color - a * 0x1000000 - b * 0x10000 - g * 0x100);  
	return Color.FromArgb(0xFF, r, g, b);  
 }  

.NET FCL万歳。daruyanagiさんありがとうございました。

JAN
3
private void openWebSite(string url) {
	//_applicationObjectはDTE2のインスタンス
    _applicationObject.ExecuteCommand("View.WebBrowser", url);
}

こんな感じ。VisualStudioのアドインから引数をつけてコマンドを呼び出すやり方を憶えると、結構なことができそうです。

Visual Studioのコンテキストメニューへ独自メニュー項目を追加する方法を調べていたのですが、その際に憶えた、Visual Studioのコンテキストメニュー等のコマンド名の調べ方のメモ。

コマンド名を調べるそもそもの必要性は以下の通り。

Visual Studio オートメーション モデルは、アドイン コマンドをトップレベル メニュー ([ツール] メニューなど) に配置したり、コマンドをショートカット メニューやサブメニューに登録したりすることを簡単に実現できるように設計されています。

ただし、そのためには、Microsoft Visual Studio の Command Bar オブジェクト モデルを使用して、登録先のショートカット メニューやサブメニューを明示的に定義する必要があります。その上で、Visual Studio の AddControl メソッドを呼び出すことになります。

方法 : ショートカット メニューにアドインを表示する

コマンドをショートカット メニュー (または任意のメニューまたはツール バー) に追加するには、最初にそのコマンド名を知っている必要があります。[ツール] メニューの [オプション] ダイアログ ボックスに表示される [キーボード] ノードで確認できます。(引用注:この方法では確認できません)特定のメニュー項目を検索し、対応するコマンド名と、その他の関連情報を取得するアドイン サンプルが用意されています。このアドイン サンプル ("Command Browse Add-in") は、「Visual Studio Automation Samples」サイトから入手できます。アドインにアクセスするには、プロジェクトを解凍してビルドし、さらに、付属の AddinReg.reg ファイルを実行してから、[ツール] メニューの [Command Browser] コマンドをクリックします。

方法 : ショートカット メニューにアドインを表示する

「[ツール] メニューの [オプション] ダイアログ ボックスに表示される [キーボード] ノードで確認でき」ればよいのですが、残念ながらこの方法ではローカライズされてしまっていて上手くいきません。で、Visual Studio Automation Samplesの方を頼る必要があるのですが、上のリンク先はVisual Studio 2003向けとなっています。Visual Studio 2005 Automation Samplesがあるので、こちらを利用しましょう(2008向けはありません)。

DLしたものは.msi形式なのですが、やっていることは単に中に入っているプロジェクトファイル群を圧縮しているだけっぽいので、何処をインストール先にしても問題ないと思います。

さて、インストールして出てきたプロジェクトファイル群から、Command Browse Add-inを探し、ビルドしましょう。

ビルドするとCmdBrowserVB.dllとCmdBrowserVB.AddInファイルが生成されるので、普通のAddInと一緒で、\Documents and Settings\<user name>\My Documents\Visual Studio 2008\Addinsに放り込むのですが、CmdBrowserVB.AddInの中の、

<HostApplication>
    <Name>Microsoft Visual Studio</Name>
    <Version>8.0</Version>
</HostApplication>

というVisualStudioのバージョンを指定している部分は、9.0に変更する必要があります(Visual Studio2005なら変更は必要ないでしょう)。

imageそうするとVisual StudioのツールメニューにCmdBrowserVBという項目が追加されるので、そこから実行できます。

はい、出来ました。

ちなみにこのVisual Studio 2005 Automation Samples、他にもいろいろ勉強になりそうなVisual Studioのアドインのサンプルが入っているので、結構ソースを読んでみるとTipsが拾えて役立ちそうですね。

2009-01-05 11:58追記:取り消し線をつけた部分は内容的に無駄がありました。直したエントリをあげていますので、ご参照ください。

ToolStripの色 – SharpLab.のエントリで愚痴っていた、「Visual Studio Add-InのToolStripの色をVisualStudioに合わせる方法が分からない」という問題が解決しました。探してみるとあるもので、vsThemeColors 列挙体 (EnvDTE80)DTE2.GetThemeColor メソッド (EnvDTE80)の二つを使うことで、Visual Studioのコントロールの配色を取得することができます。DTE2.GetThemeColor メソッドvsThemeColors 列挙体を渡してやることで、uint型の戻り値が得られます。但し、ARGBの並び方が違うのか、このuint型の値をColor構造体のFromArgbメソッドに渡しても正しい色は得られないようで、

private Color converVsThemeColor(vsThemeColors themeColor) {
    uint color = _dte2.GetThemeColor(themeColor);
    int a = (int)color / 0x1000000;
    int b = (int)(color - a * 0x1000000) / 0x10000;
    int g = (int)(color - a * 0x1000000 - b * 0x10000) / 0x100;
    int r = (int)(color - a * 0x1000000 - b * 0x10000 - g * 0x100);
    return Color.FromArgb(0xFF, r, g, b);
}

上のメソッドを作って、これに通しています。このメソッド内の変数aですが、アルファ値として0xFFを持っているものと思ったら何故か2が入っているという謎の挙動をみせたので、とりあえず無視して0xFFで決め打ちしています。

image

で、結果がこれ(左がAdd-In)。なんか微妙にまだ色合いが違うような気がしますが(さっきのメソッド内の計算が間違っている?)、まぁ統一感は出ているのではないでしょうか。

 

追記(2009-01-04 20:34):

daruyanagiさんのところでBitConverterを使うといいよというエントリが!早速直してみました。

private Color converVsThemeColor(vsThemeColors themeColor) {
    uint color = _dte2.GetThemeColor(themeColor);
    byte[] argb = System.BitConverter.GetBytes(color);
    return Color.FromArgb(0xFF, argb[0], argb[1], argb[2]);
}

おぉ、手軽!これは便利ですね。シフト演算とか、自信がなかったので避けていたのですが、こんな逃げ道があったとは。

JAN
1

あけましておめでとうございます

Published:2009-01-01 00:00:00 UTC

明けましておめでとうございます。本年もよろしくお願いいたします。happynewyear

さて、今年の目標は…!
…これから考えます(笑)
まぁ、実際このエントリも予約投稿だし。元旦一日でじっくり考えましょうかね。

ここを読まれているリアル知り合いの方々へ:

住所録紛失のため、親戚等を除き、今年から年賀状からメールへと切り替えます。ごめんなさい。