海を見に行ってきた。
2005年8月7日今日は、朝はバイト。バイトが終わったら、なんとなく海が見たくなったのでベンリィに乗って石地まで行って来た。
行きは、何を勘違いしたのか、柏崎方面に突っ走ってしまい、どこまで行くんだ…と思いながら、結局、刈羽の原子力発電所の方向に方向転換、その後、ようやく海が見えた。しっかし、わかりずらいなぁ。
夕日が綺麗…行った価値があったというもの。
帰りは、石地から高速脇を通って長岡に帰ってきた。
途中、ガソリンがなくなるんじゃないかと心配だったが、さすがはカブのエンジン。燃費が良い。そんな心配の必要は無かった。
ベンリーでの始めての遠出だったが、ベンリィの実力がちょっと見れた。
でも、坂がね。山越えするとき、2速まで落とさないと止まっちゃいそうになるほどに馬力が無いのよ。あぁ、早く400のZZRに乗り換えたいと思ったり。
行きは、何を勘違いしたのか、柏崎方面に突っ走ってしまい、どこまで行くんだ…と思いながら、結局、刈羽の原子力発電所の方向に方向転換、その後、ようやく海が見えた。しっかし、わかりずらいなぁ。
夕日が綺麗…行った価値があったというもの。
帰りは、石地から高速脇を通って長岡に帰ってきた。
途中、ガソリンがなくなるんじゃないかと心配だったが、さすがはカブのエンジン。燃費が良い。そんな心配の必要は無かった。
ベンリーでの始めての遠出だったが、ベンリィの実力がちょっと見れた。
でも、坂がね。山越えするとき、2速まで落とさないと止まっちゃいそうになるほどに馬力が無いのよ。あぁ、早く400のZZRに乗り換えたいと思ったり。
SDLmmのBorlandC++へのポーティング完了
2005年8月6日奈々さんの仰っていた修正方法を含め色々と検討した結果、BorlandC++で直接スタティックライブラリを作成し、それをプロジェクト側でインポートさせることでビルドを完了させた。
http://ilaliart.sourceforge.jp/arc/SDLmm.zip
libフォルダには、スタティックライブラリが
dllsフォルダには、実行に必要なライブラリが(これはwindowssystem32フォルダに入れておいた方が良いかもしれない、一々実行可能ファイルのフォルダにコピーは面倒なので)
includeフォルダにはSDLmmをコンパイルするために必要なヘッダが
srcフォルダには、SDLmmの修正版ソースが入っている。
VC++の場合は、全てのDLLをスタティックに置き換えているので、DLLは必要無い状態になっている(自分の環境の場合はってことで、デフォルトではもちろんDLLが必要)。そのため、exe単体で動作するようになっているが、BorlandC++はDLLを直接呼び出すようになっているので、もし配布する場合は必ずDLLを一緒に添付すること。
うぁー、疲れた。次はシナリオ言語だ…
http://ilaliart.sourceforge.jp/arc/SDLmm.zip
libフォルダには、スタティックライブラリが
dllsフォルダには、実行に必要なライブラリが(これはwindowssystem32フォルダに入れておいた方が良いかもしれない、一々実行可能ファイルのフォルダにコピーは面倒なので)
includeフォルダにはSDLmmをコンパイルするために必要なヘッダが
srcフォルダには、SDLmmの修正版ソースが入っている。
VC++の場合は、全てのDLLをスタティックに置き換えているので、DLLは必要無い状態になっている(自分の環境の場合はってことで、デフォルトではもちろんDLLが必要)。そのため、exe単体で動作するようになっているが、BorlandC++はDLLを直接呼び出すようになっているので、もし配布する場合は必ずDLLを一緒に添付すること。
うぁー、疲れた。次はシナリオ言語だ…
シナリオ言語2
2005年8月5日やはり、前回の仕様ではかなり不備があったことが発覚。
そもそも、空改行がキー入力無しでできないのは問題。あと文字のルビ振りするための機構が必要だなと思ったわけで、どうしようかと…
そこで、とりあえずの後を特殊な命令とし、例えばテキストの強制改行の場合は\を挿入することでできるようにする。
ruby{今日}{こんにち}は
で、「今日」に「こんにち」というルビが振られて表示されるようにする。
なお、ルビサイズには5ptか5.5ptと言われている。ptからピクセル値への換算は下記URLを参照。
http://musashi.or.tv/pointdot.htm
というか、サイズは順次変更できるようにしておいたほうが良さそうだな…
ルビ振りにもJISは規格を定めており、それについても詳しく調べたほうが良さそう。でも、まぁ中付きだけでいいような気がするなぁ。
そもそも、空改行がキー入力無しでできないのは問題。あと文字のルビ振りするための機構が必要だなと思ったわけで、どうしようかと…
そこで、とりあえずの後を特殊な命令とし、例えばテキストの強制改行の場合は\を挿入することでできるようにする。
ruby{今日}{こんにち}は
で、「今日」に「こんにち」というルビが振られて表示されるようにする。
なお、ルビサイズには5ptか5.5ptと言われている。ptからピクセル値への換算は下記URLを参照。
http://musashi.or.tv/pointdot.htm
というか、サイズは順次変更できるようにしておいたほうが良さそうだな…
ルビ振りにもJISは規格を定めており、それについても詳しく調べたほうが良さそう。でも、まぁ中付きだけでいいような気がするなぁ。
BorlandC++でのSDLmmのコンパイル
2005年8月4日現在、BorlandC++にSDLmmをポーティングしている。
作業の流れを以下に示す。
1.SDLのダウンロード後、アーカイブ内のBorland.zipの解凍。その中に入っているインポートライブラリを使った最小SDLアプリケーションのコンパイルを行った。
http://ilaliart.sourceforge.jp/arc/SDL_sample.zip
2.その他、SDL_mixer、SDL_image、SDL_ttfをダウンロードして、ヘッダを入手、SDLのincludeフォルダに突っ込む。
3.SDL_ttfのEBDTの問題の解決のため、SDL_ttfを再コンパイル。とりあえず下のURLにDLLのバイナリを一式コンパイルして上げて置いたので、試してみたいかたはどうぞー。
なお、インポートライブラリに関しては、SDLアーカイブ内に入っていたものをそのまま利用できるが、一応念のためにそれも入れておく。
http://ilaliart.sourceforge.jp/arc/SDL_dlls.zip
EBDTの問題については下記URLを参照して欲しい。文字列のルビ振り時に問題となる。
http://ilaliart.sourceforge.jp/tips/ttf_mini.html
なお、検証用のプログラムは以下からダウンロードして欲しい。
DWORDの定義が足りないと言われるので、windows.hヘッダファイルを読み込ませてあげること。
http://kirara.k1.xrea.com/arc/ttf_win.zip
//===================================================
この後なのだが、SDLmmがコンパイルできない状態(というか、面倒なので先に進んでいません)。
次の点でひっかかっています。
・SDLmmコンパイル中にを読み込むと、WINGDIAPIの宣言の重複が見つかったと怒られます。少し調べればなんとかなりそうな問題ではあるけれど。
なお、VC++.Net2003で作成したDLLは、バイナリの構造が従来のCOFFとは異なるため、BorlandC++で採用しているOMFへの変換がimplibだけでは行えないような状況です(これを見越してMicrosoftはやったのだろうか…そうだとしたら極悪ですが)。
一応、dumpbinでDLLがエクスポートしている関数を列挙後、defファイルを作成し、libを使って新COFF→旧COFFへの変換を行おうとしたのですが、.Net2003ではすでにそれさえも出来ないようになっているようで、OMFへの変換はかなり絶望的です。DigitalMarsのimplibを使えばできるという噂もありますが、こっちはまだ試していません。
なので、またVC++6.0を入れて、implibでOMFのインポートライブラリを作ってしまおうかと思っています。
むむぅ、意外とBorlandはむずいんだな。
作業の流れを以下に示す。
1.SDLのダウンロード後、アーカイブ内のBorland.zipの解凍。その中に入っているインポートライブラリを使った最小SDLアプリケーションのコンパイルを行った。
http://ilaliart.sourceforge.jp/arc/SDL_sample.zip
2.その他、SDL_mixer、SDL_image、SDL_ttfをダウンロードして、ヘッダを入手、SDLのincludeフォルダに突っ込む。
3.SDL_ttfのEBDTの問題の解決のため、SDL_ttfを再コンパイル。とりあえず下のURLにDLLのバイナリを一式コンパイルして上げて置いたので、試してみたいかたはどうぞー。
なお、インポートライブラリに関しては、SDLアーカイブ内に入っていたものをそのまま利用できるが、一応念のためにそれも入れておく。
http://ilaliart.sourceforge.jp/arc/SDL_dlls.zip
EBDTの問題については下記URLを参照して欲しい。文字列のルビ振り時に問題となる。
http://ilaliart.sourceforge.jp/tips/ttf_mini.html
なお、検証用のプログラムは以下からダウンロードして欲しい。
DWORDの定義が足りないと言われるので、windows.hヘッダファイルを読み込ませてあげること。
http://kirara.k1.xrea.com/arc/ttf_win.zip
//===================================================
この後なのだが、SDLmmがコンパイルできない状態(というか、面倒なので先に進んでいません)。
次の点でひっかかっています。
・SDLmmコンパイル中にを読み込むと、WINGDIAPIの宣言の重複が見つかったと怒られます。少し調べればなんとかなりそうな問題ではあるけれど。
なお、VC++.Net2003で作成したDLLは、バイナリの構造が従来のCOFFとは異なるため、BorlandC++で採用しているOMFへの変換がimplibだけでは行えないような状況です(これを見越してMicrosoftはやったのだろうか…そうだとしたら極悪ですが)。
一応、dumpbinでDLLがエクスポートしている関数を列挙後、defファイルを作成し、libを使って新COFF→旧COFFへの変換を行おうとしたのですが、.Net2003ではすでにそれさえも出来ないようになっているようで、OMFへの変換はかなり絶望的です。DigitalMarsのimplibを使えばできるという噂もありますが、こっちはまだ試していません。
なので、またVC++6.0を入れて、implibでOMFのインポートライブラリを作ってしまおうかと思っています。
むむぅ、意外とBorlandはむずいんだな。
長岡花火大会、初日!
2005年8月2日今日は、学校に行ったら、先輩が焼きそばと唐揚げを買ってきていたので、そのまま流れで花火は学校で見ることに。面白い先輩達+先生で食べて飲みながら花火の評論をやった。楽しかった。
・三尺玉を三尺ママといい間違え、しかもその後で先輩に三尺○らと言い換えられて、ずっといじめられた。
・外側と内側の色が違う花火が2つあがったときに、おっ○いと表現していた。
・ある先輩は、ハードゲイだということが発覚した…
とにかく、下ネタで盛り上がってしまった。。
明日は、大学の研究室での飲みだー!がんばるぞー!
・三尺玉を三尺ママといい間違え、しかもその後で先輩に三尺○らと言い換えられて、ずっといじめられた。
・外側と内側の色が違う花火が2つあがったときに、おっ○いと表現していた。
・ある先輩は、ハードゲイだということが発覚した…
とにかく、下ネタで盛り上がってしまった。。
明日は、大学の研究室での飲みだー!がんばるぞー!
明日からお祭りなんだけど…
2005年7月31日ちょっとも暇が無い。
今日は、暑い中バイトで箪笥の配達に行った。しっかし、暑いの何の、作業している間、まるでサウナに入っているかのような感覚。最後は自分の汗が箪笥の上にぽたぽたと落ちる始末。ごめんなさいお客さん。
で、帰るときに用意してくださったタオルとジュースがすごくおいしくって有難かった。
やっぱり、重労働にはこれが付くからやめられないんだよね。
今日は、暑い中バイトで箪笥の配達に行った。しっかし、暑いの何の、作業している間、まるでサウナに入っているかのような感覚。最後は自分の汗が箪笥の上にぽたぽたと落ちる始末。ごめんなさいお客さん。
で、帰るときに用意してくださったタオルとジュースがすごくおいしくって有難かった。
やっぱり、重労働にはこれが付くからやめられないんだよね。
PSPを買ってみた。
2005年7月30日 ゲーム
とうとう、買ってしまいました、PSP。
MP3の再生もSonicStageを使えば簡単だし、動画も見れるし、ゲームもできるし(特にエミュレーターが動くのが最高ですね)、言うことなしです。あとは、メモリースティックDuoがもちっと安いということなし。512MBが10800円は高いよう。
しかし、液晶の綺麗さには舌を巻きました。すごい。
さーて、いじり倒すぞー!!
MP3の再生もSonicStageを使えば簡単だし、動画も見れるし、ゲームもできるし(特にエミュレーターが動くのが最高ですね)、言うことなしです。あとは、メモリースティックDuoがもちっと安いということなし。512MBが10800円は高いよう。
しかし、液晶の綺麗さには舌を巻きました。すごい。
さーて、いじり倒すぞー!!
ここがロドスだ、ここで飛べ。
2005年7月28日昔のイソップ童話?で、あるほら吹き男が、村人の前で「俺は、ロドス島ですごい跳躍をしたんだ。」とほらを吹いてまわったところ、村人が「ここがロドスだ、すごい跳躍をしたなら、ここで飛んで見せろ」と言った。という話を前の専攻科フォーラムで聞いた。哲学のS先生のお話だったのだけれども、なるほど、ためになる。
このお話が言っているのは、今、やった結果こそがお前の実力であり、言葉でうんぬん言ったところで、今できなければそれは実力ではないということ。
なるほど、確かにテストの点数が悪かったら「俺の実力はこんなもんじゃないんだ、やればできるんだ」なんて思ってた時期があったけれども、結局のところ、それは言い訳でしかなくて、そのとき出た結果が自分の実力だものね。
厳しいとは思うけれども、そこら辺を考えて、勉強したいなぁと思った。
このお話が言っているのは、今、やった結果こそがお前の実力であり、言葉でうんぬん言ったところで、今できなければそれは実力ではないということ。
なるほど、確かにテストの点数が悪かったら「俺の実力はこんなもんじゃないんだ、やればできるんだ」なんて思ってた時期があったけれども、結局のところ、それは言い訳でしかなくて、そのとき出た結果が自分の実力だものね。
厳しいとは思うけれども、そこら辺を考えて、勉強したいなぁと思った。
シナリオ言語
2005年7月27日とりあえず、シナリオライターさんの書いたシナリオをいちいちスクリプターさんに打ち込んでもらうのは面倒くさいので、プログラムで処理して直接読み込めるようにしようと考え、シナリオ言語を設計してみた。
元ねたはTeX。
・文字コードはUTF-16、改行コードはLF。
・2回改行で、画面上で改行。
・3回以上でページ更新。
・行頭のTabは無視される。
・%以後は改行があるまでコメントとして認識。
http://ilaliart.sourceforge.jp/arc/ReadText.zip
今後は、文章中のタブが取り除けるようにするのと、文字列の管理をSTLに移行すること。それと現行で、パスに日本語を含むものを利用すると、アプリケーション内でロケーションがおかしくなる問題を解決する。
うーむ、意外とやれば早くできるもんだな。とっとと作ればよかったよ。
元ねたはTeX。
・文字コードはUTF-16、改行コードはLF。
・2回改行で、画面上で改行。
・3回以上でページ更新。
・行頭のTabは無視される。
・%以後は改行があるまでコメントとして認識。
http://ilaliart.sourceforge.jp/arc/ReadText.zip
今後は、文章中のタブが取り除けるようにするのと、文字列の管理をSTLに移行すること。それと現行で、パスに日本語を含むものを利用すると、アプリケーション内でロケーションがおかしくなる問題を解決する。
うーむ、意外とやれば早くできるもんだな。とっとと作ればよかったよ。
みんな、あきらめるの早いなぁ。
2005年7月24日最近は、みんな、3ヶ月か4ヶ月程度サークル活動して諦めちゃう方が多いみたいだけれども、みんな諦めるのが早すぎるのではないだろうかと思う。
そもそも、忙しいから何だとか理由を付けて止めてしまうというのは考えものではないだろうか。そりゃぁ、自分だって学生だし、テストがあるし、学会があるし、こんな日記を書いているくらいなら研究しろと言われそうな身分ではあるけれども、ちょっとずつ、勉強や研究の合間を縫って活動してる。忙しいからだなんて、そんなのはただ自分の実力不足を認めたくなくて吐いている弱音じゃないのか?と思うわけだ。
でも、よーく考えてみると、意外と自分も「忙しいから。今日はパス」なんて言って人の誘いを断っているわけで、人のことをいえなかったり。まぁ、でも言い訳に使いたくないという信念があるわけで、そこあたりはなんとか矛盾を起こさないように、他の言い訳を考えるわけだけれども、意外とこの言い訳は最強なんだよなぁ。
まぁ、止めたければやめてしまっていいと思う。
でも、止めたらそこまでだってことを覚えておいて欲しい。
自分は、諦めずに、未だにずっと一つの目標に向かって歩いている。
ちっぽけな、ちっぽけな夢だけれども、いつかかなうといいな、とくだらないことを考えながら、今日はAEONの勉強をしてた…だって、英語の勉強って集中できないんだもの!
そもそも、忙しいから何だとか理由を付けて止めてしまうというのは考えものではないだろうか。そりゃぁ、自分だって学生だし、テストがあるし、学会があるし、こんな日記を書いているくらいなら研究しろと言われそうな身分ではあるけれども、ちょっとずつ、勉強や研究の合間を縫って活動してる。忙しいからだなんて、そんなのはただ自分の実力不足を認めたくなくて吐いている弱音じゃないのか?と思うわけだ。
でも、よーく考えてみると、意外と自分も「忙しいから。今日はパス」なんて言って人の誘いを断っているわけで、人のことをいえなかったり。まぁ、でも言い訳に使いたくないという信念があるわけで、そこあたりはなんとか矛盾を起こさないように、他の言い訳を考えるわけだけれども、意外とこの言い訳は最強なんだよなぁ。
まぁ、止めたければやめてしまっていいと思う。
でも、止めたらそこまでだってことを覚えておいて欲しい。
自分は、諦めずに、未だにずっと一つの目標に向かって歩いている。
ちっぽけな、ちっぽけな夢だけれども、いつかかなうといいな、とくだらないことを考えながら、今日はAEONの勉強をしてた…だって、英語の勉強って集中できないんだもの!
iBookが買えそうで、買えなそうな…
2005年7月23日 コンピュータ
前々から、クロスプラットフォームについて書いているけれど、結局のところ、ベージュ333MHzと、G3+OSXv10.2ではソフト開発環境としてはあまりにも貧弱すぎる…せめて、XCodeを使ってフレームワークを作れるようになりたいと願いながらも、お金が足りなくて挫折しっぱなし…
なんとかならんかー、と思っていたら、弟がノートを買うのに便乗できそうだ!うおー、ようやく念願のiBook?欲しいよー。
というわけで、クロスプラットフォームの検証用に一台Macが欲しい今日この頃。
なんとかならんかー、と思っていたら、弟がノートを買うのに便乗できそうだ!うおー、ようやく念願のiBook?欲しいよー。
というわけで、クロスプラットフォームの検証用に一台Macが欲しい今日この頃。
D.Gray‐man (2)
2005年7月19日 読書
今日は、とりあえず午前中は寝てて、午後からは放送大学の勉強と、後の残りは学校に行って研究資料の和訳と、帰りに蔦谷に新暗行御史のDVDを返しに行った。んで、戸田書店でついでにD.Gray-manの3,4巻を購入。
ちょっと興味が出てきたのでD.Gray-manをそろえ始めてみたが、うーむ、なんというのか、神田がいい。かっこいい。と思った。ストーリーはちょっと読みづらいけど、絵は凄く綺麗だと思う。ただ、何かまるで小畑健に絵柄がそっくりなのは気のせい?
ちょっと興味が出てきたのでD.Gray-manをそろえ始めてみたが、うーむ、なんというのか、神田がいい。かっこいい。と思った。ストーリーはちょっと読みづらいけど、絵は凄く綺麗だと思う。ただ、何かまるで小畑健に絵柄がそっくりなのは気のせい?
wxGladeについて書いてみようかなぁと思う
2005年7月18日最近、もう一度wxWindowsについて色々と調べ始めた。で、色々とやった結果、VC++でのコンパイル方法について色々と安定した方法を探った結果、次のようにすると良いことがわかった。
> vcvars32.bat
> cd c:wxbuildmsw
> nmake -f makefile.vc BUILD=debug UNICODE=1 RUNTIME_LIBS=static SHARED=0 USE_OPENGL=1 USE_GUI=1
リリースモードの場合はBUILD=releaseに変更すること。これで、あとはインクルードパスlibvc_libmswuもしくはmswudとincludeを設定してやることでVC++でwxwindowsが使えるようになる。
んで、とりあえず次のライブラリをリンクしておけばOK。
wxbase26ud.lib
wxbase26ud_net.lib
wxbase26ud_xml.lib
wxexpatd.lib
wxjpegd.lib
wxmsw26ud_adv.lib
wxmsw26ud_core.lib
wxmsw26ud_html.lib
wxmsw26ud_media.lib
wxmsw26ud_xrc.lib
wxpngd.lib
wxregexwd.lib
wxtiffd.lib
wxzlibd.lib
wxmsw26ud_gl.lib
デバッグじゃない場合はdをとる事。
とりあえず、これで上手く動作する。
さてと、じゃぁ今度はwxgladeの使い方でも調べるかー
> vcvars32.bat
> cd c:wxbuildmsw
> nmake -f makefile.vc BUILD=debug UNICODE=1 RUNTIME_LIBS=static SHARED=0 USE_OPENGL=1 USE_GUI=1
リリースモードの場合はBUILD=releaseに変更すること。これで、あとはインクルードパスlibvc_libmswuもしくはmswudとincludeを設定してやることでVC++でwxwindowsが使えるようになる。
んで、とりあえず次のライブラリをリンクしておけばOK。
wxbase26ud.lib
wxbase26ud_net.lib
wxbase26ud_xml.lib
wxexpatd.lib
wxjpegd.lib
wxmsw26ud_adv.lib
wxmsw26ud_core.lib
wxmsw26ud_html.lib
wxmsw26ud_media.lib
wxmsw26ud_xrc.lib
wxpngd.lib
wxregexwd.lib
wxtiffd.lib
wxzlibd.lib
wxmsw26ud_gl.lib
デバッグじゃない場合はdをとる事。
とりあえず、これで上手く動作する。
さてと、じゃぁ今度はwxgladeの使い方でも調べるかー
をぃ、何覗いてんの?
2005年7月17日
アクセス元の検索機能があるのは、いいことなのか悪いことなのか。ついつい検索をかけてたどり着いたのは、クラスメイトの掲示板orz
なんてこったい、ばれてるやん。確かに、一部の方にばれてるのはしっていましたが、まさかこんなところにまで…
題に覚えのある野郎は、さっさと表立ってリンクしやがれこのやろう!
で、今日は昨日の研究室内に飾られた素晴らしい絵画を紹介して寝る。おやすみなさい。
なんてこったい、ばれてるやん。確かに、一部の方にばれてるのはしっていましたが、まさかこんなところにまで…
題に覚えのある野郎は、さっさと表立ってリンクしやがれこのやろう!
で、今日は昨日の研究室内に飾られた素晴らしい絵画を紹介して寝る。おやすみなさい。
そのとき、悲劇が起きた…
2005年7月16日昨日、学校の帰り道に、よし、ようやくDSK上での適応フィルタの構築の目処が建ってきたぞ…とやる気満々で帰宅最中に悲劇が起こりました。
警察につかまってしまいましたorzしかも、覆面パト。
確かに、両耳でイヤホン聞きながら原チャで60kオーバーで走行していたら流石に捕まるでしょうね。ちょうど長岡大橋を渡っている最中、どうも警察の人の話では橋のど真ん中辺りから鳴らしてたらしいのですが、自分は音楽を聴いていて気付かず、後でこってりと怒られました。。
不幸中の幸いかどうかはわかりませんが、29kオーバーで、なんとか30kオーバー免停は避けられた様子。話によると、前の車がサイレンに反応して速度緩めたのが功を奏したんだと。
痛いよ、12000円。痛いよ初心者講習。
うぅ…
それと、昨日からようやくSubversionによるtjs2のMSVCへの移植が開始。W.Deeさんには色々とSubversionの使い方を丁寧に教えて頂きました。ありがたや。
で、早速今日いくつかリビジョンを上げてみました。なるほど、作った過程がすごくわかりやすくて使いやすいです。ベンリなソフトだ。
警察につかまってしまいましたorzしかも、覆面パト。
確かに、両耳でイヤホン聞きながら原チャで60kオーバーで走行していたら流石に捕まるでしょうね。ちょうど長岡大橋を渡っている最中、どうも警察の人の話では橋のど真ん中辺りから鳴らしてたらしいのですが、自分は音楽を聴いていて気付かず、後でこってりと怒られました。。
不幸中の幸いかどうかはわかりませんが、29kオーバーで、なんとか30kオーバー免停は避けられた様子。話によると、前の車がサイレンに反応して速度緩めたのが功を奏したんだと。
痛いよ、12000円。痛いよ初心者講習。
うぅ…
それと、昨日からようやくSubversionによるtjs2のMSVCへの移植が開始。W.Deeさんには色々とSubversionの使い方を丁寧に教えて頂きました。ありがたや。
で、早速今日いくつかリビジョンを上げてみました。なるほど、作った過程がすごくわかりやすくて使いやすいです。ベンリなソフトだ。
Subversionの導入
2005年7月12日次期リリースの吉里吉里にTJSのVC++バージョン導入を進めるべく、W.Dee氏のサーバーを借りてソース管理が始まりそうです。ソースのバージョン管理にSubversionを使用しているとのことなので、とりあえずSubversionのWindowsへの導入を今日は行いました。
と、まぁ、後で追加しようと。。。
と、まぁ、後で追加しようと。。。
疲れた…
2005年7月10日色々と活動したら疲れてしまった・・・。あまりにもプログラムに専念しすぎたか…?
今日は学校で中学生への高専の説明会があった。というか、昨日もあった。自分の学科の宣伝を先生と一緒にやったのだけれども、結構楽しかった。
自分はAIBOとザクのロボット、それと高砂製のダミーヘッド、わが研究室のサムことSAMURAI HEADのデモを担当した。サムライヘッドのデモはすごく受けが良かったみたいで、正直嬉しい。みんなの驚く顔が何よりも自分には嬉しかったです。
さて、信越支部の学会の申し込み締め切りも近いし、あとはシーズプレゼンテーション、DSPS教育者会議と、来月は発表の場が目白押し。大変になりそうだ。
うーん、今日は寝よう。おやすみなさい。
今日は学校で中学生への高専の説明会があった。というか、昨日もあった。自分の学科の宣伝を先生と一緒にやったのだけれども、結構楽しかった。
自分はAIBOとザクのロボット、それと高砂製のダミーヘッド、わが研究室のサムことSAMURAI HEADのデモを担当した。サムライヘッドのデモはすごく受けが良かったみたいで、正直嬉しい。みんなの驚く顔が何よりも自分には嬉しかったです。
さて、信越支部の学会の申し込み締め切りも近いし、あとはシーズプレゼンテーション、DSPS教育者会議と、来月は発表の場が目白押し。大変になりそうだ。
うーん、今日は寝よう。おやすみなさい。
TJSのVC++でのコンパイル
2005年7月9日前回のサンプルでは正規表現のtjsRegExp.cppがどうしてもコンパイルが通らなかった。楓softwareの井元さんの助言で、とりあえず何が悪いのかが漠然と見えてきた。
まずはソースコードのおさらいからしてみる。
tjsRegExp.cppのtTJSReplacePredicatorクラスのコンストラクタ中で同クラス中のCallbackメソッドを関数オブジェクトとして利用しようとしている。
また、同じソースコードのtTJSSplitPredicatorクラスも同様のことをやろうとしている。
ここで、一つの問題が発生する。mem_funが適用できない。
本来mem_funでメンバ関数アダプタを適用できるのはthiscall関数のみであるのに、TJS_cdeclマクロ(その実体は__cdecl)でC関数の呼び出し規約をCallbackメソッドに適用しようとしている。なぜだかわからない(bccではこれは仕様なのだろうか?)。
これを外すことでmem_funは適用できるようになる。
さて、ここまでは井元さんの日記のおさらいである。
ここから先は、自分でなんとか解決を図ってみた。
次に直面したのは、bind1stが重複しているという問題である。
tjsRegExp.cppではstd::bind1stが使用されている。これを用いると、Microsoftのfunctionalヘッダファイルで定義が重複するとコンパイラに怒られる。
さて、では何と重複しているのだろう?GrepでVisualC++のインクルードディレクトリにbind1stで検索をかける。ここで、注目に値する二つの検索結果が得られた。
1つは、boost/functional.hpp中、boost名前空間中のbind1st
2つ目は、Microsoftのfunctionalヘッダファイル中、std名前空間中のbind1st
この二つが存在しているのだ。しかも、boost/functional.hpp中ではMicrosoftのfunctionalヘッダを読み込んでいる。で、これから何がわかるかというと、boostを利用する際は、関数オブジェクトへの値のバインドは、boost::bind1stを使えということらしい。boost::bind1stに使える関数ポインタアダプタはboost::mem_refということもこのヘッダからわかった。
で、結局最終的には次のようにソースコードを書き直すことで解決した。
unsigned int match_count = regex_grep (
boost::bind1st(boost::mem_fun(&tTJSReplacePredicator::Callback),this),
target.c_str (),
_this->RegEx,
match_default|match_not_dot_null) ;
長かった。とりあえず、井元さんに報告しよう。
まずはソースコードのおさらいからしてみる。
tjsRegExp.cppのtTJSReplacePredicatorクラスのコンストラクタ中で同クラス中のCallbackメソッドを関数オブジェクトとして利用しようとしている。
また、同じソースコードのtTJSSplitPredicatorクラスも同様のことをやろうとしている。
ここで、一つの問題が発生する。mem_funが適用できない。
本来mem_funでメンバ関数アダプタを適用できるのはthiscall関数のみであるのに、TJS_cdeclマクロ(その実体は__cdecl)でC関数の呼び出し規約をCallbackメソッドに適用しようとしている。なぜだかわからない(bccではこれは仕様なのだろうか?)。
これを外すことでmem_funは適用できるようになる。
さて、ここまでは井元さんの日記のおさらいである。
ここから先は、自分でなんとか解決を図ってみた。
次に直面したのは、bind1stが重複しているという問題である。
tjsRegExp.cppではstd::bind1stが使用されている。これを用いると、Microsoftのfunctionalヘッダファイルで定義が重複するとコンパイラに怒られる。
さて、では何と重複しているのだろう?GrepでVisualC++のインクルードディレクトリにbind1stで検索をかける。ここで、注目に値する二つの検索結果が得られた。
1つは、boost/functional.hpp中、boost名前空間中のbind1st
2つ目は、Microsoftのfunctionalヘッダファイル中、std名前空間中のbind1st
この二つが存在しているのだ。しかも、boost/functional.hpp中ではMicrosoftのfunctionalヘッダを読み込んでいる。で、これから何がわかるかというと、boostを利用する際は、関数オブジェクトへの値のバインドは、boost::bind1stを使えということらしい。boost::bind1stに使える関数ポインタアダプタはboost::mem_refということもこのヘッダからわかった。
で、結局最終的には次のようにソースコードを書き直すことで解決した。
unsigned int match_count = regex_grep (
boost::bind1st(boost::mem_fun(&tTJSReplacePredicator::Callback),this),
target.c_str (),
_this->RegEx,
match_default|match_not_dot_null) ;
長かった。とりあえず、井元さんに報告しよう。
DSPS教育者会議への参加が決まりました。
2005年7月7日こないだ申し込んでおいたDSPS教育者会議への参加が決まりました。
TIのDSPであるC6713を用いたインパルス応答推定に関する研究となりました。
http://www.tij.co.jp/jsc/docs/univ/educator/program.htm#
自分は応用研究セッションでの発表になるんですが、ぐはっ、最年少だよ…他の人たちが3歳も年上で、同年代の人がいない…しかもまた東京だー。
前回のTIのセミナーに行ったとき、東京が怖いところだということがわかったので、正直東京には一人で行きたくないです。今回は先生が付いて着てくれるから安心だけど…
ところで、これの発表題目にあるとおり、DSPを用いたインパルス応答推定を行うプログラムを作らなければならないのですが、それにはFIRフィルタが必要なんです。
FIRのフィルタタップ数が普通は512最低でもなければならないんですね。C6713の225MHzなので1chでDSPLIBを用いてEDMAを介してFFTによる巡廻畳み込みで200タップがいいところだったんですが、こんなのじゃぁ全然足りないわけです…いや128タップでももちろん実現はできるんですが、頭外音像定位用には使えないんですよね、これ。
やっぱり、C6416Tでやるべきかなぁ。固定小数点だから精度が浮動小数点に比べると劣るんだけど、DSPLIB使うとあまりそこらへん気にしなくても組めるしなぁ。
先は長そうだ…
TIのDSPであるC6713を用いたインパルス応答推定に関する研究となりました。
http://www.tij.co.jp/jsc/docs/univ/educator/program.htm#
自分は応用研究セッションでの発表になるんですが、ぐはっ、最年少だよ…他の人たちが3歳も年上で、同年代の人がいない…しかもまた東京だー。
前回のTIのセミナーに行ったとき、東京が怖いところだということがわかったので、正直東京には一人で行きたくないです。今回は先生が付いて着てくれるから安心だけど…
ところで、これの発表題目にあるとおり、DSPを用いたインパルス応答推定を行うプログラムを作らなければならないのですが、それにはFIRフィルタが必要なんです。
FIRのフィルタタップ数が普通は512最低でもなければならないんですね。C6713の225MHzなので1chでDSPLIBを用いてEDMAを介してFFTによる巡廻畳み込みで200タップがいいところだったんですが、こんなのじゃぁ全然足りないわけです…いや128タップでももちろん実現はできるんですが、頭外音像定位用には使えないんですよね、これ。
やっぱり、C6416Tでやるべきかなぁ。固定小数点だから精度が浮動小数点に比べると劣るんだけど、DSPLIB使うとあまりそこらへん気にしなくても組めるしなぁ。
先は長そうだ…
SDL_tjs
2005年7月6日だんだんと形になってきた。
ただ、ライブラリにする場合、Cでラッピングするのか、C++でラッピングするのか迷うところ。SDLを考えれば可能な限りCでラッピングしてしまえば良いと思うけれども、使い勝手を考えるのならC++なんだよな。
TJSのクラスは完全にラッピングするので、外部に変数などのTJS内部の型を持ってくることはできない。これが一番の問題で、じゃぁ、ネイティブ関数の実装をCからクラスを使わずにどうやってやるかって問題がやってくる。
これは、クラスの中で関数へのポインタを格納しておくことで解決。あとは、このクラスをライブラリ内でラッピングして、SetFuncを呼ぶだけでTJS内で登録が可能になる。
class MyClass : public tTJSNativeFunction {
public :
tjs_error Process ( tTJSVariant *result, tjs_int numparams, tTJSVariant **param, iTJSDispatch2 *objthis )
{
(*func)() ; // 外部から登録したC関数を呼び出し
}
void SetFunc ( func ) { cfunc = func ; }
private :
Func cfunc ; // C関数へのポインタ
} ;
で、呼び出しは可能になったが、もう一つ問題がある。このProcess メソッドへの引数がtTJSVariant型ってこと。これはTJSのクラスだから、当然ラッピングする際に外部に持ってこれない(別にそのまま出そうと思えば出せるけれども、出すと他の依存ヘッダも出さなきゃいけなくなって、ライブラリとしては複雑なものになってしまう)。
funcに直接この引数を渡せないので、何らかの中継を行ってC関数に引数を渡さなければならない。ってことで、void*でポインタだけ新しく作った引数のバッファとなる構造体内に格納しておいて、GetStringだとか、GetIntだとかを関数で実装、これを介してtTJSVariantへのアクセスを隠蔽しようか…
と迷っている。
で、今日はAEONがあった…のだけれども、結局、徹夜明けで寝てしまって寝過ごしてしまった。あぁ、エリック、ごめんなさい。
明日にでも授業の振り替えしなきゃ。
ただ、ライブラリにする場合、Cでラッピングするのか、C++でラッピングするのか迷うところ。SDLを考えれば可能な限りCでラッピングしてしまえば良いと思うけれども、使い勝手を考えるのならC++なんだよな。
TJSのクラスは完全にラッピングするので、外部に変数などのTJS内部の型を持ってくることはできない。これが一番の問題で、じゃぁ、ネイティブ関数の実装をCからクラスを使わずにどうやってやるかって問題がやってくる。
これは、クラスの中で関数へのポインタを格納しておくことで解決。あとは、このクラスをライブラリ内でラッピングして、SetFuncを呼ぶだけでTJS内で登録が可能になる。
class MyClass : public tTJSNativeFunction {
public :
tjs_error Process ( tTJSVariant *result, tjs_int numparams, tTJSVariant **param, iTJSDispatch2 *objthis )
{
(*func)() ; // 外部から登録したC関数を呼び出し
}
void SetFunc ( func ) { cfunc = func ; }
private :
Func cfunc ; // C関数へのポインタ
} ;
で、呼び出しは可能になったが、もう一つ問題がある。このProcess メソッドへの引数がtTJSVariant型ってこと。これはTJSのクラスだから、当然ラッピングする際に外部に持ってこれない(別にそのまま出そうと思えば出せるけれども、出すと他の依存ヘッダも出さなきゃいけなくなって、ライブラリとしては複雑なものになってしまう)。
funcに直接この引数を渡せないので、何らかの中継を行ってC関数に引数を渡さなければならない。ってことで、void*でポインタだけ新しく作った引数のバッファとなる構造体内に格納しておいて、GetStringだとか、GetIntだとかを関数で実装、これを介してtTJSVariantへのアクセスを隠蔽しようか…
と迷っている。
で、今日はAEONがあった…のだけれども、結局、徹夜明けで寝てしまって寝過ごしてしまった。あぁ、エリック、ごめんなさい。
明日にでも授業の振り替えしなきゃ。