2007年3月31日土曜日

Googleほんっとすげぇな・・・

Google Notebook日本語版公開、Webサイトをブラウザ上で瞬速コピペ

いやほんと、ブラウザの持つ機能がどんどん広がっちゃいますねぇ・・・。リンク、画像も含めてさくっとコピペだなんて・・・。ワードパッドで試してみましたが出来ませんでしたw Wordならできるのかな? けど、仮に出来たとしても、Wordをそのためだけに立ち上げるのも重たいわけで・・・。ブラウザの拡張として利用できるのはすごいなぁともう感嘆の念しか出てきません。
Firefoxの拡張やIEの拡張にもウェブページをクリップするものがありますが、それをネットワーク上で共有までは出来ませんからねぇ・・・。いやまぁローカルに保存したければそちらを使うという感じで使い分ければいい話ですが。
また嬉しいことに、Googleがこうやってツールを提供してくれる場合、基本的にIEとFirefoxに対応してくれるんですよねー。Firefox派の私にとっては嬉しい限り。
ローカルで実行するアプリケーションについても、大概Linux用も用意してくれますし。ないものといえばGoogleパックだっけ、あの無料ソフトをパックにしたツールくらいですね。まぁLinuxの場合、多くのディストリビューションがアプリケーション管理ツールを用意していますから、あまりそういったツールが必要になることもない、ということなのかも知れません(笑)
いやー、Ajaxは繋ぎの技術で、それほど広がりはしないだろうな〜と思っていたんですが、Googleさんはアッと驚くツールを提供してくれますねぇ。JavaScriptがここに来て凄く興味のある言語になってきましたよ?w まぁそれよりもXMLの扱いに慣れないとなぁ・・・。Ajax以外にも色々なところで使われ始めたし、.NET3.0ではWPFがXMLをベースとした言語でUIを表現するし。
まぁタグはTeXで慣れてるし、なんとかなるかしら。特にプログラムの方だとあまりDTD宣言について気にしなくていいしw とりあえず、今作ってるツールの設定ファイルをXMLで管理してみましょうかねぇ?

2007年3月30日金曜日

Office2007インストール成功

