=begin #encoding="shift_jis" #------------------------------------------------------------------------------# = Mireille - Bulletin Board System # - Mireille Manpage - # # $Mireille: 1_2_12 $ # $Revision: 1.12 $ # "This file is written in shift_jis, CRLF." 空 # http://www.airemix.com/ # naruse@airemix.com # Scripted by NARUSE,Yui. #------------------------------------------------------------------------------# # $Id: Mireille.txt,v 1.12 2003/07/25 01:12:15 naruse Rel $ == これはなにか “Mireille”は「ほんのりと寂れの匂いがしつつもなんとか賑わっている個人サイト向け、 高機能雑談系CGI/Perl掲示板システム」です、目標は。 この目標を達成するためには、多少気乗りしない機能でもつける予定です。 技術的&労力的&需要的に可能ならば。 #------------------------------------------------------------------------------# == つかいかた === 対応サーバー :OS UNIX系、WinNT系(Win9xとMacOS9以下ではflockが動きませんが一応) :httpd IIS5.1とApacheで確認、他のものでもCGI/Perlが動けばきっと動くはず :Perl 5.005_03以降 === 対応ブラウザ WinIE5.01以上(WinIE6以上を推奨)、 Mozilla1.0.0以上、 Opera7、 そのほかのブラウザでも多分読み書きできます。 古いブラウザやマイナーなブラウザ、 例えばWinIE4, MacIE, Netscape4, Opera, iCab, Konqueror, Safariなどでも、 記事の読み書きレベルすらできない場合は教えてください。 最低限記事の読み書きは出来るべきだと思っていますので。 === 設置 まず、Mireille.txtとMireille.html以外は漢字コードがShift_JISでなく、EUC-JPです。 メモ帳で文字化けしてしまうのは仕様であってバグではありません。 詳しい説明はこの文章の「/特筆すべき注意/文字化けするときは」で、 とりあえず必須ファイルだけ。 /bbs/ 777 /bbs/index.cgi 755 /bbs/core.cgi /bbs/iconctlg.cgi /bbs/style.pl /bbs/style.css /bbs/artnavi.js /bbs/log/ 777 /bbs/log/0.cgi 666 or そのまま 広告が自動挿入されるサーバーなどで動かしたときに、画面が真っ白になってしまう場合は、 index.cgiの中の(({$CF{'conenc'}='|gzip -cfq9';}))という所を(({$CF{'conenc'}='';}))としてください。 (コメントアウトではダメ) 詳しい設置説明は同梱のMireille.htmlを参照してくださいまし。 #------------------------------------------------------------------------------# == Coming soon...?/memo. :suオプション 管理者パスワードが「hoehoe」の時に、投稿時コマンド欄に「(({su=hoehoe;}))」と入れておくと、 それ以降Cookieに管理者であることが保存され、いちいち管理者パスワードを入れなくても、 記事の削除や修正、 最大子記事数制限に達したスレッドへの返信などができるようになる。 セキュリティホールを作りこみかねないので慎重に実装しないと。 :MireilleIconList規格の強化 BNFもどきで書くと今はこんな感じ。 ( 'BEGIN' | 'END' ) '_' ( 'VENDOR' | COPY1' ) (#x20 |#x9)+ ? ( 'VENDOR' | 'COPY1' ) '_' ( 'NAME' | URL' | 'LINK' ) (#x20 |#x9)+ 'PAGE-BREAK' #BEGIN_*ではを取れる、これは*_NAMEに本来入るである、つまり略記。 これを以下のような感じに拡張したい。 ( 'BEGIN' | 'END' ) '_' ( 'VENDOR' | COPY1' ) (#x20 |#x9)+ ( 'VENDOR' | 'COPY1' ) '_' ( 'NAME' | URL' | 'LINK' | 'COMMENT' ) (#x20 |#x9)+ 'PAGE_' ( 'TITLE' | 'GROUP' | 'COMMENT' ) (#x20 |#x9)+ #PAGE_命令群はそのページに対しての情報を付加する さらに、同じキャラで表情が違う、といったのをグループ化したい。 (Marldiaでは強引にやっているが、その方法では限界がある) もっといい案がほしいな。。 アイコン配布サイト側がこの形式のアイコンリストを配布する〜までいけば最高ですけどね。 :Mireilleのパッケージに何かしらアイコンを添付する あったらいいなぁ。 :Undocumentedな事項を文章化する コマンド周りでは特に文章化されていない機能が多く存在します。 「マニュアルとして整形するのが面倒〜」 「そもそも実験的な実装なので変わる可能性があるのだ」 とか言ってますが、文章化するべきな気がします。 当面は細かい挙動や隠れた機能を知りたい方はソースを見てください。 わかりにくい場合はコメントをつけたり、コメントの文章を練り直すのでご一報を。 #------------------------------------------------------------------------------# == Mireille History Mireille.htmlに管理CGIでindex.cgiを編集するときの話を追加する === 2003-07-25 Release 1.2.12 :core.cgi * 0.cgiの情報を記事番号順のとき読み込んでいなかったのを修正 * 記事データの無いログファイルを読み込んだとき、記事フッタを出力していたのを修正 * index.cgi直うちでなく、$CF{'index'}を使うように * 文字エンコーディングを調べる機能をつけた * PODを整備? * その他個々の関数の調整 :style.pl * 文字エンコーディングを調べる機能をつけた * 本文データの読み込みができなかったのを修正 * そのほか調整 :index.cgi,manage.cgi * 文字エンコーディングを調べる機能をつけた === 2003-07-05 Release 1.2.11 配布圧縮ファイルのディレクトリ構成を変更 :core.cgi * コマンドから持ち込みアイコンを削除 * style.plからiptico(),iptcol()を移動 * getIconTag()を追加 * コマンドに絶対指定アイコンを追加 * ファイル名指定アイコンを相対指定アイコンと改称 * $CF{'conenc'}を再設定する際に、文字列の比較なのに==でやっていたのを修正 * 署名機能を追加 * 多重投稿防止のための情報を、本文をCRC32したものにした * 一度削除した記事は、無理やり修正しようとしても、復帰できないようにした * スレッドがロックされている場合、新しくそのスレッドに返信できないようにした * 記事書き込み前の処理の構成を変更 * signatureコマンドを追加 * 特殊署名機能を追加 * getSignatureアルゴリズムの変更 * 修正・削除時のパスワード欄もtextにした * 特殊署名はsignatureコマンドで指定しないといけないようにした * lockThreadコマンドを追加 * lockArticleコマンドを追加 * tabindexを未読記事に指定するようにした * 一部スタイルの変更 * URL自動リンクのアルゴリズムを変更 * XMP/PLAINTEXTタグの使用を許可した場合にその中身がうまく処理されないバグを修正 * infoseek系の広告サーバー対策を施した * 修正/削除モードのスタイルを修正 * 記事番号自動リンクがフォーム再書き出し時にで正常に扱われていなかったバグを修正 * コマンド文字列をログ用に再構成する部分のバグを修正 * 簡易荒らし対策 * ヘッダの表示方法を変更 * 書き込み後のメッセージを表示する部分を変更 * 返信モードの枠サイズ調整が壊れていたのを修正 * UTF-8化のための伏線を埋め込んでおく * encoding指定のための伏線の調整 * その他調整 :style.pl * IconPreviewのJavaScriptを絶対指定アイコンに対応 * 署名表示機能をつけた * パスワードの文字数制限を緩和 * パスワードのフォームのタイプをpasswordからtextに * tabindexを未読記事に指定するようにした * 本文自動保存機能をつけた * 記事フッタからの返信モードへのリンクのFIを#Formに変更 * 書き込みフォームのスタイルを変更 * ヘッダの表示を司るgetHeader()を追加 * 記事ナビでの文字あふれはCSSで調節することにした * 書き込みフォームのHTMLの設定を、サブルーチン自体と統合 * ページセレクタ、上下記事情報表示部などをcore.cgiから移管 * その他調整 :style.css * 語句強調用の設定を変更 * 署名用のCSSクラスを追加 * パスワードフォームをime-mode:activeにした * CSS3 Color Moduleが勧告候補になったので、opacityプロパティの指定を追加 * 解説系のスタイルを大幅に変更 * 書き込みフォームのスタイルを変更 * font-size指定をpx・%併用にした * 記事ナビの文字あふれ対策の指定を追加 * 全体的に記述の仕方を調整 * .pageSelector A.warningなどを追加 :index.cgi,manage.cgi * 絶対・相対指定アイコンの設定を追加 * 署名表示機能のオン・オフ設定を追加 * NGワード指定機能を追加 * 特殊署名の設定を追加 :index.cgi * 語句強調の初期設定に「▼ s819e」と「§ s8198」を追加、他の変更 :manage.cgi * スレッドのロック機能を追加 :artnavi.js * フレームリサイズ時の挙動を変更 * IEでのスクロール時の挙動を変更 :help.pl * 相対指定・絶対指定アイコンが利用可能かどうかの表示を追加 * 署名を表示する設定になっているかどうかの表示を追加 * ロック機能や署名機能などに対する言及を追加 * スタイルを大幅に変更 * その他加筆修正 :Mireille.html * Mireille License * 広告の出るサーバーでの注意を修正 * Mozillaで外部CSSファイルを読み込んでくれないことがある問題に対する言及を追加 * スタイルを大幅に変更 === 2003-03-30 Release 1.2.8 :core.cgi * 「ZEROがMir12型でない」と明示するようにした * 古いバージョンの後始末「非拡張子cgiのファイルを拡張子cgiにする」を削除 * 最大表示子記事数を設定できるようにした * 返信モードで返信先スレッドを囲む枠を広げられるようにした * 返信モードで記事の周りの枠の高さを設定できるようにした * tukaeru.netのHTTPヘッダ問題を回避 * HTTPヘッダの調整 * readモードの時は、readするスレッドは記事を全て表示するようにした :index.cgi * 「一スレッドあたりの最大表示子記事数を制限する」の追加 * 使用を許可するタグの初期設定にSPANを追加 * 強調する記号と対応するCSSのクラスの初期設定の「#」がバグっていたのを修正 * URL指定アイコンコマンドの設定を追加 :manage.cgi * バックアップファイルの一掃機能で、削除数が大嘘だったのを修正 * ログ管理で、ファイル削除の方法が選べなかったのを修正 * ログ管理で、「スレッド番号をつめる」場合、確実にログを破壊していたバグを修正 * ログ管理で、GZIP削除についての注意書きを載せた * アイコンリスト編集#にてコメント内に「#」があるとコメントとして扱わないバグを修正 :style.pl * 「.?」となっていたところを「index.cgi?」に置き換えた * コマンドの説明をもうちょっと細かくした :style.css * Opera7で記事の投稿者名の後で時々改行されてしまう現象への対策 * INPUTやTEXTAREAのフォントサイズを13pxと明示的に指定 * ボタンからcursor指定を削除 * background-colorの指定がわかりにくそうなところで、明示的に指定することに :help.pl * 語句強調が正規表現でも置換結果が拡張タイプでなければサンプルをクラス指定するようにした * 語句強調を表示するときに、タグやエンティティをエスケープするようにした :Mireille.html * 「設置した後の運用」という章を追加 * 誤字や間違っている表現の修正、他 === 2003-01-29 Release 1.2.7 * リリース版ではuse strict;をコメントアウトするようにした * Mireille.txtをRD互換にした。 :core.cgi * ログに保存しなくていい項目まで保存していたのを修正 * 「このページのスレッド」のtitleにあるアクセスキーの数字がずれていたのを修正 * 有名広告サーバーで自動的にGZIP圧縮機能を無効にする機能が壊れていたのを修正 * tok2.comでCookieが保存されない現象の回避ルーチンを搭載 * 記事情報ファイル(0.cgi)の日付情報が壊れていても、自動復旧するようにした * Cookieに消したはずの情報が残ってしまうバグを修正 :style.pl * 出力されるHTMLのサイズが小さくなるように、所々調整 * 記事ナビショートカットキーが働くための、処理を調整 * 記事ナビ周りのブラウザ判定手法を変更 * ファイル名指定アイコンコマンドを隠し実装 * 本文一時保存機能のサイズ制限を、IE依存技術userDataによりほぼ解消 * title属性の改行を でおこなうようにした * userDataのデータを削除し忘れていたのを修正 :artnavi.js * 記事ナビを閉じると、閉じたということがCookieに1000日間保存されるようにした * 記事ナビショートカットキーがうまく働いていなかったのを修正 * フレームサイズを変更しても記事ナビが画面外に出ない限り、位置リセットしないようにした * 記事ナビの初期位置を変更 :index.cgi * 初期状態での強調項目にRD風見出しを追加 :index.cgi,manage.cgi * cmdを初期状態でのクッキー保存項目に追加 * cmdを初期状態での保存項目に追加 * getloginを削除 * iconGUIを削除 * ファイル名指定アイコンコマンドの設定をコメントアウトした状態で追加 :style.css * 個々の記事の情報項目間の隙間を、CSSのmarginであけることにした * EMタグにつける下線の色を変更 * WinIE6標準モード+フレームでスクロールバーがでる問題の回避手法を変更 * 記事ナビの透明度変更が重くなった原因判明&解決 * 記事ナビヘッダ上でのマウスカーソルを、ウィンドウっぽくdefaultにした * AタグのCSSが間違っていたのを修正(いわゆるname問題) * ヘルプのスタイルがMozillaで一部乱れていたものの修正 :help.pl * アイコン情報取得部分をstyle.plの変更に応じて修正 * Cookie取得、セット部分がIE依存だったのを修正 === 2002-12-25 Release 1.2.6 :core.cgi * 引数取得処理回りを調整 * スレッドごと検索でファイルをcloseしてなかったのを修正 * 記事ごと検索でバックトラックにはまる場合があったのを修正 * メールアドレスの@を@に置換するようにしてみた(SPAM対策?) * $CF{'bodyHead'}追加に伴う変更 * URL自動リンクのアルゴリズムを精度向上のため修正 * requireされたときに自分のRevisionを返すようにした * フッタを取得し表示する部分の処理を変更 * 本文の処理を調整 * 未読記事欄に稀に「0」が混ざるバグを修正 * そのほか調整 :help.pl * メールアドレスの@を@に置換するようにしてみた(SPAM対策?) * デザインや構成を一部変更 * 文章を一部校正 :index.cgi,manage.cgi * index.cgiがrequireされたときに自分のRevisionを返すようにした * $CF{'bodyHead'}と$CF{'bodyFoot'}を追加 * colorList周りの調整 * その他デザイン周りの処理構造を再構成 :index.cgi,style.pl * 色リストの設定を正式にindex.cgiで行うように変更 :style.pl * $CF{'bodyFoot'}追加に伴う変更 * requireされたときに自分のRevisionを返すようにした * pgfootの値をgetPageFooterを使って生成するようにした * デザイン周りの処理構造を再構成 * 記事ナビの処理を一部クラスにまとめた * Cookieに本文データを一時保存するJavaScriptを微調整 * 記事の出力を変数+evalからただのprintに変更 :Mireille.html * retroさんから頂いたアイコン設定の解説を統合 * アイコン周りの解説を増やした * メールアドレスの@を@に置換するようにしてみた(SPAM対策?) :style.css * LIに「line-height: 120%;」を追加 * font-familyの指定を一部削除し、ブラウザの設定に任せるようにした * P.noteとDTとH4.listを追加 * A:hoverをA:link:hoverにした * background-imageをコメントアウトした状態で追加 * Opera7対策にwhite-space: nowrap;を.thread .info TD.nameに追加 :convert12.cgi * Mir10形式やMir12形式からの変換処理で、変換すべきファイルのリストを取得できないバグを修正 === 2002-11-18 Release 1.2.5 :core.cgi * 版付け規則の変更に伴う調整 * 修正をするとログが跳ぶバグを修正 === 2002-11-15 Release 1.2.4 * 版付け規則を変更 :core.cgi,style.pl * 一スレッドあたりの最大子記事数を制限する機能を実装 :style.css * warningクラスを新設 :artnavi.js * WinIEでJavaScriptエラーが出るのを修正 * フレームをリサイズした時に記事ナビが自動で移動しなくなってたのを修正 === Release 1.2.4より前 省略 #------------------------------------------------------------------------------# == 既知の問題(相対バグ) === 許可タグに"STRONG"を入れると、語句強調と衝突する可能性がある ユーザーの入力するSTRONGタグが(({/.*<\/STRONG>/})) にマッチしないものなら大丈夫です。 語句強調の使用するclass名を、特定の文字列から始めるようにする、 といった対策も検討してはいます。(つまり当分対策予定なし) === 許可タグに"A"を入れると、URI自動リンクと衝突する可能性がある 少なくとも(({/^Netscape4対策 現在のブラウザが一通り入れ替わったら、XHTML2+JavaScript2+CSS3で書き直します。 (成瀬はW3C原理主義者じゃないので・・・) $ENV{'HTTP_USER_AGENT'}みてrequireするstyleを切り替える? === アイコンリストや色リストの形式はHTML完全互換でない 処理の簡便化のため、一部互換性を省いています。 例えば次の、 が無いために解釈することが出来ません。(出来ることもあるけど) === 日本語オンリー EUC-JPでの使用を前提として、正規表現を決め打ちしている部分が多々存在する。 Perl5.8+UTF-8に変えるか、スクリプト自体はASCIIにしてstyleはopenFileしてとってくる? 今のところあまりは需要はなさそう、かな。 === 表現が統一できてない、または表現が適切でない部分がある 例えば、 :「アイコン一覧/IconList/アイコン見本/IconSample/IconPreview」 互いにまぎらわしいぞ :フォーム「ホーム」 「ホーム/HOME/URL/ホームページ/HP」の中から「ホーム」を選んだ当時のわたしに乾杯(謎 :「コマンド」 「コマンド」って何さ?飾りですよ :「投稿された記事の著作権は管理者の管理下におかれます。」 もっとうまい言い方はないのかね :メニュー「更新」 更新ってなんだ?何を? :メニュー「ホーム」 フォーム側と整合性は取れているけど・・・もっとうまい表現無いの? :「BACK to HOME/CONTENTS/INDEX」 どこに行くのか解りづらい上に、そもそもどこに行ってもらうべきか不明 :「ヘルプ」といいつつ ろくに助けになってない(ぉ などです。 修正案を思いついた方は教えてくださいまし。 #------------------------------------------------------------------------------# == 日和見中 === 一行レス機能 普通にやるとアイコンリストが重過ぎるので、 Cookieが保存されている時のみ、Cookieの情報を使うことでできる・・・かな。 === NoIconStyle以外のスタイルの配布 現在の青ベースデザインの他に、赤や緑や橙など? もっと大幅にデザインを変えたもの? どなたか改造したものを寄贈してくださると楽なのですけど(ぉぃ === RSS対応 需要がなさそう・・・。 === 携帯端末で見れるように スキンに対応したら、そのときに携帯端末用スキンを作ることで対応する予定です。 #------------------------------------------------------------------------------# == 夢。 いつかやりたいけれど当分できなさそうなこと。 === より自由度の高いスタイルの変更 ツリービューにしたり、果ては日記のように使えるようにしたり。 === Unicode化 EUC/SJISの呪縛から逃れたい〜use encodingさいこぉ〜。 (({'テスト'=~/好/}))がマッチしないのステキ☆ Perl5.8待ちですね。 === ログ形式の変更 Storableモジュールなんか使うのいいですね。 XMLデータベースまで使ちゃったら素敵ですね。 === 開発言語の変更 RubyとかC#とか。 #------------------------------------------------------------------------------# == 現在予定していないこと TODOの逆、みたいなものです。 以下にあげるものは現在、半永久的に実装予定がありません。 理由は「ポリシーに反するから」でも「つけるのが無理だから」でもなく、 「使う人がいなさそうだから」ですので、使う人がいればつけます。 === 「検索する単語」で正規表現を使えるようにするorAND/OR検索 今はquotemeta関数で文字列にしています。 正規表現を使えるとより複雑な検索が出来ます。 === P3P対応 そもそもこの存在を知っているユーザーが少ないと思われる。 #------------------------------------------------------------------------------# == 語句強調の方法 $DT{'strong'}に' '(半角空白)区切りで、 $CF{'strong'}='// s2f2 > s8184 # s8194 ◇ s819e ◆ s819f □ s81a0 ■ s81a1 ※ s81a6'; のように、強調する記号と対応するCSSのクラスを列挙します。 このとき、最初の一文字が $CF{'strong'}=' // s2f2f /(/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)/ s2f2a > s8184 # s8194'; のように' '(半角空白)だった場合拡張モードになります。 記号やクラスの前後を//で囲んだものはそのまま正規表現として代入され、 $DT{'body'}=~s[$regexp][$ST{$_}]gm; と置換作業に利用されます。 ちなみに、記号とクラスは別々に、そのまま正規表現として代入するか、判定されます。 上の例では /* ・・・ */ というC言語のコメント部分に、s2f2aというCSSクラスを与えます。 文字列内に' '(半角空白)を書きたい場合は、8進数文字コードで\040と書くか、 16進数文字コードで\x20と書いてください。 #------------------------------------------------------------------------------# == アイコンまわりの説明 === index.cgiのアイコンディレクトリ設定 $CF{'icon'}の設定は最後に/を含めてください。 === アイコンリスト $CF{'icls'}の最初の一文字が' '(半角空白)だった場合複数リストモードになります。 具体的な例を出すと、 :単一とみなされる例 * 'icon.txt' * 'icon1.txt icon2.txt' #"icon1.txt icon2"というテキストファイルだとみなします。 * '"icon.txt" "exicon.txt"' :複数とみなされる例 * ' "icon.txt" "exicon.txt"' * ' "icon.txt" exicon.txt' * ' icon.txt exicon.txt' === アイコン編集 タグ方式とSharp方式があります。 :タグ方式 HTML4に基づいた形で、SELECTタグ内の要素を羅列するだけです。 管理CGIはその中のOPTGROUPとOPTIONタグを認識して、アイコン見本を作成してくれます。 とりあえず例を、 HTML4の仕様上はOPTIONタグは終了タグを省略できるはずですが、 Mireilleでは省略した場合の動作は保証しません。 ちなみに、OPTGROUPタグは入れ子にできない(とできない) ので注意しましょう。 これはHTML4の仕様なので、入れ子をサポートする予定は当分ありません。 HTML4の仕様のせいにしてたりなんかしません(w :Sharp方式 その名の通り、"#"を使う方式です。 これも例を見たほうが早いでしょう。 タグ方式と見比べてみてください。 #グループ名 アイコンファイル名#アイコン名 アイコンファイル名#アイコン名 # #FINAL FANTASY VII cloud.gif#クラウド tifa.gif#ティファ aerith.gif#エアリス yuffie.gif#ユフィ vin.gif#ヴィンセント sephi.gif#セフィロス cid7.gif#シド red.gif#レッドXIII barret.gif#バレット cait.gif#ケットシー # という感じです。 === 相対指定アイコン 1.2.9から相対指定アイコンというコマンドが実装されているのですが、 ここではこの機能について説明します。 この機能は((%relativeIcon=hutsuha/shitei/dekinai/icon.png%))とコマンド欄に入力することで使えます。 利点はアイコンリストに登録されていないものでも使える、ということなのですが、 当然「わざとアイコンリストに登録していないもの」も使えてしまいます。 そのため、セキュリティホールになりそうにも思えますが、 実際にはこの機能が追加されたために、セキュリティホールが増える、ということはありません。 その根拠は以下の三点になります。 (1)ファイル名指定アイコン機能を使わなくても、DUKEを使えば以前から同じことができる。 (2)ファイル名指定アイコン機能では((%../%))のようなディレクトリをさかのぼる指定ができない。 (3)ファイル名指定アイコン機能を実行させるためのON/OFFを設定できる。 どう転んだとしても、いかがわしい目的で本来使えないアイコンを使おうと思ったら、 ファイル名指定アイコン機能を使うよりも、既存のアイコン指定の枠組み内で、 フォームを偽装して投稿した方が自由度が上です。 以上より、この機能の追加によって、Mireilleのセキュリティが下がるということはありません。 === 絶対指定アイコン 絶対パスを指定します。 コマンドは((%absoluteIcon=http://www.airemix.com/airemix.png%))という感じです。 === アイコンリストの拡張コマンド まだversion0.xなので、将来規格が変わる可能性があります。 注意して使ってください。 :COPY1 一時著作権者の情報を設定します。 基本的にはNAMEとURLを指定します。 LINKはアイコンカタログなどで使うリンクを明示的に指定するときに使います。 :VENDOR アイコンの製作者の情報を設定します。 他はCOPY1と同じ。 :PAGE-BREAK このコマンドが出現したところで、アイコンカタログはページを変えます。 #------------------------------------------------------------------------------# == style.plのHTMLデザイン部について かなりの自由度でデザインを変更することが出来ます。 また、メニュー、記事、投稿フォームのデザイン部では以下の変数を使うことが出来ます。 記事番号:$DT{'i'} 返信番号:$DT{'j'} 名前:$DT{'name'} 題名:$DT{'title'} メールアドレス:$DT{'email'} ホームページアドレス:$DT{'home'} 投稿日時("????年??月??日(?) ??時??分"型):$DT{'date'} 本文:$DT{'mes'} アイコン:$DT{'icon'} パスワード:$DT{'pass'} コマンド:$DT{'cmd'} これら以外にも使える変数が存在することはしますが、使うべきものかどうかは微妙です。 #------------------------------------------------------------------------------# == 特筆すべき注意 === 管理CGIのファイル名を変えること! Mireilleの管理CGI(manage.cgi)は非常に強い権限をもっているため、 悪意の第三者にアクセスされた場合、非常に危険です。 必ずファイル名を変更しましょう。 (そもそも1.2.3.7以降ではファイル名を変更しないと使えないようになっています) === 文字化けするときは Mireilleは、このMireille.txtとMireille.htmlを除いて全て、 EUCという漢字コード書かれています。 そのため、メモ帳を筆頭とする、EUC非対応のエディタでは編集することが出来ません。 EUC対応のエディタをご使用ください。 以下は推奨するエディタです。 * さくらエディタ (())、 * TeraPad (())、 * 秀丸エディタ (())、 他にもEmEditorやWZEdiotr,Peggyなどが対応しています。 特に本格的にやるならば、色付けをしてくれるエディタだと格段に、 効率が上がり、かつミスも減ると思います。 PrelFactory (()) はその名の通りPerlの開発環境です。 ざっと見た限りではPerl単体の色付けに関してはケチをつけられる所はありませんでした。 アンカーシステムズ株式会社のPeggyPro (()) を、 成瀬は2001年中ごろから使っています。 Perlだけでなく主要な言語からそうでない言語まで幅広いサポートが光ります。 CREC(コンテキスト正規表現カラー表示)を使って新規に言語モードを作ることで、 新たな色づけ規則を、単なるキーワード強調以上のことができます(>< === ファイル名変更の制限 スタイルシートのファイル名は、 必ず[_a-zA-Z0-9]*.cssという形式である必要があります。 つまり、-=~<>\などの記号や日本語名は使えません。 === 詳しい説明は同梱のMireille.htmlを参照ください #------------------------------------------------------------------------------# == よくある疑問 === エラーがでたっぽい * 「Mireille Error Screen」がでた場合は、「ERROR:」に続く英文字を見てがんばってください。 それで討ち死にした場合はAiremixの掲示板に敗戦の弁をお願いします。 その際に必ず上記のError Screenの内容を教えてください。 エラーがでたCGIのURLを書いてくださるか、エラー画面を丸ごと書くか、を。 これがあるのとないのでは原因の判明、修正の手間が全く違うのです。 * 「500 Internal Server Error」がでた場合は、初歩的なミスである可能性が高いです。 パーミッションや設定などを確認してみましょう。 * 上のどちらもでていない場合は・・・悪あがきをした後、Airemixの掲示板で泣き言を、 === 文字化けしてます〜;; 漢字コードがおそらくShift_JISになっています。 MireilleはEUCを使っているのでEUCで保存しなおしてください。 一部のファイルを除いて全ての他のファイルも同様です。 「一部のファイル」がどれかは、最初から何行目かに、 # "This file is written in shift_jis, CRLF." 空 のような行があるので、そこにどの漢字コードを使っているか書いてありますので、 それを参照してください。 ちなみにこのファイルはShift_JISで保存してあります。 === それじゃなんでEUCを使うの? 確かにShift_JISのほうが楽です。 ほとんどの人はWindowsを使っているでしょうから、標準のShift_JISを使ったほうがいいですね。 わたしも本当はWindows上での利便性を考えればShift_JISを使いたいです。 ただ、Shift_JISだと一部の漢字においてCGI処理の中でうまく処理できないのです。 具体的には、「print"能";」というコマンドでエラーが出ます。 これはShift_JISでの「能」の16進文字コードが\x945cなため下の二つが、 \x5cである特殊文字「\」とかぶってしまうからです。 このような文字は「能」「饅」など数十文字あります。 回避策は何個かありますが、一番確実な回避策がEUCを使う、ということだったわけです。 EUCにはこのようなエラーを誘発する文字が、無いように作られていますので。 このことについては、 (()) が詳しいです。 その意味では今流行の、世界中の全ての文字を一つに詰め込もうという無茶な規格、 Unicodeでもいいのですが、まだエディタ側の対応を見ると時期尚早だと思いますので^^;; Perl側の対応もPerl5.8を待たないといまいちですし。 === 全てがわからない!ぜんぜん無理! とりあえず今はあきらめることをお勧めします。 それが嫌な場合は親切かつ有能な友人を頼ってください^^;; === 投稿時間を保存するのに、UNIX秒で保存してるのはなぜ 確かにログ保存時に「1970年01月01日(木) 09時00分」などとしてしまったほうが、 表示時のサーバー負荷や所要時間は多少なりとも減ると思われます。 しかし、この負荷はログファイルの読み込みに比べれば微々たる物ですし、 所要時間に至ってはHTTPでの転送にかかる時間に比べれば誤差です。 それよりも、 「1970年01月01日(木) 09時00分」という形式に比べ、UNIX秒のほうが他の形式に変換しやすい、 というメリットをとったわけです。 === なぜgetloginなんてしてるの これは歴史的な経緯によります。 とあるレンタルサーバーで、Mireilleの自動作成したファイルを、 FTPから削除できないという現象があったのですが、これの対応策として、 getloginでユーザーを調べ、''だったらumask(0)をかける、としたためです。 そのサーバーは今ではSuEXECを使うようになっためumask(0)する必要ないのですけどね。 もっとスマートな解決方法ってあったのかな。。 === なぜfont-familyが'MS P ゴシック'なんですか 歴史的経緯です。 'MS UI Gothic'のような、他のフォントの方がよいという方が多いようだったら変えますよ。 === 書き込みフォームの、本文入力欄の位置が新規と返信で違う こうした方が使いやすいかなと。 #------------------------------------------------------------------------------# == Mireilleの仕様 Mireilleの構造について、実装の手法からつらつらと書き連ねておきます。 「ここが知りたい」という個所があれば、言ってくだされば優先的に記述します。 === Mireilleの版付け規則 Release1.2.4以降では、 Mireilleを構成する個々のファイルは“?.?”と二桁のRevisionであらわされます。 MireillePackageのバージョンは3桁の場合と4桁の場合があり、 Release版やStable版の場合は3桁、Experiment版の場合は4桁になります。 3桁目はMireille.txtのRevisinの2桁目と、4桁目はcore.cgiのRevisinの2桁目と一致します。 1桁目と2桁目は気分に次第で適当に増やします。 基本的には、行った変更の重要さ(派手さ)加減によって変わる・・・はず。 === CSSとその動的切り替え 本来はCSS2の属性セレクタ(Attribute selectors)と擬似クラス(Pseudo-classes)でやるのが理想なのですが、 そうも行かないのでいろいろ知恵をひねることになります。 まず、Mozillaは理想のとおり属性セレクタと擬似クラスで切り替えを行います。 この際に属性セレクタを含んだブロックと含まないブロックの両方を用意する必要があります。 .submit{ background-color: #dde; border: #355 solid 2px; color: #355; cursor: pointer; cursor: hand; width: 7em; } INPUT[type="submit"]{ background-color: #dde; border: #355 solid 2px; color: #355; cursor: pointer; width: 7em; } こうしないと属性セレクタを解釈できないブラウザが.submitまで無視してしまうのです。 次にWindowsInternetExplorerです。 これはMozillaのようには行かないので、フッター直前に置いたJScriptで処理します。 以下は$CF{'jscript_AtSe'}をはしょったものです。 ここで、他のブラウザに悪影響が出ないように、JScriptの条件コンパイルという方法を使っています。 (()) 上のスクリプトは速度上の問題からWinIE5以上にのみ対応していますが、WinIE4で動かすこともできます。 流石に“人類が生み出した三つの最悪なものの一つ”WinIE3では無理ですけど。 さて、残るOpera6やNetscape4などですが、これらは無視します(ぉ。 属性セレクタにも対応しないわ、JavaScriptからのCSS切り替えもできないではどうしようもありません。 やるべきことはこれらの表示に影響が出ないように、前の二つで表示できるようにする、です。 MacIEは6になるころには属性セレクタにも対応してくれることでしょう。 なので様子見;) === ログ形式 基本的にはTSVとname=valueの折衷である、 "name=\tvalue;\tname=\tvalue;\tname=\tvalue;\t" という=\tと;\tで区切る方式を使っています。 \tはタブ文字のことなので、展開され、 name= value; name= value; name= value; のようになります。 実際にMireilleのログとして保存する場合は最初に管理情報を埋め込み、 あとは任意のログ項目を列挙します。 現在の「Mir1型」ログ形式だと、 Mir12= ; name= 名前; subject= テスト; と保存されます。 保存したログから値を読み出す際には、 my%DT=($_=~/([^\t]*)=\t([^\t]*);\t/go); として一括してハッシュにつめこみ、あとは$DT{'name'}で呼び出します。 このあたりの処理はちょっと気に入っています(何 項目ごとの検索(題名に'Millefeuille'を含む記事を含むスレッドを検索)では、 $sertch_word='Millefeuille'; $log=~/\ttitle=\t$serch_word;\t/o; とやれば、\tは区切りにしか含まれていないはずなので、必ず目的の項目が見つかります。 前に\tのない、行の最初の項目はこれでは検索できませんが、 Mir12型では行頭は管理領域なので、普通の検索では扱いませんし。(そもそも扱えたら困る) システムがこれにアクセスする場合は/^Mir12/で検索するので、問題ありません。 === アイコンリスト形式 長年の研究の結果導き出された、最良のリスト形式は、「そのままタグを列挙する」でした(笑。 というわけで、SELECTタグ内に記述されるタグを列挙する、というわかりやすい形式になっています。 また、グループ分けのためHTML4で策定されたOPTGROUPタグの利用を推奨しています。 Cookieを使って初期状態で選ばれるアイコンを選択する際には、 s/value="Cookieにあるファイル名"/value="Cookieにあるファイル名" selected="selected"/ とやる安易な方法を用いています。 この一見かつ適当に思えるリスト形式によって、大幅な高速化&耐久性を実現・・・ しているような、気がします(w (とりあえず700個のアイコンでそこそこの速度での動作を確認済) Rev:1.1.3.8以降ではHTMLコメントでアイコンの配布元情報を埋め込んだりも出来るようになっています。 === カスタマイズ index.cgiに変数群%CFを用意することによって行っています。 style.plで主に変更可能な、HTMLを記述することによって設定するデザインは、 eval関数を使うことによって、文字列内でも変数を普通に使えるように・・・。 やっぱり適当といえば適当な仕様です。 index.cgiの設定は、直接エディタで編集、管理CGI(manage.cgi)から操作、の2種類を用意しています。 基本的には下位互換性を確保するようにしているため、 たいていはバージョンアップをしても問題なく動作するでしょう。 管理CGIからindex.cgiへの書き込みは、地味にテンプレートのようなものを用意して、 それに代入しつつ書き込むというシンプルな方法です。 (foreachなどして多少は自動化してますが) 将来はプログラムとデザインと設定を完全に分離し、各々を別々に組み合わせられるように・・・。 JavaでいうMVCモデルみたいなものを使うのかな?。 もっと勉強&思案しないと。。 === 文字コード 早くから(β04から)MireilleはEUC-JP決め打ちで書かれています。 Shift_JISのエスケープ問題や、Perl自体の日本語対応の不完全さを補うためです。 例えば検索部のコードは変なところでマッチしないようにEUC-JP決め打ちで処理を行い、 日本語処理に際しての不具合が出ないようにしています。 ただ、このままだと多国語化できないので、将来的にはPerl5.8+Unicodeに移行したいのですが。。。 #------------------------------------------------------------------------------# == メモ ちょっとしたメモなのです。 === 語句強調・自動リンク・記事参照 特にこれを売りとしてはいませんが、何気にかなり手をかけている部分だったりします。 まず、語句強調は何が難しいって、強調すること自体はさして難しくはないのですよ。 設定に応じて正規表現で置換するだけですからね。 問題はMireilleに修正機能が存在することです。 修正する際には強調する前の状態に戻してTEXTAREAに表示しないといけません。 ここは苦労しました・・・。 また自動リンクの精度をあげるのも大変です。 ベースはこのテキストの末尾にも載せてある、Perlメモさんのところの断片なのですが、 これがよくできたもので、 (({http:www.airemix.com/})) などという文字列があるとき、ちゃんと(({">http:www.airemix.com/Airemix})) 最初にという文字列があったとすると、IMGタグを許可していない場合にはタグが無効化されて、 (({<IMG src="http://www.airemix.com/airemixb.png">Airemix})) となります。ここで、 (({http://www.airemix.com/bbs/index.cgi?icct&page=1})) などの(({&}))とエスケープ後の(({.png"&}))の区別がつけられなくなります。 記事参照機能というのは、 「>>No.113」などとすると、その掲示板の113番スレッドにリンクが張られ、 「>>No.113-5」などとすると、その掲示板の113番スレッド子記事5にリンクが張られる機能です。 比較的早くからある機能ですが、今まで文章化されていなかった機能だったりします。 === セキュリティ 一応意識してはいます。 そのまま他のCGI/Perlのセキュリティホールを指摘してしまうことになるので、 具体的に、どこをどのように気をつけているか、は書きませんけど、、 ちなみに、現在Mireilleに存在するセキュリティホールでは、 管理CGIの設置場所が他者に漏洩する、というものがあります。 あくまで潜在的なものであり、直ちに被害が出うるものではありませんが・・・。 なにはともあれ、管理CGIは危険なのでこまめにWeb上から削除するようにしましょう。 (gzip実行部分は(({`...`}))を使うより(({system()}))の方がいいのかな?) ((({open $fh,"-|" or exec{$cmd}@cmd;}))はWindowsだと効かないのだ。。) === ID属性とNAME属性と 後方互換性のためINPUTやTEXTAREAにはID属性とNAME属性を両方つけています。 そのため、名称はID属性とNAME属性の両方の制限に縛られます。 ID : /[A-Za-z][-.:\w]*/にマッチするもの、大文字小文字を区別する NAME: CDATA、大文字小文字を区別する(HTML4), NMTOKEN(XHTML1.0) MireilleがHTMLとして出力する時には基本的に英大文字は使いません。 また%INや%CKでkeyが英大文字から始まるものは内部処理用です。 FORMから引数を取得する際も英大文字からはじまるものは読み込みません。 === Mireilleは重い? 簡単に調べてみましたが、重いかもしれません。 原因は投稿フォームや記事表示にevalを使っているからでも、LogDir方式だからでも、 アイコンリストが肥大化しているからでもなく、(これらは思ったよりも軽い) 連発しているuse群のようで、特にuse Fcntlが重い模様・・・ 実際にコメントアウトすると、(Fcntlだけ外すとエラーになるのでuse Strictも外す) 新規投稿フォームの表示が約1CPU秒から約0.5CPU秒になりました。 ちなみにFcntlが影響を与えるのはsysopen関数とflock関数を使っているところです。 (結局Fcntlは外してしまいました) (それでもsylpheedには勝てません) (多少重くてもHTTP転送の負荷で無視できるだろう、と) そうそう、HTMLは重いと思います。 短い記事が多いと、HTML全体のバイト数が記事本文のバイト数の倍になる、ということもあるようです。 いわゆるシンプルビューは少なくともv1.3までは実装しません。 (やっぱりevalの負荷も大きそう。。) (それでもローカルのHTML解析-表示のラグで消えますけど) (とある方からダメだしを受けたので、1.2.7において、多少HTMLを軽くしました。) === アイコンカタログCGIは重い? これは思ったよりも重くありません。 本来の記事表示よりも軽いくらいですね。(アイコン700個の場合でも) === 文字の範囲 # EUC-JP文字 [\x00-\x7F \x8E\x8F \xA1-\xFC-\xFE] # SJIS文字 [\x00-\x7F-\x8E\x8F\x90-\xA1-\xFC ] 判定用としては、「空(EUC:\xb6\xf5 SJIS:\x8b\xf3」よりも、 「改(EUC:\xb2\xfe SJIS:\x89\xfc)」の方が適任かな? <- EUCの「空(\x8bf3)」は、 SJIS文書内で「半角カタカナの"カ"+外字の1byte目」として現れるかもしれないからと、 この文字だけでは判定してくれないことがある。。 === Perlソース内のコメント 意識して書くようにしているので世の中でもコメントが多いほうではないでしょうか・・・。 r1.2.2.17のcore.cgiではコメントだけで19KBあるようです(ぉ。 まぁ、そのおかげで1年以上時々ブランクあけながらも修正できたわけですけどね。 コメントがなかったら絶対内容忘れていますww ちなみにコメントが他の場所と比べて明らかに少ないところは、あまり変更していないところです。 (変更しない→コメント書かない→忘れて変更できない→コメント書けない・・・) あと=item〜=cutという所が結構ありますが、POD文書ではないです。 あくまで複数行にわたるコメントとして使っているのであって、それ以上でも以下でもありません。 === 連続投稿の防御 こう見えて一応やってます、いちおう0.cgiの2行目がそれで、 「スレッド番号:記事内容のCRC32:返信番号」 を保存し、それと新たに来た投稿とを比べることによって行っています。 === HTML規格上は閉じタグを省略したり出来るけど、 Mireilleでは面倒なので基本的にタグの省略、属性引用符の省略などには対応していません。 また、引用符は基本的に " を想定しています。 ひねった方法で書くと、処理を通した時に、タグの構成が崩れるかもしれません。 === 属性セレクタ CSS2ではこれによって INPUT.submitover → INPUT[type="submit"]:hover などとできるのだけど、IE6でも対応していないの。 今でも IE5=behavior/N6=属性セレクタ でいける? (面倒すぎて事実上いけないようなので諦めました) === アイコンリスト編集# Marldiaの表情アイコンとの互換性を保つ目的で、 マッチングを(({/^\s*([^#]+(?:#\d+)?)\s*\#\s*(.+)$/}))で行っているため、 「hoe.png#uso#800」は「」になりますが、 「hoe.png#777#slot」は「」になります。 === 更新制御コマンド 主に修正時に、記事を更新したことがわかるようにします。 :dnew 記事の投稿日時を更新します :znew スレッドの最終変更日時を更新します :renew dnewとznewを同時に行います === 最大子記事数で使っている変数の名前 maxChildrenでなく、maxChildsになっているのは仕様です。 「ChildArticles」略して「Childs」なんです。 === スレッドのロック機能 「lockThread = (all| (revise|delete).. )」 スレッドをロックします。 管理パスワードか、親記事のパスワードを使って、 ロックしたいスレッドに返信するとロックできます オプションを指定しない場合は、そのスレッドに対する返信がロックされます。 :all 全てのオプションをオン :revise 修正をロック :delete 削除をロック === 記事のロック機能 「lockArticle」コマンドで記事をロックできます。 === 署名 パスワードかコマンドで指定された元文字列を、CRC32->Crypt->CRC32としてからログに保存し、 表示時にまたCRC32やCryptしたりして表示します。 総当り対策のため、r1.2.9.20から表示結果には名前の情報が使われるようになりました。 現行では表示結果の署名から元の文字列を推測するのは、たとえ総当りを使っても無理・・・のはず。 === NGワード 指定した文字列が本文含まれる場合はじきます。 ただ、文字参照を使ったりで回避できるのはご愛嬌。 隠し機能として$CF{'itemsCheckingNGWords'}でチェックする項目を決められます。 === 日時形式あれこれ ISO8601やらRFC822やらRFC2822やらと、日時に関する取り決めはいくつかあります。 現在の“標準”は Combinations of date and time of day として、 ISO 8601の§5.4で定義されたもののようです。 形式は「1970-01-01T00:09:00+09:00」となります。(UNIXepochの時刻を表す場合) 同じものが XML Schema Part 2: Datatypes でも dateTime として定義されています。 HTTPで主に使われるのはこれと異なり、RFC822っぽいもの、です。 「Thu, 01 Jan 1970 09:00:00 GMT」 実際はRFC1123の形式でやり取りされている・・・みたいです。 HTTP関係は規格が定まる前に好き勝手やっていたものなので、色々と難しいみたい。 Last-Modifiedはこの形式でやり取りする模様。 Cookieでexpiresの値として使う形式はまた異なります。 「Thu, 01-Jan-1970 09:00:00 GMT」 と、微妙に上の形式と違います。 CookieもNetscape社が独自に実装し、それを他社が真似た物なのです。 (()) 別にちゃんとRFCでCookieが仕様として策定されているのですが、黙殺されています。 環境変数のTZは日本だと普通は JST-9 でよいとされています。 "set TZ=JST-9" / "$ENV{'TZ'}='JST-9';" タイムゾーンをあらわす文字列は多々存在し、日本時間を表すものとして。 「JST-9」「I」「V」「+0900」「+0900 (JST)」「+09:00」 などなど、Iは-9時間、Vは+9時間を表すようですが、 悲しいかな+/-が混同されたようであったも参考程度にしかならないとか。 数字で書く方では基本的に日本は + です。 「JST-9」が - なのは、日本時間から-9時間すると協定世界時になる、との意とか。 (()) JSTの他にESTとかPSTとかあるけど、LT(LunaTime)やMT(MarsTime)なんてあるのね;) タイムゾーンをあらわすのに+/-どちらを使うかは慎重にしましょうと。 基本的には標準子午線より東側において、環境変数では - 、W3C系では + のようです。 === ブラウザメモ&愚痴 非WindowsなブラウザはMac OS X Browser Comparisonのコメントを引用しています。 (()) :WinIE ver6で主に動作確認をしていますが、ver5.01でもたまにしています。 WinIE5.0では巨大なスレッド(Res50を超える)だと、スレッドDIVのボーダーが部分的に消えます。 WinIE4では巨大なスレッドだと、部分的に記事が見れなくなります。 OPTGROUPにはver6から一応対応、将来的なツリーメニュー型への変更を期待しています。 常に期待の80%以上は動いてくれるので結構使える。 :MacIE 多くの場合盲点になりがちなこのブラウザ。 ver4未満では使えないともっぱらの評判でしたが、ver5になってかなり使えるようになっています。 なんと記事ナビも普通に動いてくれます。(半透明化は流石に無理、強引にやろうとすると落ちる) Mireilleのバージョンによって表示が崩れたします。 OPTGROUPが有名どころのブラウザで唯一ツリーメニュー型なのがうれしいところ。 侮れないくらいに使えるのだけどMacだから触れる機会が稀。 :Mozilla MSIEと同様(?)に「自分が標準」という強い自負があるのですよね。 実は独自拡張も結構しているのです。(XUL関連を除いてもまだまだ) OPTGROUPには一応対応、ツリーメニューへの変更を期待しています。 期待の90%以上動いてくれるけど妙なところが抜けていて結構重い。 :Netscape6,7 ブラウザの名称も"NetscapeNavigator6"でなく、"Netscape6"です。 ちょっと付録が多すぎて邪魔、特にAOLIMを強制添付するのはMSより悪質。 表示機能はMozillaに準ずるので省略します。 :Phoenix, K-meleon, Chimera, Galeonなどなど Geckoエンジンのブラウザ、NetscapeやMozillaオリジナルよりも、 これらを使ったほうが使い勝手が良い場合が多いです。 表示機能はMozillaと同じ。 :Opera Opera6以前では日本語に標準対応していませんでした。 Opera6で日本語に対応したのですが、JavaScriptやDOMの実装が穴だらけ・・・。 それでもOpera7でinnerHTMLやOPTGROUPに対応し、 W3C標準の実装においては、一部Mozillaより進んでいるところもあるくらいで、 やっと機能的にも「第三のブラウザ」と名乗れるくらいになってきたかもしれません。 まだ記事ナビの半透明化には非対応、これはW3CによるCSS3のopacity待ちですかね :NetscapeNavigator はやくきえてなくなれ。 1.2.3.1でCSSをN4でも使うようにしました。 おかげで邪魔なタグがたくさん・・・。 巨大なスレッド(子記事数が50を超える)だと部分的に記事が見れなくなる。 :KHTML - Konqueror, Safari (たぶん)ほどほどに動きま(す|した)。 意図的に弾くようなことはしていないので、記事ナビも動くときは動くことでしょう。 Safariでは試したことがないのですが、Konquerorに順ずるんですよね? :iCab Macintosh向けです。 昔はiCabが「第三のブラウザ」と呼ばれていた、と記憶しています。 最近は“CSS support badly broken”なので、だめっぽ。。 :OmniWeb “Doesn't support HTML 4 and CSS1!”うーん。。 :Amaya あのW3C謹製のWebブラウザです。 が・・・はっきり言ってヲタブラウザです(ぉ。 Amaya6.2にてやっと日本語表示に対応したのですが、大抵の日本語サイトでは表示しようとすると、 ちょっと頑張っている様なそぶりを見せた後に、さくっと落ちます(笑。 OPTGROUPをツリーメニューにして表示してくれるのはうれしいのですけどね。 次のバージョンではまともに動くのでしょうか。 (Amaya6.3ではAiremixやMireilleを見れるようになりました、でも数分で落ちます) (Amaya7.0でも数分で落ちます) (Windows移植のためのライブラリが不安定なのかも。Linuxとかだとどうなのでしょう?) :Lynxとかw3mとか 勘弁してくださいw 積極的に対応作業をすることはありませんが、変更すべき点のリストをくださればマージはします。 :i-modeみたいな 「待っていれば、そのうちWinIE/Mozillaみたいに表示してくれるようになるだろう」 と、とことん様子見とすることが内定しました。 (何度か需要調査したけど反応皆無だったのです) === パーミッション覚書 世の中のサーバーには3種類ある。 suEXECが有効になっているApache、suEXECが無効になっているApache、そしてその他。 :Apache with suEXEC * ディレクトリのパーミッションは755 * CGIファイルのパーミッションは700 * 書き込むファイルは644 * 読み書きするCGIファイルのパーミッションは700 :Apache with suEXEC * ディレクトリのパーミッションは777 * CGIファイルのパーミッションは755 * 書き込むファイルは666 * 読み書きするCGIファイルのパーミッションは777 :その他 まずWindows+Internet Infomation Serverだと考えてよいでしょう。 Windowsはパーミッションの概念が曖昧なので、特に気にしなくても何とかなります。 === サーバー別情報 :ccsnet.ne.jp * #!/usr/bin/perl * .htaccess非対応 * CGIパーミッションは755 * 管理人権限で稼動 * .plはCGIとみなす :biglobe.ne.jp * #!/usr/local/bin/perl * .htaccess非対応 * perl5.6 :cool.ne.jp * #!/usr/bin/perl * .htaccess対応 :infoseek.co.jp * #!/usr/local/bin/perl * .htaccess非対応 * CGIパーミッションは755 * ディレクトリは777 * bbs/ではアクセスできない * perl5.6.1 * .plはCGIとみなされない * cgi-binディレクトリ以下のみCGI動作 * 広告あり * http://isweb.www.infoseek.co.jp/Icont?pg=iw_faq6.html&sv=IW :tripod.co.jp * 拡張子で見るので関係なし * パーミッションは関係なし * Perlのバージョンが5.004_04なので動きません * #かなり手を入れれば動きそうではあるけど。。 :sakura.ad.jp * #!/usr/local/bin/perl * ディレクトリ、CGI共に755(777は不可) :mixedmedia.net * #!/usr/local/bin/perl * ディレクトリは755、CGIは700を推奨(777は不可) * .htaccess対応(exec系・OPTIONSディレクティブは不可) * .plはCGIとみなす * perl5.005_03 :cside.jp * #!/usr/local/bin/perl * ディレクトリは755、CGIは700を推奨 * .htaccess対応 * .plはCGIとみなされない * perl5.6 :tok2.com * #!/usr/bin/perl * CGIは700を推奨 * 広告あり :tukaeru.net * Content-type以降に出力されたHTTPヘッダをそのまま出力してしまう === 技術 :条件分岐コメント * 条件分岐コメント (()) * About Conditional Comments (()) :CSS Enhancements in Internet Explorer 6 (()) :Keyword Values of the Font-size Property: With earlier versions of Internet Explorer, these values are not defined intuitively. The medium value is not the default normal font size; small is the default. :TABLE Elements Inherit Text Properties: TABLE elements inherit the value of text properties from their parents. These properties include color, font-size, font-weight, font-style, font-variant, text-decoration, text-transform, letter-spacing, and line-height. With earlier versions of Internet Explorer, for all of the text properties of TABLE elements except the font-family property, set all text properties to the settings on the BODY element. :Width and Height of Inline Elements: Inline elements such as SPAN, B, and I do not support width or height properties. If you want to set the width or height property of an inline element with standards-compliant mode switched on, you must set the display property of the element to inline-block. :透明度指定 「Transparency: the 'opacity' property」 (()) :userData Microsoft Internet Explorerの独自技術 (()) :DOMUserData DOM Level 3 Core WD2003-06-09にUserDataが取り込まれていました。 どのようなものになるかは、まだわかりませんが、一応覚書として。 (()) #------------------------------------------------------------------------------# == 品質特性(ISO/IEC9126)に基づく自己分析 === 1 機能性 Functionality :1.合目的性 Suitability 管理CGI周りで不必要な機能が存在する可能性あり :2.正確性 Accuracy おおむね達成できていると思われる :3.相互運用性 Interoperability おおむね達成できていると思われる :4.セキュリティ Security Mireille本体は、おおむね達成できていると思われる 管理CGIは多少難ありか :5.機能性適合性 Functional compliance HTML4.01Strict - 一部不適格 CSS 1or2 - 一部不適格 日本国法律 - 未調査 === 2 信頼性 Reliability :6.成熟性 Maturity まだまだ先長し :7.障害許容性 Fault tolerance おおむね達成できていると思われる :8.回復性 Recoverability おおむね達成できていると思われる :9.信頼性適合性 Reliability compliance 未調査 === 3 使用性 Usability :10.理解性 Understandability 今のMireille.htmlはまだ不十分かな? :11.習得性 Learnability CGIが使える人なら使えるはず :12.運用性 Oprability CGI掲示板に「運用」というほど大げさなことはあるのかな :13.快適性 Attractiveness 達成できていると思われる、この部分最優先でやっているわけだし ただ、IE5orLater/N6/Mozilla以外だと微妙 :14.使用性適合性 Usability compliance 未調査 === 4 効率性 Efficiency :15.時間効率性 Time behavior FANTASiXさんのSylpheedには負けるけど・・・ おおむね達成できていると思われる :16.資源効率性 Resource utilisation CGI/Perlごときで資源云々言うのもよくわからないけど、 おおむね達成できていると思われる :17.相効率性適合性 Efficiency compliance 未調査 === 5 保守性 Maintainability :18.解析性 Analysability コメントはたくさんつけているつもり。 少なくとも成瀬は解析できる (いわゆる「自分でも読めない味わい深きスパゲッティ」にはなっていないw) :19.変更性 Changeability スクリプトですからそれは当然、解析できるわけだし :20.安定性 Stability JavaScript周りに難あり むしろ現在進行形でMozillaはOperaは・・・ Perl5.6--5.0間でもたまに発生する :21.試験性 Testability 気合があればローカルで :22.保守性適合性 Maintainability compliance 未調査 === 6 移植性 Portability :23.環境適合性 Adaptability Perlが動けばMireilleも動く、はず(flockも回避したし :24.設置性 Installability ほどほど、かな パーミッション周りは一度はまると泥沼になるのだ :25.共存性 Co-existence 完璧、というかCGI/Perlで共存できないように作るほうが難しいと思われ :26.置換性 Replaceability 数件ログデータの移行も含めた実績あり ログデータの移行を考えなければ数多 #数多・・・見栄張ってますw :27.移植性適合性 Portability compliance 未調査 #------------------------------------------------------------------------------# == お世話になったところ === Academic HTML HTML,CSSに関する的確な情報がたくさんあります。 HTML,CSSを一通り学びたい場合はここを見るだけで事足りてしまいます。 (()) === Another HTML-lint HTMLの検証に際し利用しました。 初めてチェックすると、ほとんどの人がショックを受けることでしょう。 (()) === ARTEMIS IconPreviewはここからです、便利なので頂きました。 新しい投稿があると教えてくれる〜もここのを見て、です。 他にもいろいろと参考にしています。 管理機能でここを見習う点は数多くあります。 (()) === HTML鳩丸倶楽部 ツッコミメインなHTML解説サイト、にわたしは見えました。 「HTML 4.01 のみを、純粋に学問的な興味から研究」しているそうです。 HTMLの構成に際して参考にしました。 (()) === jcode.pl 漢字コード変換用のライブラリです。 Mireille本体では横着しているので使っていません。 管理CGIでは一部を切り出して使っています。 (()) === Jcode.pm jcode.plの後継でPerl5用PerlModuleとなっています。 jcode.plの機能にUnicodeを扱う機能が追加されています。 (()) === KENT-WEB なにはともあれ日本のCGI/Perl界に与えた影響は少なくはないはずです。 わたし個人では特にYYBOARD,YYCHATにはお世話になりました。 きわめてとっつき易いCGIが多いです。 (()) === Perlメモ URI自動リンク機能をつけるに際し参考にしました。 Perlの正規表現に関してとても有用な情報があります。 (()) === W3C HTML Validation Service HTML規格の策定を行う団体、W3CによるHTML検証サービスです。 Another HTML-lintよりチェック項目は少なめです。 (()) === とほほのWWW入門 HTML部、Perl部ともに時々リファレンス代わりにしました。 なかなか載っていて便利です。 (()) === 彼の野原 LastPostはここのealisの真似です。 またRev:1.2.2の記事ナビは神乃さんのものベースに作りました。 最近ではPHPに移ってあるべき姿というものを模索していらっしゃるようです。 (()) === SWORD AND COMMERCE retroさんにはMireilleでつまづく所No.1と思われるアイコン設定の解説を書いていただきました。 他にもMireilleの解説の不備な点を多数してもらいました。 ちなみに、retroさんのサイト自体はRagnarkOnline系雑談サイトです。 (()) === Snowish Hills Mireilleを作りこむにあたって、半ばオンサイト顧客として、数々の有用なアドバイスを頂きました。 特に管理CGIは西名さんに言われなければ、かなり貧弱なものになっていたでしょう。 現在の初期状態のデザインも西名さんのデザインをベースにしています。 ちなみに、西名さんのサイト自体はKey系CGサイトでした。 === 相談に乗ってもらったり、ツッコミ・要望・バグ報告をもらったり、普及に貢献してくださった方々 imac零式さん、幽霊猫さん、西名さん、神乃さん、Bさん、TAKE4さん、かろかろさん、xbomさん、retroさん、秋宗さん (ある程度ツッコミを入れるとここに晒されるのですw) === 他にも意見を下さった方々、参考にしたサイト・CGIの作者さんに感謝します * MultiX.jp (()) * FANTASTiX (()) * CGI Pocket (()) * ゆいチャット (()) * The Web KANZAKI (()) * 秀和システム 「詳解HTML&JavaScript辞典」 * ASCIIが邦訳し出版 「Effective Perl」 * 技術評論社 「CGI & Perl ポケットリファレンス」 * そのほかいろいろさまざま。。。 == Copyright Copyright (c) 2001-2003 NARUSE,Yui ((())). All rights reserved. =end