普段は10日から1ヶ月に1回ぐらいしかかかってこないんだけど、なぜか今日は21時からの2時間に全然無関係の内容で3人から電話がかかってきた。珍しいこともあるもんだ。
今月このページに書いてるプログラム的な話はほとんどがこれ関係。とりあえず約束の納期の月末には間に合った模様。付属の説明書だけで11KBytesにもなってしまった。クライアント側のコード(C++)は約5KBytes、サーバ側スクリプト(Perl)類は約7KBytes。実はまじめにPerlスクリプト書いたのって初めて。ちょっとは腕が上がった気がする。
でも、納品先(O-84氏)からincludeできないと苦情が。C++Builderには依存しないように作ったはずなので、ヘッダ周りをちょっとばかり修正すれば動くとは思うけど。結局、丸ごとincludeは諦めて必要な部分だけ組み込んだら動いたらしい。実はC++Builderでしか動作チェックしてなかったので、修正なしでVC++で動いてくれたのはかなり嬉しかったり。
しばらく使ってみて、時々Shiftキーが効いてないことがあったので、いろいろやってみたところ、どうやらCtrlキーとShiftキーを押しながらマウスクリックをした場合、CtrlキーやShiftキーを押し始めてから0.5秒くらいたってないとマウス単独クリックになってしまうようだ。切り替えはCtrlキー2回を押すことにはなってるけど、ブラウザで新しいページ開くために「Shift+クリック」を多用してる俺にとっては結構つらいものがある。エクスプローラで複数ファイル指定するときも多用する操作だし。
すいません。めんどくさいのでこの前のはRFC1738読まずにどこかで日本語情報探して実装しただけでした。昨日ちょっとまじめにRFC見てみたので、最初の関数を修正。
// 文字のURLエンコード void EncodeChar(unsigned char c, char* s) { if(c == ' '){ sprintf(s,"%c",'+'); }else if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9' || c == '$' || c == '-' || c == '_' || c == '.' || c == '!' || c == '*' || c == '\'' || c == '(' || c == ')' || c == ',' ){ sprintf(s,"%c",c); }else{ sprintf(s,"%%%c%c" , __itoa16(c/16), __itoa16(c%16)); } }
前のマシンで使ってたROM焼きだいじょうぶ!を新マシンに差し替えて、BIOSをアップデート。さらにAWARDのロゴが張り付いてるもともとのROMをあらかじめ準備しておいた2Mの新品FlashROMと入れ替えてそっちにも書き込み。これでROM書き換えウイルスにやられてもだいじょうぶ、っと。調べててわかったんだけど、ROM焼きだいじょうぶ!を使えば、同じタイプのROMなら別のマシン用のBIOSでもデータを流し込めるようだ。つまり、前もってバックアップとっとく必要もなかったかも。FlashROMも前に買ったときより高くなって\1400になってたし。ところで最近ROM焼きだいじょうぶ!って売られてるのを見かけないんだけど、まだ販売されてるのかなぁ。
たぽさんに教えてもらったとこの「FORMデータの処理」の「FORMデータの復号」を見てきたけど、今回は自前で作るところはエンコードしかなくて、あとはPerlのcgi-libあたりがやってくれるので、今回は必要ないです。でも、間違い発見。16進の10以上の部分は当然のことながらアルファベットで表すんだけど、このページに書いてあるのは大文字しか処理してくれないっす。RFC1738(p.20)によると大文字でも小文字でもいいことになってるので、これだと処理できない可能性あり。というか、この前俺が書いたのは小文字にしてるので実際処理できないし。RFC的には間違ってるけど、変換処理でポインタ使いまくりなところはなんかかっこいい。
これまではPC-98とATが各1台だったけど、新マシンが追加になってPC-98とおさらばできるので、CPU切り替え器(corega Changer KVM)を買ってきた。パッケージが結構でかかった(バルクじゃない内蔵CD-Rドライブの箱ぐらい)ので大きいのかと思ったけど、切り替え器自体は一番長い方向でも10cmなので結構コンパクト。でも、ケーブルが太いので全体で見るとかなり邪魔。まぁ、モニターのケーブルがあるから細くできないのはしょうがないだろう。 これまで使ってたモニター切り替え器だと、周波数を変えてみたりしてもちょっとゴーストが出たような感じになってたんだけど(800x600まで対応なのに1280x1024で使おうとするからしょうがない)、今回のは1920x1440まで対応らしく、ゴーストも全くなくてすごいきれい。っていうか、今のモニター買った当初からずっとモニタの切り替え器は使ってたので、このモニタが真の力を発揮したのはこれが初めてのような気がする。当時のところに切り替え器使って2年近くになるって書かれてるってことは、この切り替え器は結局約4年もがんばってくれたわけね。
Word Bankを登録してみませんかとか言うメールが来た。具体的にはここなんだけど、ユーザーは毎月固定額の会費を払えば金額に応じたランクのシェアウェアがいくつでも使えるようになる。で、その会費をソフト作者に分配するというシステムだ。この段階で既に怪しい。一応そのサイトを見てきたんだけど、Q&Aのページに「Q:シェアウェアのライセンスキー交付は出来るんですか?」→「A:ライセンスキーが必要な場合、シェアウェアの登録の際、ソフト本体と一緒にライセンスキーが書いてあるテキストファイルを圧縮して下さい。」などという意味不明なことがかかれていた。こんなことしたらユーザ側も金払ってるって意識がないからばら撒かれるだけだろ。そもそもキーをダウンロードした人が誰だってのがソフト作者にさえも提供してもらえなさそうな感じだし。 もちろん金に関してもおかしい点は多々ある。根本的なところでは、会費を払えば回数無制限でシェアウェアのキーをダウンロードできるってことになるので、入会して数日で全部いただいて退会すればユーザは確かに得だろう。でも、それってその分ソフト作者に対して払われる金が浮いたってことになるので、その後どうやって分配したとしてもソフト作者には大して金が入ってこないってば。こんなのにソフト登録しようとする人はいるのか?作者とユーザのつながりも断ち切られてる気がするし。
acoustic edgeだけど、やっぱりブルースクリーンを発生してくれるのを付けとくわけにもいかないので、結局前のYamaha製のやつに戻した。新しいWDMドライバが出たら試してみよう。今のところはブルースクリーンも音跳びも発生してない。
VMware上でいろいろ動かしてみたけど、さすがにDualの1Gだけあって、ほとんどのOSは実用レベルで動く。まぁ、それでもちょっと重いことは重いけど。意外にもWinXPもそれなりには動く。
ようやく発見。こんなところに。Philipsのトップからどうやったらここにたどり着くのか不明(今回はGoogle経由で発見)。もうちょっとまじめに作ってくれ。で、ドライバを入れ替えたところ、多少は発生確率が落ちた気がするけどやっぱり音は飛ぶしボリュームとかをいじってるとシステムが落ちる。最終比較方法として、Win98で使ってみたところ、全然問題なく使えた。ボリューム周りのスライダーを激しく動かしても全然大丈夫。ということで、ハードウェアが壊れているという可能性がなくなり、犯人はWin2000用のWDMドライバにあることがわかった。ということで、早いとこまともに動くドライバをリリースしてほしい>Philips。あと、Win98で再生してたら、エフェクトで未来の音が聞こえてたので、たぶん音跳びもこのドライバが原因だろう。
ところで、俺はいまだにSoundBlasterって自分のマシンで使ったことなかったりする。PC-98時代はNEC純正カードだし、前のマシンはYamaha製だし、今回のはPhilips製。特に理由はないけどSoundBlasterって好きじゃない。
DNSがだめになったのか、アクセス不能。復帰するのかな。本来のサーバ名で行くとアクセスできるからWeb自体は問題なく動いてるんだけど。
やっぱり今日も突然固まったようになってしまう。いろいろ調べた結果、どうやらサウンド周りが怪しい。付属ユーティリティーでFront/Rearバランス調整のバーをいじってると必ず発症するし。でも、メーカーのページにっても新しいドライバは見つからず。どうすりゃいいんだろうか。ドライバじゃなくてハードウェアが壊れてるのかも。あと、このサウンドカード(acoustic edge)は残響音があるようなんだけど、ボリュームコントロールでミュートかけてもコンマ数秒程度音が残る。それぐらい今のCPUパワーがあればほかのサウンドカードでもドライバ側で何とかできそうな気がする。このカードだってドライバががんばってるのかカード側ががんばってるかわかんないし。
前のマシンからあらかじめアンインストールしといたためか、OfficeXPの新マシンでのアクティベーションもインターネット経由で普通にできた。アンインストールとは関係なく、数回目まではマシンが変わっても大丈夫なだけかもしれないけど。いちいち電話しないといけないかと思ってのでちょっとラッキー。前のマシンから引き継いだのはSCSIカード1枚とビデオカードだけだし。それと、新規インストールだとどのアプリケーションを入れるかが変更できたのでIME2000が上書きされずにすんだ。IME2002は嫌。
そういやWin標準のAllInWonder128用のドライバだとHDBENCHのグラフィック測定で落ちるんだった。しょうがないのでDirectX8いれてこの前落としたATI製ドライバ入れて測定。前回は3/27。といっても、前回とはグラフィック以外全部変わってる。
★ ★ ★ HDBENCH Ver 3.30 (C)EP82改/かず ★ ★ ★ M/B Name SDVIA-L2R Processor Dual Pentium III 999.22MHz[GenuineIntel family 6 model 8 step 6] Cache L1_Data:[16K] L1_Instruction:[16K] L2:[256K] VideoCard All-In-Wonder 128 AGP Resolution 1280x1024 (32Bit color) Memory 523,756 KByte OS Windows 2000 5.0 (Build: 2195) Service Pack 2 Date 2001/07/24 22:59 VIA Bus Master IDE Controller プライマリ IDE チャネル VIA Bus Master IDE Controller セカンダリ IDE チャネル AMI MegaRAID IDE 100 Controller AMI MegaIDE #00 1.0 Advansys SCSI Host Adapter TOSHIBA DVD-ROM SD-M12011011 ALL Integer Float MemoryR MemoryW MemoryRW DirectDraw 26993 91200 90860 15159 8927 15503 29 Rectangle Text Ellipse BitBlt Read Write Copy Drive 13955 16336 5515 56 32925 27645 12452 C:\100MB
むぅ。CPUはやっぱ速いっす。でもなぜかMemoryWがかなり遅い。BIOSを調整すべきか?CL3だからかも。ビデオ関連もCPUに引っ張られて向上してる(解像度は3/27以後に変更したので先月とったデータと比較)。HDDは、前回がATA33のRAID0で、今回はATA100のRAID1。どうなるかと思ったけどR/Wともに向上したようだ。WはともかくとしてRはRAID1でも分散読み込みが可能だろうからもっと早くならないかなぁ、とか思ったけど、単純に2倍速で読めるものでもないのでしょうがないか。
暑すぎ。ほんとに。今日は38.1℃。今は3台のマシンとモニタの電源が入ってるので、エアコン入れてるのに部屋の温度が夜になっても32℃までしか下がってない。
研究室にも新マシン到着。共有用のノートでNECのLM800J。Pen3-800MHz、CD-R/RW/DVD搭載、100Base-TやDVの端子まである。使うか不明だけどBlueToothも搭載。研究室の中で必要な機能が一通り入っててかなりよさげ。しかし、B5ノートだと思って買ったのに実際のサイズはA4サイズだった。というか、他のメーカーのB5ノートとも比較して選んだはずだったので、他のメーカーのもA4に近いサイズだと思われる。CDドライブが外れるんだけど、すごい薄いのにRW/DVDのコンボドライブなところにちょっと感動。しかも電源入れたまま着脱可能らしい。
以前の予定通り、残りのパーツを買ってきた。TVチューナカードはまだ発売されてなかったようなのでまた後日。値段を多少見間違えてたのがあったり、値下げしてたのがあったりで、トータルは多分予定通りのはず。CPUのファンは意気込んでPen3-1.2G対応と書かれてた4000円弱のやつを買ってきたんだけど、こいつがやけにうるさい。はずれだったかも。CPUの温度も標準ファンのよりかなり温度上がってるっぽいし。あと、HDDがRAIDでつながってるので、OS入れるときにSCSIのCDからブートしたらブート直後にアクセス不能になってエラーが出てしまうので、仕方なくまたもFDからセットアップ。まだ環境が整ってないので、数日かけて整えていく予定。今のところ困ってるのがネジ。ケースにドライブ用のネジが8本しかついてなかったので、HDDを2つつけた段階で終了。どこかに余ってたような気がするんだけどどこやったっけ?
順調に動いてたと思ったら、ファイルの転送中に反応がほとんどなくなってしまって仕方なく強制電源オフ。こりゃぁシステムの深い部分の何かがおかしいとしか思えない。
空調の効いた部屋に居るから、外に出て暑いと思ってもどれくらい暑いんだかよく分からない。昼飯食いに出たときはそうでもなかったけど、昼下がりにバイト先[I]から学校に移動したときはかなり暑かった。で、今日の最高気温を見てみたら37.5℃だったらしい。どうりで暑いわけだ。
父方の祖父の一周忌。うぅ、考えても見れば母方の祖父の命日も8月なので、どっちも毎年暑い時期に法事があるってわけだ。これは結構辛いぞ。で、片道約2時間のところにある父親の実家へ行ったんだけど、結局ビール飲まされていろいろ食わされてただけのような気も。いまさらながら新潟のいとこと初めて話した。そもそも物心ついて以来初めて会ったのが去年の葬式のときで、そのときはあわただしかったのでそれどころでもなく、今回初めて話した。田舎の方ではやっぱり小泉反対派が多いようだ。仕事無くなるからねぇ。
高速の料金所にETC専用ゲートが準備されてた。予告が書かれてたけどどうやら明日から専用ゲートになるらしい。
URLエンコードってのは、サーチエンジンで入れたキーワードがアドレス欄に%90%85って感じででてくるあれのこと。要は非ASCII文字をASCII文字の範囲内で何とかしちゃえって仕組み。最初、マルチバイト文字は全バイトをエンコードしないといけないと思っててC++で作ったのがこれ。まずは細かいところから。
//--------------------------------------------------------------------------- // 文字のURLエンコード void EncodeChar(unsigned char c, char* s) { if(c <= 0x1f || c == 0x7f || c >= 0x80 || c == '<' || c == '>' || c == '"' || c == '%' || c == '#' || c == '{' || c == '}' || c == '|' || c == '\\' || c == '^' || c == '~' || c == '[' || c == ']' || c == '`' || c == '$' || c == '+' || c == '!' || c == '\'' || c == '(' || c == ')'){ sprintf(s,"%%%c%c" , __itoa16(c/16), __itoa16(c%16)); }else if(c == ' '){ sprintf(s,"%c",'+'); }else{ sprintf(s,"%c",c); } } //--------------------------------------------------------------------------- // 16進に対応する文字に変換 // 注:引数の値は0から15の範囲であること char __itoa16(int n) { if(n<10){ return('0'+n); }else{ return('a'+n-10); } }
で、エンコード部分は、こんな感じ。
//--------------------------------------------------------------------------- #define issjis1(c) (((c)>=0x81 && (c)<=0x9f) || ((c)>=0xe0 && (c)<=0xef)) //--------------------------------------------------------------------------- // 文字列のURLエンコード(SJIS専用) string EncodeString(string s) { string sRet; char buff[4]; unsigned int nCur=0; while(nCur < s.length()){ if(issjis1((unsigned char)s[nCur])){ // SJISの1バイト目 EncodeChar(s[nCur],buff); sRet+=buff; nCur++; if(nCur <= s.length()){ EncodeChar(s[nCur],buff); sRet+=buff; nCur++; } }else{ EncodeChar(s[nCur],buff); sRet+=buff; nCur++; } } return(sRet); }
でも、IEから送信されるのを見てみるとちょっと違う。どうやらマルチバイト文字の中でもASCII範囲のバイトはそのまま送ってるようだ。おかげでもっと簡単になった。
// 文字列のURLエンコード string EncodeString(string s) { string sRet; char buff[4]; unsigned int nCur=0; while(nCur < s.length()){ EncodeChar(s[nCur],buff); sRet+=buff; nCur++; } return(sRet); }
ちなみに、午前中はPerlをいじってて午後にこれを書いたので、無意識のうちにコメントを"#"で始めててコンパイルエラー起こしてたり。WinInet.dllのPOST使って送ろうとしたけど、どうも使い方が理解できなかったので、あきらめてGETで送ることにした。ちなみに、何を作っているかといえばO-84氏に依頼されたやつ(O-84氏の日記[7/12]参照)だ。予想外にPerl側が苦戦してる。まぁ、1週間以内にはできるでしょう、多分。それにしてもなんで俺は窓の杜に掲載されてるような人間の下請けしてるんだ?そのうち役に立つってことにして納得するしかないのか。
その関係で、最近技術情報ばかりになってるけど、きっと将来の自分や他の誰かの役に立つだろうということで。
夜から飲んでしゃべってたら朝3時。うちに帰る気力はあったので帰宅。やっぱりスクーターのパワーがないので、赤信号は5回しか遭遇しなかったけどそれでも35分かかった。昔はこの時間なら30分で帰れたのに。
朝起きたら(4時前に寝たのに9時起き)網戸にセミがしがみついてる。いつの間にかセミの季節になったか。しがみついてるやつが鳴いてなかったからよかったけど。
二輪乗りの日焼けは、腕の上側だけ(二輪に乗ってるときの上側)と、目の周りに集中してるので、よく観察すると分かるかも。特に、俺のように日に当たってる時間のうち二輪で移動中の時間が大半な人は、腕の表と裏のギャップが結構すごい。一応ごまかし程度に二輪での移動中に時々肩までシャツを上げてたりするけど、風呂に入るときに全身裸になって鏡を見るとすごい変。
この前の続き。RSAは本気で実装しようとすると非常に大きな数値と付き合わなければならなくなる。で、とりあえず現行のWindows上では整数型はunsigned __int64が64ビットの符号なし整数型で、最も大きな整数を扱える型だと思うのでそれを使う。でも、それらをかけた数の剰余を取らないといけないところがある。普通に(i*j)%nとかやると(i*j)の部分でオーバーフローしてしまうので、分解して計算する。詳しく解説はしないけど、こんな感じの関数を使えばOK。
// (i*j)%n を返す // i*jがint64を超えるような数値でもOK // ただし、i<n, j<nが前提 unsigned __int64 mod_64(unsigned __int64 i,unsigned __int64 j,unsigned __int64 n){ unsigned __int64 ret,q,r,temp; if(i<j){ temp=i; i=j; j=temp; } r=n%i; q=(n-r+i)/i; if(((j-(j%q))/q)<=1){ ret=(((i-r)*(j-(j%q))/q)+i*(j%q))%n; }else{ ret=(mod_64((i-r),(j-(j%q))/q,n)+i*(j%q))%n; } return(ret); }
イメージとしては、(i*j)からiの倍数でnよりちょっと大きい数値(上の関数だとi*q)の何倍かを引いて、nとの差(i-r)を(i*j)の方に戻してから引いたときの余り(i*(j%q))%n)とあわせて剰余を調べる感じ。最後のところをifで場合分けしてるのは、こうやって再帰的に処理するようにしないと、iやjがnに近い値のときにnとの差(i-r)が溜まってそっちがオーバーフローしてしまうから。ちなみに、素数出した後のRSA関連部分を実装したら、上の関数も含めて6時間ぐらいかかった。 デバッグしようにも愛用の関数電卓じゃ64ビットの符号なし整数(18400000000000000000=1.84*1019をちょっと超えるぐらいまで)なんて扱えるわけがないので苦戦した。後で気づいたんだけど、Windows付属の電卓は1032ぐらい( >2100 )まで扱えるみたい。さすがにそれ以上は指数表示だったけど、意外にすごいね。もうひとつの苦戦させられた要因は64ビット整数がオーバーフローしても例外出さないことだった。環境によるかもしれないけど、しょうがないのでオーバーフローしてるか確かめるために逆算して確かめてみたり。ほんとは32ビットの整数型しか扱えなくてももっとまじめにやれば無限長の演算はできると思うけど、そこまでやる気にはならないなぁ。どうせ遊びで使うだけだし。
で、perlで使ってみようかとも思ったけど、Perl 5.6以降でしかも64ビット対応オプションつきでコンパイルしてないと無理らしい(ちゃんと調べてないので違うかも)。でも、32ビット環境でもちょっと書き換えれば(32ビット*32ビット)の剰余を出すためにはほとんどそのまま使えるから無駄にはならないかもしれない。ただし、32ビット整数の素因数分解はうちのマシンですら数分で解けちゃうので、はっきり言って無意味。結局古いバージョンのPerl上で使うにはまじめに実装しないとダメってことか。配列でも使ってもっと大きい数値を扱う方法を調べるか..。上の段落で書いたことが早くも覆された。
K2EditorとEmEditor(v2)で同時に数十メガのファイル開こうとしたら、なぜかメモリ使用量が急上昇。もうちょっとで1Gってとこまで行った。タスクマネージャのコミットチャージの最大値は、997168KBを記録してた。制限値は1107824KBだった。やばそうなので両方とも強制終了したら落ち着いた。
Explzh(シェアウェア)は、プログラム本体やアーカイバDLLのアップデートを勝手にやってくれる仕組みを持ってる。これってかなり便利。普段使うアーカイバは別のやつだけど(こっちもシェアウェア)、DLLのアップデートだけでも結構便利。普段使う方のやつは1年以上更新されてない状況で、メジャーな圧縮方式の中で対応してないのがあるので、その形式に関してはExplzhの方を使うつもり。自動アップデートの方式は、観察してみた感じ、統合アーカイバプロジェクトの各DLLの説明ページのHTMLのMETAタグを読んで、それを元にダウンロードして解凍して上書きしてる感じ(予想)。METAタグはWWWC用のタグを読んでると思う。
<META NAME="WWWC" CONTENT="2001/07/14 01:60 UNLHA32.DLL Ver 1.60b [File:ulh3160b.exe][Size:377817][Ver:1.60b]">
こんな感じで書かれてるし。こういう機能って、これからのオンラインソフトには絶対欲しい機能だよなぁ。解凍して上書きしたりする仕組みは以前試験的に作ってみたけど、プログラム本体を再起動なしに上書きするのがどうやるのか分かんないっす。それ以外の部分は今の俺の知識で実現可能。あと、多分Explzhはやってないだろうけど、そういう仕組みを使うんならMD5コードも一緒にダウンロードして正当性チェックしてからファイルを入れるようにしたほうがいいだろうな。どこかにその手の技術解説してるとこないなぁ。探してみて見つからなかったらこの夏の研究対象としてもいいかも。今年はこれまでほどはバイトに精を出さない予定だし。
一番古いのは今月中に押入れ行きになる予定なので、記念撮影。右の方が古い。一番右はPC-9821 V200/M7D。MMXの200MHz。4年ちょっと前に購入。上から2つ目のSONY製CD-Rドライブは当時から使い続けてまだまだ現役(ただし2倍速)。真ん中が2年半前に組んだマシン。当時はまだ珍しかったDual Celeron 300A@450MHz。約半年後に暫定的にCeleron+Pen3を経てさらに半年後ぐらい(記録が見つからないので時期不詳)にDual Pen3 450MHzに変更して今に至る。左が今度組むマシンの箱のみ。こいつにはドライブを真ん中や右ほどは載せない予定。まだ足をはめてないのでもうちょっと高くなるけど、多分真ん中のと同じ高さにはならないだろうなぁ。
32bit PCIバス用の1000BASE-Tアダプタが1万ちょっとで買えるらしい。もうちょっと安くなったら、俺が学生のうち(あと2年弱の予定)にはうちのネットワークの一部をギガビットイーサ化してしまうかもしれない。
今のところの予定。
種類 | パーツ名 | 実売価格 |
---|---|---|
CPU | PentiumIII 1GHz * 2 | \47,600 |
CPU FAN | 1個 | \2,000 |
MB | RioWorks SDVIA-L2R | \22,800 |
メモリ | 512M | \7,800 |
ケース | 星野金属 1001N | \16,800 |
HDD | Maxtor 4K080H4 (80G) * 2 | \43,600 |
FDD | 2mode(髭氏より買取り) | \500 |
TV | I-O DATA GV-BCTV5/PCI | \17,800 |
サウンド | Philips Acoustic edge | \10,800 |
CPUファンは、標準添付品だと設置はできるもののAGPに近すぎて空気が流れないのでダメらしい。なので、AGP側のを別に購入予定。もしかしたらケース前面用のファンも買うかも。TVチューナカードは、NECのやつよりもっとよさそうなのがI-O DATAから7月下旬に出るので、これにするつもり。あとは、この他にもUPSは購入済みで、CPU切替器(\9800ぐらい)も購入予定。ビデオカードとDVDドライブは今使ってるやつを流用。ケースがシルバーなので、ドライブのパネルもシルバーにしたいところだけど、既に合計予想金額が上方修正されてるので、その辺は我慢。自分で塗るのも面倒だし。気が向いたらそのとき考えよう。
なんか最近あまりにもなまってるので、数日前に腕立て伏せを数十回ほどやったら、昨日あたりから筋がつりそうになってきてる。多分今日がピーク。高校のときは1日200回くらいなら余裕だったってのに、ひどい有様だ。
雨が降ってて電車で学校に行ったので、帰りに大須に行ってケースを買ってきた。普段はスクーターで買いに行くのでこういう機会でもないと電車で行けないし。腕がつりそうでも持ち上げる方向にかかる力は全然平気なので持って帰るには問題なし。で、アルミケースを買うつもりはなかったんだけど、17,000円弱でアルミケースがあったので、ついついそれにしてしまった。
朝7時過ぎに暑くて目が覚めるだろうってことで、最近は1時過ぎには寝るようにしてるんだけど、今日は5時前に暑くて目が覚めた。もう熟睡できないな。学校に行ったけど、午後になったら机の上で安眠モードに突入してた。短時間ならこのほうがうちで寝るより快適。
学校に向かう途中の道にある電光掲示板に、「不発弾処理のため交通規制あり」とか出てた。こんなのはじめて見た。実際に処理が行われたのかは不明。
あさひだけじゃなくて東海も振り込み名義間違いで手数料が取られるらしい。やっぱり仕組みが同じなだけにダメか。こうなったら新しくどこかに開設するって手もありかな。というか、郵便局もネット取引できるようにしてほしい。名義入力時に半角カナ入れるからIMEが変なこと覚えそうってのは確かに思ったけど、注意書きをよく見てみると全角を入れても勝手に変換してくれるらしい(少なくともあさひダイレクトでは)。というわけで今後は半角カナなんて入れないつもり。それにしても、企業内のデータはこうやってこれから永遠に半角カナが残ってくのかな。嫌だなぁ。ちなみに、11日に振り込んだやつは今のところ返金されてなかったみたいなので、多分ちゃんと送られてると思う。
といっても、とりあえず当たり障りのないところから、今日はUPSとか。でも、Pen3-1GHz*2も予約して5000円払ってきたので後戻り不可。別の店で1.13Gもあったけど、PGA2とか書いてあったので、Dualじゃまだマザーがないだろうから無理っぽい。あと、秋葉原にはよく居る(居た?)らしい違法ソフト販売の現場を初めて見かけた。俺が通ったときには(俺も含めて)誰も興味を示してなさそうだったけど。関わらない方がいいっす。うちに帰ってからUPSを設置。2台分まとめてUPS経由にしようとしたら、出力オーバーらしく警告音がうるさいので、電源落として1台だけつないだ。本体とスピーカぐらいしかつながってないのでこれだと限界の40から50%ぐらいらしい(付属のソフトで確認可能)。これで雷を怖がらなくてよくなった。瞬断はこれで問題ないけど、ほんとに電気が止まったらモニタの電源つなぎ換えないとだめかな。自動シャットダウンできる状況ならはっきり言ってそのまま電源落ちても大抵被害は出ないから、文章とか書いてるときには急いでモニタつなぎかえだな。
今日の輪講の当番終了で、夏休み前に研究室でやらないといけない仕事から解放された。まぁ、研究もちょっとはやらないといけないけどねぇ。それ以前に卒論まだ出してないし(おい)。内容忘れる前に卒論書かねば。それにしても、今日の輪講は約50分で終わってしまった。っていうか、最初の20分ぐらい誰も何も突っ込んでくれなかったので、後半はちょっと突っ込んでもらえるように、突っ込みどころでわざと時間とったりしてた。
RSA公開鍵方式を試してみたかったんだけど、過去(3年前)に公開鍵方式に関して講義で聞いたことがあって、その当時試しに暗号化と復号化をするのを作ってみたので(キーはintの範囲しか使えない上にキーのサイズ以下のデータしか扱えないので実用性なし)、それを探し出してソースを見てみたら、ほんとに暗号化と複合化してるだけだった。RSAではその係数を決めるところが重要なんだけど、そこまではコーディングしてなかった模様。なので、こことかここを参考にしてみる。 キーを導出するために大きめな素数がいるので、ここからデータをダウンロード。しかし、一部のデータが壊れててダウンロードできないので、Cで書かれてたエラトステネスのふるい方式で求めるコードをいただいてきてそっちで生成した。ただし、うちのコンパイラでサポートされてないコード中のunsigned long longはunsigned intに、strtoulはatoiに、printfの%quは%dに変更。が、なぜか整数区間配列を1000万とかにするとコンパイラ(Borland C++)通してから実行したときにエラーが出てくる。しょうがないので100万にして実行したら、1億以下の素数出力に10分ぐらいかかった(@Pen3-450Mhz)。もしかしてコンパイル時に何かオプションつけないとだめなのかなぁ。しかし、素数ってエラトステネスのふるいで出すのが一般的なのかな。もっとすごいアルゴリズムでも使うのかと思ってた。で、そこで力尽きたのでRSAは後日。
いつの間にかWord BankにPickUpアイコンがついてた。やっぱりダウンロード数とは関係なく、Vectorの人が内容をちゃんと吟味してるようだ。(ダウンロード数だったらNumLoadの方が5倍ぐらい多いけどPickUpアイコンはついてない。)でも、同じ分類(日記・用語集)のソフトに一斉に4つもPickUpアイコンがついたようなので、あんまり目立たない気もする。
髭氏(7/11)へ。誰も「ワードで文章書きつつビルダーでソースをビルドしたりといった作業をするにはデュアルの方がいいらしい」なんて言ってないぞ。その作業ってDualにしてもほとんど意味ないよ。それに第一、コンパイル中に文章書くなんて絶対しないし。
あさひ銀行のネット振込みに初挑戦。だけど、振込先の口座番号と名義が一致しないと手数料だけ取られてしまうことになるらしい。ATMだと確認してから振込みできるんだから、その辺何とかしてほしいなぁ。東海銀行のほうはどうなんだろ。あらかじめ確認できるなら乗り換えたい。
今月発売されるDelphi6のPersonalが、そのうち無償ダウンロードできるようになるらしい。うーむ。JBuilder、Borland C++に続いてついにDelphiもか。これまでの流れだと、Delphiの半年後にC++Builderが発売されてたので、この流れが続くならC++Builder6は年明けになるんだろうか。Personalバージョンは業務用アプリ開発には使えないらしいけど、Windowsネイティブのビジュアル開発ツールとしては初の無償化。これを機会にBorland派が増えるといいなぁ。あと、希望としては、DelphiだけじゃなくてKylixも無償ダウンロードできるようにしてほしい。この2つはほぼ同じコードで開発できるので、マルチプラットフォームなものも簡単に作れるようになるんだろうな。ちなみに、無償化の短所のひとつとして、これまで一番安いバージョンでシェアウェア作ってた人はこれまでのより高いバージョンを買わなければならなくなるので、関係する人は要注意。って、俺の周りにはDelphi使いは居ないから関係ないか。
最近、冷蔵庫にこんにゃくゼリーが入ってたので妹のだろうと思いつつ時々もらって食ってたんだけど、今日になって実は賞味期限が1年過ぎてるものだったことを知らされた。それまでは部屋に隠し持ったまま忘れていたのを最近になって発掘したので冷蔵庫の中に入れといたとのこと。もっと早く気づけって。
実地調査による見積もり決行。前回見積もったときは11万ぐらいかと思ったけど、思ったより高いものがあったこと、HDD(80G*2)も買うことにしたこと、CPU切替器とUPSを見つけたのでそれの値段も入れてみたことから、合計金額は20万弱になってしまった。結構かかるねぇ。もうちょっと吟味した方がいいかなぁ。
この前からチェックしてるTVチューナカードのUSB版があるんだけど、USBを経由してデータを流すからにはかなり圧縮しないとダメなので、最大ビットレートは6Mbpsらしい。DVDと比較してみると、DVDの何倍速ってのは、CDに比べて9倍速い1350KB/sを基準としてるので、DVD1倍速の速度で単純計算すると1350K*8=10080Kbps。約10Mbpsってところ。USB1.1の転送理論値は11Mbpsだけど、ここまでいっぱい使うわけにもいかないので、実用上は6Mbpsぐらいが限界なんだろう。で、実際6Mbpsってのがどうなのか気になってたんだけど、KT氏がUSB経由のやつを持ってるらしい。「DVDと比べると質はかなり落ちる」らしい。っていうか、TV放送だと受信した段階でDVDより質が悪いけど。
提携は結構前に決裂してるけど、ついに8/20から東海側ATMであさひのカードを使うと手数料がかかるように戻ってしまうようだ。逆はいつから手数料がかかるようになるか今のところ不明。そういえば、インターネット経由で取引するためのシステムは両行とも明らかに同じものを使っているようだ。名前も、あさひダイレクトと東海ダイレクトでロゴまで一緒だし。共同開発したんだろうねぇ。
昨日のMSDNの件だけど、今日の朝、学校で見てみたら接続できた。前のログインIDとhotmailのアカウントを関連付けてようやく中が見えるようになった。しかし、昼ごろもう一度見ようとしたらやっぱり接続不能。うちに帰ってからも結局見えない。もしかして英語版WinXP RC1の配布で負荷がかかってるのか?それにしても全く何も表示されないのは何とかしてほしいぞ。
どうやら1週間ぐらい前からダウンロードページのログイン方法が変わったらしいんだけど、どこをどうやってもページがないとかアクセスできないとかで全く何もできない。ったく、こっちは大金払ってるんだから何とかしてほしい。ちゃんとアクセスできるようにできないならわざわざログイン方法変えるなっての。
夜中の3:30に寝たので9時過ぎまでは寝てるつもりだったんだけど、あまりに暑いので7時過ぎに起きてしまってからあまり寝れなかった。これからはもうちょっと早く寝るようにしよう。そういえば、サーバマシンを自宅で動かしてる人たちって、夏は暑くないのかなぁ。うちでも時々つけっぱなしにしといて夕方帰ってくると付近の部屋一帯が熱地獄になってたりするんだけど。
事務に出す受講登録は4月に出しといたけど、講義によってはそれぞれ担当の先生に受講してることを伝えておかないと単位が出ない。で、今受講してることになってる講義のひとつの登録は最初の講義のときにやったらしいんだけど、TA[A]と重なっててこれまで1回も出てなかったので、いまさらながらメールで頼んでみたら、2週後にある試験を受けてくださいというメールが返ってきた。やってみるもんだな。あと2回で試験まで終わるってのに登録してもらえるとは。
バイト先にある普段は電源切られたままのマシンに、あるデータベースソフトを入れてみようと思ってコンパイルしてたんだけど、非常に遅い。/proc/cpuinfo見てみたら、K5の100MHzらしい。そんな時期からここは反Intelだったわけね。AMD以外には無いのか聞いたら、Intelは無いけどCyrixは結構あるらしい。なんかすごいっす。でも、コンパイルはあまりにも遅すぎ。確かに結構でかいやつだけど、./configure→makeが1時間ぐらいかかっても終わらないのであきらめてそのままにして帰ってきた。今度から./configure終わったら速いマシンでコンパイルしよう。
真夏です。名古屋の最高気温は36.4℃。ちなみに、さっきうちに帰ってきて(21:00ごろ)部屋の温度計見たら37℃でした。さすがにここまでくると扇風機じゃ耐えられないです。エアコンなしで頑張ってる方々には悪いけど、エアコン稼動開始。去年の日記を見るとこの手の話が出てくるのは7/22だから、去年よりも暑くなったのが早いんだろう。
ただでさえ倍率高くなってるのに、経済学部のやつがうちの研究室に入ろうとしてるらしい。たぶん情報の枠で来るんだろうけど、大変だってことを分かった上で情報系を目指してるので、やる気はかなりあるようだ。でも、情報系の知識がないので、推薦で時間に余裕があると思われるI君に任せた。情報に合格すること自体大変だろうけど、ほんとにうちの研究室に入ることになったら伝説として語り継がれそうだ。来年から研究室紹介のときはやる気のないやつは来ないほうがいいって説明した方がいいかもなぁ。分かってるだけでも今度の倍率は3倍程度。大学院にしてはかなりの倍率なんじゃないかと。受験生は頑張ってください。
もちろん俺じゃなくて、父親なんだけど、糖尿病と診断されたようだ。んで、俺はいつもは飲まないんだけど、1本飲むとよくないからってことで、晩飯時の缶ビールを半分俺が飲むことになった。俺を飲み会のときに見たことあれば分かると思うけど、実はこの量でも完全に酔います。おかげでますます暑い。
1年半ぶりに受験してみようかな、と。今回はネットワーク。どうやら1年ぐらい前からインターネットで申し込みできるようになったらしいので、早速申し込んだ。今年からデータベースが試験範囲外になったので、その辺の知識がない俺にとってはちょっと有利(旧1種でも苦戦した)。最近は昔よりもちょっとはネットワークが分かってきたつもりなので、分からないところも勉強して合格したいね。今日買ってきた問題集についてた過去問チェックソフトで平成10年の午前問題やってみたら制限時間150分のやつを72分かかって解いて正答率は76%だった。やっぱりデータベースはかなり間違ってたけど、ネットワーク関連のところも結構間違えてた。旧1種と重なってそうな分野も一部カットされるのでちゃんと勉強しないとダメかも。午前問題ぐらいは本番までに9割ぐらい取れるようにしときたいところ。試験受けに行ったらたぽさんに遭遇したりして。そういえば基本情報技術者(旧2種)に今回からJavaが追加されるらしい。ようやく、って感じもあるけど。
T先生がYahoo!BBの対応エリアチェックをしてたので、ついでにS氏の自宅番号で調べてみたら対応エリア内らしい。ついでに俺も調べてもらったら対応エリアに入ってるようだ。確か最初に調べたときには未定とかだったので嬉しい。ちなみに当のT先生のところは対応エリアに入ってないようだ。ま、とりあえず人柱になる気もないのでいきなり申し込みなんてするわけもないけど、選択肢が増えるのはいいことだ。
学校の近くの道で、ハトがたくさん居るところがあるんだけど、そこの近くで信号待ちをしてたら、なんとハトが横断歩道を歩いて渡っていた。歩行速度が遅いので赤になるまでに渡れないかと思ったけど何とか渡りきった。で、そのまま歩道のあたりをうろついていた。なんて行儀のいいハトなんだ。よく頑張った。感動した。
前期のTA[A]が終了。相変わらず3時間ボーっとしてただけだった。これで半年で18万もくれるなんて嬉しすぎ。
3ヶ月前にオーストラリアのスーパーでお土産代わりに買ってきたHoney&Mustard dressing とかかれたドレッシング。受け狙いで買ってきたんだけど、やっぱり甘いのかなぁ、とか思いつつもこれまでは封印されていた。が、いつの間にか親が開封してたので、今日の晩飯のサラダにかけてみる。妙に味が薄いけど、時々喉に熱い感触が。いったい何が入ってるんだ?と思ってよく見てみたら、原材料の最初にvinegarって書いてある。俺は苦手なんだよ。勘弁してくれよ。もういっぱいかけちゃったよ。ってことで、苦労しつつ食べた。蜂蜜の味もマスタードの味も全然しなかったんだけど、これってもしかしてほとんど酢なんじゃないのか?それとも酢が苦手じゃない人には分かるのかもしれないな。
うちのサーバマシンのHDDの調子が悪いってのに、半年先になっても簡単に買える値段になるかがまったく分からないので、AthronMPを待つのはあきらめて、Pen3-1GHz*2にしようかなぁ、と思い始めた。Athron1.4Gでもいいけど、やっぱりVMwareとか走らせることを考えるとPen3 Dualの方が効率よさそうだしね。そういうわけで必要資金を試算。CPU切替器(モニタ+キーボード+マウス切替器)の値段がよく分からないけど、CPUとメモリとマザーボードとサウンドとTVチューナとSCSIカードとFDDとケースで大体11万ぐらい。他のパーツは余ってるやつなどを利用。環境整えるのが楽になるように新マシン用にHDD買うならATA-RAIDカード+HDD*2でさらにプラス5万弱ってとこか。ついでに買っちゃおうかなぁ。
1限はワークフローとかその辺のことをやってる講義の試験らしきものだった。内容はいつものとおりよく分からず、教科書代わりに配られてるプリントを見ていいといわれてもやっぱりよく分からない。しかし笑ったのは、問題が手書きで紙にかかれてたんだけど、日本語のはずがあまりにも激しい字で読めない文字が多発。解読に手間取っていたところ(問題作成者の先生は今日は不在)、そこの研究室の学生が黒板に書き出していた。ちなみに、そこの研究室の人でもかなり解読には苦戦するらしい。
たまには構文チェックをしてみるかってことで、Another HTML-lint gatewayで先月の日記をチェックしてみる。タイトルにHTMLの構文チェックって書いたのに、ここはXHTMLなので正確には違うけど、とりあえずチェック。すると、かなり減点喰らった。よくある間違いのところは直したけど、日記システム(hns)利用サイトで拾ってきたリンク貼り付けたところにエラーが出る。CGIに渡す引数のところにある"&"がそのままになってたのでだめらしい。うーむ。これじゃぁそのままコピペでいけるって利点が損なわれるなぁ。今まで気づかなかった。あと、#1とか書いてあるタイトル前の記号はaタグで囲う部分の文字列が一緒なのに行き先が違うのはよろしくないらしい。それはまだいいとしても、日記の中で「この前」とか書いてるところのリンク先が違うのはどうしようもない。よってこれは放置。よく見てみたら、このあたりのエラーはオプションにチェック入れたら出てこないようにできたので、その状態で何とか100点ゲット。 あとは、HTML Validation ServiceもNo errors found! になった。
おかんがいつもと違うマシン使いたいからアカウント作れというので、Excelでも使うのかと思ってサーバにアクセスできるようにしたら、どうやら暇つぶしにフリーセルをやりたかっただけらしい。しかし、いまだにやってたのか。今は無きうちのWin3.1マシンにWin32s入れた当初からやってるから、7年ぐらいずっとフリーセルをやっているものと思われる。しかもその前もソリティアやってたし。よく飽きないなぁ。