 |

 携帯読取QRコード 読取未対応の方はこちら

PMCJ 携帯用HP
http://www.pmcj.com/p/

※ 3キャリア(DoCoMo SoftBank au)の他、ClubAirH" 及び H"-link でもご覧になれます。

※ 当サイト配布一部ソフトは、 [ Vector ] [ ダウンロード@nifty ] からもダウンロード出来ます。
|





| 2008年 8月 |
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| |
|
|
|
|
1 |
2 |
| 3 |
4 |
5 |
6 |
7 |
8 |
9 |
| 10 |
11 |
12 |
13 |
14 |
15 |
16 |
| 17 |
18 |
19 |
20 |
21 |
22 |
23 |
| 24 |
25 |
26 |
27 |
28 |
29 |
30 |
| 31 |
|
|
|
|
|
|
|




|
 |


 |
≪ CGI / SSI ≫
 |
 |
簡単なカスタマイズ |
≪ CGIカスタマイズ ≫
ここでは、簡単に出来るカスタマイズとして幾つかの例を上げます。
- メールヘッダ(「subject:」「To:」「From:」)のデコード
メールヘッダ(「subject:」「To:」「From:」)のデコードをISO-2022-JP、MIME encoded-wordとして、メール文字化けを防ぐ方法です。
(A) 生田さん開発 mime_pls(Perlライブラリ)の mimew.pl を使った、メールフォーム
ダウンロード : mime_pls
(B) 当サイト配布の b64mclib.pl を使った、メールフォーム
ダウンロード : Base64 Mail Convert library
Web Mail [E]での例1
#日本語コード変換ライブラリの場所
require './jcode.pl';
require './mimew.pl'; (A)の場合
require './b64mclib.pl'; (B)の場合
#
・
省略
・
sub sendmail{
&timeget;
$formco = @SNADATE;
$formco -= 1;
&jcode'convert(*subje,'jis'); (B)の場合削除可
$subje = &mimeencode($subje); (A)の場合
b64mc::Bace64Encode(\$subject, 'jis', 1); (B)の場合
&jcode'convert(*title,'jis');
&jcode'convert(*TIME,'jis');
| ・ | 赤文字の部分が、追加する記述部分です。
|
| ・ | ディフォルトでは、jis変換でメールヘッダに書き込んでいる為、2byte文字(日本語)をタイトルに使用している場合はOS、メーラーによっては文字化けの原因となります。
|
| ・ | で、上記のようにデーコードをすると回避出来ますのでお試し下さい。
|
Web Mail [E]での例
次は、差出人メールにもこれを利用して、ニックネーム付きメールにしてみます。
#日本語コード変換ライブラリの場所
require './jcode.pl';
require './mimew.pl'; (A)の場合
require './b64mclib.pl'; (B)の場合
#
・
省略
・
sub sendmail{
&timeget;
$formco = @SNADATE;
$formco -= 1;
$tomail = "佐藤 <$masmail>";
&jcode'convert(*subje,'jis'); (B)の場合削除可
▼ (A)の場合
$subje = &mimeencode($subje);
&jcode'convert(*tomail,'jis');
$tomail = &mimeencode($tomail);
▼ (B)の場合
b64mc::Bace64Encode(\$subject, 'jis', 1);
b64mc::Bace64Encode(\$tomail, 'jis', 1);
&jcode'convert(*title,'jis');
&jcode'convert(*TIME,'jis');
| ・ | 赤文字の部分が、追加する記述部分です。
|
| ・ | そしてその下部の方にある「"To: $masmail\n";」となっている箇所を「"To: $tomail\n";」として終わりです。(2箇所あります。)
|
- ファイルデーター消滅回避の強化
当方配布のCGIもロックファイルを利用した、データー消滅回避処理をしていますがサーバーによってロックファイルが使えない等色々な原因で消滅が多発する場合もあると思います。
下記方法等、色々と回避方法を見直すのも良いかと思います。
EasyBBS [E]での例1
-------------- ディフォルト -------------
sub filedisp {
if (!open(FILE,">$bbsdate")) { &unlock;&massehtml($no = 0); }
eval 'flock(FILE,2);';
print FILE @BDATE;
eval 'flock(FILE,8);';
close(FILE);
}
-------------- 編集後 -----------------
sub filedisp {
$temp = $bbsdate . "_tmp";
if (!open(FILE,">$temp")) { &unlock;&massehtml($no = 0); }
eval 'flock(FILE,2);';
print FILE @BDATE;
#eval 'flock(FILE,8);';
close(FILE);
if($#BDATE >= 0){ rename($temp,$bbsdate); }
}
| ・ | 上記の例は、投稿書き込みの際、一度テンポラリファイルを作りそこにデーターを書き込みます。
|
| ・ | そのテンポラリファイルでのデーターが消滅されていない事を確認($#BDATE >= 0)し、通常のファイル名にリネームするといった処理です。
|
| ・ | #eval 'flock(FILE,8);';のロック専用関数によるファイルロック解除のコメントアウトは、close(FILE);において自動的に解除されますので古いバージョンのperlでは特にコメントアウトした方が良いでしょう。
|
| ※ | symlink及びopenによるファイルロック(2重ロック)は、サブルーチン「filedisp」の前でも処理していますがまだ色々と良い方法(truncate、seek等を用いたりとか)があると思いますので色々と考えてみましょう。但し、100%のと言う処理は不可能ですので大切なデーターのバックアップは不可欠です。
|
- シグナルを用いた処理例
- 良くファイルロックが残ってしまうと言う方は以下の方法等を試してみるのも良いでしょう。
$SIG{INT} = $SIG{HUP} = $SIG{QUIT} = $SIG{PIPE} =
$SIG{TERM} = $SIG{KILL} = "unlock";
sub unlock {
if (-e $lockfile) { unlink($lockfile); }
}
- アラームシグナルを利用する場合。
$SIG{'ALRM'} = "timeout";
alarm(5);
処理文
alarm(0);
sub timeout {
print "Content-type: text/plain\n\n";
print "タイムアウトになりました。\n"
exit;
}
- おまけ? カレンダーをポップアップメモに
- 当サイト配布 [ Mini Diary ] を使います。
当ホームページの左下にあるカレンダーのように、下線の付いた日付にマウスをあてると
ステータスバー及びポップアップでその日のメモが表示されます。
カスタマイズ : calender.pl 214行目〜
open(LOG, "<$url"); while (){ $_ =~ ... 省略 ...
#$link = '<a class=Ca href="javascript ... 省略 ...
# '\',\'' . $log . '\')">' ... 省略 ...
$link = '<u><font onmouseover="window.status=\'' . $log .
'\';return true;" style="cursor:pointer;" title="' .
$log . '">' . $lname . '</font></u>' . "\n";
| ・ | 現在のコメントデータがある場合の処理部分をコメントアウトし赤文字の部分を追加し入れ替えをします。( # はコメントアウト )
|
| ・ | title = ポップアップ表示、window.status = ステータスバー表示となります。
|
| ※ | style="cursor:pointer;" はポインターを矢印から指にする為の記述です。
|

≪ シグナル ≫
カスタマイズの項「シグナルを用いた処理」に関連し、シグナルについて少々....
- シグナル一覧を参照する
telnet 又は プロンプト等で、killコマンドを参照します。
$ kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG S
TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2
- シグナルとシグナルナンバー
| SIGHUP | 1 | ハングアップ | SIGSTOP | 17 | 中断 |
| SIGINT | 2 | 割り込み | SIGTSTP | 18 | |
| SIGQUIT | 3 | 終了 | SIGCONT | 19 | SIGSTOPを再開 |
| SIGILL | 4 | | SIGCHLD | 20 | |
| SIGTRAP | 5 | | SIGTTIN | 21 | |
| SIGABRT | 6 | | SIGTTOU | 22 | |
| SIGEMT | 7 | | SIGIO | 23 | |
| SIGFPE | 8 | | SIGXCPU | 24 | |
| SIGKILL | 9 | 強制終了 | SIGXFSZ | 25 | |
| SIGBUS | 10 | | SIGVTALRM | 26 | |
| SIGSEGV | 11 | | SIGPROF | 27 | |
| SIGSYS | 12 | | SIGWINCH | 28 | |
| SIGPIPE | 13 | 無プロセスパイプ | SIGLOST | 29 | |
| SIGALRM | 14 | アラーム | SIGUSR1 | 30 | ユーザー定義1 |
| SIGTERM | 15 | 終了 | SIGUSR2 | 31 | ユーザー定義2 |
| SIGURG | 16 | | | | |
|
≪ その他 ≫
|
 |





|
 |