2008年11月16日日曜日

Macでニコニコ動画のH.264(mp4)動画から音声を抽出する方法

珍しくそこそこ独自性の高い記事かも。
まぁ半分くらい知り合いのアドバイスによるものだが…

そうそう、macでnicocacheを動かすには、jarファイルをログイン項目に入れるなり、使う時にjarファイルをダブルクリックするなりすれば良い。そもそもこれが前提。

nicocache(含nl)にはflvおよびmp4から音声を抽出する機能があるんだが、Macでやるとこいつの設定が結構面倒だったので、簡単にまとめてみる。たぶん多くのLinuxでも似た方法でやれるから参考にはなるはず。

まず、MP4Boxが必要なのでこいつを以下のアドレスから落として来る
MP4Box - statically linked (Mac OS X / Intel) - CVS 18.08.2008(http://www.tkn.tu-berlin.de/research/evalvid/)
で、こいつが実行ファイルなので、これを実行しようとすると、何故かlibpngが所定の位置に無いってエラーを吐く。
なんで音声用のソフトにlibpngが居るんだろうという疑問は残るが、入れれば動くので頑張って入れよう。

libpngなどを入れるにはMacPortsというアプリケーションが簡単で便利だ。
以下のサイトを参考に、ソフトウェア一覧の更新まで行うと良い。
ちなみに環境変数は、~/.profile にテキストファイルを作ってコピペすれば動く。
vimコマンドが便利。
http://d.hatena.ne.jp/hakobe932/20061208/1165646618
そしたら、
$ sudo port install libpng
とコマンドを打って、パスワード聞かれるので自分のパスワード入れると、libpngが手に入る。
しかし、これではまだ動かない。MP4Boxが要求するパスと実際に存在するパスが違うからだ。
と言う事で、シンボリックリンクを貼る
$ sudo ln -s /opt/local/lib/libpng.3.dylib /usr/local/lib/libpng.3.dylib
これでMP4Boxが動くんだけど、nicocacheで使う為にはパスの通った所に移動してあげなきゃいけないので、こんな感じにすると良い
$ sudo mv MP4Box /usr/bin/

これでMP4Boxは動く様になったので、あとは最後のひと仕上げ
nicocache.jarのあるフォルダにテキストファイルでもなんでもいいので「MP4B0x.exe」という名前のファイルを作る。

これでmp4からm4aが抽出されましたとさ。めでたしめでたし。


ちなみにswfは対応してないので、wineとかCrossOverとかでHugFlash動かすのが妥当なんじゃないかなぁ。(やった事無いので知らんけど)

参考ページ
http://pc11.2ch.net/test/read.cgi/software/1200931289/(主に576番)

2008年11月14日金曜日

Macメインの環境でオンラインストレージサービスのDropBoxを便利に使う

久々の更新ですね。

http://arakawa.yamanaka.ics.keio.ac.jp/archives/244
の内容ほとんどそのまんまなんですが…

(注:以下で言うDropBoxはWebストレージの方で、Macのパブリックの中のファイル共有用ディレクトリではありませんw)

僕は普段作業をするとき、いわゆる「書類」は全部Mac標準の「書類」フォルダに入れています。
そんな環境と大学のPCを併用する生活を続けていた僕が前々から思っていたのが、このフォルダを同期していつでも何処でも見れたら良いな、って事。

そんな中最近DropBoxを使ってみようと思った訳なんですが、ちょっと困る事がありました。
それは、上記「書類」フォルダは1GB程度しか使ってないのでまるごとDropBoxに突っ込んでしまいたいんだけどどうすれば良いものか…
というそこのあなた!

spotlightで「ターミナル」
ln -s ~/Documents ~/DropBox/hogehoge
これでシンボリックリンクが作られて、ほっとけば同期完了〜

2008年9月25日木曜日

Mac OSXのAdiumが1.3.2b1になった

MSNメッセをOSXで使う事に関する記事を先日書きましたが、
バージョンアップが激しく将来に期待出来ると言う事でAdiumを使っています。

そしたらなんと今回のアップデートで「不在メッセージ」に対応してくれました!

MSNメッセ(今はWindowsLiveか)の知り合いが割と多いので、アップデートして初回ログイン時はヤバかったです。
「ポコペン」「ポコペン」「ポコペン」「ポコペン」「ポコペン」
みたいな。

とにかく、これでようやくWinXp上のWindows Live Messangerと遜色なく使えるかなと思います。
状態メッセージがまだ貧弱だけど、他人のは見れるからそれほど困る事も無いかと

2008年9月24日水曜日

CakePHPの高深度アソシエーションの欠点

CakePHP(1.1)でSNS的なシステムを運用していて気づいた事。
1.2で改善されてるのか?ちょっと調べてないから解らないが…


メッセージ一覧のページの表示が前々から遅くて、何が起きてるのかと思いつつ放置していたんだが
少し余裕が出て来たのでデバッグモード(=2)でクエリを見てみたら、何か件数x3くらいのクエリが実行されていた訳だ


ここで問題。

PHP標準のSQL発行ではアソシエーションの階層はハッシュの階層に反映されない。LEFT JOINを何度しようと、結局はSELECTで指定したカラム名による一次ハッシュになるはず。
でもCakeでアソシエーションを組むと、階層が反映されるわけだ。
どうやっているんでしょうね?

正解は、「カラムごとにクエリを何度も発行している」(!!)
だから今回の様に、何かのリストのような物を表示する時にCakeのfindAll(Byなんたらを含む)をするとめちゃくちゃ重いってわけだ

結局Model::query()にカスタムしたSQL文を突っ込んでやったら爆速になりましたとさ。



まとめ

CakePHPのfind系メソッドは複雑なアソシエーションを組んだデータのリストには向いてないので、自分でSQL文を書こう!

2008年9月20日土曜日

GmailでRFC違反アドレスにもメールを送る方法

先日、GmailからRFC違反のメールアドレスにメールを送る事が出来なくなりました。

しかしながらココはケータイメール大流行りのニッポンだし、まさか「俺からメール送れないからお前メルアド変えろ」なんて言えないでしょ?
ただでさえRFC違反アドレスにする人はそう言う事に興味が無いから違反アドレスにしている訳で、もちろんこれでルール守らない糞キャリアざまぁwだとは思うんだけど実用上不便ということで…

独自調査による、GmailからRFC違反アドレスにメールを送る方法です。


・SMTPもしくはIMAPでメールを送る


…これだけなのでしたー^^;

2008年9月12日金曜日

CakePHP1.1のscaffolgでアンダーバー(_)区切りDB(モデル)を使う時にバグる

タイトルの通りです。
そして記事としてはサイトの紹介に留まります。
http://d.hatena.ne.jp/cos31/20080220/1203490118
Notice: Trying to get property of non-object /hogehoge/cake/libs/controller.php L66

バグの内容としては、テーブルは通常通りに描画されているっぽいんだがなぜか表示されない。
動作の雰囲気は、モデル情報を適切に取得できずにカラムが生成出来ていないといった所。

スクリーンショット撮っておけばよかったなぁ

まぁ私用メモみたいなもんですが、困ってる人の参考になれば幸いです

2008年9月4日木曜日

google chromeはmacっぽい

google chromeをVM ware Fusion上のWindowsXpで使ってみた感想

「これ、macっぽいな!(OSX的な意味で)」

macにはspotlightという機能がある。
これは書類の名前とか中身とかからサクっと情報を引き出す機能で
慣れて来ると何をするにもまずはspotlightから、って感じになる。
Control + spaceで検索バーが出て来くる。
「iTu」まで入力すればiTunesが出て来るから、あとはEnterすればiTunesが起動する。
Webページの履歴は一緒にしちゃうとややこしくなりすぎるから俺はオフにしているけど、Safariを使ってアクセスしたページの履歴もここから検索出来る。

というspotlightを常用している俺からすると、chromeも似た様な使い勝手だなぁと思う。
まさにWeb版spotlight

前々からgoogleとappleは何だか似ている所がある様に感じている。
収益を得る方法とか理念とかは全然似てないんだけど、出来る「物」自体は非常にそっくり。
前述のspotlightもそうだし、iCalとgoogleカレンダーの操作性も近い。
どちらも「察しが良い」かつ「速い」という点が似ているのだろう。

MSはその辺りが遅れている様に思う、だから「使いにくい」とか言われてしまうんじゃ無いかなぁ。
Officeの検索機能は勝手に出て来るし(こういうのは「出したい」と思った時に出て来るべき)、遅くて他のプロセスにまで影響を及ぼす。
「お前を消す方法」という笑い話はMSには笑っていられない問題である。
Windows7で挽回出来るのか、見物ですね。

2008年8月31日日曜日

俺の開発環境(macでPHP+MySQL)

今使っている開発環境をメモっておこうかと。

まずマシンはmac book early 2008のローエンドで、RAMを2Gx2にしたもの。Leopard

標準のApacheに付け足すと(特にPHPのPDOドライバ周りが)面倒なのでxamppで統合環境をセットアップ。

ブラウザはFirefox、アドオンにpagerankを調べるためのGoogleツールバーとFirebug
ただしFirebugはリグルがきもすぎるのでhttp://koress.jp/2008/07/firebug.htmlを参考に可愛いハチの画像に。

エディタはmiとかdashcodeとかKEditとか使ったけど原稿で最も安定して使いやすいのはCotEditorだね。
タブは無いけどmacの場合Exposeがあるから問題ない。


あとは必要に応じてIEの表示を確認出来る様にVMWareFusionでXpを動かしてある。
RAM増設前(512MBx2)は重かったけど今は結構快適。

まぁこんな所です。特にmac用の良いエディタを探している人にはCotEditor超オススメです。

俺の開発環境(おもにWeb系

2008年8月28日木曜日

Mac用MSNメッセンジャークライアントとしてのAdiumとProteus、あと公式クライアントの比較

あんまりこういう情報が無かったので簡単に比較してみた。

個人的に現在気に入っているのは色々使った結果Adium
やはり強みは最近追加された「状態メッセージの表示」機能。
公式クライアントでもサポートしてないので、これはデカい。

Proteusにも結構良い所がある。
それはネットワークが不安定な時に潔く切断する事!
Adiumや公式ではメッセージが送れたと思っていたら1分くらいして送れていなかったなどというバグが頻繁に起きてしまう。
もっとも、これは私が無線LAN環境である事に起因する…かもしれない、coregaだし。
しかしProteusはメンバの画像も表示出来ないし、ファイル転送も全く機能しない(しかも一見機能しているように見えるのが迷惑)

公式はどれをとっても半端で、両方の欠点をとってる気がする。
強いて言えばファイル転送が一番早い(厳密な計測はしてないのでこれすら間違っているかもしれないが)

という事で俺の結論は
1.基本的にAdiumを使ってみよう!
2.Adiumによる接続の安定性に不満が出て来たら試しにProteusも使ってみよう!
3.比較記事を書きたいなと思ったら公式も使ってみよう!
こんなとこ。
まぁこの件でMS社を悪く言う気はない。ライバルOS向けフリーソフトに力を入れる方が変だからな。

2008年8月25日月曜日

Firebugのゴ○ブリアイコンを変更する方法 Macでも

便利さに定評のあるFirefox拡張、Firebugですがアイコンが気に入らない。
この○キ○リを推してるのはどこの馬○だ、さっさとどうにかしろ、俺は虫がきらいなんだよぉぉおぉ!

…と思っていたら
koress.jp: Firebugの虫アイコンを変更する方法というエントリを発見しましたw


紹介だけで済むかと思いきや、なぜかMacでは上手く行きませんでした。
結論としては右図の通り
skin -> classic -> mac 内のfirebugから始まる3つのpngファイルを書き換えなければならない、って事みたい。
fireworksなりphotoshopなりフリーの何かなりで配布して下さっているfirebug24の画像をコピペすると幸せになれます。

さらに、content->firebug->firebug.png
これも書き換えるとアドオン一覧の部分まで変更出来ます。完璧。

アップデートのたびに書き換える事になるからバックアップしておいた方が良いだろうと思う。

2008年8月17日日曜日

mac用メッセンジャーadium1.3betaでMSNの状態メッセージが使える様になってたw

ソースは2ch、実際やってみたけどこんな感じ

しかし無線LANのせいなのかソフトのせいなのか、たまに自分が勝手にログオフ→ログインをしてしまう
実家でも学祭実行委員のでも、自分のアパートのでもなぜか状況は変わらず・・・なんでだろうね。

まぁそれはともかくAdium便利になりました。
バージョン2からはビデオチャットとか音声チャットとかも対応して行くそうなので期待ageって事で

あとは操作の解りやすさをもうちょい詰めてほしいですね。
日本人である俺としては日本語ももうちょい解りやすくして頂きたい…w

2008年8月10日日曜日

Macをキーボードで操作する


MacがWindowsに劣っている点として、キーボード、特にTabキーを利用した素早い操作が出来ない事がよくあげられる。
しかし実はこれ、チェックボックスをちょっと書き換えるだけでずいぶんと使いやすくなるのだ。
左の赤線部がその箇所、画像が見えない人のために言葉で書き記すと、
「環境設定」→「キーボードとマウス」→「キーボードショートカット」→「フルキーボードアクセス」→「すべてのコントロール」にチェック
といった所か。
マウスを使わずに色々な所をいじれるのは非常に便利。
Tabで選択してEnterではなく、Tabで選択して「Space」を押さないと思った様に動かないので少しだけ注意が必要かもしれない。
しかし、即Enterで良いのに間違ってTabを押したときでも思い通りに動くのである意味理想かもしれない。

まぁ俺がいろいろ言ってもあまり意味ないね、習うより慣れろって事で。

2008年7月29日火曜日

MT Perl APIをいじってみた

MovableTypeを外部からいじるのに役立つモジュールがある。
MT Perl APIといって、mt/libのなかに.pm形式で色々入っている。
携帯用に表示するスクリプトとして有名なMT4iなどはこれを駆使して作られている。

とある理由でこいつをいじっていたら、
No ObjectDriverとかいうエラーが…
なんだろうと調べていたらどうやら解決。
my $mt = MT->new( Config => "/home/hoge/public_html/mt/mt-config.cgi");
とか書いて、Configからデータベースへの接続設定とかもろもろを読み込ませる必要がある模様。

MT4iのソースコードとかSixApartのサンプルソースとか読んで分かったけど
これリファレンスとかの冒頭に書いといて欲しい…

2008年7月25日金曜日

ネット商取引完全終了のおしらせ

まぁ対策をしていればそんなに怖くないのだけれど…

DNSの脆弱性がかなりやばいようです。

詳細はコチラ
http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20377716,00.htm


何が起こっているのか分からない人のために、最も具体的でヤバい例を紹介すると…

Aさんが普段ネットバンク(あるいはAmazonなど)にアクセスするときは

Aさん - ebank.co.jp(イー●ンク銀行)
という形でつながっているんですが、この脆弱性をつついてちょっといじると
Aさん - ebank.co.jp(クラッカー)
というつなぎかたに変えてしまうことが可能になります。

すると、クラッカーがイー●ンク銀行のサイトとソックリなサイトを作っておけば
Aさんはパッと見それが正しいサイトだと思い込んでパスワードを入力してしまうわけです。


ということでGIGAZINEで公開されてる
http://gigazine.net/index.php?/news/comments/20060720_opendns/
OpenDNSというのを使ってみることにした。

これを使えば当面安心の模様。

musu-bi.jp

いつも割りのいいバイトをさせてくださっているドサナイテさんのお仕事で
インファントマッサージをしているむすびというお店のサイトのコーディングをしました。

今回(俺はそこまですごいとは思っちゃいないのですが)好評だったのは、エントリのプライマリカテゴリが合体することで、どこのメニューからたどった情報なのかが分かる、という機能。
この仕組みが発生したいきさつはこんな感じ
「デザイナーさんがPDFを送ってくる」

「俺が『なんかツマンナイデザインだな…』という様な事を言う」

「デザイナーさんが『じゃあこれでどうだゴルァ』と、コーディングが難しそうな課題を出してくる」

「俺が『ほほう、やってやろうじゃねえか!』と実装」

本当はこんなけんか腰じゃないけど、だいたいこんな感じ。


さてさてこのブログは別に日記を書いたり被リンクを稼いだりするのが目的ではなく
技術系の情報共有が目的なので、こいつの実装方法を書こうというわけ。

まずこのブログの仕様から
  • システムはMovable Type 3.35
  • PHP4で拡張子もphpに変更済み
  • 左のメニューはカテゴリからの自動生成
で、CSSで実装するためにメニューのli要素に必要なClassは
  • 現在のカテゴリを示す部分にはcurrent
  • 一番上で、現在のカテゴリを示す部分にはさらにcurrentTop
この2つだけ。あとはCSSをがんばって書けば何とかなる。

じゃあどうやって実装してるかというと
MTSubCategoriesでカテゴリ一覧表示しているので、MTSubCatIsFirstとMTElseを使うとカテゴリが一番上か一番上で無いかの条件分岐が出来る。
でもって、各アーカイブであらかじめPHP上の変数にMTCategoryLabelあたりを保存するようにしておけば
幸いメニューはソースコード上、その後に来るのでPHPのif文で分岐すれば完成。