準備
mac ports を使用して ffmpeg をインストールします。
mac ports の詳細はここをみてください。
音声だけ抜き出して mp3 にする
ffmpeg -y -i hoge.flv -acodec copy hoge.mp3
iphone用の動画(mp4)に変換
ffmpeg -y -i hoge.flv -vcodec libx264 -s 320x240 -b 1024k -acodec libfaac -ac 2 -ar 24000 -ab 96k -f mp4 hoge.mp4
画質を奇麗にしたければ -b(ビットレート) をあげてやればいい。
これをエイリアスにしたい
いちいち覚えれないからエイリアスにして簡単にできたらいいなと。
わざわざこれぐらいでコマンドファイルもつくりたくないし。
#perl -le '($f)=split(/\./, $ARGV[0]);`ffmpeg -y -i $f.flv -acodec copy $f.mp3`' hoge.flv
ワンライナーだとこんな感じででける。
ただこれを alias にすると動かなくなる。
#alias flv2mp3='perl -le "($f)=split(/\./, $ARGV[0]);`ffmpeg -y -i $f.flv -acodec copy $f.mp3`"'
#flv2mp3 hoge.flv
どーすればいいんだろうか。。。。
分かる人ヘルプ
原因は URI::Find が2009/03/19にアップデートされたらしい。
それを使うと Catalyst::Plugin::Session::State::URI をいれようとすると下記のようなエラーがでる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/01use.t t/02pod.t t/03podcoverage.t t/basic.t t/live_rewrite.t t/live_uri_for.t t/param.t
t/01use.t .......... ok
t/02pod.t .......... skipped: set TEST_POD to enable this test
t/03podcoverage.t .. skipped: set TEST_POD to enable this test
t/basic.t .......... 1/51
# Failed test 'external URL stays untouched'
# at t/basic.t line 131.
# got: 'foo <ahref="http://www.woobling.org/"></a> blah'
# expected: 'foo <a href="http://www.woobling.org/"></a> blah'
t/basic.t .......... 31/51 # Looks like you failed 1 test of 51.
t/basic.t .......... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/51 subtests
t/live_rewrite.t ... ok
t/live_uri_for.t ... ok
t/param.t .......... 1/28
# Failed test 'external URL stays untouched'
# at t/param.t line 100.
# got: 'foo <ahref=%22http://www.woobling.org/?sid=qux"></a> blah'
# expected: 'foo <a href="http://www.woobling.org/"></a> blah'
# Looks like you failed 1 test of 28.
t/param.t .......... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/28 subtests |
インストールされているモジュールのバージョン
- Catalyst::Plugin::Session ...loaded. (0.20 >= 0.06)
- URI ...loaded. (1.37)
- URI::QueryParam ...loaded. (0)
- URI::Find ...loaded. (20090319)
- HTML::TokeParser::Simple ...loaded. (3.15)
- MIME::Types ...loaded. (1.27)
- Test::MockObject ...loaded. (1.09 >= 1.01)
- MRO::Compat ...loaded. (0.09)
URI::Find のバージョンを 0.16 に変更してやるとインストールできた。
ちなみに試した環境は Mac(Leopard) です。
これでようやく Task::Catalyst がはいった。。。。
DBIx::Class をいれようとした時に少しハマったのでメモ。
どうやら CPAN コマンドを使ってインストールしようとすると
Mac にバンドルされている sqlite を使ってないらしい。。。
そのためインストールに失敗する。
これを回避しようと思うと Makefile.PL に USE_LOCAL_SQLITE=true に指定すればよいらしい。
1
2
3
| $sudo cpan
cpan[1]> o conf makepl_arg USE_LOCAL_SQLITE=true
cpan[2]> install DBD::SQLite |
o conf commit をしない限りここで変更しても cpan を再起動すると元の設定を使うことになる。
参考資料
DBD-SQLite-1.14
cpan コマンドでモジュールをインストールするときに Makefile.PL の引数を設定するCommentsAdd Star
手順を簡単に説明すると
- memcached をインストール
- memcached を起動
- php に memcached のクライアントをインストール
- apache 再起動
- object-cache.php を配置
こんな感じで出来ます。
というわけで順をおって詳細をば。
(下記はFedora8 x86_64 にインンストールしたのを説明しています)
memcached をインストール
必要なライブラリ : libevent
これでインストールできます。
つぎに memcached をインストールします
memcached を起動
yum でいれたのなら
service memcached start
chkconfig memcached on #これは再起動後に自動的に起動するようにしてます。
memcached がちゃんと動作しているかの確認は telnet を使うと簡単にできます。
$telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set hoge 0 0 4 # <- ここで hoge という値に
fuga fuga を代入している
STORED
get hoge # <- hoge という値を取り出してる
VALUE hoge 0 4
fuga
END
php に memcached のクライアントをインストール
これは pecl でインストールすると楽です。
pecl は perl でいう CPAN 的なもの。
この場合 php.ini に extension=memcache.so を追加してやる必要があります。
僕は yum でいれました。この場合は特に設定する必要はありません。
object-cache.php です。
こいつを wp-content/ にいれてやるだけで大丈夫です。
memcached サーバーの場所がローカルホストの 11211 であるなら何も設定する必要はありません。
それ以外の場合は
$memcached_servers = array('192.168.1.1:11211', '192.168.1.2:11211');
このように編集してやれば追加できます。
おまけ
便利そうなツールがあったので一つ紹介しときます。
memcache.php ってのがあってこれを利用すると簡単にヒット率や
現在の使用率を見ることができます。
こいつをどこでもいいので、どこかの DocumentRoot 以下に置き
HTTP ベースでアクセスすると表示されます。
ユーザ名、パスワードは memcache.php を開いて変更すれば大丈夫です。

複数の wordpress から同一の memcache サーバーを使用している場合は、
このエントリーが凄い参考になります(Wordpressのobject-cache.phpをハックする)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| SET serveroutput ON
declare
ob varchar2(4000);
CURSOR cur IS
SELECT object_type,object_name FROM user_objects ORDER BY object_type,object_name;
begin
FOR vRec IN cur LOOP
begin
ob := 'DROP ' || vRec.object_type || ' ' || vRec.object_name;
DBMS_OUTPUT.PUT_LINE(ob);
execute immediate ob;
exception
when others then
DBMS_OUTPUT.PUT_LINE('No:' || SQLERRM);
DBMS_OUTPUT.PUT_LINE('Object:' || vRec.object_name);
end;
END LOOP;
end; |
おまけ
mysql でいう limit みたいなこと。
rownum でしないといけない。相当めんどい。
1
2
3
4
5
6
7
8
9
10
11
12
13
| SELECT
*
FROM
(
--実際に取得したいクエリー
SELECT
hoge,
rownum rn
FROM
fuga
)
WHERE
1 <= rn AND rn <= 10 |
さらにさらに
order by した上位10件とかだとこうなる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| SELECT
*
FROM
(
SELECT
*,
rownum rn
FROM
(
--実際に取得したいクエリー
SELECT
hoge
FROM
fuga
ORDER BY
foo
)
)
WHERE
1 <= rn AND rn <= 10 |
めんどくさすぎる。。。。
というのをただ伝えたかっただけwww