CentOS 4.3 に ttyrec を入れたところ、RedHat 版の RPM では ttyrec コマンドを使うと Out of pty’s と怒られてしまいました。
ソースをダウンロードしてきて、README にならって
make CFLAGS=-DSVR4
としたところ、問題なく動作しました。
参考:
[2006-04-11] 端末での作業を記録/再生する
ライフハックといいつつ、技術に関係無いもの全般
CentOS 4.3 に ttyrec を入れたところ、RedHat 版の RPM では ttyrec コマンドを使うと Out of pty’s と怒られてしまいました。
ソースをダウンロードしてきて、README にならって
make CFLAGS=-DSVR4
としたところ、問題なく動作しました。
参考:
[2006-04-11] 端末での作業を記録/再生する
Exif 2.2 対応してるものは数が少ないですが、CUI で対応しているものを見付けました。
Exifファイルの情報表示プログラム(ナカタの Digital Wonder Land)
対応は Windows(バイナリ配布), Linux 他(ソース配布)。
記事を書いている現在、ソース(sanyo.c)が不足しているようですが、工夫すればコンパイル可能です。
なお、このプログラムはライセンス形態が特殊なため、ダウンロードの際は注意してください。
Convert Video to 3GPP(English)
FFMpeg 関係。
その他参考(音声に使われている aac/amr コーデックが解釈できないために動画 MPEG4 のみ変換に成功したもの):
Back At One. – FFMPEG
Linux で携帯ムービーを変換してみる
EXIF.org の
http://www.exif.org/specifications.html で英文の仕様書が公開されています。この記事を書いている時点では EXIF2.2 が最新です。
警告: 剣呑なメモリーを使用しています! [security]:
gpg を使っていて上記のような警告がでていたので簡単に調べてみました。
– gpg: 警告: 剣呑なメモリーを使用しています!(%!zt! diary)
「gpg: WARNING: using insecure memory!」というのはcp $(which gpg) .; ./gpgなどでrootにsetuidされていないgpgを使うと出てくるメッセージ。
ということで、次の処理で対処可能です。
# ll `which gpg`
-r-xr-xr-x 1 root wheel – 738740 4 6 12:46 /usr/local/bin/gpg*
# chmod u+s `which gpg`
# ll `which gpg`
-r-sr-xr-x 1 root wheel – 738740 4 6 12:46 /usr/local/bin/gpg*
TTYPLAYER
[2006-04-11]に紹介した ttyplay の Java アプレット版(GPL License)です。
デモも見られますが、便利そうです。
追記:
(20060-07-06) 非公式ですが、サンプル付きの class ファイル, フォントファイルのセットをここに置いておきます。すぐ使いたい方はこれをダウンロードして、example.html を開いてみてください。
参考:
– TTYPLAY で遊んでみる(rogue)
$_SERVER[‘SERVER_NAME’] と $_SERVER[‘HTTP_HOST’] どっちを使うべきか。
– SERVER_NAME Versus HTTP_HOST
結論から
– HTTP_HOST
単純に HTTP リクエストヘッダの host: そのままが格納される。省略されると空文字列になる。
– SERVER_NAME
HTTP リクエストヘッダで host: が指定されていれば、
htmlentities($_SERVER[‘HTTP_HOST’])
と等価になる。
host ヘッダが省略された場合はサーバデフォルト(Apache なら httpd.conf の ServerName)と等価になる。
とのことです。いずれにせよ、信頼できる値ではありませんね。
参考:
– Chris Shiflett: SERVER_NAME Versus HTTP_HOST(blog.xole.net)
メールをハンドリングする上で、メールソースを解析するという処理を実装しようとしてクラスがないか探していて
Google で mail, email, parse, php, rfc822 とか検索していたのですがライセンス制限のないものが全然見付かりませんでした。
で、ふと PEAR を追ってみるとバッチリありました。
Mail_Mime でメールのエンコード、Mail_mimeDecode でメールのデコードが可能です。
Mail パッケージの Mail_mimeDecode を使うと次のようになります。
require_once(‘Mail/mimeDecode.php’);
$mail = ”;
// …
// ($mail にメールのソースを格納する処理)
// …
$params = array();
$params[‘include_bodies’] = true;
$params[‘decode_bodies’] = true;
$params[‘decode_headers’] = true;$decoder = new Mail_mimeDecode($mail);
$structure = $decoder->decode($params);
var_dump($structure);
結果(一部省略. 文字コードは JIS):
object(stdClass)(5) {
[“headers”]=>
array(14) {
[“from sender@example.org tue may 9 20”]=>
string(10) “21:03 2006”
[“return-path”]=>
string(23) “<sender@example.org>”
[“x-original-to”]=>
string(14) “foo@example.com”
[“delivered-to”]=>
string(14) “foo@example.com”
[“received”]=>
array(3) { /* ..snip.. */ }
[“date”]=>
string(31) “Tue, 09 May 2006 20:20:59 +0900”
[“from”]=>
string(35) “”John” <sender@example.org>”
[“to”]=>
string(14) “foo@example.com”
[“message-id”]=>
string(45) “<114717365920816000001f81@example.org>”
[“subject”]=>
string(19) “テスト”
[“x-mailer”]=>
string(17) “Cybozu Office 6.5”
[“mime-version”]=>
string(3) “1.0”
[“content-type”]=>
string(31) “text/plain; charset=iso-2022-jp”
[“content-transfer-encoding”]=>
string(4) “7bit”
}
[“ctype_primary”]=>
string(4) “text”
[“ctype_secondary”]=>
string(5) “plain”
[“ctype_parameters”]=>
array(1) {
[“charset”]=>
string(11) “iso-2022-jp”
}
[“body”]=>
string(495) “Hello, world!!
“
}
文字コードについては一切感知していないのか mb_internal_encoding の値にかかわらず, charset で指定されている通り JIS (iso-2022-jp) でした。
From: や To: の解析には Mail_RFC822::parseAddressList() という便利なメソッドも存在します。
require_once ‘Mail/RFC822.php’;
// $structure は Mail_mimeDecode::decode() の結果
$from = Mail_RFC822::parseAddressList($structure->headers[‘from’]);
echo $from[0]->mailbox.’@’.$from[0]->host;
// 結果: sender@example.org
参考:
– Mail_mimeDecode – メールデコードの例(pear.php.net)
Configuration HOWTO: ソフトウェアの設定(Linux JF Project)
ちょっと変わった利用方法ですが..工夫次第でできることの例です。
ここでは sleep というコマンドを利用しますが、標準では sleep というコマンドが存在しないため、Cygwin をインストールしてパスを通すか、ここ(Nifty フォーラム)にあるように次のコードを sleep.bat として c:\windows あたりに保存してください。
@echo off
REM Sleep.bat [秒数]
set /a wtime=(%1+0)*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=
– スリープタイマーをかけて Windows を自動終了させる
→ 一定時間後に Windows を自動シャットダウンする(以下は2時間後の例/2時間=7200秒)
※管理者である必要があります
sleep 7200 && shutdown -s
– 朝になったら目覚しがわりの音楽を再生する
→ 一定時間後に音楽 morning.mp3 を再生する(以下は8時間20分後の例)
※ .mp3 が再生ソフトに関連づけされていて、カレントディレクトリに morning.mp3 があることが前提。
sleep 30000 && morning.mp3
追記:
(2006-05-10) sleep について加筆修正しました。