CPA-LABでは合格体験記の執筆者に受験生が質問できるようになっている。以前は、掲示板スクリプトを利用していたが、ムーバブルタイプでのサイト構築にしてから、どのようにすべきか悩んでいた。
で、体験記がひとつの記事でできているのだから、それに質問してもらうようにすればいいかなと考えて、やってみたものの、どうしても質問一覧みたいなページが欲しくなった。
コメントをずらずら並べるようなページであればいいのだが、以下の要件が必要
- 誰かがコメントをつけた時に自動更新 ← テンプレートをインデックスで作成する
- 体験記カテゴリ以外へのコメントは無視する ← set varを利用し、特定のカテゴリのコメントだけにする
- どの記事へのコメントかわかるようにする ← MTEntryCommnentを利用して、コメントでなく、エントリーを主に考える
- できればNEWマークつけたい ← phpで対応。よく考えればjavascriptfでもよかったか。
- 質問のついていない記事は下部に表示 ← MTIfNonZero tag="EntryCommentCount"を使ってループ2回にした。もっといい方法があるかも。
- できれば、コメントの新しい順にツリーを上にもっていきたい ← 面倒なのでやめた
ということでなんとか6以外はなんとかなったかな。
(注意点)
MT4は、デフォルトでは、記事単体ページのコメント部分へのアンカー(id)がプレフィックス付き(comment-)で出力されているのに、タグの MTCommentID は、comment-はつけずに、番号のみを出力する。なので、リンクを作成するときには、#comment-をつけるのを忘れないように。(これでだいぶ時間くった)。
コメントがつけられるたびに更新できるように工夫すれば、個別エントリーやWEBページにもいけるでしょう。
以下は覚書のソース
mb_strimwidthで、はまった。
この関数は、文字数でなく、文字幅だそうな。
Trim the string in terminal width
だそうで。文字コードにかかわらず、半角1、全角2、そして、トリムマーカーも含む文字数だとのこと。
http://code.nanigac.com/source/view/351
と同じはまり方をしました。
スーパーグローバル変数 $_POST では、受け取れない場合がある。
例えば、ブログの更新pingとか、トラックバックとか。
そういうときには、
file_get_contents("php://input");
で、POST全文を受け取ることができる。
php5.2.4
Perlはよく知らないので、困っていた。ら、先人達は偉いです。
http://www.hazama.nu/t2o2/archives/002737.html
http://www.nextglobaljungle.com/2007/10/mt4igoogle_adsense.html
が親切。
ただし、
# print "Content-Length: ",length($data),"¥n¥n";
をコメント化した場合、
print "¥n";
としておかないと、htmlヘッダーとcontentsが分離されない場合があるかと。
ただしくは
print "¥r¥n";
かな。
ただし、i-modeでは、Content-Lengthヘッダは必須なので、ご留意を。
http://www.nttdocomo.co.jp/service/imode/make/content/html/notice/basis/index.html
ん~。さらに調べるとiモードでは、Keep-AliveとSSLで問題でるそうな。SSLは使わないので問題なかろう。
問題は、Keep-Aliveですな。
しかし、以下の記述を発見。
http://www.nttdocomo.co.jp/service/imode/make/content/ssl/notice/
http://www.nttdocomo.co.jp/service/imode/make/content/ssl/flow/
「CGIなどでContent-Lengthを返さない場合に、Keep-Aliveが無効になります。また、IIS上でのCGIについては常にKeep-Aliveが無効になる事象を当社試験環境で確認しております。」
ということは大丈夫ということですかね。あ、というか、うちIISじゃないし。
というわけで、テストでも、Content-Lengthと実際の出力のサイズの一致が確認できたので、当方ではContent-Lengthは出力することにした。
PHP5をさくらインターネットで導入しようと考えた。
こちらが大変詳しい。
(5.2.0)さくらインターネットにPHP5.2.0をインストールする(まとめ)http://blog.hinami.net/?itemid=777
(5.2.0)さくらのレンタルサーバへPHP5.2.0をインストールhttp://www.koruri.com/dielectric/archives/200611/10000591.html
(5.2.1)さくらインターネット(レンタルサーバ)でPHP5を!http://uruseiyatsura.way-nifty.com/blog/2007/03/php5_73ee.html
(5.?.?)さくらインターネットにPHP5をインストールする
(5.2.3)さくらのレンタルサーバへPHP5.2.3をインストールhttp://www.koruri.com/dielectric/archives/200706/01000707.html
(5.2.3)ちょっとだけ注意が必要「さくらインターネット スタンダードプランでPHP5.2.3を使う場合」
(5.2.3)activeCollabをさくらインターネットにインストールするメモhttp://blog.digibee.jp/2007/07/activecollab_1.html
(5.2.3)さくらにphp5.2.3インストール。 http://another.rocomotion.jp/11809565202793.html
自分用でも覚書で書いておく。
まずは、windowsでPHPの最新版をダウンロード。
http://www.php.net/downloads.php
2007/10/9 時点で PHP5.2.4
これの
Complete Source Code PHP 5.2.4 (tar.gz) [9,478Kb] - 30 August 2007
をwindows上の適当なところへダウンロード。(ミラーサイトがいくつか表示される)
解凍はさくらインターネットのサーバー上でやるので、ここではダウンロードだけ。
で、そのファイルをさくらインターネットのルートディレクトリ(自分のアカウントの直下。wwwのひとつ上)に「temp」ディレクトリ(フォルダ)を作って、そこへアップロード。「temp」でなくても他と重複しなければディレクトリ名は何でもよい。
次にさくらインターネットのサーバーにtelnetでシェルログイン。
さくらインターネットへのtelnetの仕方
スタート→ファイル名を指定して実行→telnet hogehoge.sakura.ne.jp
(hogehogeには初期契約したサブドメインまたは、設定した独自ドメインでもtelnetできる)
loginプロンプトで、自分の契約サブドメイン(hogehoge)
password でtelnet用のパスワード(FTP用と同じモノ)
%cd temp
% tar xzvf php-5.2.4.tar.gz(圧縮ファイルの解凍) たくさんのファイルが解凍される
configファイルを準備する。
-------------------------------------
#!/bin/sh
./configure \
--prefix=$HOME \
--with-config-file-path=$HOME/www/bin \
--program-suffix=5 \
--with-pear=$HOME/share/pear5 \
--enable-force-cgi-redirect \
--enable-mbstring=all \
--enable-mbregex \
--with-mysql \
--with-openssl=/usr \
--with-zlib=/usr \
--with-gd=/usr/local \
--with-jpeg-dir=/usr \
--with-freetype-dir=/usr \
--with-ttf \
--with-png-dir=/usr \
--with-curl
--------------------------------------------------
上記をconf.shとして保存。temp > php-5.2.4 ディレクトリにアップロード
で、telnetログインで、php-5.2.4ディレクトリに移動。(cd temp,cd php-5.2.4)
%sh conf.sh
エラーなく、Thank you for using PHP.と出たらOK。何かワーニングが出たら考える。
%make (けっこう時間かかる)
でコンパイル。Build completeが出たらOK。次はインストール
%make install
で,
home/hoge/binの中のphp-cgiをwww/cgi-binにコピーする。
cd /home/hoge/bin
ln php-cgi5 /home/hoge/www/cgi-bin/php5.cgi
動くかどうかテスト
%/home/hoge/www/cgi-bin/php5.cgi -v
--------
PHP 5.2.5 (cgi) (built: Jan 3 2008 15:56:39)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
--------
と表示されたらOK。
続いて
php.ini-recommendedをwww/cgi-bin/php.iniとしてコピー
中身を適切に設定。
あとは.htaccsessの設定かな。
phpinfo()で
Loaded Configuration File
が、www/cgi-bin/php.ini
になっていたらOK
(追記)
「さくらのレンタルサーバ」スタンダード・プレミアムサービスにおきまして
2008年1月29日より PHP5 を正式に提供します。
----------------------
だそうです。。
大変使いやすいと評判のSQLiteManager。
SQLiteの管理ツールです。バージョン3対応、日本語対応、もちPHP5対応。phpで作られているからphpが動くなら、windows,unixなんでもOK
の左のメニューからダウンロードして解凍するだけ。
が、問題発生。いくらデータベースを操作しても、その操作が反映されない!
と、ぐぐるとこんなバグがあることが。。。
SQLiteManager を Windows で使うhttp://blog.datoka.jp/?itemid=854
で、次は文字コード
SQLiteManager1.1.3でUTF-8のlangファイルを作る http://project-p.jp/halt/anubis/blog_show/525
この2つの修正は必須でしょう。
本家は対応しないのかな。これ以外はすごく使いやすい管理ツールです。
phpのmbstring.detect_order は、左から順番に判定をしていくようだ。
私の設定は、
mbstring.detect_order = eucJP-win,UTF-8,SJIS-win,jis
としていて、経験上、これが一番誤判定がでない。(と思う)。
以前は、
mbstring.detect_order = UTF-8,SJIS-win,jis,eucJP-win
とやっていて、eucのはずなのにSJISと判定されたり、UTFと判定されたりした。
(参考)
/halt/Snapshot - mb_detect_orderのautoがぬるい件
【環境メモ】
-----------------------------------------------------------
OS:Windows XP SP2
sever:Apache 1.3.37
php:php 5.2.4
pear 1.6.1:Mail 1.1.14,Mail_Mime 1.5.2,DB 1.7.13,XML_RPC 1.5.1
------------------------------------------------------------
php5.2.4からfatalエラーの時にhttp 500エラーを返すようになった。
Changed error handler to send HTTP 500 instead of blank page on PHP errors.だそうで。
なるほど仕様としてはアリなんだろうけど、デバック時には、普通にエラーの表示をして欲しい。
画面で出すのは研究中。誰か教えて欲しい。
とりあえず、php.iniにてエラーログを出す設定にしておく
log_errors = On
error_log = c:\php5\log\errorlog.txt
【環境メモ】
-----------------------------------------------------------
OS:Windows XP SP2
sever:Apache 1.3.37
php:php 5.2.4
pear 1.6.1:Mail 1.1.14,Mail_Mime 1.5.2,DB 1.7.13,XML_RPC 1.5.1
------------------------------------------------------------
