TVのニュースを見てたら、警察がダンボール箱に紛れて、PCのディスプレイを押収してました。何を調べるんでしょう…?
友人が課題でC++を使うので、自分のノートPCにC++コンパイラを入れたいとの事。とりあえずBCCを入れたものの、何故か<iostream>のインクルードに失敗するとか。それはbcc32に-Iオプションを付けると回避できたんですが、変なリンカエラーが出て結局メイクできず。
しょうがないのでgccをインストール。と言っても彼はナローバンドなので、僕がCygwin(と念のためMinGW)を落としてCD-Rに焼いて持っていく事に。ところが何故かCD-Rがちゃんと焼けない。焼いたCD-Rを入れても「ディスクを挿入してください」と出て読めず。
しょうがないので彼のPCにUSB端子が付いてる事を確認して、USBメモリで持っていきました。ところが彼のPC、確かにUSB端子は付いてるんですが、微妙に奥まっててUSBメモリの本体が邪魔になって差さらない。
しょうがないので最後の手段、フロッピーです。MinGW(15MB)を11ファイルに分割し、1枚だけ持ってたフロッピーを11往復させてコピー。で、インストール。やっとこさgccが使えるようになりました。
C++コンパイラのインストールにここまで苦戦したのは初めてです(笑)。
色々用事が入ったり、Age of Kingsにハマってたり(プレイしてたら母親に「マリオ?」と訊かれました。なんでやねん)して、ロイディがなかなか進みません。焔丸さんからもらったアイディアが、僕が考えてた改良案に近かったので、それを優先して実装しつつ、年明けぐらいにVer.3.04が出るといいなあ、て感じですね。
どんなアイディアかと言うと、一言で言えば「特定人物の物まね」。今のロイディは誰の発言も無差別に採用しますが、「特定の人の発言のみを採用」「特定の人の発言のみを採用しない」と言う事ができるようにすれば
てな利点があります。実装は割と簡単そう。
…を書こうとしつつだいぶ経ってしまいました。徃住先生が作ろうとしてる音楽人工知能は、音楽を受け取ると、理解した結果として「感情」を出力する…らしいです。うーん、音楽の理解は感情だけで表せるものなのかな…?あまりピンと来ません。それと、Music XMLってのが有って、これとWebを使えば、人工知能が巷の音楽を集めやすくなるとか、(XMLがタグを使って情報に意味を持たせるように)人工知能の学習のヒントになるような付加情報をタグを使って(作曲者が)付けてくれれば…とか、そんな話でした。
バイトを始めました。Web開発系。
文系の授業で徃住先生の「音楽と人工知能」の話を聞きました。そこで紹介されたEMIという作曲人工知能は、ある作曲家(例えばモーツァルト)の曲をばらばらに分解し、その人の特徴となるパターンや曲の運び方を抽出して、それらの特徴を残しながら曲のパーツの順番を入れ替えたり置換したりして、「えせモーツァルト曲」を作り出すらしいです(あまりよく分かってないです。違ってるかも)。なんかちょっとロイディっぽい(笑)。徃住先生曰く「この方法には『人間が音楽を聞いて理解し、楽しいと感じる』という行為が入っていない」とか。そういう「理解の過程をすっ飛ばして、それっぽい出力にする」所も人工無能っぽいような…。
でも、そもそも「音楽を理解する」って何?てのがはっきりしなくて、そこが「音楽の人工知能の分野が一般的な人工知能の分野と違う所」らしいです。で、徃住先生はその「音楽を理解する人工知能」を作ろうとしてるとか何とか。その話は来週聞ける…かも。
どうも「人工知能」って打とうとして「人工無能」って打ってしまう(苦笑)。
FF VII Internationalをクリアしました。長かった。実は初めてです。これぐらいの時代遅れはよく有る事…。これでサントラが買える。
それと、自宅のプリンタを(親が)買い換えました。前のEPSON PM-830Cが不調で、印刷すると青や赤の線が入るようになったので、CANONのPIXUS 860iに変えました。CANONはヘッドの交換ができて、今回みたいなトラブルに対応しやすそうなのが1つ。それと、EPSON用の双方向通信対応のプリントサーバ(PRICOM)で、USB用のが無いってのがもう1つ。本体には大抵インク切れランプが1つしかないので、双方向通信非対応だと、「インク切れになったらどっかのPCに直接接続しないと、どのインクが切れたのか分からない」なんて面倒な事になるんじゃないかと思いまして。何かしら、本体だけで調べる方法が用意されてるのかな…。
学内で帰り道に聞こえてきた先生達の会話。
先生A「いやぁ、多摩って八王子だと思ってたんですが、違うんですねぇ。」
先生A「東京都だったんですねぇ。」
…いや、八王子も一応東京都なんですけどね…。
学祭が終わりました。SSBのしゃべロイディは、サークル内の来場者人気投票で15研究室中7位というフツーの人気でした。いろいろ思った事。
ロイディ自体の課題としては、
もっと細かい課題(自発発言とかDB化とか)が色々有るんですけどね。そっちが先かな…。
うちのサークルも準備でおおわらわです。準備しつつ、Modern C++ Designを読み返してます。やっぱりこれは変態的だ、と思いますが、VC7.1では(ちょっとしか試してませんが)通るっぽいですし、gccでも通るのかな?(こっちはまるで未確認)実はかなりLoki使うのが現実的になってきたっぽいですね。使う分には便利そうですし。BCC(5.6.4)では残念ながら、ちょっと使おうとしたら「コンパイラの内部エラー」でしたが…。
結局、音声認識、読み上げはViaVoiceになりました。Juliusはフリーなのが良いんですが、認識率が今一なので。20%ぐらいだったかな…。マイクの質とかによるんでしょうけど。
ViaVoiceはSAPIに対応してるはずなんですが、何故か[コントロールパネル]-[スピーチ]のリストに現れず。エディタへの直接入力はできる事が分かったんで、「入力された文字列をTCPに飛ばすエディタ」を作って対処。
そうそう、この前MRテクノロジーEXPOに行ってきました。稲見先生の光学迷彩初体験。あとはシャボン玉の奴が面白かったです。
学祭の展示品として「しゃべロイディ」を作ってます。これは人工無能 ロイディに音声認識エンジン(Julius)と音声読み上げエンジン(MSがタダで配ってる奴)を積んだ、「声に声で応答する人工無能」です。興味がある人はぜひ10/25、10/26に東工大にどうぞ。
音声認識はViaVoiceになるかもしれないので、SAPIに対応。SAPI使う部分はVCのサンプルをいじって使う事に。人工無能はRuby、GUIはBCB。そんな訳で、開発環境がばらばらのアプリ間で通信する方法としてTCP/IPを採用しました。全部ローカルなのに2回もTCP/IPで飛ばしてます(笑)。
その時の副産物がC++用のgimite/socketです。Win/UNIX対応で、ソケットをiostreamとして扱ったりできます。
G Checkはバージョンアップしました。Devasの方はぼちぼち進行中。
自由課題も終わって一区切り。タスクを整理してみます。
あと個人的なタスクが少し。まあぼちぼちと…。
Boost.Regex(正規表現ライブラリ)では、今の所gcc上ではワイド文字(wchar_t)正規表現が使えません。gcc上でワイド文字正規表現を使う必要に迫られたので、ごそごそいじってみました。その結果、一応cygwin gcc 3.2上でワイド文字正規表現が使えるようになりました。Boost情報にパッチを置きました。
上の2つに関連は無いです(汗)。ロイディは最近よく他のチャンネルに遊びに行ってます。実はWeb上でWideサーバ上の他のチャンネルに自由に招待できるのです。ぜひどうぞ。今メンテ中ですが(汗)。出先のチャンネルではそれなりに楽しんでもらえてるようです。色々改良したいんですが、自由課題(C++ばりばり)の締め切りが迫っててあまり暇が無いです…。
自由課題の担当の先生からOCamlというプログラミング言語を紹介されたので、とりあえずOCamlプログラミング入門を読んでみました。分かりやすいんですがこのページだけだと情報が少ないです。今度リンク先のページも読まないと。何やら、「変数の型を宣言しないけど、型がコンパイル時に決まる」らしいのです。そのために型推論というのを使うらしいです。ひょっとすると凄いのかもしれません。も少し調べてみます。
小ネタ。秀丸で
loadfile filename;
という1行だけのマクロを登録すると、「今開いているファイルをリロード」できます。プログラムの出力ファイルを監視する時とかに結構便利です。
相変わらず月記になってますが。てかここの存在忘れてました(笑)。IRC人工無能 ロイディを公開しました。って話をまだここで書いてなかったんですね…。ちょこちょこバージョンアップ中です。てか最近そればっかりです。大学の自由課題みたいなのが有るんですが、あまり進まず(汗)。Wideサーバのロイディ公開チャンネルreudyroom:*.jpには、Maroさんの人工無能とぼっちや焔丸さんによるロイディクローン、はねも来ています。ロイディと愉快な仲間達(?)の迷言集が有ります。
マニュアルとかをXMLで書いておけば、そこからHTMLとかPDFとかManとかを生成できる〜って感じのもの。触ってみたのでメモ。ここが本家らしい。DocBook で文書を書こう!が分かりやすくて参考になりました。DocBookファイルそのものの書き方はこっちを参照してください。ここではコマンドの使い方を補足。
まずCygwinのsetup.exeでdocbook-xml42、docbook-xsl、libxml2、libxsltを選んでインストール。DocBookファイルsample.xmlを書く。以下、Cygwin上で
export SGML_CATALOG_FILES=/usr/share/docbook-xml42/catalog.xml # 準備
xmllint --noout sample.xml # 整形性チェック
xmllint --noout --valid --catalogs sample.xml # DocBook DTD準拠チェック
xsltproc --catalogs -o sample.html /usr/share/docbook-xsl/html/docbook.xsl sample.xml # HTML化その1(単独ファイル)
xsltproc --catalogs /usr/share/docbook-xsl/html/chunk.xsl sample.xml # HTML化その2(複数ファイル)
完全に「月記」化してますが(汗)。何となく仮想会話。
A 「凄く誤解を招きやすいけど正しい表現をすると、『母親が実家に帰った』んだ。」
A 「2週間ほど、ばあさんの世話をしに行ったんだけどね。」
B 「…それは確かに誤解を招くけど正しい。」
A 「誤解の原因は、C++で言うと、『変なテンプレート特殊化』が有るせいだよね。」
B 「ああ、『単にbool型のvectorを使いたいだけなのにvector<bool>になっちゃう』みたいな。」
A 「そうそう。」
そーいや、特殊化されてないbool型のvectorを使う方法って有りましたっけ?(ってここで訊いてもな…)
うお、1ヶ月も間が開いてますね。どこが日記なのやら(苦笑)。これは有名かもしれませんが、e-Wordsというコンピュータ用語辞典ページが有ります。3990語収録だそうです。解説の中の各用語にはリンクが張られていて、解説中の分からない単語をさらに調べる事ができます。
RubyからBCBで作ったDLLを呼び出せるようにする。ちょっと込み入ってるので、分かった事をページに纏めました。
掲示板で匿名希望さんに教えていただきました。 gdb の代わりに insight というコマンドを使うと、めでたくGUIになりました。匿名希望さん、ありがとうございます。
Rubyを使ったIRCボット(人工無能)作りにハマってて、更新を忘れてました。Rubyの公式ページ。Windows用バイナリ置き場。現時点では ruby-1.6.8-1-i386-mingw32.tar.gz てのが安定版みたいです。リファレンスはここ。HTMLヘルプ(*.chm)版の方がキーワード検索が使いやすいです。dRubyなんてものも。.NETみたいに、ネットワーク越しにメソッド呼び出しができるらしいです。あ、人工無能の方は今の所非公開チャットにいるので、公開できません。
Outlook Expressが、メール作成中に改行を入力すると時々落ちるようになりました。これは「いい加減OEなんて使うのはよせ」というお告げだと思って、Becky!を導入しました。試用中です。今の所、起動が速い事以外はOEとそんなに変わらない気がします。プラグインで拡張できるのは面白いですね。Outlook Expressからのデータの移行法。
ディベロッパーオンザウェブでは、WinCVS(Win用のGUIのCVS)のインストールからSSHを使った接続までが画面写真入りで紹介されてます。UNIX版CVSについては、バージョン管理システムCVSを使うの「入門CVS」に一通り載ってる感じです。
Boost翻訳プロジェクトによるBoost 1.29、1.30の日本語版ドキュメントの初版がリリースされました。まだ完全には翻訳されてないですし、1.30での更新はほとんど反映されてませんが。トップページがまだ更新されてませんが、「ダウンロード」の所からリリース版のアーカイブを入手できます。
が、出てますね。ここです。#4って事は、#1〜#3も出てたんでしょうか。全然気付きませんでした。BCB6は今まで、開発環境が時々メモリアクセス違反を出すと言う怪しい状況だったんで、それが改善してると嬉しいな。
早くも日記とは言えない更新頻度になってますが(苦笑)。Boost C++ Libraries 1.30が出ましたね。BoostはC++の準標準ライブラリです。1.30では、普通に便利そうなfilesystemとマニア受け向けのspiritが目玉でしょうか。
filesystemは、ディレクトリ構造をポータブルに扱うライブラリです。コンパイルが要るのがちと面倒ですが、しょうがない所でしょうね。
spiritは、C++の式でBNFもどきを作って構文解析しようというモノです。
PHPのマニュアルですが、こっちが本家みたいです。関数の検索機能がついてて便利なんですが、うちのOperaでは一部のフォントが崩れます。うちのマシン特有の症状みたいですけど。参加してるプロジェクトの都合でPostgreSQL(日本語マニュアル)を使う事になりました。SQLは物によってびみょーに違うのが嫌な感じですね。ついでにPHPLIB。ユーザ認証などのPHPライブラリです。
さっき電話がかかってきました。女性の声で、宣伝のようです。何かごちゃごちゃ言ってたんで、
「えっと、どんなジャンルの宣伝ですか?」
と訊いた所、
「何ジャンルって死んで来い馬鹿」
と言われて電話が切れました。そんなよく分からない事でキレるなら電話してこないでください。とりあえず親には「僕に女の人から電話が来たら大抵宣伝だから」と言っておきましたが…。
問題の信号機ですが。見た目、特に変化がありません。「何が変わったんじゃ〜」と思ってたら、スクランブル信号(でしたっけ、歩行者の信号が一遍に全部青になる奴)になってました。なるほど。
Cygwinのgdb(GNU Debugger)はGUIだという話なんですが、うちの環境ではGUIになりません。謎です。誰か助けてください。そもそもgcc使ってないんで、別にいいんですけどね。BCBのデバッガはもう少し使いやすくならないものか。
この前、作る目的になった出来事以来、初めてWebじゃんけんを使ってる人を見ました。それで調子に乗って、WebじゃんけんをPHPで作り直す事に。質問の木の移植は放置。新しいWebじゃんけんはチャット風になります。だいたい出来上がったんでXREAを取ってUPしようとしたら、定員オーバと言われました。しくしく。新しいサーバができるまで待たなきゃならないようです。
これ。リンク集にも追加しましたが、割といい感じ。専門用語の英和/和英辞書。かなりマニアックな用語もカバーしてるようです。Boost翻訳で活躍。
某信号機がどう変わったのか気になる所ですが、27日まで大学に行く予定は無し。
よーするに、データベースを使ったWebアプリ(のデバッグ環境)です。参考にしたものは、日経ソフトウェア01年7月号、02年7月号、03年3月号。インストール方法。PHPマニュアル。MySQLマニュアル(よく使うのはこの辺とこの辺)。PEARマニュアル。Smartyマニュアル。
PHPのマニュアルは、旧版用の方が機能が少なくて見やすい。
PHPの最新の奴にはPEARが付いてないっぽかったので、Ver.4.2.3をインストール。PEARは、色々なデータベースを扱えるPHP標準ライブラリです。SmartyはPHP用テンプレートライブラリ。と言ってもSTLみたいなのじゃなくて、Webアプリの見た目(HTML)と実装を分離するものです。
とりあえずネタが無いので質問の木を移植中。少し愉快が低下して止まってますけど。纏まったものができたらrogiken.orgかXREAに場所を借りてUPしようかと。
某O岡山駅前の交差点の信号の手前に大きな看板が。
「この信号機の表示は2月21日に変わります。」
な、何がどう変わるんでしょう。赤と青が逆になったりするんでしょうか。どきどき。
Boost翻訳プロジェクト進行中。
これはプログラミングの情報へのリンクを中心とした日記になる予定です。要らん事もぶつぶつ書くかもですけど。少なくとも、ゼルダの伝説のプレイ日記ではないので注意が必要です。日記ですけど、毎日は書きませんし、1日に2つ書くかも。要は適当です。
思うに、こういう事を始めるのは必ずテスト前かテスト中ですね。