塚田氏と、馬渕氏とともにご飯を食べに行きました。その後、デイズタウンにあるJAMJAMへ。塚田氏と馬渕氏がクイズマジックアカデミーを延々とやっているのを横から見てました。
昔は筐体はずっと同じで、ゲームだけ入れ替わっていましたけど、今のオンライン物の筐体って変な形していたり、タッチパネルがついていたり、ゲーム会社のカード読み取り機、のような特殊なインタフェース持ってますよね。専用品なのかなあ?ゲームが廃れたらどうなるのかね。
連絡きたー。おそーーーーーい!
研修でへまやって僻地に飛ばされなければ、来年は恐らく大阪に住むことになるでしょう。
そんなことよりも、住民票は実家に移しておきなさいという恐ろしい指示が書いてありました。住民票移すためだけに、北海道に帰らなければならないのでしょうか。
研究室の追いコンがありました。プレゼントでミニライトをいただきました。ありがとうございます。
その後はステップで遊んだのですが、あの店は客の管理がおかしいので、大勢で行くと必ずトラブルが起きます。誰が入って誰が出たか全く管理していないなんて、変な店ですねえ。
塚原氏がチャットで「エクスプローラでアイコンをドラッグするとキャプションも半透明になる物とそうでない物がある。」って話をしていたので、検証してみました。以下はその画像です。
実験してみたところ、ドラッグするアイコンが32bit色だとキャプションが消え、それ以外つまり24bit色以下であれば半透明に描画されるようです(※)。実害はなさそうですが、やはりバグでしょうか?
(※)環境はWindows XP SP2のエクスプローラです。
園芸クラブの追いコンに参加しました。園芸では院生も送ってくれるんです。最近全然参加していなかったせいか、後輩の顔がよく分からんかった…。冷蔵庫とか洗濯機のもらい手が出来ました。
田口邸の洗濯機をけなしすぎた、実際見たら結構綺麗だった。ごめんw
追いコンではサワーを飲んで、今回はじょーセレクトのワインを飲んでいたため、意図しないチャンポンになってしまったらしく、かなり酔っぱらいました。
入籍したって話から飛んで、結婚の話が多かったですね。結婚と言えば、男性の結婚のピークは20代前半(つまり今くらい)と、30代にあるそうです。学生時代につきあっていた人と結婚するのが前者、社会人時代につきあい始めた人が後者になることが多いのだとか。
いつぞや、母に「今の日本で結婚して子供を作る意味がわからん。」って言ったら、「君は晩婚型だね。」って断言されましたよ。結婚の良さとやらを理解するにはまだ遠いようです。
明日からPASMOがスタートします。Suicaと相互利用可能なのは素晴らしいですね。どこがどのカードなのかは以下の表参照。
事業者 | サービス |
---|---|
私鉄(関東) | PASMO |
JR東日本 | Suica |
JR西日本 | ICOCA |
私鉄(関西) | PiTaPa |
JR東海 | TOICA |
どのカードがどこで使えるのか、まとめてみました。間違っていたらコメントなどでお知らせ下さい。
私鉄(関東) | JR東日本 | JR西日本 | 私鉄(関西) | JR東海 | |
---|---|---|---|---|---|
PASMO | ○ | ○ | |||
Suica | ○ | ○ | ○ | ||
ICOCA | ○ | ○ | ○ | ||
PiTaPa | ○ | ○ | |||
TOICA | ○ |
どれも一長一短ですが、関東ならSuica、関西ならICOCAがあればとりあえず安心かと思います。東海ではTOICAを選択することになりますが、東に行くにも西に行くにも、互換性が無くて非常に不便です。
JR東海といえば、東京(JR東日本)と大阪(JR西日本)の客を使って、真ん中の東海道新幹線(JR東海)がボロ儲けするという変な構図ができています。東西と東海って、仲悪いのかな?
なんて冗談はさておき、東海と繋ぐと東 -> 西に直に行けてしまうと、乗車駅と降車駅の組み合わせが莫大になるからやりたくないのでしょう。
関東圏のみのPASMOでさえ、検証にかなり時間をかけましたし、今も問題起きないかどうか冷や冷やしている状態ですから。東から西なんて大規模な組み合わせに尻込みするのもわかる気がします。
もちろんユーザはそんなこと微塵も気にしません。早く繋げて欲しいね。
ノートPCのCPUクロックがどんな風に変化しているか見るために、数秒おきにTSC(Time Stamp Counter) を読んで表示するプログラムを作ったのですが、CrystalCPUIDの出す値と比べてみたら、全然値が違います。
我が家のCore Soloに限定すると、負荷をかけて内部クロックの倍率がx10になればTSCから求めた値と一致しますが、倍率がx8とかx6に下がっている状態だと、TSCから求めたクロックがかなり高い値に計算されてしまいます。どうやらrdtscではダメなようです。
LinuxのカーネルやカーネルのコメントでリファーされているIntelの資料を見ると、MSRの値から計算できるらしいのですが、そんなのユーザプログラムからできないよ。
ちなみにCrystalCPUIDはどうしてるかというと、実行時にSysInfo.sysというドライバ(主にMSRを読むドライバでしょう)をロードして、\Device\CrystalSysInfoって名前のデバイスを作り、そいつを叩いて取得しているようです。やはりそれしかないのかなあ…。
23日までに研究室で使っている机を譲る準備をしなきゃいけません。今日はその準備の第一歩です。
ノートPC(NEC VersaPro)を初期化して、工場出荷時まで戻しました。残る期間は私物のノートPCで代用します。
Windowsのデスクトップは HDDを初期化して、まっさらな状態にしておきました。後はLinuxマシンがありますが、これはもう少し使うのでギリギリにやります。
昨日の続きです。VAIO type GのポインティングデバイスAlpsのGlidePointは、そのままだとPS/2マウスとして認識されてしまいます。
もちろんそのままでも使えるのですが、ちょっとタッチパッドに触るとポインタが吹っ飛んでしまうために、特に文字を打っている時にイライラします。
というわけでGlidePointのドライバ探しを始めたのですが、AlpsもSONYも全然ドライバ公開していません。VAIOのリカバリDVDにはVista用のドライバがあるのみで、これも使えません。困りました。
色々探してみると、DELLのLatitude D400あたりのXP用ドライバが使えそうだったのでインストールして使っています。
SONYのPCなのに設定画面にhttp://www.dell.com/ と出るのはご愛敬ってことで。ドライバを公開しまくりなDELLに感謝感謝。
我が家のVAIO type GにXPを入れて、デュアルブート環境(参考ページ)にしてみました。元々はXPモデルだったから、親和性は高いだろうと思って始めたら、結構ダメダメです。
ダウングレードなんてメーカーサポート外も良いところなので、自己責任でよろしくお願いします。
ThinkPadなんかと違って、VAIOの輝度調節や音量調節はソフトウェアで処理しています。そのためクリーンインストールすると、Fn + F4などを押しても輝度も音量も変わりません。音量は標準のミキサーで変えるとしても、輝度だけはどうしようもありません。
また、リカバリDVDに入っているドライバは当然ながらVista用の物が多いので、これも何とかしなければなりません。
インストールした時点で「不明なデバイス」となっているのは、以下のデバイスです。
ざっと見たところ、ハードウェアのイベントをVAIO Event Service(VESMgr.exe) というサービスで処理しているようです。XPにVista用のVAIO Event Serviceを無理矢理インストールしたら、エラー続出で動きません。しかし何回かインストール/アンインストールを繰り返していたら、輝度調節だけできるようになりました。
意味が分かりませんが、便利になったのでこのまま放置しておきます。たぶん使っているDLLの登録情報とかがおかしくなってしまったのでしょうね。面倒くさくなってきたのでこれ以上追求しません。
HDDプロテクションを使う方法ですが、DVDのドライバ(\VAIO\Drivers\HDD Protection)をインストールします。
Sony Utilities DLL(\VAIO\Applications\Sony Utilities DLL)を入れて、Sony Shared DLL(\VAIO\Applications\Sony Shared Library)を入れます。再起動しろと言われるので、再起動します。
先述したEvent Service(\VAIO\Applications\VAIO Event Service)を入れます。輝度調整や音量調整ができたりできなかったりします。。。
HDD Protection(\VAIO\Applications\VAIO HDD Protection)と、Control Center(\VAIO\Applications\VAIO Control Center)も入れます。コントロールパネルのVAIOの設定、から色々いじってみてください。
よくわかりませんがHDDプロテクションが動いたり動かなかったりします。。。
ちなみにモデムのドライバが入っていると、サスペンドしたときにブルースクリーンで死にます。画面が消えるのでブルースクリーンは拝めませんが…。電源を再投入したときに「深刻なエラーから復旧した」と言われ気づくと思います。
毎日ダイアルアップする人や、Winモデムを愛しているということでも無い限り、モデムより、サスペンド出来た方が便利だと思います。従ってモデムのドライバは削除しておくことをオススメします。
バッテリーのユーティリティや、電源のユーティリティなどは動きませんでした。デバッガで追いかけたらVista用のAPIを使っていたため、どうしようもありませんでした。
つまりバッテリーいたわりモードなどの利用ができません。そう頻繁に変える物でもないと思うので、Vistaからやることにします。
友人達の「来年度住むところは〜〜なんだってさ」という話を聞く度に、就職先からの連絡来まだかなあって不安になります。連絡予定は3月上旬〜中旬らしいんですけど、それってもう過ぎてないか?
やはり先走って不動産屋に5月まで借りますが何か?って聞くべきかなあ…。
先日購入したVAIO type Gはオンボードで1GBのメモリを積んでいるので、しばらくは余裕だろうと思っていたら、全然駄目でした。何もしていないのに500MB以上消費されています。Vistaがこれほどまでにメモリをドカ食いするとは。
早速追加のメモリに頼ることになりました。BuffaloのD2/N533-Gです。チップはヒュンダイでした。
またVAIO君の軽さを優先して1スピンドルモデルを選択したので、光学ドライブがありません。メモリを買うついでに、ポータブルDVDマルチドライブPanasonic LF-P967Cを買いました。USBのバスパワー駆動なのにかなりの速度が出ます。すげえ。
それにしても今月はクレジットカードの限度額(30万)が近い、近すぎるぜ…。
我が家のVAIO君はうまくないことにWindowsのインストールドライブにHDDの領域全て(100GB)が割り振られています。Vistaの腐ったフォルダ構成と相まって、激しく使いづらいのでntfsresizeでパーティションを縮めました。
一回失敗してデータが全部吹っ飛びましたが、あらかじめディスクをフルダンプしておいたので無傷で済みました。dd様々ですよ。
下記では既に30GBに縮めたパーティションを例に使っていますが、基本的には同じです。
(このコマンドでは、パーティション領域の使用率などが出ます) # ntfsresize -i /dev/hda2 ntfsresize v1.13.2-WIP (libntfs 10:0:0) Device name : /dev/hda2 NTFS volume version: 3.1 Cluster size : 4096 bytes Current volume size: 29999993344 bytes (30000 MB) Current device size: 30006132736 bytes (30007 MB) Checking filesystem consistency ... 100.00 percent completed Accounting clusters ... Space in use : 19569 MB (65.2%) Collecting resizing constraints ... You might resize at 19568902144 bytes or 19569 MB (freeing 10431 MB). Please make a test run using both the -n and -s options before real resizing! (実際には書き込みを行わないが、パーティションの縮小作業が行われる) (縮小させる前にこのモードでチェックするとよい) # ntfsresize -n -s25000M /dev/hda2 ntfsresize v1.13.2-WIP (libntfs 10:0:0) Device name : /dev/hda2 NTFS volume version: 3.1 Cluster size : 4096 bytes Current volume size: 29999993344 bytes (30000 MB) Current device size: 30006132736 bytes (30007 MB) New volume size : 24999993856 bytes (25000 MB) Checking filesystem consistency ... 100.00 percent completed Accounting clusters ... Space in use : 19569 MB (65.2%) Collecting resizing constraints ... Needed relocations : 0 (0 MB) Schedule chkdsk for NTFS consistency check at Windows boot time ... Resetting $LogFile ... (this might take a while) Updating $BadClust file ... Updating $Bitmap file ... Updating Boot record ... The read-only test run ended successfully. (パーティションの縮小作業が行われる) # ntfsresize -s25000M /dev/hda2 ntfsresize v1.13.2-WIP (libntfs 10:0:0) Device name : /dev/hda2 NTFS volume version: 3.1 Cluster size : 4096 bytes Current volume size: 29999993344 bytes (30000 MB) Current device size: 30006132736 bytes (30007 MB) New volume size : 24999993856 bytes (25000 MB) Checking filesystem consistency ... 100.00 percent completed Accounting clusters ... Space in use : 19569 MB (65.2%) Collecting resizing constraints ... Needed relocations : 0 (0 MB) WARNING: Every sanity check passed and only the dangerous operations left. Make sure that important data has been backed up! Power outage or computer crash may result major data loss! Are you sure you want to proceed (y/[n])? (上記の質問にyと答えて進める) (既存の大きなパーティションを消して、縮めた大きさのパーティションを作る) # fdisk /dev/hda コマンド (mでヘルプ): p Disk /dev/hda: 100.0 GB, 100030242816 bytes 255 heads, 63 sectors/track, 12161 cylinders Units = シリンダ数of 16065 * 512 = 8225280 bytes デバイスBoot Start End Blocks Id System /dev/hda1 1 608 4882432 27 不明 Partition 1 does not end on cylinder boundary. /dev/hda2 * 608 4256 29302864 7 HPFS/NTFS (hda1を削除する) コマンド (mでヘルプ): d 領域番号 (1-4): 2 (基本領域2を作成する) コマンド (mでヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 (パーティションのサイズを設定する) 最初 シリンダ (608-12161, default 608): (何も入力せずエンター) Using default value 608 終点 シリンダ または +サイズ または +サイズMまたは +サイズK (608-12161, default 12161): +30005M (変更を反映する) コマンド (mでヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
パーティションの領域サイズが30005Mと中途半端なのは、30000Mにしたところ微妙にサイズが足りなくてデータがぶっ壊れたためです。何かコツがあるのかなあ?
再起動するとWindowsの起動時にchkdskが走りますが、特に何も起きないはずなので気にしないで下さい。
ダンプデータをバックアップする際に smbだと遅すぎて使い物にならなかったので、nfs越しに送ったのですけど、nfsって未だに良くわかりません…。
クライアントはKnoppix 5.1.1で、サーバはDebian Sargeです。クライアント側で、
# /etc/init.d/portmap start
としてportmapデーモンを起動しなければならないのは知っていたのですが、うっかりサーバ側で、
# /etc/init.d/nfs-common start # /etc/init.d/nfs-kernel-server start
とやったらnfs-kernel-server startで固まってしまいました。サーバ側でportmapを起動するのを忘れていたのが原因のようです。
# /etc/init.d/portmap start # /etc/init.d/nfs-common start # /etc/init.d/nfs-kernel-server start
こういう手順を取るべきだったんですね。くだらんことでつまづいてしまったのでここにメモ。
私はVisual Studio 2005 Academic Editionを使っているのですが、最近プロジェクトをリビルドしたときの動作がおかしいです。今まで正常に動いていたのに、いきなりMSVCP80D.DLLがありません、と言われて起動しなくなることがあります。
何回リビルドしても駄目なときは、プロジェクトを置いているディレクトリに生成される DebugやReleaseというディレクトリを丸ごと葬ると直るようです。実行ファイルが生成される方ではなく、オブジェクトファイルが生成される方のディレクトリです。
ビルド時のメッセージにも特に異常はないし…一体何なのかね??ネットワークドライブにファイルを置いているからいけないのでしょうか?
同じ症状が出ている人or解決策を知っている方はぜひ教えてください。
WindowsのDLLではエクスポートをフォワーディングするという芸当ができるそうです。この機能を使うと、別のDLLがエクスポートしている関数を借りてきて、自分がエクスポートする関数にすることができます。
実際の使用例としては、kernel32.dllのHeapAllocというAPIが、ntdll.dllのRtlAllocateHeapと言うAPIにフォワーディングされています。フォワーディングされた関数はロード時にアドレスが解決されるようで、特にオーバヘッドはありません。
DEFファイルで、
HeapAlloc = ntdll.RtlAllocateHeap
のように [DLL名.関数名] という形で書くと、フォワーディングできるようです。
Dependency Walkerで見ると、上図のrecvのようにちょっと違うアイコンで表示されます。
COFFって面白いことができるんですねえ。と、ここまで書いて、そんなの常識だろって、詳しい方々に突っ込まれる気がしてきた…。
誕生日です。園芸のみなさんからお祝いのメールをいただきました。ありがとうございます。
大下さんと天久保2丁目(エルトリートのある交差点を東側に行ったところ)のバリ料理屋JEPUNに食べに行きました。テーブル料なるものを取るレストランに初めて行ったような気がするよ。
食べたことのない味で、おいしいです。あと、微妙に辛かったですね。個人的には限界値ギリギリでした。
(※)皆様にもっとも理解しやすいように、時計でおなじみの12進数で表記いたしました。
就職先から連絡が来ません。私は来年度どこに住めば良いのでしょうか。
しかも部署によりますが本社で研修、移住、事業所で研修というコースもあるらしく、4月に定住先が決まるのかどうか不安になってきました。
可能ならば、今住んでいるアパートを5月まで借りてしまって、ゆっくり引っ越しするという手が一番良いような気がしてきました。今年は2年契約の真ん中なのでできるはずですけど、一回不動産屋に退去するって言っちゃったのが心配。月曜日にでも不動産屋に聞いてみるかな。
こんなことになるなら、車を実家に置いてくる必要は全くなかったんですねえ。無駄に不便になっただけだったよ。うーん。
研究室の方々が WindowsってAPIのレイヤでフックできないの?って話をしていたのでちょっと考えてみました。DLLの呼び出しをフックする手法は以下のような手法が考えられますが、どれも一長一短です。
名前は勝手に付けました。下に行くほど実装が面倒くさそう、と勝手に思っています。正式名称(orもっと格好いい名前)や、他の方法をご存じの方は、ご教授いただけると幸いです。
以前、フックDLLでwinsockかなんかをフックしたことがあるので、今回はIATを外から無理矢理ぶっ潰してフックを実現してみました。
試しにWindows MessengerのSHELL32.dll!Shell_NotifyIconに割り込んで、ダイアログを表示させてみました(下図)。
ちなみにshell32.dllであればフックDLLの方が遙かに楽だと思います。kernel32.dll!CloseHandleなんかもフックしてみたのですが、見た目に呼んでるんだか呼んでないんだかわからんのよね。
ロードされたモジュールは各自のIATを持っています。そのためIATパッチを行う場合は、全てのIATのエントリを虱潰しに見なければなりません。
あるプログラムhoge.exeがkernel32.dllとuser32.dllをロードしていたとしたら、IATは少なくともhogeとkernel32とuser32の3つ分存在するはずです。
その状態でuser32.dll!MessageBoxWをフックしたいと思ったら、全てのIATのエントリからMessageBoxWに関わるエントリを探して書き換えなければ、打ち漏らしが発生してしまいます。IATパッチにおいて、フックをかける処理はかなりヘビーなものになるでしょう。
またDLLはいつロード/アンロードされるかわからないので、フックの設定や解除を徹底しようと思うとかなり難しいです。そのため厳密にフックする必要がある、セキュリティシステムなどには向かない手法です。
あとは…フックを通知する方法も考えないと行けませんね。これはそのうちなんとかなるんじゃないかと思っております。
< | 2007 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日: