棚からパルチャギ

日々の雑記、ニュース拾いとか

2008. 12. 15

openpear/Net_Q4M

Q4MのPHPインターフェースラッパを書いたのでopenpear.orgで公開してみました。

基本的な使い方はこんな感じで。

$queue = new Net_Q4M(); $queue->connect('mysql://user:pass@localhost:3306/database'); $row = $queue->dequeue('my_queue'); if (process_row($row)) { $queue->end(); } else { $queue->abort(); } $queue->disconnect();
dequeue()を呼ぶとキューのレコード情報が返ります。 内部的にはqueue_wait()を発行しているので、取得したキューの値はこの接続のみが扱えることになります(OWNERモード)。

キューの値は配列で返るので適当に処理します(上のサンプルだとprocess_row()のところ)。 処理に成功した場合はend()を呼ぶことでキューから値を削除します。 逆に失敗した場合はabort()を呼ぶと値はキューに戻され、他の接続からも参照可能になります。

取得したキューの値はend()が呼ばれるか次のdequeue()が呼ばれた時点で削除されます。 また、end()もabort()も呼ばれないまま切断された場合は、取得した値はキューに戻ります。

// キューへの接続 $queue->connect('mysql://user:pass@localhost:3306/database'); $queue->connect('mysqli://user:pass@localhost:3306/database'); $queue->connect('pdo_mysql://user:pass@localhost:3306/database');
接続にはPEAR::DBと同様の書式のDSNを指定します。
phptypeにはmysql/mysqli/PDO(mysql)の3種類が指定可能です。

// キューから値を取得 $queue->dequeue('my_queue', 5); $queue->dequeue('my_queue', 'my_queue2', 'my_queue3', 10);
dequeue()を発行してもキューに値がない場合、値がinsertされるまで一定時間待機します。 このタイムアウト時間はdequeue()の最後の引数で指定します。デフォルトは10秒間待機します。

また、Q4Mでは取得先のキューを優先度順に複数指定する事が可能です。 この場合はdequeue()の引数に取得先のキュー(テーブル名)を優先度の高い順に指定します。 キューを複数指定する場合、タイムアウト時間を省略することはできません。

// キューに取得条件を指定 $queue->dequeue('my_queue:id=1000'); $queue->dequeue('my_queue:score<30');
キューに取得条件を付加する場合は、テーブル名の後ろに「:」で条件式を繋いで記述します。 条件指定には様々な演算子が使用できるので詳しくはQ4Mのドキュメントを参照してください。

// キューに値を追加 $data = array( 'user_id' => 1000, 'message' => 'Hello!' ); $queue->enqueue('my_queue', $data);
キューに値を追加するときはenqueue()を使用します。
テーブルのカラムに対応したキーと値を保持する連想配列を引数に渡して実行します。

// キューの状態を取得する $result = $queue->status(); var_dump($result);
status()を呼ぶとキューの状態を保持する配列が返ります。 SHOW ENGINE QUEUE STATUS; の実行結果で得られる情報を連想配列化したもので、Queue::Q4M::Statusを見てなるほどなーと思って真似してしまいました。

ということで、リポジトリは誰でも編集可能なはずなので適当に弄ってあげてください。

2008. 12. 14

MacBookにQ4Mをインストールしたメモ書きの補足
make test について省略したので追記。
というか長くなったので別エントリにしてみた。DBD::mysql入れるのが面倒だった。。。
$ sudo cpan cpan> install Data::Compare cpan> install DBD::mysql
DBD::mysqlのビルドは失敗するので、LeopardにMySQLとDBD::mysqlを入れる方法を参考にmakeしなおす。
$ sudo ln -s /opt/local/lib/mysql5/bin/mysql_config /usr/local/bin/mysql_config $ sudo su - # cd /var/root/.cpan # cd build/DBD-mysql-XXXXXXXX # perl Makefile.PL \ --cflags=-I/opt/local/include/mysql5/mysql \ --libs="-L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto" # make # make install
自分の環境だけかもしれないけど、/opt/local/bin/perl と /usr/local/bin/perl がどちらも入っていて後者だと@INCが違うところを参照してしまうので、テストスクリプトのperlパスを修正する。
$ cd /usr/local/src/q4m-0.8.3 $ vi run_tests.pl - #!/usr/local/bin/perl + #!/opt/local/bin/perl
make test する。
$ DBI='dbi:mysql:database=test;host=localhost' \ DBI_USER='username' \ DBI_PASSWORD='password' \ MYSQL_UNIX_PORT=/opt/local/var/run/mysql5/mysqld.sock \ make test ... Multireader benchmark result: Number of messages: 6400 Number of readers: 32 Elapsed: 25.878 seconds Throughput: 247.315 mess./sec. ... Multi-reader-writer benchmark result: Number of messages: 6400 Number of readers: 32 Elapsed: 43.944 seconds Throughput: 145.641 mess./sec. ... Multi-reader-writer benchmark result under semi-starvation: Number of messages: 6400 Number of readers: 32 Elapsed: 96.602 seconds Throughput: 66.251 mess./sec. ... All tests successful. Files=17, Tests=68921, 2240 wallclock secs (20.83 usr 2.26 sys + 150.25 cusr 22.16 csys = 195.50 CPU) Result: PASS
ちなみに、上のは--with-sync=fcntlの場合のベンチマーク(Cure2Duo 2.1GHz/Mem 4GB)。
--with-sync=fsyncにした場合はこんな感じ↓
... Multireader benchmark result: Number of messages: 6400 Number of readers: 32 Elapsed: 1.725 seconds Throughput: 3711.007 mess./sec. ... Multi-reader-writer benchmark result: Number of messages: 6400 Number of readers: 32 Elapsed: 2.724 seconds Throughput: 2349.228 mess./sec. ... Multi-reader-writer benchmark result under semi-starvation: Number of messages: 6400 Number of readers: 32 Elapsed: 3.445 seconds Throughput: 1857.784 mess./sec. ... All tests successful. Files=17, Tests=68921, 289 wallclock secs (17.33 usr 2.06 sys + 144.66 cusr 20.77 csys = 184.82 CPU)
10倍以上速いよ!! この辺の話なのかな。
試験環境なのでデータ飛んでも困らないし、当面はfsyncのままでいいような気がする。
MacBookにQ4Mをインストールした

…ので、そのメモ書き。
http://q4m.31tools.com/

MySQL5.1をインストールする
5.1系はまだdevelにしかないので、5.0系をインストールしている場合はdeactivateする。 データベースの初期化とかパスワードの設定とか自動起動とかの諸々は割愛。

$ sudo port deactivate mysql5 $ sudo port install mysql5-devel +server

Q4Mをダウンロードしてビルドしてみる。

$ cd /ur/local/src $ wget http://q4m.31tools.com/dist/q4m-0.8.3.tar.gz $ tar -zxf q4m-0.8.3.tar.gz $ cd q4m-0.8.3 $ ./configure --prefix=/opt/local/lib/mysql5/mysql --includedir=/opt/local/include ... checking for mysql source code... configure: error: "no mysql source provided"

