Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
知り合いがやっていたのでおいらもやってみた。
なんというか、結構あたっているような・・・。
とりあえず最新のphpMyFaqをいじくってみて見つけた不具合のメモ
いずれもxampp上での動作確認結果
■用語集の箇所で改行部分がrnに変換されて画面出力される。
Glossary.phpの不具合
2度文字列に対してEscape処理がかけられている(mysql_real_escape_string)ことが原因
■TinyMCEを利用してFaqを編集した際に文字化けする
TinyMCEで入力画面で改行を挿入すると、htmlのソースとしては
に変換される。しかしこれを登録すると、 の箇所がごっそり
文字化けしてしまう問題がある。用語集の時のように2回Escape処理を
しているわけでもなく、Previewの段階で既に文字化け。
これはイマイチ意味がわからん。
最新のCVSかSVNでも見るかな~。
他人が作っているJAVAのシステムでこんな例外が出ていた。
答えはここに書かれているとおり。
とあるので、とりあえず開くことが出来るファイルの数を増やせばなんとかなるかもしれない。。。
それから普通にファイルを一杯オープンしてクローズしていないケースもありえる。
getInputStream()/getOutputStream()をちゃんとクローズしているかの確認も必要だ。
なんとなくAjaxを色々やってみよーということで、本買った。
PHPによるJavaScriptを書かないAjax 九天社 ISBN978-4-86167-175-3
とりあえず読み応えありそうなので、土日にゆっくり読むことにする。
それぞれのブラウザ毎に異なる仕様を吸収するソースを書くのも面倒だし、かといってprototype.jsとかも複雑そうだし、やっぱなれたPHPでAjaxだよな~ということでxajaxというライブラリを使ってみた。
以下はライブドアの天気予報Webサービスに接続して画面に表示する例だが、極めてシンプルであり、ソース中にはJAVAスクリプトのコードはほぼ出現しない。
動作させると、プルダウンの切り替えによって画面を切り替えるようになっている。
require_once("./xajax.inc.php");
require_once("XML/Unserializer.php");
require_once("HTTP/Request.php");
$xajax = new xajax();
$xajax->registerFunction("weather_search");
function weather_search($string)
{
$string = htmlspecialchars($string);
$url = "http://weather.livedoor.com/forecast/webservice/rest/v1?day=today&city=".$string;
$option = array(
"timeout" => "10",
"allowRedirects" => true,
"maxRedirects" => 3,
);
$http = &new HTTP_Request($url, $option);
$http->addHeader('User-Agent', 'Ryuzee.com test scripts');
$http->sendRequest();
if ($http->getResponseCode() != 200 && $http->getResponseCode() != 304){
return PEAR::raiseError('Error HTTP Status ' . $http->getResponseCode());
}
$result = $http->getResponseBody();
$xml = &new XML_Unserializer();
$xml->setOption(XML_UNSERIALIZER_OPTION_ATTRIBUTES_PARSE, true);
$xml->unserialize($result, false);
$xml_result = $xml->getUnserializedData();
$objResponse = new xajaxResponse();
$objResponse->addAssign("result","innerHTML", nl2br(print_r($xml_result, true)));
return $objResponse;
}
$xajax->processRequests();
?>
<html>
<head>
<title>xajax sample</title>
<?php $xajax->printJavascript(); ?>
</head>
<body>
<select name="point" onChange="if(this.value != 0){ xajax_weather_search(this.value); }">
<option value="0">---Please select---</option>
<option value="4">Sapporo</option>
<option value="15">Hakodate</option>
<option value="31">Fukushima</option>
<option value="50">Niigata</option>
<option value="63">Tokyo</option>
<option value="67">Chiba</option>
<option value="79">Kyoto</option>
<option value="81">Osaka</option>
</select>
<div id="result"></div>
</body>
</html>
というコマンドXML_Serializerをインストールしようとしたら、
と表示された。なんでかというと、XML_Serializerがベータ版のためで、pearコマンドはデフォルトではベータ版以下のモジュールはインストールしてくれないから。
こんなときはpearの設定を変更するか、モジュール名の後ろに-betaとつければよい。
今回でいうと
結局phpBB2を使って社内システムを構築しているわけだが、カスタマイズ要件が色々あるので、ソースを修正しまくっている。
正直なところ、このソフトウェアをインターネットにさらすサイトで使うのは危険すぎる気がするし、他の選択肢があればそちらを使うべき。今回オイラが利用したのはSQL Serverでも使えるという1点の理由のみ。
オイラが考える問題は以下の通り。
ちなみに、phpBB3のリリース候補が出ているが、あまり構造的な書き直しはされていない。
もうちょい綺麗な奴自分で作るかな~。(しかし使い道はないか。)
早速自宅鯖にOpenVZを導入してみた。
VMWareよりも圧倒的に楽だし、会社での開発環境構築にも使えそう。
手順などは下記の通りだ。なお、自宅サーバのホストOSはCentOS4.5である。
1.まずネットワークの設定変更を下記の通り行う
# vi /etc/sysctl.conf
[変更前]
net.ipv4.ip_forward = 0
kernel.sysrq = 0
[変更後]
net.ipv4.ip_forward = 1
kernel.sysrq = 1
[追加]
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
2.yum用に設定追加
# cd /etc/yum.repos.d/
# wget http://download.openvz.org/openvz.repo
# yum isntall ovzkernel
サーバ再起動:起動時カーネルの選択で2.6.9-023stab032.1を指定
3.OpenVZのコマンドをインストール
# yum install vzctrl vzquota vzpkg
# service vz start
4.OpenVZのゲストOS用テンプレートをインストール
# yum install vztmpl-centos-4.i386
# vzpkgcache
5.ゲストOSイメージの作成
# vzctl create 1001 --ostemplate centos-4-i386-default --config vps.basic
# vzctl set 1001 --onboot yes --save
# vzctl set 1001 --hostname ve1 --save
# vzctl set 1001 --ipadd 192.168.1.61 --save
# vzctl set 1001 --nameserver 192.168.1.1 --save
# vzctl exec 1001 service sshd start
# vzctl exec 1001 service sshd status
# vzctl set 1001 --userpasswd root:hogehoge
6.ゲストOSの開始
vzctl start 1001
7.ゲストOSへのログイン
vzctl enter 1001
8.ゲストOSの終了
vzctl stop 1001
※ゲストからの通信がこのままだとホストOSのeth0を経由しての通信になる。
従ってホスト側のiptablesの設定については要注意。
その他
■他のOSイメージを探す
yum search vztmpl*
■キャッシュを配置する
/vz/template/cacheに配置
■仮想OSの削除
vzctl destroy 1001
とりあえずVMWareとVirtualServerはよくしってるが・・・。(Xenとかはあんまりしらない)
最近調べ物をしてたらVirtuozzoというのを発見。レンタルサーバ業者等で事例が多く、1つの箱で100以上の仮想OSが動作することもあるそうな。
Virtuozzoの特徴は以下の通り。
んで、こいつをベースにして、オープンソース化したのがOpenVZというオープンソースの仮想化ソフトだそうな。OpenVZのインストールはこのサイトが参考になりそう。この週末試してみることにしよう。
Firefoxを2.0.0.4に、Thunderbirdを2.0.0.0バージョンアップしてみた。
心なしか、動きが軽くなった気がする。といってもまだまだ遅いんだけど・・・。
ThunderbirdにはQuicktextというプラグインを入れてみた。色々なマクロを使って、メール本文を楽に作れるようになる。予めテンプレートを何種類も登録しておくのがベター。下記から入手可能
https://addons.mozilla.org/ja/thunderbird/addon/640
参考はこのあたり
日記 PHP オープンソース Linux Trac Perl wordpress フリーソフト Agile 自宅サーバ phpMyFaq Plugin 書評 Delphi apache プラグイン Subversion アジャイル mojavi セキュリティ Ruby Firefox Ajax/Web2.0 eclipse サーバ Zope フレームワーク CakePHP 文字化け scuttle OpenVZ 自宅 phpBB CMS 翻訳・日本語化 Excel ApacheDS 生産性向上 仮想化 hacks CodeIgniter XAMPP LDAP SBM taskfreak Ajax 修正 言語ファイル mod_security ダウンロード HTML::FillInForm 情報共有 格安 メンテナンス 移転 アンケート レンタル PhpScheduleIt 翻訳 API