memo.xight.org

日々のメモ

.zshrc のコンパイル

Summary

zsh のシェルスクリプトは zcompile コマンドでコンパイルすることが可能.

.zshrc から .zshrc.zwc ファイルの生成

zcompile .zshrc


注意

同一ディレクトリに .zwc ファイルがある場合 zsh は .zshrc.zwc を実行する.
.zshrc を変更するたびに,zcompile を実行する必要がある.

Reference

zshのある暮らし - FAQ@zshスレ - 設定ファイルの読み込みが遅い
http://hiki.ex-machina.jp/zsh/?FAQ%40zsh%A5%B9%A5%EC#l16

メール送信元に日本語を利用する

Summary

From: MIMEエンコードされた日本語名 <user@example.com>
From全体をMIMEエンコードしてはダメ!

Sample source

$mail_encoding = 'JIS';
$local_encoding = 'EUC-JP';

mb_language('Japanese');
mb_convert_variables($mail_encoding,$local_encoding,$name);
mb_convert_variables($mail_encoding,$local_encoding,$mail);
...

$from   = mb_encode_mimeheader($name,$mail_encoding).' <'.$mail.'>';
$header =  "From: $from\n";
$header .= "Cc: $cc\n";
$header .= "Bcc: $bcc\n";

mb_send_mail($to,$title,$contents,$header);

validate.js と setInterval を利用したフォームの入力チェック

Summary

validate.js[2006-01-06-4] を利用してみた.
オートコンプリートからマウスで選択した直後に,validate結果が更新されない.

インフォアクシアのお問い合わせでは setInterval(func,ms) を利用して
定期的に入力フォームのチェックを行っている.

validate.jsでvalidate結果表示を更新するには,Behaviour.apply() を呼び出せばよい.

Source

以下の記述で500ms毎にvalidate結果を更新する.
<body onload="setInterval('Behaviour.apply();',500">
...
</body>


注意

無差別に全フォームのチェックを行ったり,極端にインターバルの時間を短くしたりすると,処理が重くなる.

インフォアクシアのお問い合わせでは,入力内容が変更された時のみ,
入力チェックを呼び出すようにしている.

処理の軽量化

prototype.js を利用しているため $F('elemId') でフォームの内容を呼び出している.
var nameTmp  = '';
var mailTmp  = '';

function isChangeForm(){
	var ret = false;
	if (nameTmp != $F('name') || mailTmp != $F('mail')){
		nameTmp = $F('name');
		mailTmp = $F('mail');
		ret = true;
	}
	return ret;
}

function updateForm(){
	if (isChangeForm()){
		Behaviour.apply();
	}
	return;
}


<body onload="setInterval('updateForm();',500">
...
</body>


Reference

インフォアクシア - お問い合わせ
https://www.infoaxia.co.jp/forms/com/contact/