CPA-LABでは合格体験記の執筆者に受験生が質問できるようになっている。以前は、掲示板スクリプトを利用していたが、ムーバブルタイプでのサイト構築にしてから、どのようにすべきか悩んでいた。

で、体験記がひとつの記事でできているのだから、それに質問してもらうようにすればいいかなと考えて、やってみたものの、どうしても質問一覧みたいなページが欲しくなった。

コメントをずらずら並べるようなページであればいいのだが、以下の要件が必要

  1. 誰かがコメントをつけた時に自動更新 ← テンプレートをインデックスで作成する
  2. 体験記カテゴリ以外へのコメントは無視する ← set varを利用し、特定のカテゴリのコメントだけにする
  3. どの記事へのコメントかわかるようにする ← MTEntryCommnentを利用して、コメントでなく、エントリーを主に考える
  4. できればNEWマークつけたい ← phpで対応。よく考えればjavascriptfでもよかったか。
  5. 質問のついていない記事は下部に表示 ← MTIfNonZero tag="EntryCommentCount"を使ってループ2回にした。もっといい方法があるかも。
  6. できれば、コメントの新しい順にツリーを上にもっていきたい ← 面倒なのでやめた

ということでなんとか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

と同じはまり方をしました。

Captchaがうまくいかない。下記に感謝。

http://fakelife.info/2007/08/16_000008.html

 

スーパーグローバル変数 $_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 を正式に提供します。

----------------------

だそうです。。

参考サイト

PDOでサクサクDB開発http://codezine.jp/a/article.aspx?aid=433

 

大変使いやすいと評判のSQLiteManager。

SQLiteの管理ツールです。バージョン3対応、日本語対応、もちPHP5対応。phpで作られているからphpが動くなら、windows,unixなんでもOK

http://www.sqlitemanager.org/

の左のメニューからダウンロードして解凍するだけ。

が、問題発生。いくらデータベースを操作しても、その操作が反映されない!

と、ぐぐるとこんなバグがあることが。。。

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エラーを返すようになった。

PHP 5 ChangeLogVersion 5.2.4

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

------------------------------------------------------------