MySQL本体のソースが必要みたいなので用意する。
MacPortsのソースはビルド完了後に削除されてしまうので、別途ダウンロードして展開しておく。

$ cd /usr/local/src $ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/ $ tar -zxf mysql-5.1.30.tar.gz

再挑戦。

$ cd /usr/local/src/q4m-0.8.3 $ ./configure --prefix=/opt/local/lib/mysql5/mysql \ --with-mysql=/usr/local/src/mysql-5.1.30 \ --includedir=/opt/local/include ... checking for mysql source code... "/usr/local/src/mysql-5.1.30" failed to lacate mysql 5.1 installation Please specify mysql 5.1 directory with --prefix option.

ライブラリヘッダのパスが解決できないみたいので、prefixを変更してインストール後に調整することに。 それだけだと微妙に通らないのでシンボリックリンクも使ってちょっと強引に回避する。

$ cd /opt/local/include $ sudo ln -s mysql5/mysql mysql $ $ cd /usr/local/src/q4m-0.8.3 $ ./configure --prefix=/opt/local \ --with-mysql=/usr/local/src/mysql-5.1.30 \ --includedir=/opt/local/include

configureは通ったのでmake。こける。
boostが必要とかヘッダフィルが読み込めないとかライブラリがどうとかいろいろ怒られるので頑張る。 CPPFLAGSとかには mysql_config -libs の出力結果を参考に指定するといいらしい。

/opt/local/lib/mysql5/bin/mysql_config -libs
boostをインストールしてビルド。--with-syncも追加した。
$ sudo port install boost $ $ CPPFLAGS="-I/opt/local/include/mysql5/mysql -I/usr/local/src/mysql-5.1.30/sql -I/opt/local/include" \ LDFLAGS="-L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib/ -lssl -lcrypto" \ ./configure --prefix=/opt/local \ --with-mysql=/usr/local/src/mysql-5.1.30 \ --with-sync=fsync $ $ make

正常にビルド完了したら、MySQLにプラグインをインストールする。
prefixを変更していたのでちょこっと調整してからインストールスクリプトを実行。

$ sudo make install $ $ cd /opt/local/lib/mysql5/mysql/plugin $ sudo ln -s /opt/local/lib/libqueue_engine.so libqueue_engine.so $ sudo ln -s /opt/local/lib/libqueue_engine.la libqueue_engine.la $ sudo ln -s /opt/local/lib/libqueue_engine.a libqueue_engine.a $ $ cd /usr/local/src/q4m-0.8.3 $ mysql5 -u root -p mysql < support-files/install.sql

動作確認してみる。

$ mysql5 -u root -p mysql mysql> SHOW ENGINE QUEUE STATUS;
おしまい。

2008. 10. 21

drawrのイラストをあとで見るようにクリップするGreasemonkey書いた
こんなの。

drawrの新着を辿りながらげしげしタブを開いていたら、タブの数が大変なことになったよ!という人向け。

とりあえず何も考えずに気になったイラストをどんどん放り込んで、あとでまとめて見るような使い方してます。 調子に乗って新着辿ってたら300件以上溜まってしまったので、それはそれで困った。。。
拡張マイリスト (0.9.2)
Pager部分のスタイルが変更になっていて表示が崩れていたので修正。
SeaHorse版も併せて更新。 最近はあまりニコニコしていない。
雑記
更新する習慣をつけたい。特に何があるという訳でもないけど。
周りで新しいMacBook買った人が続々なのでインストールしたものでもまとめてみるかなあ。

2008. 10. 03

拡張マイリスト (0.9.1)
ということで、ネタがあったので更新したわけですがニコニコ動画(秋)対応です。
今回は結構デザインが変わっていたので微妙に面倒だったというか、 id属性が削除されていたりとかレイアウト的に結構キツキツだったりとかで、なかなかグリモン泣かせの改変でした。

10/1更新分の0.9.0からちょっと表示の調整が入っています。ちょっぴり忘れていたんですが、要望いただいたのでSeaHorse版も。スクリーンショットがRC2のままですねー。
たまには更新を
また半年以上放置してしまった。
なんかこう、いろいろと書くことはあった気がするけど、 どうにも文章にするのが苦手なので無精になってしまうなー。 なんでもいいからアウトプットする習慣をつけたい。

最近はなんだろう。漫画喫茶に入り浸ってるのと、ActionScript3とか勉強してます。

2008. 03. 24

ことえりで半角スペース
基本的には、インストールとかクリックするだけの簡単なお仕事ですみたいな感じなので、特に書けることがないんですが、 何故かShift+Spaceで半角スペースが入力できなかったので困っていたので、その解決方法だけ。
Leopard限定。
ことえりでスペースを半角に。
$ defaults write com.apple.inputmethod.Kotoeri zhsy -dict-add " " -bool false

使えるdefaultsを書き込め@新・mac板
Macの設定ファイルの場所とか設定方法とか全然分からなかったので、いろいろと参考になるスレ。
イー・モバイル
ついでにイー・モバイル。
購入時に同時加入すると30,000円引(本日限定で更に-5,000円)だったので、そのうち必要になると思って契約。 一番安いスーパーライトプランは来週開始なので、ライトプランで。月額最大6,480円。

7.2Mbpsはどの程度速いのかなーと思っていたら、自宅のADSL(BNR計測:17Mbps前後)と体感速度でほとんど変わらなくて驚きでした。 去年までAirH"の4x(256Kbps)を月額5,500円で契約していた身としては、なんともいえない感じですねー。 料金的にもそんな差がないのにこの速度差では、データ通信でwillcomを選ぶ理由がない。。。

あ、でもイー・モバイルは料金プランはちょっと不思議ですね。
定額制は5,980円なんですが2年契約しても別に割引無し。 従量制のギガデータプランは基本料が4,980円とあまりかわらないくせに、超過すると最大10,980円というギャンブルちっくな料金設定。 一方で、ライトデータプランは基本料2,980円~上限6,480円と、差額500円で使わない月の料金がだいぶお得。 スーパーライトプランに至っては2年以上契約すると、従量制なのに上限額が定額と同じ5,980円とか、 基本料金が安いプランを選ぶほど、普通にメリットが増してしまう微妙なバランスになってます。上位プランの意味って…

気になったといえば、SIMカードが厚紙だったのもなかなかショックでした。 ちゃんとICは埋め込まれているし、こういうところでコストダウンしているんだなーとは思うものの、 どうも学研の付録みたいなチープさが否めないというか。

しかし、イー・モバイルや光回線の契約なんかでもありますけど、この手の同時加入割引は全く使わないで契約するのはもったいない気がしますね。 どちらもだいたい3万円分程度の値引きになる感じなので、契約前には誰かパソコンとか買いそうな人を探しておいたほうが良いのかも。
今日の浪費
MacBook買ってきました。
出先で作業ができるノートPCが欲しかったので、EeePCみたいな小さいのでも買おうかと思ってたんですが、 Macも捨てがたいと思って悩んだ末に衝動的に購入。 秋葉原のソフマップで、イー・モバイル同時加入で94,800円。現行の下位モデル(MB402J/A)。

