*予定(は未定)
-
2006-12-01T1610 奨学金返還関係
-
2006-12-02T1500 研究::打ち合わせ
-
2006-12-05T1700 歯医者
-
2006-12-07T1300 ゼミ::発表
夕食は寿司.
*Visual C++ 2005 Express EditionでWin32
Visual C++ 2005 Express Edition
VC++2005がタダで使えるのは良いのですが,標準でPlatformSDKが付いていないというのが玉に瑕です.
PlatformSDKのインストールの仕方や設定は,Express Editionのダウンロードサイトや,色々なサイトで説明されているので手間をかければ問題ないでしょう.
ただ,今まで不満だったのは,ヘルプにPSDKが含まれないことです.プログラムを書いていて,F1キーでAPIが検索できないのはとても不便.PSDKのフォルダには,hxsとかhxiというファイルがたくさんありますが,Document Explorerで開く方法が分からない.
調べてみると,「連結ヘルプコレクションマネージャ」で,検索対象のヘルプを追加できるみたい.
Document Explorerで「連結ヘルプコレクションマネージャ」を検索するとローカルのヘルプにあるのが見つかります.Platform SDKが下のほうに表示されていると思いますので,チェックして,更新してください.(Platform SDK Documentationを一度起動しないと,一覧に現れないみたいです.これにも嵌った…)
これでやっと,VC++2005に移行する決心が付きました.
*研究::打ち合わせ
なんか,英語の本を渡されました.土曜日までに少し読まないといけない…….
ゼミの後,ひたすら論文のPDFをダウンロードする作業.なんか,数千個あるように見えるんですが…….
*サークル
ロボ研ではありません.夕食は,鯖とか鶏とかシチューとか.北海道から帰ってきたMeshiを駅に迎えに行く.
眠い.
あれ?明後日のゼミが中止になってる.
てことは,発表は来週か.なんか,2週続けて延期されると張り合い無いな.
*Perl
Perlはいいです.このわけの分からない文法が.「$"」なんて変数とかqw演算子とか惚れ惚れします.
と言うわけで配列の基本操作の復習です.というか,ソースコード表示モジュールのテスト.そんなに真面目にやっているわけでは無いのですが,Perlの色分け用の正規表現を書くのは面倒くさいな…….
# 配列のテスト
@a=(100..110);
print "@a\n";
print "@a[2,4,7]\n";
$"=',';
print "@a[1..5]\n";
print @a,"\n";
print 0+@a,"\n";
@a= qw(a aa bbb cc dd)[1,3,4];
print for(@a);
print "\n";
全然モジュールのテストになってない….
*セミ::準備
木曜日のゼミで発表なので,とりあえず担当場所を読む.C言語のフォーマット文字列を使ったアタックとか,PerlのTaintモードとか.パスワード認証とか.半分くらい読んで飽きました.もうちょっと深く掘り下げて書いてくれたほうが面白いのに.本当は,英語を読むのに疲れただけですが.
買い物.諸事情により軍手から卒業させられました.軍手が一番良いと思うのですが…安いし.部屋にある数十枚の軍手どうしよ…….
*CGI
最近,某所でCのソースを貼り付けることが多くなったので,ソースを表示するためのモジュールを書く.今のところC言語だけ.
ついでにモジュールのインターフェイスを大幅に書き直し.modulesフォルダに放り込むだけで使えるように.
/*
filter_source.pmのテスト
*/
#include <stdio.h>
int main()
{
int test=123; // コメントテスト
printf("Hello, World!\n");
return 0;
}
こんな感じ.
昼寝.
*ロボ研
そろそろ後輩の誕生日らしいので,ケーキを買って祝う.スーパーにケーキ用のローソクが無かったので,仏壇とかに使う普通のローソクを立てる.かなり凄いことになってました.
先週,賛成多数で今日のゼミは休みということになったので休日です.
今日は水曜日.というわけで鍋.おなかいっぱい食べました.
近くのゲーセンに行く.見てるだけですが.最近はネットワークゲームが流行ってますね.
*Java
Javaって面倒くさい.毎度言うけど,なんで演算子のオーバーロードが出来ないんですか.
a.add(d);
d.inv();
d.mul(x2);
d.mul(x2);
tmp.set(i);
d.div(tmp);
tmp.set(i+1);
d.div(tmp);
なんて書いていると,はたしてこれは本当に高級言語なのかと問い詰めたくなります.
あと,嫌なのは,
MyReal data[] = new MyReal[256];
なんで同じクラス名を二度も書く必要があるんだと毎回思います.テンプレートとか使うとさらに憂鬱.これは,C++でも言えることですが,なんでnewが型を推測してくれないのかと疑問に思います.new演算子に左辺値の型情報が渡せるような言語上の仕組みを作るべきじゃないでしょうか.
本を買いに行く.
バイナリアン度チェックで「あなたのバイナリアン度は80点です。あなたのバイナリ度はレッドゾーンを越えています。」とか言われたので,買おうか迷っていたのですが….
結局,つい買ってしまいました.
ちなみに間違えたのは,3,11,13.Linuxのlddはあまり良く見たこと無いし,未初期化変数へのアクセス検出は気合な気もしてくるし,Dwarf2とか使ったこと無いし.
買った本
-
BINARY HACKS
-
λに歯がない
-
たったひとつの冴えたやりかた
-
鋼鉄都市
鍋.あと,アイスとかプリントか.
XSSの話とか.
*ゼミ::発表
発表でした.なんとか無事に終わる.今後の予定が未定なのが問題.
*プログラミング
久しぶりにプログラムを書く.某ソフトの画面から簡単な画像処理で情報を読み取るプログラム.
明日は発表だというのに,鍋に呼ばれる.Safiiは怪しげなプログラムを書いていた.私も書きたくなったけど,発表用の資料作りに忙しくて手を出せない.
*ICPC
問題Gをやってみる.なかなか高速にならなくて,枝刈りに時間を費やしてしまった.結局,2時間半かかる.本番中には簡単そうに見えたけど,これは出来なかったかもしれない.
あと,E,F,H,Iか.E,Iは現実的な時間内で計算できるアルゴリズムが思いつかない.Fは,やろうと思っていた方法だと,答えが合わない個所がある.
HはC言語だと面倒くさそう.
とりあえず解いたものだけ:A,B,C,D,G
AとCは出来る限り本番中に作ったものと同じにしました.
*ICPC
ICPCのサイトが更新されてますね.解けた問題が2問未満のチームは「Honorable Mention」になってしまうのか.ギリギリ順位が付きました.
問題とサンプル入力のデータがダウンロードできるようになってます.興味がある方はチャレンジしてみては?
GreenPadが更新されてます.ICPCのときに「使ってます」と言ったのが効いたかな?(違うか)
*焼き芋
サークル棟前に落ち葉が溜まっていたので,焼き芋をすることに.煙が凄い.生協の人に怒られましたが,ちゃんと焼けました.
*研究::打ち合わせ
色々と話を.
*ICPCの復習
研究室に行ったら,打ち合わせまでに1時間くらい時間があったので,ICPCの問題を解いてみる.とりあえず,簡単そうなA〜Bを.デバッグは後回しにして,1時間くらいで書く.
4問中2問は解いた問題ですが,意外とすんなり書けてしまいました.
打ち合わせの後に,デバッグ.1時間ちょっとで問題なく動くようになりました.Aは問題なし.Bは難しいかと思ったら,一番綺麗に書ける問題だった.Cは一度やったはずの問題なのに動くようになるまで一番時間がかかってしまいました.Dは素直に再帰で書いたら遅かったので,無理やり3次元配列に計算済みデータを入れていったら問題なくなった.
Fもやってみたけど,なぜか答えが合わないデータが一つある.考え方が間違っていそう.
英字キーボードとEmacsに苦戦したので,次の機会があったら,ちゃんと練習してから望みたい.
*ICPC アジア地区予選 エクスカージョン
今日は,横浜ツアーです.ホテルから,バスでみなとみらいへ.
午前中はみなとみらい周辺を散策.DoCoMoのアンテナを眺めたり,マクドナルドでハンバーガを食べたりもする.
午後,中華街にて解散.
おなかいっぱい食べました.変な不吉な音を立てつつ目を緑色に光らせながら歩くパンダを買おうかどうか迷ったけど,絶対にいらないので買うのをやめる.Safiiは2匹ほど買ってましたが….
最後に商店街を歩いて,駅へ.
ちょうど大宮行きの電車があったので乗る.大宮で新幹線に乗り換えて長野へ.
感想
あっという間に終わりました.なんとなく連れてかれて,なんとなく問題を解いていたので,また機会があれば,今度はちゃんと準備をしていきたいなぁ.英字キーボードとか,Emacsに慣れてから行くだけで,かなり違うだろうな….
限られた条件下でプログラムを書くというのはやっぱり楽しい.大学の授業でも,こういうことをしてみるのもいいんじゃないかなぁ.普段,課題のプログラムを誰かに書いてもらっている人は嫌がるだろうけど(笑
*ICPC アジア地区予選 2日目 本番
ホテルのロビーでおにぎりと味噌汁だけの,very simpleなbreakfastを戴いたあと,バスで昨日と同じ会場へ.
本番
結果は,微妙な成績.普通に出来ていれば4問は確実にいけたと思うんだけどなぁ.
とりあえず,問題Aは簡単そうなのだけど,問題文の英語が難解.もう少し掻い摘んで説明してくれればすぐに理解できる内容なのに.条件を見落とすのが怖くて隅々まで読む.理解してしまえば簡単な問題.視野角を持った望遠鏡が複数あって,見える星の数を重複してカウントしないように求めよという問題.
その間に,SafiiがBの問題を読み終えたようでプログラムを書き始める.
三次元上の3点が成す角を比較するところで,3次元上の内積も|a||b|cosθで求まることを理解するのに少し時間を要しました(別に理解しなくてもいいのだけど,なぜか疑問に思ってしまった).SafiiがBのプログラムを書いている間に,Cも読む.こっちは問題文は図が多くて読みやすい.簡単に枝刈りが出来なさそうだけど,ちゃんと時間内に計算できるのかが疑問.
Safiiがどうやら,問題文を勘違いしていたらしくてBを投げる.で,解いておいたAとCを書く.Aは慣れないキーボードのせいかC言語の文法ミスが多発.Cは妙なバグが取れなくて,後回し.
SafiiがDを書き始めるが,どうもデバッグで嵌っていたみたい.Cの妙なバグは,再帰の最初の呼び出しのときだけ,呼び出す個数が足りなかったのが原因.同じ意味を持った処理を2箇所に分散させるのはダメですね.関数の中ばかり見てたら,main()関数で読んでる回数が一回少ないのに気づかなかった.とりあえず,Cを提出.計算時間が気になったけど,あれでOKだったっぽい.
そのあと,Safiiが再びDのデバッグを続けるも,結局,そのまま時間切れ.
Javaチャレンジ
コンテストの後に,昨日のJavaのプログラムを対戦させる.トーナメント形式だったのですが,我らがkstm.orgは逆シード.運の要素が強いアルゴリズムなので,これは致命的だ.
っと思っていたら,順調に勝ち進んでベスト8に入る.意外と強いぞ,この熊(熊を動かして鮭を取るゲームです).順々決勝では,鮭一匹分で敗れるという接戦ぶり.なかなか楽しめました.
クロージングパーティ
クロージングのパーティでは,ひたすら寿司とケーキを食べてました.後で先生に何か奢って貰う予定があったので,抑えてたのですが,最後にケーキが出てくるのは反則です.
昨日のウェルカムパーティで少しだけ話をしたIさんが,kMonos.NETのk.inabaさんだったのを知って,恐れ多くも話をして,名刺を貰う.GreenPadはUnicodeな文章を編集できて軽いエディタがなかなか無いので,気に入ってます.
先生に駅前の居酒屋で河豚のフルコースを奢ってもらう.たらふく食べました.大量の寿司と,小さめのケーキが7個ほど胃に入ったままだったので,後半はかなりきつかったです.
*ICPC アジア地区予選 1日目
今日からICPCのアジア予選.新幹線やらなんやらで慶應のキャンパスへ.山手線に乗りながら,都会の電車の運転手は大変そうだなとか.生協の食堂で昼食を食べる.かなり設備に差があるのは,国立大と私大の違いでしょうか.
色々なメニューがある中で,あえて信大の生協でも食べれるものを食べて比較することに.……やめとけばよかった.全く同じでした.
そのあと,理工学部のキャンパスの会場へ.
オープニングとかオリエンテーションとかの後に,練習のための課題をやる.
思った以上に英字キーボードに苦戦.明日は,keymapを変更してしまおうか.
最後にJavaでゲームのプレーヤを作るJava Challenge.サンプルのプログラムに負けたりするし….近くのターゲットを確実に捕ることが出来るようにするべきだった.勝てれば良いのですが,難しいな….
明日は本番.
メモ
ホテルは,新横浜駅のすぐ近くの東横イン.部屋は2人部屋なのにLANポートが一つしかないのが不便.ハブを持ってくればよかった.あと,コンセントも遠いので延長ケーブル.
ロボ研で工作.
明日からICPCなので横浜に行ってきます.
*研究室::ゼミ
*何かの解析メモ2
某C社の低価格無線LANルータについて,その2.前回はソフトから攻めたので,今回は実機を見ながら攻める.
基板上に,いかにもというピンが出ていたので,オシロで見ていると,明らかにUARTな信号が出ている.通信速度は9600bpsか.てきとーレベル変換回路を通して,8ビットパリティ無しで接続できました.
まず,ネットワークのPHYを認識して,次にRedBootが立ち上がります.次に,Linuxが起動するのが見えます.バイナリに含まれていたBusyBoxなどの起動も確認.
気になるのが「Start telnetd ...」の文字列.起動スクリプトや設定ファイルを見る限り,とある固定のユーザ名とパスワードが設定されているような…某E社の製品にあったみたいなバックドアじゃないですよね?LAN内からしかアクセスできないようにしてるみたいですし,大丈夫かな.そもそも,まだ繋がるのかどうかも分からないのですが.
まだ,PC側からコマンドが打てません.回路が適当なので電圧が合ってないのかも….
・ハードウェア的なスペックをメモ
一瞬,CPUはどこに載っているのかと疑問に思ったのですが,無線LANチップに内蔵されているものだった.それにしても,この基板,ATHEROSのAR5006AP-GSにそっくり.
関係ないですが,ポートスキャンしたいときにツールが見当たらないときは,シェルスクリプトかプログラムを書く人が多いと思いますが,Perlなら数秒です.
perl -e 'close(STDERR);printtelnet 192.168.1.1 $_</dev/null
=~/Connected/&&"$_,"for(1..1000)'
いままではPerlからxargsに渡してたのですがそんな必用なかったですね.