2012年3月アーカイブ

2012年3月25日

SWF-ForcibleConverter

ニコニコ動画で提供される数多の動画の中には、 SWF のものがあって、 SWF のあるバージョンを持ったそのファイルが吾が Safari で観られない場合がある。詳しく言えばそのプラグイン QuickTime 7 ってことになるのかな。 Flash のバージョンかな? ともかく、観られない。試しに VLC クライアントに読み込ませてみたら、アプリケーションがクラッシュしてしまった。

この問題は Flash 界隈の事情に明るければそこそこ知られた現象らしいけれど、その解決策に、いまひとつハッキリしたものが見つけられなかった。

そんな中、あるとき、ふと、NNDD では「 SWF を変換しています... 」って出ることがあるなと気がついて、そこにヒントがあるだろうと思い、そのソースを旅して見つけたのが ForcibleLoader というライブラリ。

http://www.libspark.org/wiki/yossy/ForcibleLoader

これはどうやら、無理矢理に別バージョンとして読み込むといった少々乱暴なものらしい。けれど、これしかないなと思い詰めた。

── AS3 に馴染みはないけれど、さいわいにあまり長くなかったので、がんばって馴染みのある Perl へ。そして誰かにメンテしてもらいたい腹積りでもって Github へ上げた。

https://github.com/hiroaki/SWF-ForcibleConverter

こうして、その動画は観られるようになったけれど、その動画くらいしか試してないし、そもそもテストデータとなる「観られない」 SWF の作り方が解らない。 SWF の仕様が解っていないから、ほんとにこれでいいんだろかと思う。でも、そもそも観られなかったのだから、いいんじゃない?──そう考えれば、やるだけやった甲斐はあったんじゃないかと、そう思うことができた。

ちなみにテストデータは DATEKEN 氏のスタイリッシュな名曲。

http://www.nicovideo.jp/watch/nm8325511

2012年3月11日

order by で大文字小文字を無視する

DBIx::Skinny と SQLite3 との組み合わせでの話。DBIx::Skinny で ORDER BY をかけたいときは、次のように( resultset を使う場合):

$rs->order({ column => 'column', desc => 'asc' });

大文字小文字を区別しないでいいのにな、と思って SQLite のドキュメントを見てみたら、 collate type を指示するとのことで、これについては DBD::SQLite にも言及があった。

$rs->order({ column => 'column', desc => 'collate nocase asc' });

ASC (DESC) の前に書くのがポイントかな。最初うしろに書いて結果が得られずに悩んでしまった。

さて、 resultset は DBIx::Skinny::SQL のメソッド as_aggregate に行き着き、クエリーとして組み立てられる。その部分を引用すると、このようになっている。 $elements は order にセットしたハッシュ:

sub as_aggregate {
    ...
    ...
    return uc($set)
           . ' BY '
           . join(', ', map { $_->{column} . ($_->{desc} ? (' ' . $_->{desc}) : '') } @$elements)
           . "\n";
}

つまり何が言いたいかというと、この実装が変わったりすると駄目になるリスクがある。

DBIx::Skinny は生の SQL を書くシーンを想定している設計思想なので、こんなところに注目しないで、潔く生の SQL を書いて使った方がいいのかもしれない。

2012年3月 8日

Playlist: Vocaloids 2012.02

2012/02 中に公開されたニコ動のものの中からピックアップ。

  1. 初恋ビター - ムジカデリク - 初音ミク
  2. yufuyume_01 - mushiba - 雪歌ユフ
  3. yufuyume_02 - mushiba - 雪歌ユフ
  4. Still Alive In Love (and dreams are back re-remix) - FALL - 雪歌ユフ
  5. タ・トゥ・ラ - 喜兵衛 - 結月ゆかり
  6. 遥か彼方へ - 喜兵衛 - 結月ゆかり
  7. Ambient works for Kakoi Nizimine - take - 滲音かこい
  8. change - 空海月 - 初音ミク
  9. オービタル リメイクバージョン - Calla Soiled - 初音ミク, 鏡音リン
  10. ワタシ何処 - クヌースP - 初音ミク
  11. ノーチラス -Nautilus- A.O. - うたたP - IA
  12. かなでてみよう - TERA-Type - 初音ミク
  13. シオン - 三毛猫亭 - GUMI
  14. SterCrew - Akagami - GUMI
  15. DOT adventure AGAIN - effe - 初音ミク
  16. 桜のシナスタジア - Felis - 鏡音リン
  17. Re:Try - うたたP - GUMI
  18. LazerGirl - ヴァイパーP - GUMI
  19. 5150 - devilish - GUMI
  20. イラストレーター - りゅーしか - 雪歌ユフ
  21. ちゃんと言って - noface - 初音ミク
  22. ここにきて、ここにすわって - PSGO-Z - 初音ミク
  23. 野菜サラダ - 不始末 - 初音ミク
  24. 月祭り - Dong - 歌愛ユキ, 鏡音リン
  25. Soul Breeze - Dixie Flatline - GUMI
  26. 君のことがやっぱり - 空海月 - 初音ミク

total 1:51:45 / 149.6 MB

いい曲、多かったかな。楽しいね。

2012年3月 7日

Perl でニコニコ動画

ニコニコ動画を扱うとき Perl には WWW::NicoVideo のネームスペースにふたつの配布があった。

ひとつは HIRATA Yasuyuki 氏の WWW::NicoVideo 。これは 2007 年 11 月を最後に更新されていない。というより最初のバージョンから一週間ぐらいの間に 0.03 まで更新したきりで止まっていた。 API もよくわからない。平たく言えば、これは使えないだろう。

もうひとつは、あの Tatsuhiko Miyagawa 氏の WWW::NicoVideo::Download 。これはしかし、動画のダウンロードが主で、動画の付帯情報などは扱っていないようだった。

単純にダウンロードするだけだったら、それでよかったけれども、それだけだとじぶんの要件は満ちないので、結局、ニコ動にアクセスするための Web API (もしくはそれらしきもの)をラッピングするようなモジュールを作った。名前空間を Net にして。さいわいにして、ニコ動へアクセスする手続きはいろんなひとが情報を提供していたので、作るだけだったらさして困る事も無かった。

その Net::NicoVideo はまだアルファ版で、 CPAN に上げる程の完成度はぜんぜんないのだけれど、折角だから CPAN にあげてみたいと魔が差すのも人の性。なのだけれど、クラスの作り方とか、設計思想とか、まるで自己流で試行錯誤の賜物なので、ほかの人が利用するに堪えるものなのか自身が無い。よしんば、それがよかったとしてもその後のメンテを考えるとちょっと躊躇ってしまったりする始末。挙げ句には、こう、思うようになった──誰か、引き受けてくれないかしら?

https://github.com/hiroaki/Net-NicoVideo

思えば、こういうことを気軽に相談できるコミュニティが、 Perl には意外にも無い気がする。少しは探してはみたけれど、どうもね。

OpenID対応しています OpenIDについて

このアーカイブについて

このページには、2012年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2012年2月です。

次のアーカイブは2012年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。