2008-08-31 (日)
なんで,_beginthreadと_beginthreadexの関数の呼び出し規約が違うんだ….
*[プログラミング] ARToolKit
ARToolKitを使えば楽が出来るなぁ,と思ってソースを読んでみる.使えそうな部分も結構あるな.
意外とソースが読みやすくて安心しました.
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
なんで,_beginthreadと_beginthreadexの関数の呼び出し規約が違うんだ….
ARToolKitを使えば楽が出来るなぁ,と思ってソースを読んでみる.使えそうな部分も結構あるな.
意外とソースが読みやすくて安心しました.
久しぶりの休み?
ずっと書きたかったプログラムを書き始めることにする.
とりあえず画像処理が必要なので,OpenCVに手を出してみる.自由に使えるようになるためには,ちょっと勉強が必要かも.
ついでにQRコードのデコーダを書こうとしたのだけど,ちょうど良いのを見つけた.
http://trac.koka-in.org/libdecodeqr
これもOpenCV使ってるっぽい.認識率があまり良くないけど,少しいじれば使えるかな.
ARToolKitをケータイ用に移植して欲しいと思ってたのだけど,考えている人は結構いるっぽいですね.
http://www.nicovideo.jp/watch/sm4273353
DoCoMoのiアプリとかにも移植してください.動画は無理だけど,カメラを呼び出して静止画にはアクセスできるので,それだけで何か面白いことはできるはずです.
携帯のカメラで特定の物を撮ったときに色々な情報を表示してくれるサービスとか結構すぐに出来ると思うんだけどなぁ.
午前中,sangoから電話がかかってきて,なにやら自分の部屋から閉め出された状態にあるらしいので,sangoの部屋の鍵を<以下略>.
午後はバイト.今日は夕方まででした.短時間でしたが疲れました.
いままで作っていた機種が終わったので,別の機種です.チップ抵抗のハンダ付けとか久しぶりです(汗).こんなことやっている内職の人とか大変ですね.
そういえば,Intelが最終仕様を発表したみたいですね.
まだ,usb.orgには具体的な仕様書が出てないですが,近いうちに読めるようになるのかな?
5Gbpsですか.光ファイバは無くなってしまったみたいですが,当面の間これで十分かも.ただ,ケーブルのお値段が少し高くなりそうですね.
まぁ,私はLow-speedの1.5Mbpsで遊んでるので,5Gbpsなんて別世界の話にしか聞こえません.
USB3.0は電力管理周りが充実したっぽいですね.私は5年以上前から,USB3.0で電力事情が改善することを予測して待っていたのですが,まだちょっと足りないですね.私が望んだ機能は4.0に持ち越しかな(笑).
午前中はプログラムを書いて,午後はバイト.雨です.今日は,生姜焼き定食(400円).バイト帰りにsangoの様子を見に行く.まだ微熱っぽいけど,元気そうで安心.キャベツを貰って帰る.
ふーりえへんかんしたりしました.
サウンドの出力ピンのSetActualDataLength()でデータサイズをいじると,ビデオのフレームレートまで変えてくれるのは,最初だけっぽい?
ゲーム業界の圧力で販売が規制されつつあるみたいですね.まぁ,分からないでもないですが.
でも,ゲームしないけどプログラム書いたり解析するためにゲーム機買うみたいな人も(少なくともここに1人)いるわけですし.そういう人にとってマジコン無いと,ゲーム機自体が無意味.
仕方ないとは思うんですけどね….身の回りのものが,どんどんブラックボックス化されていくのが,なんだか悲しいです.
今日は21時までバイトでした.
また よしの屋食堂でご馳走になりました.今日は1ランク上の焼肉定食(350円).
バイトのあと,風邪を引いているsangoの様子を見に行く.まだ熱があるみたいで心配です.
最近は,マルチスレッドのプログラムを書くとき,.NETのThreadもどきのクラスを作って使っているのだけど,こいつはLinuxとかで使えません.
昔書いたWindowsのスレッドをpthreadみたいにするヘッダファイルを見ながら書き直そうと思ったけど,pthreadだとsuspendとresumeが出来ない気がする.
ソースレベルでクロスプラットフォームを目指すより,Wineとかに頼った方が実は移植性が高いんじゃなかろうか….
ここから別の話.
ふと気になってしまったのだけど,スレッド間で共有しているデータ以外(つまりスレッド固有のデータ)にアクセスする場合には,ロックしなくても正常に動作することって本当に保障されているんでしょうか?
極端な例だと,
char data[2];
というデータに対してスレッドAはdata[1]を使い,スレッドBはdata[2]を使うというのは真っ当な神経をしているプログラマなら,なにか危険を感じるはずです.もっと極端な例では,1バイトのうち,3ビットをスレッドAが,5ビットをBが使うなんてこともあるかもしれません.
何が心配かというと,メモリアクセスの単位はCPU依存だということです.CPUによっては1バイト書き換えるときに,ワード単位で読みこんで,1バイト書き換えたあと,またワード単位で書き戻す場合があります.今のところ1ワードなんて高々数バイトでしょうが,上限が保障されているわけではありません.
メモリ上でどのくらい離れた位置にあれば,スレッド間で干渉しないかが私には分からないのですが….
今日もバイトです.しかもsango休み.
最近,時間が過ぎるのが早すぎます.
ハンダ付けしたり,マイコンにプログラム書き込んだり,ねじ締めたり.
疲れました.でも昨日より楽しめました.
夕食はよしのや食堂.何でも頼んでも良いということなので,いつもの日替わり定食(300円)に納豆を付けてもらいました.ごちそうさまでした.
夕食後は作業せずに終わり.
話をしていると,私はプログラミングで使う言葉を知らなすぎるなと思うことが多々あります.特にデザインパターンとかの名前.
どうやって実装すべきかを私なりに説明しているつもりなのですが,伝わると「あぁ,それは○○パターンかな」という反応が返ってきたりするので,名前を知っていれば一瞬だったなぁと思うことがたまにあります.でも,細かい作法にまでわざわざ名前を付けて覚えて置くのは面倒くさい.
私は,ソースコードを読んでプログラムを覚えたので,アルゴリズムやデータ構造もちゃんとした名前は後から知ったというのが多いなぁ.
そもそも,ものに名前を付けて覚えるということ自体が苦手かもしれない.自分で考えるだけなら言葉とかいらないし.誰かに伝えることを前提に考える癖をつけるのがいいのかな.
昨日はそのままsangoの部屋で寝ました.
今日はバイトでした.
穴あけたり,削ったり,貼り付けたり.疲れました.sangoは途中でいなくなるし….
夕食はバイト先の人にご馳走になりました.
昨日,謎の問題に悩まされていたので,今日はその解決策を探る.ソースコードをいくら見てもバグはなさそうなので,実行時に関係しそうなAPIに渡されるパラメータを順番に追ってみる.
すると,REBARBANDINFOのサイズが違うことに気づきました.なんか,20バイトくらい大きいんですが….
ヘッダファイルを見ると,Windows vistaで増えたらしきメンバがある.試しに,サイズを20バイト削って渡してやると正常に動作しました.
とりあえず,vista依存のコードは書かない予定なので,プログラムの行頭に
#define WINVER 0x0500 #define _WIN32_WINNT 0x0500
と書いて解決.
眠い…
夕方sango家に.Kさんがいました.
サークルでマイコン使って何しようとかいう話とか.色々.
駅前まで行って,sangoとKさんとで飲む.そのあと,sangoとラーメン.
VC++2008でコンパイルしたら,コモンコントロールが上手く動かないものが出てきて嵌っているのだけど,原因が分からない.具体的にはレバーコントロールとかが駄目.ネット上のサンプルも動くものが見つからない.前にコンパイルしたバイナリは大丈夫なんだけど,何が変わったんだろう?
朝,研究室で自分が管理しているサーバにログインした数秒後に,なぜか切断された.その後は全く接続できない.他のサーバは繋がるしなぁ…と考えて思い出した.
今日は大学が停電するから朝になったらシャットダウンするように設定してたんだった….
午後は6時間くらい昼寝….
研究
研究のミーティングのために大学へ.久しぶりに時間通りに先生の部屋に行ったら驚かれました.ミーティングしながらミーティングの資料を作っているあたりがギリギリっぽさを醸し出してます.でもなんとか乗り切りました.
次回は9/5.
久しぶりに以前AVR用に書いたプログラムをいじってみる.
コンパイル結果を見ながらサイズが最小になるように試行錯誤したプログラムなので,コンパイラのバージョンを変えたら駄目っぽい….100バイトもサイズオーバーするんですがどうしたら良いんでしょうか?
gcc 4.3を使っているっぽいけど,レジスタ割り当てのアルゴリズムが前より悪化している気がします.特に,AVRのX,Y,Zレジスタの使い方が下手です.明らかに一度Yレジスタにコピーしてlddで参照すべきところを,Xレジスタの中身をいじって,ld命令で参照したあと,またレジスタを元に戻しています.というか,そもそもポインタ8ビットで良くないですか?他にも気に食わないところがたくさんあるのですが…
ループや関数の展開とか,そういうマクロな最適化はC言語上でもできますが,レジスタ割り当てのアルゴリズムとかは,C言語上から見えないので,最適化に苦戦します.
Cで書くのがそもそもの間違いな気がしてきました.この場合,アセンブラの方が明らかに保守性が高いし.
とりあえず,WinAVRを20060421のバージョンに戻しておく.
今日は長野に帰ります.
そういば,帰りの分の学割証が無いな….
長野に帰りました.新幹線を待っている間に,本屋で立ち読みをして時間をつぶす.
次に読む本を探したけど,良さそうなのが無いなぁ.
仕方が無いのでコンピュータのコーナーを物色.あまり良い本が無い….TBBの並列コンテナとか使ってみるかな.
気づいたら新幹線が来る時間だったので,ホームへ.
某サークルでマイコンをやる予定なのだけど,最初は何をするのがいいかなぁ.ロボ研ではライントレースとかさせてたけど,サークルの趣旨からするともっと変わったものがいいな.好きなものを作ってみるのでいいのかもしれないけど.
マイコンは,いつもどおりAtmel mega88あたりにしておく予定です.いまなら秋月で250円だし.
今日も特に何も無い一日でした.
たぶん,明日は東京.明後日あたりに長野に戻ります.
Googleストリートビューで道を辿っていると,たまに「この画像はなくなりました」とだけ書かれた真っ黒な画像になる場所があるけど,問題があって消されたのかな?
良くストリートビューの青い線が実際の道に重ならなくなるのは,どうにかならないのかなぁ.
午後は雨でした.
久しぶりに自分の部屋で夕食を作る.
色々.読書.
少し前から日本でも始まってたようですが,Google ストリートビュー凄いですね.
実家の近くの国道140号もある.にしても,なんでその道通るかな…みたいなところもありますね.結構適当?
長野はいつ来るのかな?
とりあえず長野に戻ります.
10時ころホテルをチェックアウト.sangoがお土産を欲しがっていたのを思い出して鳥羽まで行って伊勢えびせんべいと伊勢うどんを買う.
駅の近くに,初日の夕食を食べたお店があったので写真を撮っておく.2階の窓際の席でした.とても良い感じのお店でした.昼間なら海も見えたっぽい.
左の建物との間の狭い隙間を通り抜けた記憶があるけど,気のせいかもしれません.
鳥羽から名古屋まで特急で.ホームに止まっていた電車が,なんだかインバータ方式を主張してたのですが,つまりはVVVFってことなのかな.来るときはあまり外を見ていなかった気がしたので,外の風景を見ながら帰る.名古屋から長野までは来るときと同じ.なぜか自動改札を通れなかったりしたけど気にしない.電車のなかでは読書.順列都市の上巻を読み終えて下巻に入る.
5時ころ長野駅に到着.自転車を何処に止めたか良く覚えてなくて探すのに苦戦.
駅から直接sango家に行く.sangoは実家に帰るらしい.そのあと,駅前に戻ってsangoと飲む.sangoが私とOさんの関係について色々と想像をめぐらせているのを今まで面白がっていたのだけど,あまりにもOさんに対して酷い感じになってきたので実際のところを説明しておく.
久しぶりに長い日記です.
午前中,時間があったので散歩に出かける.こっちに来る前,周辺の地図を調べたときホテルから数kmの距離に海岸線があったのを思い出して,海を見に行くことにしました.とりあえず何も考えないで見かけた川沿いを下流に向かって歩くことに.20分くらい歩いたところから潮の匂いがしてきましたが,リアス式海岸のために水平線は見えず.
とりあえず海っぽいから良いかと思って引き返したのが待ち合わせの時間の25分前だったのでちょうど良かった.
…はずだったのだけど,帰りは違う経路で帰ろうと,適当な所で駅の方向に曲がったら,予定外の場所に出てしまった.そこから駅まで走りました.服が汗で濡れてたのでホテルに着替えに戻りたかったけど時間が無い.結局,予定より2分遅く駅に着きました.
車で伊勢まで.海岸線を走ったので海も見れたし,水平線も拝みました(笑)とりあえず鳥羽付近で一度車を降りて写真を取っておく.
伊勢で伊勢うどんと赤福氷を食べる.
そのあと,買い物(?).何も買わなかった気がするけど.バーミヤンでドリンクバーを頼んで色々話を…と思ったら帰らなければいけなくなったらしいので戻ることに.
帰りは山の方の道を通って.
明日まで滞在している予定ですが,そろそろ長野に戻るかなぁ.MRIも別経路で旅行しているっぽい感じですが.出雲も良いなぁ.
順列都市はやっと上巻の半分.色々あって思ったより暇ではありませんでした.いきなり来た私のために,Oさんが色々と面倒を見てくれたおかげです.……残念ながらOさんは私の彼女とかじゃない
課題をやろうとしたけど,疲れていたので寝る.明日以降がんばろう.
午前中,sango家に.sangoを旅行に誘ったのだけど断られました(涙
夜,ホテルで課題をやる.そろそろ終わらせないとまずい.
三重に行ってきます.とりあえず,部屋を出てから色々と予定を考える.ホテルだけは昨日の夜(というか日付的には今日)に取りましたが(笑)
駅に行く途中,sangoの家に寄って電車の時刻表を調べつつ,これまた途中で買ってきた昼食を食べる.名古屋駅で東急ハンズを見つけたので乗る電車を予定より一時間後のに変更して,一通り見て回ることに.そのあと駅の書店で順列都市の上下巻を見かけたので暇つぶし用に買う.
ホテルがある鵜方駅に着いたのは18時過ぎ.電車に乗ってたのはちょうど5時間くらいか.
三重に実家がある,kstmのOさんが時間を空けてくれたので,Oさんの車で鳥羽まで行って夕食.パスタを食べました.おすすめのメニューにあった,海の幸と山の幸のモンテマーレ.
その後も色々あった気がしますが.省略.
昔読んでみようと思ってたので買ってみる.結構いい感じかも.もう少し早く読んでおくべきだった.
UMLのモデリングにJudeを使っていますが,クラスの属性の「型」がJavaのクラスそのままなのが微妙に使いにくいなぁ.
大学の課題でクラス図を書いたのだけど,サービスの会員の一覧を管理するときに,ArrayListに会員データを入れてしまうのが,たぶん多くの人が書いているであろう回答だけど,実際に実装するときにそんな構造にするわけが無いような….概念的なクラス図のはずが,クラス名が出てきてしまうがために,それらしいものを選んでしまうというのは気持ちが悪い.別にCollectionとかもっと抽象的なクラスを使えば良いのかもしれませんが,それも何か変な感じが残ります.なら自分で名前をつければいいじゃんという話になりますが,面倒くさい.
朝から課題をしたり.気づいたらミーティングの時間で先生から電話がかかってきたので,大学へ.ミーティングしてから家賃を払いに行って,また研究室に戻る.気づいたら,集合時間の20分前だったので,急いで駅に.
ミーティング
最近は作っているツールの話が多くなってきたのでまだ気が楽です.色々あって,具体的な情報は表に出せないのもつらいかも.
次回は08-22T1300
戸倉で花火大会.safii,sango,KWT,jonaと,この日記では初登場のましぼん,sakuya,Silfwinあたりがいたような気がします.kstmも人が増えました.Silfwinとかハンドルネームを今知ったし….
花火は綺麗でした.あと,色々食べました.
sangoの家に行ったらみんな寝ていたので,sangoの隣で寝る.起きた後,なぜか木崎湖へ.
星湖亭で昼食を食べた後,キャンプ場へ.今日は平日だからなのか,人は少なめでした.泳いだあと温泉.
課題の締め切りが近づいてきたのでやり始めました.
眠いです.
明日は花火大会とか行く予定です.研究のミーティングとかもあるような噂を耳にしました.あと家賃とかも振り込まないといけない気がしてきました.
今日は内定先の懇親会.
駅まで行ったら,珍しく新幹線の時間までに余裕があったので,平安堂へ…と思ったら開店10分前でした.待とうかとも思ったけど,何もせずに駅に戻る.新幹線で上野まで出て,その後地下鉄で移動.途中で傘を無くして少し憂鬱.ビニール傘だけど.
色々な人がいて,楽しそうな職場です.ただ,ついていけるか不安になります…色々な意味で(笑)
言えばホテルを確保してくれたっぽいけど,なんとか日付が変わる前に帰ってくる.
駅から帰る途中,sango家に寄る.sangoの友達とMRIがいました.
最近,とあるタスクが私のCPUリソースを食い尽くしていて,他のことをほとんど考えられません.そのうち何らかの形で解決する問題なのは確かなのだけど.
昨日は遅くまでsangoのところにいたので眠い.今日も昼にsango家に行って,昼食を食べてから研究室へ.
今日はCode Jam.結論から言うとダメダメでした.始まった時点で眠かったし….
AとBは簡単っぽいのでとりあえずAから.
Aは素直に作ればlargeも問題ない…と思ったのだけど,変なバグに悩まされてsmallも通らず.
仕方ないので途中でBのsmallをやる.
また,Aに戻ってきて1時間近くがんばったけど,バグが見つからない.問題を読み間違ってた可能性は少ないと思うんだけどなぁ.
…と思ってソースを見たら酷い間違いを見つけた.書いた気がしてたif文が無い.何かの拍子に消したのかと思ったけど,そもそも書いてなかった可能性が高い.
safiiはちゃんと通ったようです.
sango家で飲む.今日は人が多かった.