あれこれ触って、ようやく使い方が分かって慣れてきたところ。 Windowsマシンは何台も買ってるけど、こんなに新鮮な気分でワクワクしながらセットアップするのは久しぶりで楽しいです。 とりあえず開発環境整えないとなー。これで合宿ができる!ひとりで!?

2008. 03. 23

雑記
2008年 復活祭エントリー状況。
・ダブルブリッド
・BLOODLINK
・十二国記
・ローゼンメイデン
・鳴子ハナハルの単行本
・アボガドパワーズ
・俺たちに翼はない

これから参加が期待されるもの。
・ゆびさきミルクティー
・妖幻の血
・末期、少女病
・スリラー(川野ゆーへー)

鳴子ハナハルの単行本は復活じゃなくて、やっと出るという感じですが。 秋山瑞人も今年は新刊発売だけど、執筆自体は一昨年から書いていたので除外。 『俺たちに翼はない』は確認したら、発売延期してるよー。 それ散る発売日に合わせてというのが素敵だったのに、代わりに体験版ぽいものを発売するとか><

『スリラー』は本当に楽しみにしていたのに、結局本誌でどういう終わり方をしたのか分からないまま、 単行本は3巻以降発売されずで今でも気になっています。 スクライドとJOJOを足して(4で)割ったくらいの作品でした。 『スリラー』読んでいた女の子と結婚したい。
今日の浪費
capeta(カペタ) 16 (KCデラックス)
今買ってる漫画の中ではやっぱり一番面白いなあ。 題材がモータースポーツだからというのもあるだろうけど、曽田正人作品はこれ以外全く読んでいないので手を出してみたくなった。 ところで「昴」連載再開って、完結した作品じゃなかったんだ。。。

みなみけ(5) (ヤンマガKCスペシャル)
ふじおかの出番がない。 「capeta」も「みなみけ」も限定版とか特装版とか発売されていたみたいだけど、全然情報集めてなかったのでスルーしてしまった。 そこまで欲しい内容ではなかったけど、ちょっと悔しい。

2008. 03. 17

SeaHorse版 拡張マイリスト (0.8.1_sh)
flvplayer_wrapperと併用すると登録に失敗するとの報告をもらったので修正。

動画タイトルの取得に失敗すると登録されないというのは以前にもあって、タイトル部分のHTMLを書き換えてしまうような仕組みがあると共存が難しかったりします。 この手の機能を作る場合は、あまり元の構造を崩さないように作ってもらえると嬉しいかもですね。 あと、たまに登録ボタンが複数表示されることがあったので、ついでに修正しています。
SeaHorse版 拡張マイリスト
SleipnirのSeaHorseが、Greasemonkeyとどの程度互換性があるのか気になったので、需要無視で作ってみたりとか。 簡単な動作検証していないので、一応人柱版ということで。

SeaHorse(SleipnirScript?)では、画像の読み込み完了までスクリプトが実行されないので、 ニコニコ動画のように画像数が多い場合は、なかなかリストが表示されないかもしれないです。 データはSQLiteのデータベースとして保存されるので、コピーするだけで他の環境に移動できるのはGreasemonkey版よりも便利。

SeaHorse用に変更が必要なところはGM_setValue()なんかの専用処理だけで、 基本的にはクロスブラウザを意識していなかったJavaScriptコードを修正するのがメインだった気がします。 Firefoxの恵まれた環境に比べると、IEでの開発やデバッグはいろいろと面倒ですねー。
Greasemonkey→SeaHorse移植時の変更点
とりあえず変更したところをメモ。
SeaHorseに合わせたというよりも、Internet Explorerで動作することを考慮しなさすぎバカスという感じでした。


