NET/www/webプログラミング
の編集
https://over.6pb.info/wiki/?&8694a1ee7e
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
*メモ [#xe473190] -[[PYPL PopularitY of Programming Language index:http://pypl.github.io/PYPL.html]] -printfの記法は気が滅入る。表で値を与えてみた。 --普通の書き方 >printf "<tr><td $tdclr_host>%s<td>%s<td>%s<td>%.60s<td $tdclr_stts>%s<td>%.50s</tr>\n",substr($host,-30),"$mon $date",$clock,$uri,$stts,$ua; --表で #pre{{ my @printform = split /\n/, <<END; <tr> <td $tdclr_host>%s @{[substr($host,-30)]} %h host, 式展開の記法 <td>%s $mon $date 日付 <td>%s $clock 時刻 <td>%.60s $uri %rからページ名切り出し <td $tdclr_stts>%s $stts status code <td>%.50s $ua User-Agent </tr> END for (@printform) { @_ = split /\t+/; if (defined $_[1]) { printf qq($_[0]),$_[1]; } else { print qq($_[0]); } } }} -CGIプログラムをroot名義で動かしたいことがある。sudoを使えば可能。当初誤解していたのだが、sudoersに適切な記載をすれば、その条件で、自動的に実行ユーザーが変わるのだと思っていた。(mod_rewriteのように。)正しくはsudoコマンドが必要。sudoコマンドで、対象コマンド等を呼んで初めて実行ユーザーが変わる。 --CGIスクリプトそれ自体をsudoで呼び出し実行する(CGIとして)ことは非現実的なので、CGIスクリプトの中で本命のスクリプトないしコマンドをsudoで呼び出すことになる。sudoersに登録する対象コマンド等は、その本命スクリプトないしコマンドになる。ただし、/bin/cpや/sbin/iptablesのようなコマンドを登録するのは影響範囲が広すぎ、危険だ。反面、スクリプトを守るのが要になるので、「&pre(chown root.root スクリプト);」しておくとよい。 -理由不明の文字化けで困っていたが、PerlのCGIモジュールを更新したら直った。同じコードが別環境で問題なかったので気付いた。CGI::escapeHTML()。2018年 4月26日 #pre{{ Package namespace installed latest in CPAN file CGI 3.63 4.38 LEEJO/CGI-4.38.tar.gz }} -use utf8プラグマは、それより前の行に書いてあるリテラルを内部表現にしない。「Perl パーサーに、現在のレキシカルスコープ内の プログラムのテキストに、UTF-8を許すように伝えます」[[utf8 - ソースコード内に、UTF-8(か、UTF-EBCDIC)を有効/無効にするためのプラグマ - perldoc.jp:http://perldoc.jp/docs/perl/utf8.pod]] 普通は習慣で冒頭に書くのだろうけど、冒頭にスクリプトの内容(コメント)や中核的な定数を書いて、use utf8;はその後に書くミスを犯した。
タイムスタンプを変更しない
___paraedit_taxtarea___
テキスト整形のルールを表示する