以前の記事で、Office2007のインストール途中にフリーズ、そしてインストール不能状態に陥ったと書きましたが、なんとか今日インストールに成功しました!
インストールに失敗したものの、ちょっと悔しかったので頑張ってみたんですね。ログファイルをあさり、その情報を基にぐぐるぐぐる。
で、レジストリキーを削除したりインストーラが参照する設定ファイルを書き換えてみたりいろいろとやってみた結果、どうも
c:\Document and Settings\All Users\Application Data\Microsoft Help
だったかな?ここにあるファイルが邪魔をしているからそれを削除してインストール作業をやり直せば大丈夫だという記事を見つけたんですね。まぁそれはVisual Studio2005か何かのインストール失敗の際の対策だったようですが(英語だったので必要な部分しか読んでません^^;)。
で、残念ながら該当するファイルはなかったのですが、どうせならやってみろということでMicrosoft Helpってディレクトリをリネームしてインストールを実行してみたんですね。
そしたらなんと! うまくいっちゃいました^^
今回は万が一のことも考え、MS IME2007はインストールしないようにしておきました。おかげで(?)無事インストール完了! Office2003と共存しちゃってますがまぁいいでしょう。
ただ、相変わらずWindows Updateは手動でやろうとすると失敗します。定期アップデートで自動実行される更新に関しては問題なく実行されるようなので、まぁ気にしないこととします(ぁ 手動でやることはほぼないでしょうし。
と、いうことで今日はこの解決に随分と時間を喰っちゃいました。
明日はプログラムの方をもっと進めよう・・・^^;

2007年3月29日木曜日

例外処理が甘いけど、一応解決

昨日の記事にて、メニュー項目とインスタンスをどうやって結びつけようかと思案していたのですが、1つの解決策を得ました。
どうもFormクラスをはじめとしたControl全般は、Tagというプロパティを持っており、そこにそのコントロールと関連性の高いオブジェクトを放り込むようです。Tagはobjectクラスとなっているため、なんでも保持できます。一般的には文字列を入れておき、イベント先でswitchなどを駆使して処理を行うらしいです(この考え方で合ってるのかな?)。
で、私はメニューリストのTagプロパティに、インスタンスの参照をそのまま放り込んでみました。イベントハンドラに登録されているメソッドでは、senderとなるオブジェクトを決め打ちとし、Form型にキャストして処理しています。本来、インスタンスの参照をあまり複数で管理すべきではないということは承知しているのですが・・・、こうしておくと初期化処理の部分でTagプロパティに参照を渡すだけでよく、楽なんですよねぇ・・・。
まぁ処理の都合上子フォームのTagプロパティには親フォームのメニューリストの参照を渡していたり。そうしないとメニューリストに項目を追加するたび、子フォームごとにイベント処理を書かなくてはいけないので邪魔くさいんですよね・・・。
まぁTagはおいといて、受け取ったイベントメソッド側でobjectクラスからFormクラスへキャストしているので、万が一イベントを送ってきたインスタンスがこちらの装丁しているクラスでなかったとしたらあっけなく例外を吐きます^^; まぁ自分で管理している以上そんな処理は有り得ないのですが・・・、お行儀がいいとはとても言えませんね(苦笑)
これに関しては、VC#のコードデザイナのイベントメソッド自動生成に任せているからobject型になっているのであって、これを自分でメソッド書いてイベントハンドラに追加してやれば好きに出来るはず・・・と思っていたり。ちょっとまだイベントハンドラについては理解し切れていない部分があるので間違ってるかも知れないけど、おそらくそれで解決できるはず。
Formクラス以外はそのイベントメソッドを利用することを想定してないから、メソッドの引数自体をそうしてしまえばコンパイルの時点で明らかにおかしいものは弾けるしね。
ということでお行儀のいいソースにするためにそこは修正予定。ただ、自動生成しちゃったイベント登録部分ってのはpartialで隠されてる部分だからあんまり手動で消したくないのよねぇ・・・。リファクタで消えたっけ・・・? それがネックだなぁ。
まぁ最悪手動で消すとして、これである程度保守性も確保できたかな。
こっから先はいよいよ実行処理のアルゴリズム実装かな。Timerによるサンプリングレート管理とデータのバインディング処理がネックになるかな・・・。とりあえずは実装モデルを考えないと!

2007年3月28日水曜日

どうするのがスマートなのかなぁ・・・

とりあえずグラフを描画するWindows Formのサブクラスが完成。コンストラクタにしかタイトルや軸のラベル名を変更させる手段を持たせなかったけど、途中で変更することはまず内だろうしそれは別に問題ないかな。汎用性を持たせるならプロパティでも設定すべきなんだろうけど・・・、まぁいいかな。グラフを描画させたいデータソースによってタイトルと軸のラベルなんて決まるもんだし。それはインスタンスを生成する時点で決まってるでしょう、きっと。
とりあえずある程度の汎用性を持たせたグラフ描画フォームは完成と言っていいかな。データソースにはdouble型の配列を引数として受け取るようにはしましたが・・・、あれはどうにか抽象化できんかなぁ。ジェネリクスメソッドにしてもいいんだけれど、確実に型制限をつける必要が出てくるし。値型だけを引数としたいところだけれど、それってできたっけなぁ・・・? まぁよしんばそれができたとして、ArrayListクラスとかは受け取れないけどそれはどーすんだとか諸々の問題はありますが^^;
まぁそれはそこまで大きな問題ではないのですが、今気になっているのはMDIの扱い。描画フォームができたので、それをMDIの子フォームとして呼び出すランチャーを作っているのですが、これをもう少しスマートに書きたいんですよね。
とりあえず、メニューの”Results”をクリックすると、プルダウンメニューが現れ、MDIの子フォームであるいくつかのグラフ描画フォームを選ぶことでMDI領域にフォームが現れるという仕様にしています。この部分は問題なく実装できているのですが、実に泥臭い方法で実現してるんですよね・・・。
それぞれのメニューの項目のクリックイベントのハンドラとしてそれぞれのウィンドウの表示メソッドを書いて居るんです。
が、基本的にやることはみんな同じ。対象となるフォームインスタンスが違うだけ。なので、メニュー内容とそのウィンドウをなんとかリンクさせることが出来れば、同じイベントハンドラで実現できるはず、と思ってはいるのですが・・・、その方法が思い付かないんですよねぇ。
親フォームがロードされた時点で全子フォームのインスタンスは生成されているので、メニューのクラスに関連づけさせるようなプロパティでもあればいいんですが・・・、ない気がしますしねぇ^^;
ってなると自分で実装・・・はしんどいよなぁ^^; けど毎回毎回子フォームを追加してメニューに追加したときに同じようなコードを書かなくちゃ行けないのは明らかに保守性が悪いし・・・。
どうにかしたらできるはず。ってなわけで当面はここをどうにかする方法を考えつつ、プログラムの実行部分を作っていきましょうかね。別スレッドで回すのはいいんだけれど、内部で使われている値を読み出すときはどうやって読み出そうかなぁ・・・。原則、リードオンリーだからロックを掛ける必要はないと思ってはいるのだけれど・・・、WAVファイルからサンプリングレートを取得してそのレートで実行するようなプログラムを書きたいな。そうすれば実際に処理にどれだけ時間が掛かったかが把握できるし。
できたら処理実行クラスはGUIとは完全に切り離して、単体でも動作するような形にしたいからなぁ。あくまでGUI部分はただのランチャってのが理想。アルゴリズムの実装はさして難しくはないけれど、GUIとの連携部分をどうするか、やなぁ・・・。
このあたり、今までまともに組んだことがないからちょいときついなぁ。さて、またネットとかで情報集めて頑張りますかねぇ^^

2007年3月27日火曜日

同期の飲み会

昨日はイベント目白押しの日だったんですなぁ。夕方からは飲み会でした。
謝恩会は15時くらいには終わってしまったので、それから飲み会まで結構時間あったんですね。とはいっても大学に戻ったら逆にすぐ駅前にとんぼ返り。割と中途半端な時間残っちゃったんですよねぇ^^;
とりあえず、一緒に謝恩会に顔を出していたwillたんと駅前を適当に散策することに。ほんとうにあてもなくいろんなお店を冷やかしてました(笑) おかげで結構歩き回ったので、いい運動にはなったかも知れない。
で、適当な時間になったのでお店に行きまして、みんな集まってから(幹事のはずのかちゃーんは電車の遅れのせいで遅刻)飲み会スタート! なんか私は裏幹事みたいになってしまってました(苦笑) まぁ始まっちゃえばどうでもいいことなんですがw
まー、こうして同期で集まって呑むのは2回目。なかなかよいものですね。nikuがインフルエンザのため出席できなかったのが悔やまれますが、電話で参戦。次こそは全員揃うといいな。
飲み会の内容はまぁ語るほどの内容ではないので端折っちゃいますが、とりあえず楽しかったです^^ 一部楽しみきれなかった人も居たようですが(ぁ
あ〜、またこういう飲み会が出来たらいいなぁ^^

ご卒業おめでとうございます

と、いうことで、昨日はうちの大学の謝恩会でした。
私は卒業するわけではないので本来関係ないのですが、卒業してしまう面々と会えるのもそうそうないだろうからということでひょっこり顔を出してきました^^
まぁ最初から行くつもりならスーツで行ってたのですが、午前中は学校におり、willたんに誘われて行く気になったのでもろ私服だったんですね^^; 完全に浮いちゃってました(苦笑
入っちゃまずそうな雰囲気ならやめとこうと思ったのですが、まぁ特に問題にはならなそうだったので助かりましたね。最初の一歩を踏み出す勇気は推して知るべしw
まずは見知った先輩に「おめでとうございます」と挨拶。皆さん快く迎えてくださいました^^ で、お酒も勧めてくださいましたw 私は会費を払っていないので全力でお断りしましたが^^; できたら呑みたかったんですがねぇ、そういうわけにもいかなくて残念です;;
で、続いてうちの講座のB4に挨拶。こちらも快く迎えてくれました。感謝感謝^^
で、あとはふらふら、ふらふらとあたりをうろついてました。どうしても若干浮くのは仕方ないよね^^;
で、最後は花束贈呈。はましんさんからカメラを託されまして、写真を撮ってたのですが、あまりいい絵は取れませんでしたねぇ^^; というかずいぶんと段取りがgdgdだった・・・。もちっと段取りは決めておいた方がいいと思うんだ、うん。
で、その後はうちの講座の集合写真。ここぞとばかりにカメラを受け取って写真撮ってました。ちょっとはお役に立てたかな?
M2の方々、ほんとうにお世話になりました。修士に上がってくるB4、来年度もよろしく。卒業するB4、ご苦労様でした。
うん、やっぱ行って正解だったな^^

2007年3月26日月曜日

[mixi] 6200人目達成〜

mixiからのお知らせです。code_air_ edge さんのページ全体のアクセス数が 6200アクセスを超えました。記念すべき6200アクセス目の訪問者は Picture@人形師 さんでした!

と、言うことで恒例の前後賞。

2007年03月25日 02:11 さんのへ
2007年03月25日 02:07 だーs
2007年03月24日 22:49 Picture@人形師
2007年03月24日 22:18 角
2007年03月24日 21:26 う゛ぇるにゃー 

ふむ、日記をこちらに書くようになったから、別にmixi経由でなくてもRSSで更新は取得できるんですよね。そのためか、足跡はだいぶ進みが遅くなってます^^;
まぁmixiの方を更新していることはほとんどありませんから、直接こちらを見ていただいたらそれでいいかな。こちらは足跡を管理なんか出来ないので訪問者はさっぱり分かりませんが^^;
あ、けど私は読み逃げはアリだと思ってますので^^
んなもん読んでコメントを残さないなんてのは読んだ側の自由だろうがっ!
「あなたここ見ましたね? 見たんならコメントを残してください。そうしないとほら、失礼でしょ?」
なんて、どっちが失礼だよと。感想を強要する日記なんてほんと勘弁してくれ。
私の周りにそう言う人がいなくてホンと良かった。
あ、でもコメントは貰えると嬉しいです^^
さて、お次は6300。気長にいきますかね〜。

2007年3月25日日曜日

なんてこった!

私の使っているディスプレイは今ではもう標準となっているSXGA(1280x1024)のサイズです。が、これ5:4なんですな。大抵のゲームはVGA(640x480)サイズないしXGA(1024x768)サイズ。比率は4:3なんですねぇ。
ウィンドウモードでゲームしてたら関係ないですが、問題はフルスクリーンモードにしたとき。基本的には引き延ばされます。横に!だったら比率が4:3になるように黒帯でも入れてくれたらいいのにとか思いますが、そんな機能の付いたディスプレイはお高いんですね。
で、私も長いことそんなこと気にもせずに使っていたのですが、なんとGeForce系のグラボならグラボオプションでアスペクト比固定にして表示が出来るらしいじゃないですか!
早速調べてみて、ドライバを新しいのにしたらできるってことで最新版をDLしてLet's Challenge!
しようとしたら、なんとフリーズ!!!いや〜驚きましたねぇ。
再現率100%!
どういうこっちゃねんOrz
ってなわけで原因は不明ですが設定は出来ていません;; せっかくの機能なのになぁ・・・。
なんかお預け喰らったみたいだ(苦笑) まぁこれといった実害があるわけでもないから気にしなくていいか・・・?

2007年3月24日土曜日

循環バッファ作成

最近備忘録的なポストばっかだな・・・。
まぁそれだけ研究してるってことですよ。実戦向きかどうかは別として(ぁ
今日は循環バッファを作ってました。C言語版。DSPに搭載するならC言語だし。全力で循環バッファ使うならアセンブラなんだけど^^; DSPアセンブラは追々勉強していこう。せっかく手元にDSPあるんだし、あいつは弄くり倒したい。浮動小数点演算可能ではあるけれど、あえて固定小数で勝負したい。ん〜でもFFTとかのライブラリは全部浮動小数だったな・・・。PCでのシミュレーションなら固定小数と浮動小数に実はそこまで(クリティカルな)差は出ないから無理して使う必要もないけど、DSPでは実クロックは遅いからなぁ。その代わり並列処理が半端じゃないが。
だから余計にC言語じゃその真価を引き出せないからアセンブラ勉強する必要があるんだよなっと。勉強しとけば就職には強そうだ。就活に間に合いそうはないが^^; 話のネタに位はなるだろ、うん。
っと、話は逸れたけれど循環バッファ。信号処理では現時点からnサンプル前までのデータ列に対してどーのこーのという処理が多く、配列に対してのランダムアクセスという物はほとんど発生しない。データアクセスはシーケンシャルだし、データの追加、削除というものも先頭と末尾に集中。サンプル長も固定と結構狭い条件で動作します。要は汎用性は気にしなくていいから最適化を掛けやすいという環境といえますかね。
まー大抵実装するときは、nサンプル保存する配列を用意し、サンプルを追加するときはfor文かなんかで値を右ないし左の配列要素にコピーして次のサンプルを配列に書き込むってスタイル。まーシフトレジスタをイメージしたらまさにその通りだし、見やすさも抜群だけれど如何せん無駄が多い。けどシミュレーションではリアルタイム性を考慮してないからこんなコード平気で書いちゃうんだよなぁ・・・。これはすっごくよろしくない。値を1つ捨てて1つ入力するという作業だから大半の値は使い回し。にも関わらずn-1個の値をコピーするからそれだけ無駄に時間を食っちゃう。
で、そんなことするくらいなら捨てる予定だった値のところに新しい値を放り込んでやればいい。つまり、配列が輪になっているとイメージし、末尾まで来たら次は先頭にまた戻る。これが循環バッファ。概念は凄く簡単。アクセス時には先頭をどこにするかという下駄を履かせてやればいい。
配列長が4で、下駄(オフセット)が0ならば通常の配列のアクセスと同じ。この状態で右に要素をシフトしたとイメージする。配列の末尾の値が捨てられ、先頭に空きが出来たというイメージだ。これを下駄だけで表現しようと思ったら、先頭へのアクセスが実際には末尾を指していればよい。配列のある要素を指定した際、下駄を履かせた値が配列の要素数を超えた場合はその合計値から配列の要素数を引いた値が指したい位置になる。例えば、1度右にシフトされ、下駄が配列の末尾を指している(C言語に倣うとオフセット値は3)状態で、3番目の要素にアクセスしたい(C言語では指定する値は2)ときにどうするか。オフセットを合わせた値は3+2=5で要素数を超えている。よって5-4=1番目が本来3番目に用意されていた値、ということになる。
つまり、配列へのアクセス時に毎度毎度要素数を超えていないかのチェックをしなくてはならないと言うことになる。コレはたいそう無駄が多い。コピーは時間が掛かるといって循環バッファにしたのに、アクセスのたびにリミットチェックの条件分岐をしないといけないとなるとパイプラインが生成されず実行効率が悪い。実際そんなコードを書いたらコピーするのと大して処理時間が変わらない。
つまり条件分岐をしなければよいということになる。実はそれは簡単。剰余計算を使えばいい。指したい要素番号とオフセットの合計値を要素数で割ったときの余りが実際に指し示す要素番号となるのだ。例えばさっきの例で言えば、オフセットは3、指定する要素番号は2、要素数は4なので
(3+2)%4=1 (%はCでは剰余を返す演算子)
となる。見事同じ値を返す。アクセスの際にこうして剰余計算を行わせることで条件分岐を行う必要が無くなる。コンパイラによる最適化も掛かりやすくなると言うことなんですな。
が!これでもまだ問題が。剰余計算は基本演算の中ではすこぶる遅い!!! 除算がただでさえ遅いのにさらに余りを返さなくてはいけないと言うことで非常に時間コストがかかるんですな。if分岐に比べればマシですがやっぱり時間が掛かる。
そこでさらなる工夫。配列のサイズを2の冪乗にするという条件はつきますが、剰余計算がビット演算で可能になります。今回の例では配列サイズが4で、見事2の冪乗なので早速やってみましょう。指し示す要素番号とオフセットは同じとしますと
(3+2) & (4-1) = 1 (&はCではビット毎にANDを返す演算子)
となります。AND演算はマスクを掛けるだけなので非常に高速です。これで相当早くなります。信号処理ではFFTの都合などで配列サイズが2の冪乗に揃えられていることが多いですから非常に良く用いられる手法です。
私もこの手法を知ったときには「は〜よく出来てるなぁ・・・」と感心しましたねぇ。C/C++ではどうしても関数を作ってそれを通して配列を操作しなくてはいけないため見た目にちょっと野暮ったい印象がありますが、C#ではプロパティのおかげで見た目に配列と全く同じアクセス方法が使えます。これはかなり嬉しいですね。なんせ、コードの書き換えが配列の型を書き換えるだけで済みますからw ん、C++でも[]演算子をオーバーロードしたら同じコトできたっけ・・・? いやでけんか。
まぁ下駄を履かせる方法とかちょっと混乱しそうになりますが、一度作ってしまえば後はそれを使い回すだけですしね。使う側はアクセスしたい要素番号を関数に飲ませればいいだけですし。
つーことで講座の共有にでもおいとくか。ドキュメントまでつけなくても大体分かるだろう・・・つか分かってw

2007年3月23日金曜日

DSPってのは奥が深いな・・・

なんか色々と勘違いしていたことが発覚。畳み込みはあくまで小数同士の積和だから、ゆーても整数部の桁はほとんどいらないんだよな・・・。そんでもって符号付き16bit同士の積だと必要な桁数は31bitだとか。まー符号付きの16bitだと、実際に数値を表現しているのは15bitだから、15bit同士の積を考えればいいはず。必要な桁数は30bit、そんでもって符号ビットの1bitを加えれば31bitになるって計算でいいのかな?けど、DSPでは実際には小数部は30bitしか扱わないんだとか。なんでだ・・・?
最上位ビットを符号部、次のビットを小数第1位として4bit同士の積を考えてみる。
例えば、
0.111 = 0.875
0.010 = 0.25
の積を考えたら、最上位ビットを無視すると
       .111
x      .010
-----------
          0
      1.11
+    00.0
------------
     01.110
これを3bit右シフトした0.001110 = 0.21875ってのが計算結果になる。あとは符号ビットを加えるだけ。小数同士の積では結果は必ず1以下となるから、途中結果はどうあれ最終結果は下位ビット側に乗数の小数部桁数分伸びる(今回は3bit)。小数点の位置が同じ固定小数同士を掛けるなら倍の桁数を用意しておけばその精度同士の積が誤差なしで得られることになる。ただし、途中結果は上位側に結果が伸びるため、そちらがオーバーフローする可能性がある。今回の例でも、右シフトする前の結果は整数部に値が入ってしまっている。これだと右シフトした際に正しい結果が得られない。
ただ、予め小数部に十分な桁数を用意できているとするならば、先にビットシフトをしておいてから演算を実行すれば上位ビットへのオーバーフローは防げる。つまり、
       .000111
x      .010
--------------
             0
      0.00111
+     0.0000
--------------
      0.001110
とすることで同じ結果が得られる。これなら上位にビットが溢れることはない(はず?)。例えば
0111 = 0.875
0111 = 0.875 の積を考えると、
       0111000
x      0111000
--------------
     0111000000
   0111000000
+ 0111
000000
--------------
  110001000000

となり、3bit右シフトすると0.110001000=0.765625となります。予め3bitずつ右シフトしておいたとすると、
      01110000
x     00001110
--------------
       1110000
      1110000
+    111000
0
--------------
   01100010000

となり、0.110001000となるため同じ結果が得られます。どちらの方法をとったにせよ、下位3ビットは確実に0となるため、本来符号bitを除けば7bit確保できるけれど6bitで十分と言うことになります。これを単純に32bitに置き換えて考えると、なるほど確かに小数部は30bitで事足りるという結論が導けてしまう・・・。ほんっと、昔の人は賢いよな・・・。
ところで、実はこれでもまだ具合が悪い。整数と見立てて考えると分かりますが、符号bitを含めて4bit同士の積を考えていますから、その結果は明らかにオーバーフローしています。これは具合が悪い。ならば今度は両方を3bit右シフトしておき、結果を3bit左シフトすることを考えます。
       00001110
x      00001110
---------------
       00001110
       0001110
+      001110

---------------
       01100010

これでオーバーフローの心配がなくなるはずです。というより、溢れた桁の分は捨て置くのでこれで4bit同士の固定小数の演算結果が得られていることになります。取り出すときにはこれの上位4bitを取得すればよいことになります。つまりは0.75となるわけですね。まぁ取り出すときだけ丸め処理を入れればいいと言うことだけ押さえておけば十分でしょう。
が、これは積の場合で、除算はまたé
•ã£ãŸçµæžœã‚’生むんですよね・・・。被除数の絶対値が除数の絶対値よりも大きければ絶対値が1以下に収まりますから問題になりませんが、そうでない場合、絶対値が1を超えるのでオーバーフローを起こす羽目に。
ん〜、今度実装するアルゴリズムは学習同定法がベースだし、どう考えたって絶対値は1超えてくるんだよな・・・。DSPで学習同定法を実装するときってどうやってんだろ・・・? まっさか浮動小数ではないだろうしなぁ・・・。FFTは絶対値を1以下に抑える方法がちゃんとあるからいいけれど、逆フィルタの生成とかだと除算が入ってくるだろうし・・・。調べてみるか。
ふぅむ、実用レベルまで持って行くのはかなりしんどそうだな・・・^^;

パソコソ蛾物故割れt

というとちょっと言い過ぎかも知れませんが、大学のPCがちと厄介なことになってしまいました。
今日はせっかくだからってことで使われなくなったディスプレイを1つ拝借しまして、Fedoraマシンにひっつけたんですね。ディスプレイ切り替え機はあったのですが、そいつはPS/2タイプのキーボードとマウスしか接続できず、XPマシンのキーボードとマウスを接続できなかったんです。なので、ディスプレイは1台で切り替えて使えるけれどキーボードとマウスは別々と使いにくいことこの上ない状況になってしまってたんですな。
で、ディスプレイを置く場所は余ってるし、むしろキーボードとマウスを共有したいってことで、Synergyを利用することに。
以前にもチャレンジして、どこか設定が正しくなかったらしく失敗したりとかしてたんですが、今回無謀にも再挑戦。原因を調べた結果、クライアントとしているFedora側の送ってくるドメインがサーバの設定している名前と一致しなかったためセッションを確立できていないと言うことでした(クライアント側は"localhost.localdomain"を送りつけてきてた。そりゃ無茶やわ^^;)。ってなわけで、クライアント起動時にコマンドラインでディスプレイ名を設定してやることで無事解決。まぁ分かってみればなんてことはないエラーなんだけど、知らないと分からないものなぁ。
で、無事設定できた頃、助手の先生がM$ Office2007を持ってきてくれました。ボリュームライセンスで講座のマシンにも入れていいよと言うことで。
まずは今入っているOffice2007 Betaを削除。アップグレードが出来たのかも知れないけどまー先に消したっていいだろうと言うことで削除。その後インストール開始。プロダクトキーを入力して、しばらく放置。
で、しばらくするとATOKを標準の入力ソフトとして使いますか、という質問が。私はATOKを標準で使っているので迷わず「はい」をクリックしようとしたのですが・・・、なんとカーソルが動かない。マウスをどれだけぐりぐりしても動かない。Enterキーを押しても認識しない。USBを抜き差ししても変化なし。
そのくせなぜかAlt+Ctrl+Delは効きやがって、タスクマネージャ起動。したところで何も入力は受け付けず。もーしょうがないので電源ボタン長押し。
で、再起動し、再度インストールを開始してびっくり。プロダクトキーを入れた後、セットアップに失敗。ろくすっぽエラーの原因なんて説明しやがらない。ただ、「Officeのセットアップに失敗しました」だけ。んっとにユーザに優しくねぇ仕様だな!!!
で、何をどうしていいかも分からないので、助手の「システム復元ポイントで復元してみたら?」という助言を元にシステムの復元を試みることに。復元ポイントがいくつかあり、まず本日の「Office2007セットアップ」を選択。これの実行前の状態に復帰してくれると。で、再起動。
「復帰失敗。コンピュータは何も変更されていません。」
あんですとー!?
仕方ないので数日前の復元ポイントを選択。復帰失敗。さらに前の復元ポイントを選択。失敗。さらに(ry
復元ポイントを指定して1つも復元できずOrz
なんのための復元ポイントやねん。つーか復元ポイントとして設定されてるならなんで復元失敗すんねん。
で、システムの復元も断念。今度はインストールに失敗した原因を探ってみることに。まず、どっかにログファイルが残されているだろうと踏んで、Tempフォルダを捜索。
まずはシステムのTempフォルダ。日付が今日のものはいくつかあったけれど該当しそうなものなし。
続いて自身のユーザのTempフォルダ。ここに「XXX-Setup〜.txt」といういかにもいかにもなやつ発見。こいつを開く。テキストいっぱい。見る気失せる(ぁ
とりあえず最下行をチェック。なんのことか分からんw 少しずつ上をチェック。どうも何かに失敗してプロセスを中断、トランザクションを取り消してるって感じの内容でした。で、肝心の失敗している内容については、エラーコードまでは分かったものの、その内容は不明。んっとにユーザに優しくねぇ仕様(ry
そのエラーコードでぐぐったところ、VS2005のインストール失敗談について海外の掲示板がやたらと引っかかりました。みんな苦労してるのね・・・。やっぱりインストール途中に失敗してインストールできないという内容でした。解決策はVS2005のものであってOffice2007に適用できるものではなさげだったので却下。
で、今度は切り口を変えて、「Office セットアップに失敗」でぐぐってみることに。そうするとこんなサイトを発見。「おぉ、これぞまさに!」と思って早速DL&インストール。チェックしてみると、なるほど「Microsoft Office Word 2007」とかの項目が。こいつらが悪さしてるんだな〜?ってなわけで選択して削除削除削除ォォォォ!
で、セットアップ作業開始。
「Officeのセットアップに失敗しました」
嘘だッッッ!!!
なんでやねんOrz なんで失敗するねん・・・。もう何をどうしたらええねん。プログラムの追加と削除にも項目は出てきてへんし・・・。どこにゴミを残して悪さしてんねん・・・。
もうにっちもさっちもいかなくなったのでOffice2003をインストールすることに。こちらは何事もなく終了。ATOKについても聞かれず。標準のままでした。
ん?よくよく考えたら、なんで標準に設定してあったはずのATOKが標準から外されたんだ・・・?
「ほら、新しいIMEだよ!見た目が新しくなったでしょ!ちょっと重いとか言われてるけどそんなの関係ない!ほらほら、標準に設定しておくから使ってよ!ってか使いなよ!」
さすがM$。押しつけがましいその態度にもう脱帽。ついでに既定のメーラに設定していたThunderbirdもOutlookによって既定から外されていましたよっと。ええ加減にせいっちゅーねん。
で、Office2003も無事に入ったことだし、Office2007はどうかなっていうと・・・、もう当たり前のように失敗Orz
で、こんな情報どこにも出てないんかいな〜と思ってとりあえずWindowsUpdateをしてみることに。
サイトにアクセスし、「カスタム」を選択。
「Webサイトに問題が発生しました。」

・・・・・・・・・・・・・

あ、MicrosoftUpdateができないぉ^^

ぉぃぉぃ。これもうどうしようもないじゃないか。確実にインストール情報の整合性が崩れちゃっã
¦ã‚‹ã˜ã‚ƒãªã„か。

「Office2007はシステムクラッシャーだったんだよ!!!」
ΩΩΩ< な、なんだってーーー!!??

くそぅ。これまで様々なβ版は試してきたけれど、まさか製品版でこんな自体になるとは思っても居なかったからインストール前にシステムの復元ポイントを作ってなかったのが痛かったか・・・。つーかインストール途中にフリーズすることを予見なんてできねぇよ・・・。
と、いうことで、最悪OSの再セットアップに踏み切るかも知れません・・・。だってWindowsUpdateができないってなると困るもの・・・。Office2007はウイルスですかまったく。あー、Live ○neCare使えば削除してくれねーだろーか(ぁ
う〜ん、セットアップするなら春休み中にしないとなぁ・・・。どうせならVista入れてやろうかな。メモリは足りてるがグラボがオンボードだからそこがネックだよなぁ。。。まーAeroを無効にしたらいいわけだけど。でもそうするとVistaにする必要性がないからなぁ。難儀なもんだな・・・。
あ〜もうどうすっかな〜

2007年3月21日水曜日

C#版WAVEファイル読み出しライブラリ作成

そろそろ研究用のプログラムを作っていかないとまずいという事実に気がついてしまったため、固定小数ライブラリはひとまず置いておくことに。
昨日のポストで「符号部1bit、整数部11bit、小数部12bit」を目指す、としていたんですが、これは大きな勘違いでした。少なくとも、今の実装(32bit整数型を小数として扱う)では乗算でほぼ間違いなくオーバーフローしちゃいますね・・・。これじゃ誤差どころの話じゃなくなっちゃう;;
乗算でもそれなりの精度を保持したいなら、整数部と小数部で別々に計算して加算し、外向きには固定小数に見せかけるとかの方法がありますが・・・、また内部ロジックを考え直さないと行けないので後回しですね。
つーわけで今日は以前C++で作成したWAVEファイル読みだしライブラリをC#へ移植しました。
の、つもりでしたが、全面的に書き換えちゃいました(てへっ
まぁANSI C++ってのと.NETのC#ってのではバイナリファイルの扱い方とかに差が出ますからねぇ。ANSIにない便利機能は使っていきたいところですし。 C++版にも逆移植はするつもりですが。
とりあえず読み出しは完成したので明日以降はいよいよロジック部分ですね。とりあえずは畳み込みかな。これをもっとスマートに書きたいんだよなぁ・・・。実機移植を考えないなら間違いなくサイクルバッファを実装するんだけど・・・、昔実装したものをもう一度見て書き直すか。あの頃に比べたらC#もだいぶ分かってきたし。
ま、サイクルバッファだろうと見た目ただの配列として使えた方がいいからなぁ。プロパティは必須か。探せばありそうではあるけれど、軽く探して見つからなかったら己で実装かな。教授の春巡業が終わるまでにシミュレータは完成させたいのぅ。

2007年3月20日火曜日

固定小数ライブラリあらかた完成

とりあえず、符号部1bit、整数部16bit、小数部15bitの固定小数ライブラリがほぼ完成しました。固定小数同士の四則演算以外に、double型との四則演算を定義しておきました。こうしておくことでdouble型に暗黙的にキャストされる全ての型の四則演算が実現できます。
が、パフォーマンスを考えると整数はInt32を用意しておいたほうがいい気がする。コンパイラが最適化してくれることを期待してもいいけれど、double型にキャストされちゃったら利かない気がするしなぁ。
とりあえず値型で作成して、感覚としても一般の定義型と同じように扱えるハズ。まぁちゃんとWAVEファイルを扱いやすいように整数を固定小数として保持するメソッドも作ったし。
後は実際に組み込んでみて、誤差がどの程度出てくるのかを調べなきゃなぁ。本来なら誤差もある程度予測できるはずだけれど、あいにくその計算方法をよく知らない(ぁ これまた勉強しとかなきゃな^^; う〜ん、16bitのWAVEファイルを読み込んだとして、その値をそのまま小数部として扱ってはいるのだけれど・・・、値が小さくなればなるほど有効桁数が追いつかないから精度が怪しくなるよなぁ。やっぱ小数部の桁数もっと増やすか・・・。ぶっちゃけ整数部に16bitも必要ないと思うしなぁ。たたみ込みでどの程度値が大きくなるかやけど・・・、利得を1にしておけばそこまで大きくはならない・・・かな?
とりあえず、正しい四則演算結果を返すようにはできたから次は符号部を1bit、整数部11bit、小数部20bitって振り分けくらいにしてみるかな。ん〜、この場合かけ算実行したあと何bit右にシフトしたらいいんだ・・・? それに桁あふれが起きそうだしな・・・。そこは気をつけておかないと。桁あふれ起こすと負の数になるっけ・・・? それは困るからなぁ。確かラウンドチェックはC#にあったよな・・・要チェックだ。
あ、作ってから気付いた。これC#で作っちゃったよ・・・。C++で作るつもりだったが・・・、まぁいいか。実用レベルになってからC++に移植しよう。移植はまーそこまで手間かからんだろう。演算子をオーバーライドしたから「+=」とか「-=」の追加はあるけど^^; まーなくても動く(ぁ
とりあえず、明日も頑張るってことだ!

2007年3月19日月曜日

これは中々面白い

鼻歌サイト「midomi」が日本上陸 「あの曲は?」を歌って検索

いや〜このmidomiってサイト、実に面白い。洋楽ならかなりの確率でヒットするんじゃないかなぁ。
「あ〜、あれなんつー歌だっけ・・・?」
ってちょっとここまで出かかってるのにわかんねーよ気持ちわりーよって時にスッキリできていいですね(某サプリよりもよっぽどスッキリできそうだ)。
面白いのは、原曲をもとに曲を探すのではなくて登録された有志の鼻歌を元に探すというそのアイデア。ITmediaの記事にも書いてあるとおり、原曲には多くの音源が混じっており、それを機械にに適切に選ばせるのは容易ではない。つーことで、人力ローラー作戦で、鼻歌を登録して貰って、それと照合するというアイデアに感服。なるほどそーすれば元になる物は与えられる鼻歌と似たようなものになるだろうから、正解率も上がるというわけだ。
で、早速試してみました。
Backstreet Boys 「I want it that way」と Mr.Children 「イノセントワールド」をふんふんと鼻歌で検索。
いやー、見事にヒットしました! 私の鼻歌もそう外れては居なかったようです(ぇ
ついでに、両方とも歌詞なし(ハミング)で検索してみましたが、それでもちゃんとヒットしました。すごい!
これ、もう一歩進ませて、ID3Tag情報とか引っ張ってこれるようになったらかなり面白いと思うんだけどなぁ。それくらいのツールは誰か作ってそうだw
で、このサービスがもう少ししたら日本に上陸するんだそうで。著作権がうんたらとか書いてあったけど、鼻歌にまで著作権は絡むのか・・・。中々世知辛いなぁ。
これでようつべとかで見たムービーに流れてるアノ曲の正体が分かる!かもw

2007年3月18日日曜日

ナンテコッタイ

「休日に寝だめ」は逆効果=平日差大きいほど不眠、抑うつ 働く人の睡眠調査

嘘だッ!!!
うわ〜、私もろに寝溜めする人間なんですけど^^; う〜ん、ダメなのかぁ、個人的にはすごくすっきりとしてるんだけどなぁ。規則正しい生活が一番というのはやはり覆せないか!(当たり前
ふむ、確かに熟睡したっていう感じはあまりしないものな・・・。幸い、疲れが残った感じがするとか気分が優れないってことはないけど、よくないと調査で分かっちゃったら、それでも今のスタイル貫くのはただの頑固一徹でしかないものなぁ^^;
けどそんなことはVelnirにさんざん言われていたことで。認めるのはなんか癪だから逆らってみようかしら(ぇ
なんつーのも餓鬼っぽすぎるわな。すまんVelnir、おまぃは正しかったらしい。私は間違っていたらしい。今後できる限り規則正しい生活を試みます、はい。
とりあえず2時には寝ようと思いますw いきなり0時とかはとてもじゃないが無理そうなので(ぁー

2007年3月17日土曜日

[講座]○藤組について こで が分かりやすく解説します

Q:○藤組って危ないんじゃないの?
こで:なんで?危なくないよ

Q:だって合法なの?
こで:もちろん合法だよ

Q:なんで?だって○藤組ということは長時間ミーティングなんでしょ?
こで:違うよ。全然違うよ。

Q:でも、長時間ミーティングなんでしょ?
こで:全然違うよ。全く関係ないよ。

Q:へー、じゃあ、○藤組と長時間ミーティングの違いは何なの?
こで:じゃあ、簡単に説明してあげるよ。まず、○藤組は独演会です。
自分一人が喋り倒してるか、学生の言うことを完全スルーしてるんだ。
そのようなものを、ミーティングと称して呼び出すところから7時間と言う伝説が生まれたんだ。
これは○藤組。長時間捕まっちゃいます。
でもミーティングというのは対話が存在するんだ。存在する問題を対話を使って広めていくシステムなんだよ。

Q:怪しい宗教団体なんじゃないの?
こで:全く違うよ。信仰の自由はあると思うよ、でもこれは宗教じゃないよ。

Q:バックに誰かいるんじゃないの?
こで:バックって(笑)いやいや笑っちゃいけないか。でもバックはいないよ。普通に教授がいて講座がある。怖い学長が後ろにいるとかはない。そうしたら怒られちゃうじゃないか。彼にはそれはできない。

Q:じゃあ、さっきから時間の話しをしているんだけど、どんな伝説が残されているの?
    
こで:昔は終了時間が甘かった時代があったんだ。そのときに思いっきり偏見で見られるゼミになってしまった。それから終了時間は曖昧になりました。
○藤組に関連する伝説には「いつでもどこでも呼び出される伝説」「連鎖呼出伝説」「学生携帯網」や学会で外へを出れば「丸投げ」「癇癪」というようなものがあるんだ。
この○藤組というのは厳しいこれらの慣習を守り常に意識しながらやっていかなきゃいけないんだ。

Q:じゃあ、テストとか資格とかいるの?

こで:いままではそういうのは存在していなかった。でも僕は試験、適正の制度を導入したらと思っている。いくら運転が上手でも免許を取るじゃん。だから、どんな人もこの○藤組に入るときには、ゼミのポリシー、そして、法律、ルール、マナーなどを勉強して適正を得るっていうのはありなんじゃないかなと思っています。

Q:○藤組に入ってあわなかったら変わっていいの?

こで:もちろん、講座移動というものがあります。2週間いてダメになったとするじゃん。でも講座に配属されてから大学院に進学したときなら書類を提出して配属を変えてもらえる。これは学則で決まっていることなので当たり前のことなのです。

Q:えー、それじゃみんな変えてきちゃうんじゃないの?

こで:講座を変わると1から勉強し直さないといけないから、そんなことはほとんどないって断言できるよ、僕は。そこまで前例がないんだ!

Q:じゃあさあ、例えばこのゼミに配属されるとするじゃないですか。友達を紹介するときに、まあ勧誘するときに使っていい言葉と使っちゃいけない言葉ってあるの?

こで:それはもちろんあるよ。それは勉強してもらって学んでもらって。だからゼミ紹介制度っていうものがなければいけないって思ってるんだ。
「ミーティングは早く終わる」「何もしなくても必ず卒業できる」「適当に話を合わせるだけでよい」
こういうのは完全にNGだね。

Q:へー、そうなんだ。じゃあ、ある程度の適正の目安を教えてよ。

こで:あー、そういう入りかたが一番危険なような気がする。でもこのゼミは自分の努力が一番反映されるゼミと思っている。例えばいろんなプランがあるんだけれど、引き継ぎになるようなプランもあれば、新規開拓みたいなものもあれば、共同研究みたいなものもあれば、がんばればがんばるほど適正があがると思うよ。やっぱり、自分のできる範囲で、自分のキャパシティを越えない一番気持ちいいところを見つけてほしいね。
ま、簡単に一つの例を出すと4人の知人・友人にゼミを紹介して、はじめて自分に割かれる時間は半分くらいになる。ここから始まる長時間ミーティングに向かって頑張れるゼミなんじゃないかな?

Q:こんな方法やこんな言葉で勧誘すると卑怯ですよっていうものはある?

こで:それはさっきの質問に近いね。それはゼミ訪問をして先輩に聴くと分かるよ。

流行に乗ってみました。完全に内輪ネタですがw
勢いでやった。反省は・・・、ちょっとしている><

2007年3月15日木曜日

いつの間にやら

KDEでも、Firefox経由でのFlashのサウンドがちゃんと鳴るようになってたんだなぁ。
正確にはdmixer経由、か。FlashはOSSばっかり見てたと思ってたんだけどなぁ。Flash入れ直したっけ・・・? そんなことした記憶がないんだけどなぁ^^;
ふむ、だとするとALSAが改良されたとかだろうか・・・? まぁどっちでもいいか、これでamaroKで音楽聴いていたとしてもようつべなりニコニコ動画を見ることが出来るし。
ついでにStage6も見れてびっくり。正確には動画のダウンロードが可能だったってことなんだけど。Linux向けにはサービスを展開する予定は無いみたいな見解だと思ってたけどダウンロードは可能にしてくれたのね。ありがたいこっちゃ。ダウンロードさえできればxineなりmplayerで再生すれば済むことだし。
つーことで存外Linuxでもマルチメディアが楽しめる環境ってのが整うのね。意外だったなぁ。ただまぁ、今度M$が対Flashの技術として展開しようとしてるWPF/E(名前は変わるかも、つか変わると思う)は.NETを必要とするらしいからなぁ・・・。Monoでも動作するようにしておいてくれないと困っちゃうかも。WPFの表現力はすごかったからなぁ。XAMLはタグベースだから私もとっつきやすい・・・かもしれない.まぁデザインはRADツールがやっぱり必要だけど、プログラムコードを書かなくても動作を制御できるってのは魅力的。
まぁ、こうしてどんどん低レベルな書き方ってのが億劫になり、忘れていくんだけどw
そーいえばMonoはGTK#ってのをデザインできるけど、これってひょっとしてLinuxにもWindowsにもライブラリを用意しておけばできあがった実行ファイルをそのままやりとりできるのかなぁ? だとするとJavaに対抗できると思うんだけれど・・・、どうなんだろ。今度調べてみるかな。
個人的にはQtが好きだからQtがC#にバインドされたら面白いと思ってるんだけれど・・・、QtはC++のクラスセットやからそう簡単にはいかんのやろなぁ。おまけに企業が絡むし。C#みたいにメモリ管理から開放される環境でQt使いたいわぁ。
ならPyQtとかPyKDE使えって?ごもっともで^^;

今日でカテキョ終了

今日でカテキョ終了。晴れて無職とあいなりました(ぁ
やるだけのことはやった・・・と思う。後は本人が頑張って合格してくれることを祈るばかり。結果は20日に分かるそうなので、それまではドキドキしながら待つことになるかな。
ふぅむ、今年度はバイトどうしようかなぁ・・・。バイトのリクルートもせにゃならんなぁ・・・。ケータイ代とネット代が賄えればいいからそんなに根詰めて働く気もなかったり^^;
ま、ぼちぼち探して行きますかねぇ。

2007年3月14日水曜日

やっぱ原曲は素晴らしいですな

そう思って聴くことも出来れば、そのアレンジに思わず噴いちゃうこともできるあたり幅が広いなーとしみじみ思ふw
つーことでニコニコ動画から。
東方原曲⇒アレンジ聞き比べ
続・東方原曲⇒アレンジ聞き比べ
うむ、IOSYS頑張りすぎだと思うんだwけど私はIOSYS割と好きになれそうらしいですよ?Last.fmで私の隣人さん調べてみたら、IOSYSがかなり含まれておりましたので(ぁ
ん〜、上海アリス幻楽団聴いてるだけですよぅw

2007年3月13日火曜日

完成形に近づいてきた(見た目だけ)

とりあえずGUI部分のひな形はほぼ完成。.NETだとMDIもこんなに簡単にできるのかとしばし放心w 唯一残念だったのはMDI子フォームをタイル状に配置する方法が分からなかったことくらいかなぁ。上下、水平方向に並べるのは用意されてるのになんでタイル状がないかね・・・。まぁそこはさほど問題にはならないと思うからほっとこう。
さて、見た目に関してはほぼ完成したので、いよいよ中身の実装ですね。今のところはC++で組もうと思っているけれど・・・、まーこの研究を後輩が引き継ぐこともないだろうし、後輩が私のプログラムを参考にすることもないだろう、うん。
あ〜ついでにグラフ描画もやりやすいようにクラス化しておいた方がよさげやな〜。いや、スケルトンをコメント化しておいとけばいいか。軸とかラベルさえ用意しておけばあとは配列受け取るだけだしな。
ま、問題は実装の方やけど・・・、あぁいやそれ以外にもグラフ描画をアニメーションさせるからFPSは考えないといけないし配列の要素番号と軸の目盛ラベルが一致しないからそこも動的に変化させないといけないし・・・。
ふむ、もう少し下準備が必要っぽいな。ま、ぼちぼちやりますかね!

2007年3月12日月曜日

少し文明人に近づいたんだぜ?

WAVEファイルの読み出し部分はできたので、今度はGUI部分。
ってなわけで、いかにしてグラフ描画をするか、そこを中心にずっと考えてたんですね。一応ベースとなるアプリというか、「これを作りたい!」ってアプリはあるのですが、そいつが中々ハードな作りしてるんですよねぇ。
研究で使ってるアプリなんですが、騒音源や制御音の周波数スペクトルやら何やらをグラフ表示できる作りになって居るんです。MDIで!
ハードルたけぇよほんとに・・・><
まー無理にクローンを作ろうとしなくてもいいのはいいんですが、どうせなら同等機能を持つ物を作りたいなと。
で、C#のGraphicsクラスとかを調べて、描画させる方法を覚えたはよかったけれど、実にめんどくさい!!!!
まぁ、私が流儀になれていないってのが一番大きいんですけれどね^^; 低レベル処理ってのはやっぱり面倒だ・・・。やっぱ慣れていかないといかんのだろうなぁ・・・。座標決めうちで処理するってのはどーも苦手だ。今までグラフィック系を扱ってこなかったってのもあるけどさ。座標変換をうまく使えばクライアント領域を好きに座標指定できるんだろうけど、座標軸やラベル、凡例とかのオフセットやらなんやらを考慮してたら頭こんがらがってきちゃった;;
で、ふと思ったわけですよ。
「グラフ描画なんて誰もが欲しがる機能なんだし、公開されてるんじゃね?」
あったよ普通に。
いやまぁあるよねそりゃやっぱり・・・^^; もっと早くに気づけよ自分Orz
と、いうことでNPlotという.NETクラスライブラリを見つけてきました。非常に手軽にグラフ描画が出来る優れもの。Graphicsクラスオブジェクトで描画してくれるってことで、画像保存もお手軽だったり(ただしBMP系だけで、ベクタ系が保存できないのが残念)。とりあえずMDIはよく分からないけどグラフ描画だけならこれで超お手軽に片付きそうなのでさくっと作ってしまおうかと思ってます。道具の使い方を覚えてちょっと文明人に近づいた!?
これでシミュレータのフロントエンドはかなり完成形が見えてきました。後は実装だなぁ。C++で組んで、C++/CLIでラップしてC#のGUIで動かすって手法が@itに載ってたから、最終的にはそこを目指してみようかしら。
とりあえず明日はグラフ部分の完成とできたら簡単なシミュレーションまで持って行くことを目標としよう^^

2007年3月11日日曜日

WAVEファイル読み出しは完了

やりたいことのうち1つは完了。正規化はまぁすぐできると思ふ(割り算するだけだし。コストは別として)。
さて続いてはGUIかな〜。こっちはハードル高そうだ・・・。頑張りますかね。

2007年3月9日金曜日

物思いに耽ってみた

プログラムを組んでいたりするとよく思うこと。
人間ってほんっとよく出来てるよなぁ・・・。
コンピュータの進化はめざましい。演算能力は桁違いに跳ね上がり、描画能力もムーアの法則様々で向上。記憶媒体の進化は末恐ろしいものがある。
けどその一方で、人間にとってさほど難しくはないことをコンピュータにさせようとしてもなかなかうまくいかないのも事実。
コンピュータは与えられた仕事をこなすのは得意。順序バラバラになってる住所録を名前順でソートしろと言われたら即座にやってくれる。それこそ人間が手作業で出来ない量を瞬く間に片付けてくれる。
けれど、それはあくまでフォーマットに則ったデータのみ。それこそ無秩序に与えられたデータを揃えろと言うのは無理な話。
例えば、名前だけが与えられて、それを男女に仕分けろと言われても、コンピュータは仕分けるための基準を与えないといけない。人間が曖昧にしている部分をコンピュータは厳密に要求してくる。そういう仕組みになっているのだから仕方がないのだけれど^^;
人工知能ってのはやっぱ不可能なんじゃなかろうか、そんな風に思う。人間は間違う生き物で、コンピュータは間違いが許容されない物。コンピュータは与えられた仕事を知りうる術でもって処理する道具であって、新たな術を見いだすことが出来る訳じゃない。
新たな術を見いださせようとするなら、それこそ今のコンピュータ技術を根底から覆すような理論が必要なんだと思う。人間は忘れる生き物。コンピュータは忘れることが許容されない物。忘れることを許容するなら、その優先順位をこれまたプログラミングしなきゃいけない。それが正しいかどうかも判断する必要がある。どこまでいっても止められない。
そう考えると人間の記憶ってのは不思議なもんだ。記憶は色褪せていって、しまいには思い出すこともなく忘れ去ってしまうことも多々あるけれど、ふとしたときに思い出したり。あるいは、忘れ掛かっている、もやの掛かった記憶が、ふとしたきっかけで鮮明に思い出せたり。記憶の補完とでも言うのか、こんなことはコンピュータには不可能だろうな。
そもそも、人間の記憶は完全じゃない。細部まで思い出せている訳じゃないけれど、それは些末な問題。ある程度(それはうまく説明出来ないけど)思い出せていればそれで十分という場面はよくあるものだ。
しかし、なんで消えかかった記憶がふとしたきっかけで蘇るのかが不思議だ。やっぱあれかな、アーキタイプとかアカシックレコードなんて言われる源流が存在するのかしらね、類人猿の根底に。記憶や精神はそこに繋がってて、みんな共有してて、ふとしたきっかけでそこから汲み上げてくることが出来る・・・、となるとまぁ随分とぶっ飛んだファンタジーなお話になっちゃうけど、他の人の記憶に触れるコトって言うのは存外難しいコトじゃないんだよね。
図書館に行けば昔のお偉いさんの学説に触れることが出来て、インターネットを使えばオンラインでリアルタイムに他人の考えに触れることすら出来る。私達はそのインデックスを脳に持っているに過ぎないのかも知れない。
最近ではコンピュータもネットワークに接続されているのが当たり前になってきてて、いかにネットワーク上のデータをうまく扱うかが焦点になってきていると思う。ローカルのデータとネットワーク上のデータをうまく扱う技術ってのが今後のトレンドなんだろうな。Googleデスクトップなんかがいい例じゃないかしら。なんか検索したいときに、ローカルとネットワーク上のデータをいっしょくたで検索出来る。ローカルとネットワーク上の垣根をなくそうとしてるのかな。コンピュータがネットワークに参加するなら、自分の知らないことを他のコンピュータに尋ねたっていいと思う。実際、P2Pの技術を応用して、自分の知らない検索結果を他のクライアントから取得して検索ヒット率の向上を目指す検索エンジン(システム?)も存在してるし、今後P2Pはもっともっと研究が進むんだと思う。
そうなると、コンピュータが人間のように新たな手法や処理術を提案してくる時代が来るのだろうか? いややっぱ来ないんだと思う。どっかにある術を調べてきて利用するくらいにはなるだろうけど、零から何かを作り出すだけの能力は持ち得ないんじゃないかな。人間がハネを持たないように、コンピュータも頭脳は持たない・・・、なんてのは将来”妄言”と言われてしまうのかしらw

2007年3月8日木曜日

[mixi] 6100人目〜

mixiの足跡が6100人となりました〜^^

mixiからのお知らせです。code_air_ edge さんのページ全体のアクセス数が
6100アクセスを超えました。記念すべき6100アクセス目の訪問者は
う゛ぇるにゃー さんでした!
はい、Velnirでした!ふむ、Blogで足跡を残すとタグで検索を掛けられるから楽になるかな? 足跡帳を作る必要が無くなりそうだw 過去の足跡を調べる必要くらいはありそうだが・・・、気が向いたらやるか(ぁ

さて、今回の前後賞ですが・・・こんな感じになりました!


  • 2007年03月08日 09:51 ひでと 

  • 2007年03月08日 07:41 桜農場

  • 2007年03月08日 00:57 う゛ぇるにゃー 

  • 2007年03月08日 00:01 will  

  • 2007年03月07日 22:28 角


はい、ということで前後賞はwillたんと桜農場さんでした!桜農場さんは私多分知りません・・・!w まぁそういうこともあるってことで^^;
ふむ、コピペするとリンクまで反映されちゃうか・・・、ま、ええか?
編集情報まで反映されるのはWordの嫌いなところやけど・・・、このあたりは融通が利きすぎるというか何というか^^;ま、多分いいところではあるんやろうけど。
追々慣れていくこととしましょう。
さてお次は6200。mixiで日記を書かなくなったら足跡はやはり減るのかな・・・?まぁそれはそれということで。適当に遊びにいらしてくださいな^^

※追記
え〜、コピペした結果があまりに無惨だったので修正しました^^; ふむ、このあたりちょっと融通利かせて・・・?w

2007年3月7日水曜日

今月頑張りたいこと

・WAVEファイルの読み込み関数作成。左右チャンネルを整数で取り込み、場合によっては正規化まで。
・.NETによる研究用プログラムのフロントエンド作成。できればManaged DirectXでグラフ描画まで持って行きたい。
・Pythonの基本文法を覚える。ささっと書けるスクリプト系は知っていると何かと便利。
・Inkscapeの扱いを覚える。基本的な扱いは覚えたから、後はトライアンドエラーかな?
・ドキュメント作成。過去のプログラムのドキュメント作成と、今後のプログラムのドキュメント作成補助に関するツールの扱いを覚える。過去のプログラムは整理したくないかも・・・。

こんなところか。結構多いな・・・。できるだけ潰していこう。今がチャンス!のはずだしね・・・。

2007年3月6日火曜日

2007年3月5日月曜日

暴風警報

朝起きたら暴風。こりゃ今日は自転車きっついな〜と思案していたら、なんと兵庫県播磨南東部南西部暴風警報発令。

・・・、今日は休むよママンOrz

暴風警報の中自転車漕いで学校に行く気にはならないよ!
ってな訳で、今日は家で研究でもしようかなと思います。
ちとメールチェックだけはしたかったけれど、仕方ないよなぁ・・・。やっぱ転送設定はしておくべきか・・・^^;

2007年3月4日日曜日

BreakTime

今日はwillたんとVelnirとで昼からビリヤードに。
13時に駅前で集合という予定だったので、午前中に買い物へ行くことに。まずは文房具店へ。ふらふらと眺めていると、定価200円(税抜き?)の万年筆発見! ちょっと面白そうだったので衝動買い(笑) 今回は黒にしましたが、今度は赤でも買ってみようかなと思っていたり。カートリッジインクは交換可能と言うことなので長々と使えそうです。
書いてみた感じは割と書きやすかったですね。初万年筆として気兼ねなく買える値段だったのでお試しとして使っていこうかと思います^^
ほいでもって次は本屋へ。GBの新刊出てるだろうなと思って探しに行ったのですが・・・、ない! おっかしいなぁ・・・。後で発売日調べておくか・・・。確か2月下旬だったと思ったんだけどなぁ・・・。
で、そうこうしてるうちに集合時間になりそうだったので、いったん家に帰って荷物を置き、駅へ。すぐにwillたんと合流し、少ししてVelnirの車へ乗り込みましていざ姫路へ。
Velnirが「寄りたいところがある」と言っていたので、どこに行くのかと尋ねたらどうも文房具店だったようで。手帳のリフィルがなくなりそうだから補充とのこと。
まずは文房具店へ行こうかと言うことで文房具店へ。これがまた結構な規模でして、文房具だけを扱っているお店としてはあの規模は初めて行きましたねぇ。結構な広さでした。
で、みんなして適当に品物眺めてました。私が心惹かれたのはミニサイズのペン類ですね。ストラップがついててケータイとかにぶらさげられるやつ。単純にかわいいってのと、携帯するには便利そうやなってところが好感度高しですね(笑) まぁ眺めるだけで終わりましたが。
willたんはリラックマあたりを眺めてましたねぇ。甲斐甲斐しいことで(笑)
で、どうもVelnirの目的の品物はなかったようで、帰るのかな〜と思っていたら・・・、ボールペンが気になったようでなにやら店員に値段確認。で、どうやらご購入の様子。
5000円程度でしたけれどね!
いや〜さすが。私はボールペンにそこまでは出せないなぁ^^;まぁ趣味というかお金を掛けたいところなのだろうと言うことで生暖かい目で見守らせていただきました(ぁ
で、買い物も済んだところで目的地へ到着。ここでVelnirが会員カードを忘れていたり。
まぁそこで終わらないのが我ら3人。
「こで様、会員カードの期限が切れておりますので更新に300円かかりますがよろしいでしょうか?」
「おいおい、期限切れてるじゃねーかよwあかんやんかw」
「うるせーな、そんなん使ってなかったら知らんやんw つか来て使ってみるまで分からんやん!w」
「申し訳御座いません、will様もカードの期限が切れてしまっておりまして・・・。」
「お前もかよw あかんやん切れてるやんw」
「・・・、うるせーな、そんなん使ってなかったら知らんやんw つか使っt(ry」
と、言うことでカード忘れに期限切れの3人でした(笑)
まぁ特にトラブった訳でもなくビリヤードの準備を借りてビリヤード台へ。まずはジュースとお昼ご飯のカレーを確保(ぇ お昼集合だったのでご飯を食べてなかったんですよね。で、今回もお世話になったネカフェはジュース以外にカレーやアイスクリーム、ポテトが食べ放題。つーわけでお昼ご飯としてカレーをたらふく食べておきました(笑) 2杯食べてたのは私だけでしたが(ぁ
2時間ほどビリヤードを楽しんだ後、気分転換に(?)ダーツへ。相変わらず下手くそですが楽しいですね^^ 実は卒研発表後のWiiプレイで腕が筋肉痛だったりしたのですが、ダーツやったので明日もまた筋肉痛を引きずりそうですOrz
ダーツを1時間ほど楽しんだ後、今度は帰る前に電器屋へ。いやー最近のメモリの安さは驚きですね・・・。ひでとさんが「microSDカード1GB2000円」なんて話をしてましたが、そこまでは行かなくても1GB3400円で売ってました。暴落したもんだなぁ・・・。衝動買いしちゃいたくなる値段だよw
Velnirはマウスを見に来ただけのようだったのですが、めぼしいものはなかったようです。私達も冷やかすだけ冷やかして帰りました。
いや〜なかなか充実した休日だったかな。久々に遊び倒したって感じ。
今度はカラオケに行きたいなぁ。とりあえず、叫びたいw

2007年3月2日金曜日

mixiと日記を統合

こちらでの日記とmixiでの日記を統合しようと思います。
こちらの方がHTMLタグを自由に扱えたりしますので^^
と、言うことで今後ともよろしくお願いいたします。