1. Object のプロパティ列挙で、最後に「,」つけてるとNG
var Hoge = { foo = 1, bar = 'fuga', // ←最後に「,」があるとNG }

2. イベントハンドラの設定方法を変更
attachEvent()を使用する。第一引数も微妙に違うのでたまに忘れる。
- obj.addEventListener("click", onClinkHandler, false); + obj.attachEvent("onclick", onClinkHandler);

3. setAttribute()で設定できないプロパティがある
「.」でアクセスする。classとかstyleとかcolspanとか。
- obj.setAttribute('class', 'hoge'); - obj.setAttribute('style', 'border:none; color:red'); - obj.setAttribute('colspan', '4'); + obj.className = 'hoge'; + obj.style.cssText = 'border:none; color:red'; + obj.colSpan = 4;

4. イベントハンドラでthisが参照できない
applyとか使う。thisで参照したいobjectをローカル変数に保存してから渡してもいいみたい。

5. toSource() が使えない
シリアライズを実装する必要がある。 CodeReposのObject.toSourceとか、 小飼弾氏のunevalとかを参考にしてみる。 後者は複数行のstringに非対応っぽいので、ちょっと修正が必要。こんなのでいいのかな。
var name2uneval = { 'boolean':uneval_asis, 'number': uneval_asis, 'string': function(o){ return '\'' + o.toString().replace(/[\\\"\']/gm, function(m0){ return '\\' + m0; }).replace(/\r\n|\n/gm, "\\n") + '\''; }, 'undefined': function(o){ return 'undefined' }, 'function':uneval_asis };

6. document.evaluate() が使えない
XPathで検索できないので別の方法で頑張る。 JavaScript-XPathという手段も。

7. メモリリークする
「IE 循環参照 メモリリーク」とかで検索すると結構ヒットする問題。 一晩放置するとメモリ消費量が1GB超えたりとか大変なことになっていたので、いろいろと対応。 ほとんどリークしないようにはしたつもり。

8. windowオブジェクトは暗黙のthisとして存在しないので明記する
window.setInterval(...);

9. Greasemonkey API
GM_setValue/GM_getValue しか使っていないのでSQLiteでなんとかなるかなーと思っていたら、 既にAPI一式のラッパーライブラリを作っている方が。 互換性は微妙とは書いてあるけど、GM_setValue/GM_getValueについては今のところ問題なし。一番使われてそうなGM_xmlhttpRequestはどうなんだろう。

10. ファイルのエンコードはShift JIS
コメントや文字列に日本語を使っている場合は注意。

2008. 03. 10

拡張マイリスト バグ修正とか
メールフォームから指摘をいただいたんですが、コメント欄に改行されない長い文字列(URLなど)を入力すると、 編集・削除ボタンが表示されなくなって元にも戻せなくなるという不具合を修正しました。

本当は適切な位置で改行させるようにしたかったんですが、元の文字列も維持しつつwbrを挿入したりする処理がかなり泥臭くなってしまったので、 overflow:auto でスクロールバーを表示するようにして誤魔化対応しました。 コメント欄については簡単なメモにしか使っていなかったので、完全に想定外でした…。

あとは、1件目に登録された動画にコメントが保存されないバグがあったのでついでに修正。 原因は恥ずかしくて言えない。 SP1のレイアウト変更で表示が崩れていたのもこっそりと修正済みです。


word-breakとかoverflowとかのスタイル指定は、実は知らなかったのでIRCで教えてもらったりでした。不勉強すぐる。
雑記
増田に書き散らすような気持ち悪いエントリを書いていたけど、 自分の作文能力では思ったことをそのまま書くのもままならないと痛感して破棄してしまった。 なんというか、自分で自分の価値を見つけられないから、周りの人間にもそう思われたくなくて人間関係が築くの難しいよね、とかそんなお話。 1行で書くと簡単に書けるし、実際どうでもいいようなことなんだろうけど、こと職場においては能力がないことでゴミ虫のように扱われることは実際にあるので、 毎日怯えながら過ごしているという前回の雑記の続きなんですが。

結局気持ち悪いエントリになってしまった。エロゲとかやる。
今日のパチモノ
横浜のゲームセンターでなんとなく取ってしまった中国製のファミコン互換機「8in GAME CASSETE COMPUTER」。

カセット発掘していくつか起動してみたんですが、結構ちゃんと動くんですねー。 外部コントローラ接続用の端子がないので、ハイパーオリンピックが遊べないのが少し残念。 内蔵ゲームは、どこかで見たことあるような内容の何かだったりで、危険な香りがします。

我が家のファミコン本体はまだ動作するので互換機使う必要はないんですが、 RFユニットは普段外しているのでAV出力対応というのは手軽でいいですね。 『銀河の三人』とか『スゥートホーム』とか、パッケージを見てると久しぶりにプレイしたくなってくる…。 法外な価格で旧世代のタイトルを配信しているバーチャルコンソールなんて爆破して、みんな実機で遊ぶのが良いと思うのです。

2008. 03. 03

Schemeを勉強してみる
とりあえず現実逃避気味に何か新しいことでも始めてみようと思って、「もうひとつのScheme入門」とか読んでます。 最近(でもないのかな?)、SchemeとかGaucheとかSICPとかの単語を結構見かける気がするので、この際だから少し勉強してみようかと。 まだ面白さは分からない。

前出の入門講座ではMIT/GNU Schemeをインストールしていたんですが、 コンソールの使い勝手の悪さが気になったので、GaucheのWindows用実験バイナリを使うことにしました。 今のところ特に不都合なく演習問題はできています。ファイルをロードする際の基準パスの設定方法が少し違ったので、そこだけメモ。
(Gaucheシェルの起動) c:\Gauche\bin> gosh
(ファイルのロード) gosh> (add-load-path "c:\\test\\scheme") gosh> (load "test.scm")

Gaucheは、グラフィックスとかネットワークとかファイル操作なんかのライブラリがあって、本当に実用的っぽい。。。
雑記
なんというかエンジニアとして別段高いスキルがあるとは思ってはいないけど、 仕事して人並みに金を貰える程度には働けるものだと信じてやってはきたつもりだったんですが、 新しい職場で自分のレベルが果てしなく底辺にいることを見せつけられると、 精神的になかなか厳しいです。

これがせめて同期くらいだったら多少経験の差があるのは納得できるんですが、 新卒組でさえ同程度のスキルを普通に持っているような環境だと、 頑張ろうという意識の前に凹んだまま戻ってくれないというか。 今まで積んできた経験なんてアホみたいにちっぽけなことでしかなかったのかと思うと、 この先の人生も何も成し遂げられずに惨めに終わっていくのだとネガティブな陥ってしまってションボリック。

実際のところ別に周りから何か言われてるわけではなく、自分の将来がどうこうというよりも単純に嫌われ恐怖症みたいなものなんですが、 結局自分が他人のことをそういう基準で判断してるんだよなー、とか思うとまた深みに嵌ってなかなかに泥沼です。 仕事以外にはせめて余裕を見つけようと思っても、 家に帰れば未読のRSSフィードと、観てないアニメと、積まれたゲームと技術書があって、どれから片付ければよいのかも分からない有様。 いっそ全焼とかすればすっきりするのかなあ…。
今日の浪費
パンドラVol.1 SIDEーA
西尾維新の「傷物語」が載っているということで、それ以外の作品が特にピンとこなかったので単行本を待つつもりだったんですが。誘惑に負けて購入。
前作のようなキレのある台詞回しや掛け合いを期待していたんですが、残念ながらそれはなし。 ノリノリだった「化物語」と比べると、一応書いておくべきテーマだから書いたといった印象で、 どうにも得意の小技だけで読まされてしまった感じがしますね。 西尾維新の作品は安定しているようでムラがあるように感じるのは、そういうところで無理やりねじ伏せてしまってるからなんですかねー。 実力はあるのにずるいというか、もったいないと思います。

結局のところファウストから路線変更したわけでもなく、どういう意図で新創刊だったのかはさっぱりですけど、そのうち発売されるSide-Bで普通に休刊になりそうな予感ですね…。

2008. 02. 18

PHPでベイジアンフィルタ (実践編)
実践編です。
ベイジアンフィルタを使ったアプリケ-ションの流れは、大きく分けて以下の3段階になります。
  • カテゴリ(クラス)定義
  • パターン学習
  • 文書分類
単純ベイズ分類器(Naive Bayes classifier)ではクラス毎に単語の出現頻度を記憶して、その情報をもとに文書がそれぞれのクラスに属する確率を求めます。 SPAMフィルタなどでは「spam」と「nospam」のように2つのクラスだけで使用されることが多いです。多分。

パターン学習は、特定の文書(単語のセット)がどのクラスに所属するかを指定します。 これにより出現頻度のデータベース(コーパス)が更新されて、次回以降の分類精度を向上させることができます。 通常は、クラスを最初に設定して、以降は学習と分類を繰り返すような感じになると思います。


…ということで、クラスの定義から。
何故かNaiveBayesianStorageには、カテゴリ操作のインターフェースが提供されていないので、手作業で行います。 addCategory()とかdeleteCategory()とか追加してあげると便利なんですが。
mysql> insert into nb_categories (category_id) VALUES ('spam'); mysql> insert into nb_categories (category_id) VALUES ('nospam');


とりあえず一般的な例で、メールの文章を適当に登録してSPAM判定が行えるかどうか試してみます。 クラス毎にパターンを覚えさせる必要があるので、ここではSPAMメールの文章と、普通のメールの文章を各10件ずつ用意して登録します。 NaiveBayesian::train()で登録させるので、登録用のPHPスクリプトなんかを適当に。
$login = 'username'; // MySQL user $pass = 'password'; // MySQL password $db = 'nb'; $server = 'localhost'; include_once 'class.naivebayesian.php'; include_once 'class.naivebayesianstorage.php'; include_once 'class.mysql.php'; include_once 'class.naivebayesian_jp.php'; // NaiveBayesianJP $nbs = new NaiveBayesianStorage($login, $pass, $server, $db); $nb = new NaiveBayesianJP($nbs); $pattern_spam = array( '25歳人妻です旦那との夜の生活が3ヶ月に一度です。新婚の頃は…', '現在、当サイトにご登録されている女性会員様(約48万人)の…', '業界各方面から多大なる絶賛を得ています。過去には無かった体験が…', '人妻が大好き!または人妻に興味がある!という方だけ…', '私は市内の某私立高校に通う女子高生です。実は先日39歳になる母が…', ... ); foreach ($spams as $idx => $doc) { $cat = 'spam'; $docid = $cat .'_'. $idx; if ($nb->train($docid, $cat, $doc)) { $nb->updateProbabilities(); } } // 普通のメールの登録も同様に
NaiveBayesian::train() の $docid には文書に付ける一意のID(登録済みのIDと重複しなければなんでもいいです)を指定します。 $cat にはカテゴリ名、$docには文書を渡します。単語の抽出は自動的に行われます。


で、メインであるところの文書分類。
判定したい文章を渡して NaiveBayesian::categorize() すると各クラスに所属する確率が返る…はず。
$nbs = new NaiveBayesianStorage($login, $pass, $server, $db); $nb = new NaiveBayesianJP($nbs); $text = 'ドスケベな男女に朗報です△今すぐにエッチがしたい!近所で…'; $scores = $nb->categorize($text); while(list($cat,$score) = each($scores)) { echo "$cat : $score\n"; }
出力結果。ちゃんとSPAM判定してくれている模様。
ここで結果が間違っている場合は、上と同じやり方で NaiveBayesian::train() を使って学習させます。
spam : 0.99946305424632 nospam : 0.032765884645883


SPAMフィルタの場合は分類失敗よりも誤検出のほうが被害が大きいので、このときの確率が0.90以上の場合のみSPAM判定するみたいな分類をしたほうがいいかもしれません。 カテゴリが複数存在する場合は、一番確率が高いものを選択すれば良いと思います。


といった感じで、比較的簡単にベイジアンフィルタが使えそうな感じではあるんですが、たまに確率が1.0を超えたりする場合があって微妙に謎です。 どこかでやり方間違えてるのかなー。
spam : 6.1633758754325E-10 nospam : 1
こんなのとか、こんなのとか。
spam : 1 nospam : 9.547379900121E-13

学習パターン数が少ないと発生しやすいみたいなので、それなりのパターンを登録してあげる必要があるかもしれないですね。 とりあえず10件や20件では全然少ないので、1000件くらいのパターンは欲しいかも。
PHPでベイジアンフィルタ (準備編)
先日のデブサミ2008で、モバゲータウン(DeNA)が悪質な書き込みなんかを形態素解析+ベイジアンフィルタで抽出しているという話をしていたので、 SPAMフィルタ以外にも結構汎用的な文書分類に使えるものかと思い立ったので、ちょと調査。

単純ベイズ分類器と小一時間にらめっこした結果、スポンジ化した脳では理解するのに相当な時間を要すると判断したのでライブラリに頼ってみます。 仕事でも使えるようにとPHPで使えるものを探してみたんですが、これ(↓)しか見つかりませんでした。 CPANのAlgorithm::NaiveBayesを参考に作られたっぽいですね。

…とりあえず、日本語対応。
ライブラリ内に字句解析の処理があるんですが、英文字しか対応していないので日本語は通りません。 MeCabとかを使って単語抽出してあげる必要があるんですが、今回はYahoo!の日本語形態素解析サービスで誤魔化してみました。

PHP4なのをいいことに、NaiveBayesianのサブクラスとして_getTokens()をオーバーライド。 このメソッドで、キーが単語、値が出現回数の連想配列を返せばいいので、助詞・助動詞を除いた単語群を取得して配列にいれてあげます。 あと、日本語だと2文字の単語も多いので $min_token_length は 2 に変更。

$yahoo_appid は各自、Yahoo!で取得したアプリケーションIDを設定します。
class NaiveBayesianJP extends NaiveBayesian { var $min_token_length = 2; var $yahoo_maservice = 'http://api.jlp.yahoo.co.jp/MAService/V1/parse'; var $yahoo_appid = 'xxxxxx'; function _getTokens($string) { $tokens = array(); $result = $this->_yahooMA($string); if ($result && ($xml = simplexml_load_string($result))) { foreach ($xml->uniq_result->word_list->word as $word) { $token = (string)$word->surface; if ((mb_strlen($token) >= $this->min_token_length) && (mb_strlen($token) <= $this->max_token_length)) { $tokens[$token] = (int)$word->count; } } } return $tokens; } function _yahooMA($string) { $params = array( 'appid' => $this->yahoo_appid, 'sentence' => urlencode($string), 'results' => 'uniq', 'response' => 'surface', 'filter' => '1|2|3|4|5|6|7|8|9|10', ); $query_string = ''; foreach ($params as $key => $value) { $query_string .= ($query_string)? '&' : '?'; $query_string .= $key .'='. $value; } return file_get_contents($this->yahoo_maservice . $query_string); } }


あとは、データベースの準備。
デフォルトではMySQLの使用が前提なので、あらかじめインストールするなりして用意します。。 適当な名前でデータベースを作成して、ライブラリ同梱のmysql.sqlを実行。 元のデータベース名が「nb」なので、ここでも同じ名前にしておきます。
mysql> create database nb character set utf8 collate utf8_unicode_ci; mysql> use nb; mysql> source ~/phpnaivebayesian/mysql.sql;

ちなみにデータベースのエンコードをUTF-8にした場合、インデックスのキーサイズが1000bytesを超えてしまうので、以下のようなエラーが発生します。 すみません、先に言えよって感じですね。UTF-8だと1文字3bytes相当で計算するので mysql.sql 内の定義をすべて varchar(250) → varchar(160) くらいにすれば無問題です。
#1071 - Specified key was too long; max key length is 1000 bytes

続きます。
JavaScriptで「SL」
まさかブラウザ上でもこれが見られるなんてw

最近見てないけど、前の会社では開発鯖に仕込まれていたので、数か月に一度くらいはタイピングミスで走らせてしまってました。 「ls」のオプションによって、車両の数とか速度とかが変わった気がしますね。 JavaScriptでF5禁止だの右クリック禁止だのしているサイトも、このくらいユーモアがあればいいんですけどねー。(SL発車!)
ライフハック(笑)じゃなくて
非コミュとかウケミンとか今更どうこうできるようなものでもない気がするけど、 ライフハックとかじゃなくてもっと人生観とか生き方とかをドラスティックに変えるような何かはないかなあ。 このままだと、余命1ヶ月とか言われても、前日までくだらない生活を続けてしまいそうな気がする。
今日の浪費
狼と香辛料〈7〉Side Colors (電撃文庫)
なんというか、この作品の9割はホロの魅力だけで成り立ってると実感させられるようなニヤニヤ短編集。 本編では旅の道連れも増えてこういう掛け合いが少なくなりそうなのは、微妙に残念な感じです。 アニメ版は好評みたいだけど、ずるずると引き延ばしたりしないで綺麗に終わってくれるといいなあ。
ところで、先月発売の新刊は、アニメ放映開始の1月まで引っ張ればよかったのにと思っていたけど、ちゃんと用意してあったあたりは商売上手。


かんなぎ (4) (REX COMICS)
海イベントにスク水幼女とはなんというテコ入れ。 こちらもアニメ化発表てことで、スタッフ見る感じでは少し期待してもよさそうなんですが、 「ペンギン娘」といい手当たりしだいアニメ化している感が拭えない。。。今更かも。

ライトノベルは最近続きものしか買っていなかったけど、今月発売の新人作家作品は結構好評なのが多いですねー。 あと、『ミミズクと夜の王』を書いた紅玉いづき氏の新刊も出ているっぽいので、1作目が結構衝撃的だっただけに、どんな作品なのか楽しみです。 とりあえず、いろいろ買うのはあと1週間我慢…。

2008. 02. 12

NBonline
何故だか頻繁に再ログインを要求する上に、毎回会員情報の登録を経由するという頭のおかしい画面遷移に定評のあるNBonline(日経ビジネスオンライン)なんですが、 いい加減なんとかならないのかと思ってFAQを覗いてみたら…

Q. NBonlineのサイトを見るときの推奨ブラウザは

A. ご利用のパソコンのOSに合わせて、次の各ブラウザのバージョンをご利用の上ご覧ください

<Windows>
Internet Explorer 6.x、FireFox(Mozila)1.x
<Mac>
FireFox(Mozila)1.x、Safari 1.x

なるほど、Firefox 2.xは非推奨だったのかっ。

…というか、各ブラウザともに次のバージョンが控えているので、そろそろ更新してあげてください。 あと、FireFoxという表記は間違いとか小姑っぽく突っ込もうかと思ったけど、原文のFAQからは削除されてるんですね。 そんなことは別に構わないんですが、結局再ログインをなんとかする方法はないみたいです。。。
DoCoMoの割引プラン
今更なんですが、基本使用料半額って新規契約者のみの特典だと思ってたら、継続利用者でも適用できるんですね。 一応、ファミリー割引に入っているのでファミ割★MAX50というやつみたいなんですけど、比較表を見てみると得なのかそうでないのか微妙になってきました。

現在の料金プランはタイプSSで基本使用料は3,780円/月。 メールやネットには別途パケホーダイ(割引対象外)に加入しているので、まず基本使用料を超えることはないです。 継続利用は8年目になるので現在の割引率は47%。 普通に考えれば割引率50%のほうが得なんですが、これって2年間契約必須で、途中解約の場合は期間によらず9,975円の解約金が発生するんですね。 現在の割引プランのまま2年間経過した場合の差額は…
8年目: 3,780 * (0.50 - 0.47) * 12 = 1,368
9年目: 3,780 * (0.50 - 0.48) * 12 = 912
合計で2,280円になります。 割引率50%で2年間解約できない制約を考えると、この差額は保険として支払ってもいいのではないかと思うのです。 DoCoMoは新機種もサービスもいまいちパッとしないし、継続利用の特典が事実上なくなっている以上、他キャリアに乗り換えるのもありなのかなーとか。

そんなわけで、割引プランの変更は保留にしました。 当面乗り換えの予定はないですけど、2年以内には携帯業界にもいろいろと大きな動きがきそうな気もするので。 端末としては、WILLCOMのXPLATEみたいなコンパクトな形状で、ブラウザとカメラとBluetooth搭載だったら完璧なんですが、どこか発売してくれないでしょうか。
最近の浪費
嘘つきみーくんと壊れたまーちゃん 3 死の礎は生 (電撃文庫 い 9-3)
今読んでます。 p.182の「借金による地下暮らしのススメ」はカイジな気がするけど、「多重人格になった場合、如何にして手に職をつけるかの入門本」って元ネタなんだろう…。

少女には向かない職業 (創元推理文庫)
文庫化されていたので。 桜庭一樹は他に「推定少女」と「砂糖菓子の弾丸は撃ちぬけない」しか読んでいないんですが、砂糖菓子のほうは結構印象深かったけど、いまだに評価をしかねる難しい作家さんですね。 読んでいるときは特に違和感はないんですが、読後がいつも微妙な感じ。 とりあえず文庫待たないで「赤朽葉家の伝説」読むかなー。

永遠の存在者
発売は結構前だけど、pigstarのアルバム。 ピリオド主題歌のために買ったけど、他の曲も良作揃いでした。 来期はアニメのOPも歌うみたいだし、彼らはもっと評価されるべき。

2008. 02. 11

Linuxカーネル2.6系にroot権限を奪われる脆弱性
おお…これは危険すぎる。
自宅のFedora 8で試してみたけど、普通にexploitコードでrootになれますね。 外部から攻撃される類のものではないとはいえ、社内サーバでもレンタルサーバでも、シェルログインを許可しているところだと誰に何されるか分かりません。 カーネルリビルドとか運用環境で絶対やりたくないんですけど…。そもそもvmsplice()って無効にしてもいいんでしょうか???
最近の無限ループ
ミンサガやったことないけど、異常にツボに入ったので連休中ずっと無限ループしてました。

もともとは、MEIKOの調整っぷりが素晴らしい【MEIKO】熱情の律動【ミンサガ】を聴いたのがきっかけだったんですが、この曲はヤバイ。 自分の場合、普段から音楽はあまり聴かないほうなんですが、気に入ったものがあると同じ曲を平気で1週間とか聴いてしまったりすることが多いので、もうイヤホンしたまま寝ながらも聴いてましたw

この曲CD欲しいけど、サントラよりも廉価版のゲーム(本編)のほうが安いのでちょっと迷いますね。
雑記
会社変わると更新止まるというのは、前回と同じパターンな気がしてきた。 なんとなく生活のリズムが整うまでとか思ってたら、ずるずると何もしなくなってしまうので、今年はちゃんと生きます。 とりあえずRuby覚えます。

転職して3週間ばかし。ようやく慣れて落ち着いてきた感じです。 新しい会社は職場環境とか勤務形態とか通勤時間とかいろいろと快適なんですが、 自分よりも若くてスキルのあるエンジニアが多いので、いい刺激になりますね。

新生活の唯一の不満は、通勤経路上に大型書店がなくなってしまったこと。 毎日帰り際にふらりと寄っては新刊チェックしたり技術書を物色したりする、あの楽しみがなくなってしまったのは寂しいです。 ただでさえ最近は経済的な理由で買い控えているから、月末になったら数か月分の衝動を解き放つ勢いで散財したいですねー。 (まともにという意味では)約半年ぶりの給料日まであと2週間!まだ結構あるっ><
最近の浪費
わたしたちの田村くん 3 (電撃コミックス)」。
次巻完結っていろいろ未消化だなーと思ったら、ガオ休刊なんですね。 漫画版は作家買いしてみたけど、原作読むほどかと思うと微妙に悩みます。 同じ作者なら「とらドラ!」のほうが評判いいから、そっちからかなあ。 それにしても、中古価格の暴落が酷過ぎる

GA 芸術科アートデザインクラス (2) (まんがタイムKRコミックス)」。
絵を見て思い出したけど、DS買ったら『ユグドラ・ユニオン』やるつもりだったのに無期限で本体を貸してしまったですよ。 こないだ新キャラとか追加のPSP版が発売されたみたいだから、そっちを買うべきなのか。

2008. 01. 23

拡張マイリストFix
動画タイトルの取得に失敗する可能性があるので、XPathの記述をちょこっと修正しました。

今回は以下のような指摘をいただきまして…

するとあることに気がつきました。
ある動画に限ってタイトルがうまく表示されないようなのです。

実は前からGreasemonkeyスクリプトに興味があった私はこれはいい機会!と思ってソースを拝見してみました。

原因はどうやら、タイトル文字の取得方法にありそうです。

Andre's garden: ニコニコ動画拡張マイリストをHackしてみた
実はこの現象、自分の環境(*1)では再現しないのと、 //input[@name=\'m_title\'] というXPathも対応するノードが存在しないので修正コードが動作しなかったりと、微妙に謎だったりするのですが…。

一応件名取得は class="video" な<a>タグのテキストをFIRST_ORDERED_NODE_TYPEで先頭のものだけ取得しているので、 うp主コメントのリンクで誤爆することはないはずなんですが、実際videoクラスのaタグが複数存在することは想定外だったので、 確かにタイトル文字列の取得には問題ないとは言えなさそうです。 ということで、h1で囲まれたリンクのみを対象にしてみたので同様の誤爆は今後発生しないかと思われます。

既にタイトルが動画ID等になってしまっている方はお手数ですが修正版に更新してから、再度動画の登録をお願いします。 その際にどの動画で正しく取得できなかったのか教えていただけると嬉しいです。 ちなみに今回指摘のあったすばらしき新世界をヴァイオリンで弾いてみたは素晴らしい動画でした。 andreryuさん、ありがとうございます(感謝するところが違う><)

(*1) WinXP+Firefox(2.0.0.11)+Greasemonkey(0.7.20070607.0/0.7.20080121.0)
(゚∀゚)ノキュンキュン☆キュキュン
公式サイトができてた。
普段は全然スロットやらないのに、ツインエンジェルだけは結構足しげく通ってました。 ネットラジオは始まっていたけど、アニメ化って公開時期はまだ未定なんでしたっけ。 実機と同じクオリティを期待しているので是非ともお願いしたいところです。

それで思い出したけど、神田のメイドスロットは店のコンセプトとは裏腹に、 利益重視でツインエンジェルが1台も置いていないというふざけたラインナップなので早く潰れたほうがいいと思います。

とりあえずPVは光速で保存。 販促DVDよりも編集いいなあ。 ショートバージョンは最後の数秒だけ切れてるけど、BIGボ-ナス中のムービーそのままですね。 これを観るために何千円もつぎ込んでいる人は今でもいると思うんですけどw

http://www.twin-angel.com/movie/pv_full_flash8.flv
http://www.twin-angel.com/movie/pv_short_flash8.flv
今日の浪費
名前探しの放課後(上)」。上下巻セットで。

土曜日にサイン会行ったときに購入したので今日の浪費でないんですけど、実はいつものことです。 今回もタイムスリップとか非現実的な要素をあっさりと織り込みながら、全然違和感とか陳腐さを感じさせずに読めて面白かったです。 ちょっとネタバレ気味ですけど、エピローグの本当の(?)オチのほうは辻村深月の過去の作品を読んでいないと意味不明というのは、 まあファンにとっては結構嬉しいギミックなんですが、微妙に禁じ手なんじゃないかなー。とか。

桜庭一樹が直木賞受賞で結構盛り上がってる中で、辻村深月ももっと評価されてもいいのにとか思ってたりするんですが、 辻村作品の登場人物(特にヒロイン)はどの作品でも価値観とか人生観が結構共通して、おそらくは作者自身の価値観なりだったりするんだろうけど、 それに共感できる読者だけがどっぷりのめりこんでる感じなのかなあ。 基本的に辻村深月が好きな人は非コミュだと思う。

2008. 01. 15

Norton AntiVirusをアップグレード
Norton AntiVirusの更新期限が切れそうだったので2006→2008にアップグレード。 2008の製品説明に機能向上とか高速化とか書いてあるんですが、更新サービスの期限切れのときって期間延長だけ勧めて、 アップグレードを勧めないのは何故なんでしょう。なんか旧バージョンのまま期間延長して使い続けるのは損している気がするんですが…。

ノートン アンチウイルス2008 は1ユーザー版で同一世帯のパソコン3台までご利用いただくことができます。
おお、知らなかった…って、2008から3台まで利用可能になってたんですね。 以前は2ライセンス版とか購入していたのに、太っ腹というか。 一般家庭では複数台の利用なんて少ないから、Symantecとしてはそんなに問題ではないんでしょうか。 期限残ってるけどNorton2005のマシンもアップグレードしたほうがいいのかな。
雑記
最近は「ピリオド」やってます。
白詰草話、Quartett!とFFDのシステムがあまりに素敵だったので、 3作目以降はいまいちピンとこなくて買っていなかったLittleWitch作品なんですが、今回は久々に。 発売前から期待していたこともあって、多少贔屓目もあると思いますが個人的には結構満足でした(まだ半分もクリアしてないですけど)。 ネタバレ回避で見ないようにしているけど世間の評判はどうなんだろう。

とりあえず小羽、美由ルートを進めて、王道学園モノいいよねーとか完全に緩みきっていたら、 鈴ルートの予想外のガチ展開に思わず「ライター空気嫁!(訳:グッジョブ)」。 未プレイの人は後回しにしておくとより感動的かもしれません。あと琴先生も後半推奨らしいです。 最初のうちは、小羽ルートとかでめいっぱい萌死するといいですよ。 そういえば、ルートによって雰囲気が違うのはエロゲではよくあることですけど、今回メインシナリオだけで4人もいるんですね。

システムやインターフェースデザインは相変わらず業界随一の完成度。 エロゲに限らずゲーム屋さんは見習ってほしいですねー。 あとは主題歌の「永遠の存在者/pigstar」が凄く良かったです。 この曲を採用したためにムービー公開はストリーミングのみとか、体験版が本数限定/雑誌収録なしだったとか異例なことがありましたけど(全部JASRACのせいなんですが)、 結果としては成功だった気がします。製品版収録のOPムービーが微妙に低画質だったのは実に残念。
【関連】 永遠の存在者 PV (ニコニコ動画/Youtube)


それにしても今回はヒロイン8人いながら、全員が徹底してつるぺたというのは、 大槍葦人氏も最後の作品になりかねないことを覚悟して若干趣味に走ったんでしょうか。 フルボイスとかネットラジオあたりは前作からやってますけど、 今回はかなり狙った(媚びた?)キャラデザだったり、キャラソンCDを出してみたりと、LittleWitchも方向性を模索中な印象を受けますね。 ここ何作か買ってなかった自分が言うのもなんですが、好きなメーカーだけに頑張って生き残ってほしいんですけど…。

そんなわけで、またプレイ再開してきます。 ゲームはほどほどに勉強するつもりが、小羽ルートをクリアしてから止まらなくなって、ここ3日くらいはずっとやってますよ。 エロゲは1日24時間までって決めてたのに(>_<)
今日の浪費
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣」。
少し話題になっていたので。 新しい職場ではチーム開発も増えるだろうし、ちょこっとソフトウェア開発技法も勉強しないとなー、とか思ったりもするのですが。

ハヤテのごとく! (14) (少年サンデーコミックス)」。
アニメ化の影響で一気に売れてるっぽいですね。 釘宮病といってもSI型感染者だから、最初の数回しか観てないんですよねー。 最近原作ではナギの影がめっきり薄くなっている気もしますが、ハムとヒナギクがいれば幸せなので特に問題はありません。

2008. 01. 10

Tab Mix PlusのF9機能を抑止
Firefox拡張のTab Mix Plusで、F9を押すとタブを閉じた後のフォーカス先が切り替わるんですが、 英数字を入力するときなんかに日本語入力字の癖でF9→F8をかかっと押してしまって誤爆することがよくありまして。

個人的にはタブを閉じた後のフォーカスは最後のタブに移動してほしいので勝手に変更されると困るんですが、 設定画面からは無効化できないし、jar展開して修正するのも面倒だなーと放置していたら、一応設定項目がありました。

about:configして…
extensions.tabmix.disableF9Key   false → true
誤爆するたびにいちいち設定修正をしていたことを考えると、人生浪費しすぎているorz
雑記
絶対可憐チルドレン」と「二十面相の娘」もアニメ化かー。 チルドレンはこれで少し人気が出てくれると嬉しいなあ。 二十面相の娘は、原作の雰囲気が独特すぎるので全然違う作品になりそうな予感なんですが、それそれで楽しみというか。 ところで、二十面相の娘って続編(外伝?)連載中なんですね。

アニメ新番組はとりあえず「狼と香辛料」だけチェック。
思ったよりも絵柄に違和感なかったので普通に観れました。 ホロ全裸は、テレ東基準だとああいうのもNGなのかなーとか思いながら観てましたけど、 正直クロエのほうがエロかったですね。黒田絵でエロだと「そらのいろ、みずのいろ(18禁注意)」が思い浮かぶのでちょっと困ります。 クロエが名塚佳織だったので、ホロはいろんな意味で食われ過ぎ。。。

間を持たせられないのか、なんとなく慌ただしく進んでいくのが気になったけど、内容はそんなに詰め込まれているわけではない不思議。 もう少し演出でなんとかしてほしかった気もしますねー。雰囲気とか。 アニメ化としては及第点だと思うけど、原作ファンの見どころはEDだけだったりして。原作イラストは素敵すぎます。


今期は本数少ないけど、春からの新番組ラインナップはちょっとやばいですね。 売れないだとか予算がとか言いながら、こんなに過剰供給するアニメ業界は狂ってるとしか。 誰のために作ってるのかなあ。
雑記
30日間は残っていた未読エントリが突然ざっくり新着から消失したり、 たまに表示できないフィードがあったりとか、今年に入ってからGoogle Readerの挙動がおかしくなるときがあるんですが、 何か新機能の実験でもしてるんでしょうか。 何度かLDRに乗り換えようとも試みてるんですが、読んでない記事まで一気に既読にされるのを止める方法が分からないので毎回挫折しているような気がする…。

2008. 01. 07

一文字で表す初音ミク
A
ニコニコ動画のコメントで見かけたんですが、これを考えた人は想像力が豊かすぎると思った。
もう、ミクにしか見えない。
雑記
BEATを車検に出してきました。 車検満了日が誕生日なので、いちいち思い出さなくていいのは毎回便利だと思う。

世間が仕事始めしている中で、採用応募中の会社の最終面談。 面接終了から3時間弱でメールで採用通知が届いて、あまりのスピード決裁にメガたまご噴きました。 ありがとうございます、ありがとうございます。 昨年後半のgdgdとは違って、今年は良いスタートが切れたみたいです。 入社日は相談中。。。

2008. 01. 05

ニコニコ動画に拡張マイリスト(ry
よしよし動画とニコニコ生放送対応。最近の流れに全然追いついてないw
ニコニコ側の仕様が固まってきたので、いちいち追加しないでも対応できるようにそのうち書き換えます。 正月休み(無職だけど)は、これのネットワーク対応するつもりが、ちょっと遊びすぎてしまった。。。

(追記) そもそも仕様変更で動画タイプの画像が表示されてなかったので、とりあえずグラビア動画も含めて共通化されたっぽいURL等に修正。すっきり。 アメーバビジョンは動画が見つからないので未検証です。 あと、キャッシュでスクリプトが更新されないことが多かったので、.htaccessで無効化しました。
レンタルサーバのシステム情報
レンタルサーバでシェルログイン可能なところだと、 wとかpsで他ユーザのアカウント名だったり処理内容が見えてしまうので注意。 …というお話ではなくて、なんか最近良く見るメールアドレスがあったのでメーラーを検索してみたら、 SPAM送信元だったので、これは一応報告しておいたほうがいいのかなあ。とか。

そもそも、この手の情報ってセキュリティ的にはどういう位置づけなんでしょうか。どこまで見たり言ったりしても良いものか、いまいち不明です。 不正アクセス禁止法の条文を読む感じでは、 「アクセス制御機能」による「制限を免れ」ているわけではないので、閲覧自体に違法性はないけれど、 「その内容をみだりに第三者に知らせてはならないもの」を「当該アクセス制御機能に係るアクセス管理者及び当該識別符号に係る利用権者以外の者に提供してはならない」なので、 管理者に報告するのはいいけど、psの結果とかをWeb上で公開するのはNGという解釈でいいのかしら。

利用規約に違反するわけではないけれど、やっていることは覗きっぽいので(不可抗力だけど)、 余計なこと言ってサーバ追い出されても切ないしなあ。 他にもアダルト禁止なのに、どうみてもアダルトサイトなファイル/ディレクトリが見えたりするんですが、はてさて。
雑記
正月ムードも落ち着いてきたところで、明けましておめでとうございます。
今年も宜しくお願いします。

年末にも書いたけど、今年は考えるよりも手を動かすことを目標にやっていきたいですね。 あとは、速さかなー。仕事でも普段の生活でも、意識的にテキパキこなせるように。 ゲームをクリアするのが非常に遅いのはなんとかしたいです。 「普通のやつなら40時間のCLANNADも、俺なら2小節だから」とか言いたい。