vadplus_x64 公開 (http://labs.lpm11.net/wiki/index.php?vadplus_x64)
再生している音がそのまま渡される「ステレオミキサー」 (別名「再生リダイレクト」とか「Wave出力ミックス」等) が Vista に全然無いのですが、なんと typewriter 様がそれを実現するドライバ vadplus を作りました: http://kram.dip.jp/#vadplus。
しかし、残念ながら 64bit 対応していないのでコンパイルしてみました。説明及びダウンロードはこちらからどうぞ。
Rails+MySQL @ Windows で migration がうまくいかない件
libmysql.dll が無いと怒られたから入れてあげたところ、今度は↓のようなエラーが帰ってきてうまくいかなかった場合。
> rake db:migrate --trace (in 〜/どこか) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:migrate ** Invoke db:schema:dump (first_time) ** Invoke environment ** Execute db:schema:dump rake aborted! Mysql::Error: Commands out of sync; you can't run this command now: SHOW TABLES 〜/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log' 〜/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute' 〜/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:436:in `tables' ...
libmysql.dll は MySQL 5.0 付属のものだとちゃんと動くようです。5.1 だと↑のようになりました。
「ボッコちゃん」を実装する (1)
「ボッコちゃん」とは星新一のショートショートに出てくるロボットの名称で、作品のタイトルにもなっている。しかしロボットとは言っても反応は「簡単な受け答えができるだけ」である。
「きれいな服だね」 「きれいな服でしょ」 「何が好きなんだい」 「何が好きかしら」 「ジンフィーズ飲むかい」 「ジンフィーズ飲むわ」
この反応が人工無脳そっくりなので、衝動的に作ってみようと考えてみた。
★ 実態
実際にやってみた (似非ボッコちゃん: 今回実装を試みたプログラム)。
客の発話 | 似非ボッコちゃんの発話 | ボッコちゃんの発話 |
---|---|---|
名前は | ボッコちゃん | ボッコちゃん |
としは | まだ若いのよ | まだ若いのよ |
いくつなんだい | まだ若いのよ | まだ若いのよ |
だからさ…… | - | まだ若いのよ |
きれいな服だね | きれいな服でしょ | きれいな服でしょ |
なにが好きなんだい | なにが好きかしら | なにが好きかしら |
ジンフィーズ飲むかい | ジンフィーズ飲むわ | ジンフィーズ飲むわ |
★ ボッコちゃんの動作
基本的には以下の様な仕組みになっているようである。
この「簡単な受け答え」というのが非常に上手くできている。
- 5W1Hの質問に対しては、相手の台詞を繰り返しはぐらかす。
- Yes/Noの質問に対しては、全てYesで答える。
- 質問ではない台詞に対しては、ただ繰り返す。
たとえば、こんな感じだ。
我田引水:ボッコちゃん 星新一 - livedoor Blog(ブログ)
- 「お客のなかで、だれが好きだい」→「だれが好きかしら」
- 「ジンフィーズ飲むかい」→「ジンフィーズ飲むわ」
- 「もう来られないんだ」→「もう来られないの」
なお、答えられない場合は「マスター (開発者) に知らせる」と言う機能がある。
以上の情報を元にボッコちゃんの実装を試みた。環境は Ruby、形態素解析には Mecab*1 を利用した。また、品詞の活用が必要となる際には茶筅*2の cforms.cha を利用した (続く)。
openSUSE 11.1 で syslog-ng の program とかが上手く行かない問題
例えば php-syslog-ng を使うために program を使って MySQL サーバにログを入れようとしても、
Feb 7 09:56:13 hogepc syslog-ng[6626]: I/O error occurred while writing; fd='11', error='Broken pipe (32)' Feb 7 09:56:13 hogepc syslog-ng[6626]: I/O error occurred while writing; fd='10', error='Broken pipe (32)' Feb 7 09:56:13 hogepc syslog-ng[6626]: I/O error occurred while writing; fd='11', error='Broken pipe (32)' Feb 7 09:56:13 hogepc syslog-ng[6626]: I/O error occurred while writing; fd='10', error='Broken pipe (32)'
みたいなエラーが大量に出て上手く行かない。
時間を掛けまくって分かったが AppArmor の設定が厳しいのが悪いらしい。と言う訳でこんな設定を /etc/apparmor.d/sbin.syslog-ng に追記 *1。
#include/usr/bin/mysql rmix, /etc/my.cnf r, /bin/bash rmix,
プロファイルの reload は↓で可能。
# apparmor_parser -r /etc/apparmor.d/sbin.syslog-ng
一応これで動いた。アクセス拒否のログは /var/log/audit/audit.log に書かれているので動かない際は要チェック。面倒なら「complain syslog-ng」とか打って監視を止める方法もある (もちろんセキュリティ的にはよろしくないけど…)。
*1:openSUSE 11.1 の yast から編集しようとしても上手く行かないので直接編集
ATOK で Ruby の実行結果を返すプラグイン (id:secondlife:20081030:1225344730)
「ATOK で入力中に Ctrl + Insert で Ruby の実行結果が変換され」る、id:secondlife さん作の素敵なプラグイン。簡易電卓としても便利。
変換候補が全角だと怒られるので、実コードも公開されている事だし折角だから私用に全角→半角ルーチンを仕込んでみた (Ctrl+Insert を押す前に F8 を押せば良いだけの話なのですが!)。と言う訳でダウンロードはこちらからどうぞ。
コードはこちら。私の変更部分に関しては好きにして下さい。
#!/usr/bin/ruby $KCODE = 'u' require 'timeout' require 'jcode' module Atok_plugin def run_process( a_request_data ) res = nil composition_string = a_request_data['composition_string'] composition_string.tr!('a-zA-Z0-9−,.!”#$%&’()=〜|^@[`{;:]+*}/<>?_¥','a-zA-Z0-9\\-,.!"#$%&\'()=~|^@[`{;:]+*}/<>?_\\') timeout(3) do res = eval composition_string end {'candidate' => [{'hyoki' => res.to_s, 'comment' => res.to_s}]} rescue Exception => e {'candidate' => [{'hyoki' => 'エラーが発生しました', 'comment' => e.to_s }]} end end
多分高度な使い方をしなければ副作用は目立たないかと (副作用が気になる方は F8 を押しましょう :P)。