*掲示板CGI
以前の掲示板のデータを変換しました.新しいほうの掲示板から過去ログが見れます.
途中でデータのフォーマットが変化していて,変換スクリプトの作成に苦戦しました.特に,過渡期は頻繁にデータ形式が変わっているので,まだ完全には変換できていません.
それに従い,古い掲示板のCGIは削除しました.アクセスしても新しい方にリダイレクトされます.
そういえば,掲示板CGIって,私がPerlで初めて書いたプログラムです.インターネットを始めて間もないころに,Perlというものを知って試行錯誤しながら作ったのを覚えています.最初は「とほほのWWW入門」の掲示板をいじって使っていたのですが,意を決して自分で作ってみました.新しい掲示板は1から書き直したので以前のコードはたぶん残っていません.かなり苦労しながら書いたので少しもったいない.
*ログインシール
Yahooへのログイン画面にテキストや写真を登録して本物のサイトか確認しやすくなるサービスがある.
これって,MITM攻撃で簡単に破れるから逆に危険なんじゃ……と思ったら一応,設定したパソコンでしか表示されないらしい.どこかのネットバンクよりは頭が良さそうです.
しかし,基本的にセキュリティにおいてこういう独自のアイディアを使うのはとても危険です.下手な追加機能はセキュリティーを下げます.
それに,もしもですよ.もし,あんな実装になっていればこれも攻略可能な気がするんですが….不正アクセス禁止法に触れない範囲で少し試してみた限りでは大丈夫そうかな?
*メール
Yahoo!BBからメールが送れない.外部の25番ポートへ一切繋がらなくなった….今頃になってOP25Bが適用されたのか.
Yahoo!BBの説明によると587番ポートでSMTP-AUTHすれば送信できるっぽい.早速,Postfixでrelayhostを設定して,SMTP-AUTHで認証するように設定するが送信できない.登録されたメールアドレスを書けとか書かれている.
良く説明を読むと,使うメールアドレスを事前に登録しないといけないらしい.しかも最大5個.
…めんどうだし,そもそも5個じゃ足りないんですが.
大学を経由させるかな….
*うどん
研究室でmeshiの香川土産のうどんを食べる.お腹いっぱい.
サークル棟に置いてあったオシロスコープを研究室に移動.
別の研究をやってる人と少し話しを.微妙に使えそうな手法かな?
*Googleアカウント
Googleのアカウントを取ってみる.とりあえず取ってみただけ.
ウェブマスター ツールで自分のサイトの情報を見てると面白い.BBR-4MGとか電子工作関係で来る人が多いようです.他にも意味不明な検索や未だにWinny関係の検索も多いな….
*Googlebot
あれれ,研究のメモとかが書いてあるサイトがGoogleにクロールされている.リンクは研究室内部のページからしか無いはずなんだけどなぁ.
まぁ,そんなにまずい情報があるわけではないので放置しましょう.
*FreeBSD 7.0
BETA3が出てますね.ついでに,6.3もBETAが出てる.
*ロボ研
今日も見に行く.meshiとgoto君もいた.
*ロボ研
提出する書類がだいたい出来たらしいので見に行く.戦略やロボットのアイディア自体はよさそうだけど,細かい機構やその説明に怪しげなものが結構ある.
というか,スケジュールがギリギリすぎじゃないでしょうか.書類の時点でこれだと先が思いやられます.
*DirectShow
少しだけ DirectShow で遊んでみる.今までVFWでやっていたことを書き直してみたり.結構めんどうくさいな.
*画像処理
NHKロボコンのときに作った画像処理のプログラムを久しぶりにいじってみる.
結局ロボコンには使わなかったけど,意外と遊べそう.長方形の認識はとりあえず動いているみたい.傾きが少し怪しいけど….
10fpsでCPU使用率は10%くらい.まだまだ変な処理を追加できますね.
実はこのチョロQは赤外線で操作できます.パソコンから画像処理しながら制御するのも面白そう.
昨日,こいつの赤外線の信号を解析したのだけど,すでにここに解析結果が公開されていた.数値に微妙な差があるけど殆ど同じだ.
画像やソースコードをたくさん貼り付けると,さも色々なことをやっていそうに見えることに気づいた.実際には,最近はあまり変なことはしていません.
*Webカメラ
Webカメラで遊んでみようと思って,USBカメラを繋ぐがドライバが無い.カメラ本体にメーカも型番も書かれていないのが怪しすぎる.
VIDやPIDで検索すると,Canyon CN-WCAM21がそれっぽい.メーカーのサイトからドライバをダウンロードしてきたら使えました.
*staticなメンバ関数
ウインドウを管理するクラスを整理していて気になった.
ウインドウプロシージャはコールバックされるので,staticなメンバ関数として定義すると思うけど,staticだとクラスを継承するときに困る.staticとvirtualが共存できればいいのに….仕方ないので,WNDPROC型の変数を経由して扱うのもスマートじゃない気がするし,みんなどうしてるんだろう?
SetWindowLongでサブクラス化というのも手かなぁ.
*VisualStudio 2008
英語版が公開されてる.日本語版は年内の予定か.
試しに Express Editon を入れてみる.
デフォルトでWindows SDKが入るのは楽でいい..NET SDKも強制的に入れられてしまうのか.ただ,インストールされるWindows SDKは,ツールやサンプルが付いていない.
コンパイラのバージョンは15.00.21022.08になっている.
リソースエディタもやっぱり付いてない.ダイアログは作れなくて良いから,アイコンくらい編集させて欲しい.ペイントだと透過色とか扱えないし….
あまり大きく変わったところは無さそうだなあ.サイズは大きくなったけど.
*研究室
サークルに行ったら誰もいなかったので研究室でプログラムを書く.
*Windows SDK
Platform SDKを最新版にしようと思って,Microsoftのサイトを探したのだけど,Windows SDKなんてものがある.名前が変わったのか.っていうか,.NETも含まれるのか.サイズがかなり大きい.
Platform = WindowsというMS的な考え方を改めたのかな?
とりあえずインストール.Visual C++ Express Editionの設定を自動的にやってくれるバッチファイルがついてた.あと,DirectX SDK無しでも,DirectShowが使えるようになってますね.Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClassesnにあるbaseclasses.slnを開いてビルドするだけでライブラリが作れます.
*行方不明
3Dのモデルデータが入ったフォルダが行方不明になったのはこの前書きましたが,他にもICPC関係のフォルダが消えていることに気づく.本当にどこにやったんだろうか?やっぱ消したのかなぁ…
*ニコニコ動画
昼に起きて,昨日のスクリプトを少し修正.まだ見ていない動画もダウンロードできるように.
*サークル
meshiの北海道土産のホッケを焼いて食べる.
セブンイレブンで飲み物とアイスを買った後に,店内のポスターを見てmeshiが何かに気づく.
Firefox…….
*kukiki::掲示板
新しい掲示板を設置してみる.kukikiの掲示板モジュールだけど,使い勝手はいまいちかも.過去ログの管理機能とRSSが必要ですね.CMTはまだ使ってる人いるのかなぁ.
掲示板モジュールを自分で使うのは初めてだったり….
*フォルダが…
マイドキュメントから,いつのまにかフォルダが1つ消えている.検索しても出てこないし….たいしたデータが入ったものではないから良かったけど,この前モデリングしたオリゼーも消えたのは残念….
無意識に消したんだろうか….
今日は午後から研究室のゼミです.
*ニコニコ動画を保存
ずいぶん前のスクリプトも今のニコニコ動画で使えるように修正.
以前のスクリプトの改良版.これもいわゆるブックマークレットです.WindowsとMacOSのFirefoxで動作確認しました.少しいじればIEでも使えると思います.
ニコニコの動画一覧が出ている状態で実行すると動画ごとに「[DL]」というダウンロードのリンクが追加される…はず.ただ,一度動画を見た後でないと,サーバに怒られると思います.修正しました.
javascript:(function(){a=document.getElementsByTagName('a');
for(i=0;i<a.length;++i){if(a[i].getAttribute('class')=='video'&&
a[i].href.match(/watch\/(\w+)/)){c=document.createElement('a');
c.setAttribute('href','javascript:(function(){r=new XMLHttpRequest();
r.open("GET","'+a[i].href+'",false);r.send(null);
r.open("GET","/api/getflv?v='+RegExp.$1+'",true);
r.onreadystatechange=function(){if(r.readyState==4&&r.status==200){
location.href=unescape((r.responseText.split("&"))[2].slice(4))};};
r.send(null);})()');c.appendChild(document.createTextNode('[DL]'));
a[i].parentNode.insertBefore(c,a[i].nextSibling);}}})()
エディタなどで一行にまとめて,Firefoxなら「ブックマークの管理」から「新しいブックマーク」でURLの欄に入力してください.名前は適当に.
ダウンロードしたファイルがなぜか再生できないことがある…と思ったら,プレーヤーをバージョンアップしたら再生できた………….
検定でした.寒い…というか雪降ってました.今日の検定は私一人だけだったので,すぐに書類が出来て早めに卒業式.初心者マークとかも貰いました.そういえば,もう免許を取るまでは運転することは無いんだなぁ.
あとは,実家に帰ったときに学科試験を受けないと.
*A.オリゼー
データをメタセコイヤに変換して微調整.テクスチャをUVマップにしてみる.
暇があったらボーンとかも入れてみよう.
大分前に作ったチューリップが発掘されたので貼り付けておく.
そんなことをやっている場合ではなくて,明日はミーティングなので研究の作業を進めないと.
こいつはモデリングが楽でいい
怒られたら消します……
検定の予定だったのだけど寝坊したので,月曜日に受けることにする.
*サークル
鍋.鮭とか鯛とか.goto君のために鯛のお頭を入れてあげたのだけど,あまり喜んでなかった.
*0,-1,-1,-1,0,1,1,1
少し前のサークル中にSafiiが考えていた問題.分岐や除算を使わずに,上記数列を作るということらしい.テーブル作れば良いじゃん…というのは駄目らしい.
そのときに書いたコードがこれ.そろそろHDDから消したくなった(というか消してしまって書き直した)ので,ここに載せておきます.
#include <iostream>
using namespace std;
int main() {
int i,j;
for (i=0;i<8;i++) {
j = ((i|i>>1)&1) * ((i>>1&2)-1);
cout << j << endl;
}
return 0;
}
乗算は使ってしまったけど,あまり複雑にしても仕方なさそうなので,こんな感じでしょう.
Safiiとsangoは少し悩んでいたみたいですが,この数列が(0,1,1,1,0,1,1,1)と(-1,-1,-1,-1,1,1,1,1)の積であると認識できれば,あとは対応付けたい 0~7 の各ビットを見ながら適当に調節すれば,上記の式はすぐに出てくると思います.
あと少し….がんばって今週中に終わらせよう.
発表.
眠い….
*研究::ミーティング
今後の予定を.
研究室に行く.
明日はゼミで発表.
*カルピス
最近,コンビニとかで普通のカルピスウォーターが無いことが多いのはどうしてでしょう.アミノカルピスとかフルーツカルピスはあるのに.
そういえば,生協の自動販売機からもカルピスソーダが消えてたな….
信大のサイトにICPCの結果が載ってますね….
今日は学科だけ受けてくるつもりだったけど,キャンセルで空きがたくさんあるらしいので,技能の方も進める.
雨+渋滞で疲れた.
今日は山道と,検定コースの1つを回る.なんだか工事とか検問とかやっていて,道が渋滞….
*サークル
いつも通り集まって,色々話をする.
そのあと,お酒を買いに酒屋さんまで行くらしいので,ドライブについていく.帰ってきて,つまみだけ食べる.
今日は高速教習.一人だけだったので,往復.行きは渋滞していて結構時間がかかりましたが,帰りは高速であっという間.
飲み物を奢ってもらう.
*do ~ while 文
C言語の do ~ while 文の解説を読むと「while 文と違い少なくとも 1 回は必ず実行される」とだけ書かれていることが多いけど,使うのを避ける人も多いような気がします.
do ~ whileを使うべき場合もある…という話ではなくて,コンパイル後の(アセンブリ言語の)コードを読みながらデバッグするときには,do ~ whileを使った方が読みやすくて良いという話.
大抵のCPUアーキテクチャでは分岐命令はジャンプ命令でもあるので,while文を素直にコンパイルすると,ループの最初の条件分岐とループの終わりから先頭に戻るジャンプ命令が必要で,ラベルが最低2つ必要になります.アセンブラでがりがりコードを書いたことがある人ならすぐに様子が思い浮かぶと思います.
ここで,do ~ while文を使えば,分岐命令がそのままループの終わりから先頭に戻るコードになるのでラベルも1つで済みますし,コードの見通しも良くなります.
だから,do ~ while文を使いましょう!とまでは言わなくても,もう少しこいつを見直して欲しいなぁと感じる,今日この頃です.
変なシミュレータを使う.これって,いくらするんだろう?.って,スタートしていきなり事故を起こしてしまいました.その後は,かなり気をつけて運転して,なんとか最後まで到達.
*ロボ研
そろそろNHKに応募する案が出来つつあるようです.見せてくれるらしいので行ってみる.
もう少し,何かアピールできる点を入れて,細かいところを作りこめばいけるかなぁ.あとは,もう少しシンプルにしないと作れないような….
今日はゼミ.
来週は私の順番が回ってくるみたいですが,発表できるものが無い.とりあえず,シンポジウムとかの参加報告でお茶を濁すことにしてますが.
*ICPC::復習
ゼミの後に,問題A~CとGを解いてみる.A~Cは簡単.本番中に避けたGも意外と簡単だった.
*サークル
木を植える.
今日は寝る.
夕食は秋刀魚を食べる.
*ACM/ICPC::感想
というわけで,感想です.
ACM/ICPC アジア地区予選東京大会に参加しました.チーム名は kstm.org feat. Gichoです.
7月の国内予選は,ちょっと悔いが残る結果だったのですが,今回はそこそこいい感じでコードが書けました.
結果は,当日の記事にもありますが,11位でした.今年は日本の大学がかなり健闘してました.中国に日本が勝ったのは,今年が始めてらしいです.1位は京大のechizen.batでした.おめでとうございます.2位は東大のUnknown,3位はMakegumi.
こういう大会は面白いです.ICPCはもう私たちは出れないので,来年はICFPかな.あとは後輩をもっと鍛えないと….
*ACM/ICPC
7時に起きる.朝食のあとエクスカーション.江戸東京博物館とかに行って,秋葉原で解散.
昼食を食べた後,一通り秋葉原を回る.
新幹線で長野へ.
*ACM/ICPC
今日はICPCの本番です.
今年は,去年より少し問題が簡単だったようです.私のチームは5問解けました.あと少し余裕があればもう1問いけたかもなぁ.
A
私が解くことに.問題Aは去年よりも簡単…と思っていい加減に書いたのを送ったら,なんと計算時間の制限に引っかかる.テストデータに時間のかかるものが含まれていたようです.少し修正して,送ったらOKでした.
B
素数を使った問題.Safiiが担当.これはA以上に簡単っぽい.
C
双六であるターン以内に上がれる確率を計算する問題.簡単だけど,時間がかかりそうなので色々工夫.でも,そんなにがんばらなくて良かったみたい.
D
展開図から作られるピラミッドの高さを最小にする問題.最後に手をつけたけど,時間切れ.人間の計算力不足.
三角錐の辺の長さから高さを求める方程式を紙の上で解いてて入力する気の失せそうな式がどんどん出てきた.
それ以外のところは目処が立ったんだけどなぁ….
F
グラフ系の問題.でも殆どグラフと関係無いアルゴリズムで実装.計算時間が心配だったけど,大丈夫だった.
H
プログラムのバグを見つける問題.Safiiが担当.簡単そうだけど,バグに嵌って結構大変そうだった.
*ICPC結果
11位でした.22位くらいから順番に呼ばれて諦めかけていたところでチーム名が呼ばれました.
実際にはもう少し下の順位ですが,同じ大学のチームが複数あると2チーム目からは扱いが異なったりするので,思ったよりも上位になったみたいです.
あと,Safiiの知り合いのGoogleの人に,Googleに入れてくださいと言ってみる.
*ACM/ICPC
今日から東京へ.
明日が本番.
今年は,Googleルービックキューブ,Googleボールペン,Fujitsuボールペン&シャープペン,バザールでござーるタオルが貰えました.あとGoogleの紙袋か.
今日は2時間乗る.
*Googleのデザイン
なんだか,新デザインの実験をしているようで,「新デザインに切り替える」ボタンが表示されることがあるようです.一度表示されると,Cookieに保存されるみたいで毎回表示されます.新デザインでは,メニューがタブっぽく表示されてます.
Cookieを消して何度も試してみたら,別のパターンも発見.メニューが上に移動しました.って,前にも一度,このデザインになったことがあります.いつの間にか元に戻ったのは,Cookieが消えたせいだったのかも.