b2evolutionの日本語化

備忘録として。

このブログソフト(b2evolution)のメッセージ日本語化は非常に良くできているのですが、プログラムの方は改善の余地があるようです。少なくとも私の環境では以下の様な問題に気がつきました。

  • 使用する文字エンコーディングをもう少し柔軟に設定可能にする
  • メールで使用される文字エンコーディングがおかしい(何故かUTF-8として送信され、実体はISO-2022-JP)
  • 文字数は数えても仕方ない(スキンから削除するだけ。削除済み)
  • 少なくともRSS1.0の記事の発行時間を調整可能にする(現状GMT。JSTも指定できるようになっていて欲しい)

メール送信の問題くらいは直さないといちいちメールが来る度にエンコーディングを指定しないとならないので面倒ですね。簡単に直りそうなので早めに直したい所です。

dc:dateの部分は仕様的(RSS1.0およびW3C Date and Formats)には正しいのですがGMT時間であることを示す”Z”を処理できないRSS処理系があるようです。(困っているのはmixi.jpの日記RSS)

2004-10-03T23:58:18Z

の様にb2evolutionは正しく送っていてもJSTを前提に処理してしまうサイトがあるのでこちらで対処する方が早いと言うだけです。本来は仕様にしたがっていないサイトを修正してもらうべきですが…

[追加]
もう少し詳しく書くとRDF Site Summary 1.0 Modules: Dublin Coreのdc:dateは

* <dc:date> ( #PCDATA ) [W3CDTF]

となっておりW3CDTFで次のように定義されています。

The formats are as follows. Exactly the components shown here must be present, with exactly this punctuation. Note that the “T” appears literally in the string, to indicate the beginning of the time element, as specified in ISO 8601.

Year:
YYYY (eg 1997)
Year and month:
YYYY-MM (eg 1997-07)
Complete date:
YYYY-MM-DD (eg 1997-07-16)
Complete date plus hours and minutes:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
Complete date plus hours, minutes and seconds:
YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
Complete date plus hours, minutes, seconds and a decimal fraction of a
second
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)

where:

YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)

錯覚

たまたま見つけたすごい画像です。静止画ですが錯覚を利用して画像が動いている様に見えます。

http://www.ritsumei.ac.jp/~akitaoka/index-e.html

乗り物酔に弱い方等は気分が悪くなるかも知れないので注意してください。

「まるごとPHP」

最初のセクションの部分に「まるごとPHP」著者の一人である月宮さんがツッコミを入れられてますね。ちょっと辛口のコメントです。初心者向けに記述するのは難しいですね。私も気を付けないと… (私も「まるごとPHP」にセキュリティー関係でほんの少しだけ書いています)

月宮さんの日記のコメントにも書きましたが、PHPでは明示的にリソース(DB接続・ファイル)や変数を開放する必要がほとんどありません。Webプログラムでは明示的に開放しない方が良いくらいです。例えば、DBの永続的接続を使っていない場合、システム負荷を上げるだけで役立つ事はほとんどありません。永続的な接続を利用している場合、データベース接続を切断する関数を呼ぶと役立つ事は一切無く無駄なCPUリソースを消費するだけです。

日本におけるb2evolutionの利用状況

日本ではあまりユーザがいないのではと思っていたb2evolutionですが、b2evolutionをキーワードにググってみる

b2evolution の検索結果のうち 日本語のページ 約 601 件中 1 – 97 件目 (1.10 秒)

という結果に。ま、私はある程度マイナー好きな傾向があるのでよしとしておきます。しらぬまにメジャーになったものも多いですが、LinuxとかPHPとか 🙂

良く使うソフトウェアが知らぬ間にマイナーからメジャーになる、と法則性が当たるとすればPostgreSQL, Momongaがメジャーになっていき、b2evolutionも広く使われる事でしょう。(違う?

カスタマイズ

本当はb2evolutionをカスタマイズしている暇はないのですが、ほんの少しだけカスタマイズしてみました。

このページはb2evolutionのcustomスキンをそのまま使っているのですがXHTML文書としてバリデートできませんでした。理由は簡単、ISO-8859-xな文字がテンプレートの作者名に含まれていたからです。

日本語では単語数を数えても意味が無い(というか日本語の単語数を数えられるようになっていない)ので単語数を削除しました。

どちらも

skin/custom/_main.php

を編集して該当行を削除して今の状態になっています。

b2evolutionのspam排除機能

b2evolutionにはSPAM排除と言う機能があり、これでSPAMを防ぐ機能があります。管理ページの「spam排除」タブに「中央ブラックリストに迷惑行為の更新情報を請求する!」をクリックするとSPAMを行っているサイトのリストとコメントSPAM用(?)のキーワードが増えるようです。便利便利。

リファラスパム

wikiへのアクセスなんだか週末にしては妙に多い、と思ったらリファラスパムが送られて来ているようです。怪しげなサイトがリファラとして残っていました。世の中スパムばかりになって来て嫌になりますよね…

wikiはリファラを表示していないので宣伝やグーグルの検索結果ランクアップには役立たないのですが、送って来る所をみると無差別にスパム送信を業者が始めたようです。

referer spamでググってみると知人もSPAMの影響を受けていますね。そして最近、スパムが急増しているように思えます。リファラを記録し表示するWebアプリは多くあるので対策が面倒です。SPAMメールと同じ用にブラックリスト使えればよいのですが、と思ったところで既にあるかもと思ってググってみても直ぐに見つりませんでした。リファラ、コメント、トラックバックスパム対応のblack list知っている方教えて下さい。

久しぶりにorkut

招待メール送って、と知人に頼まれたので、久しぶりにorkutを見てみたらかなり重いですね。タイムアウトの連続… mixiも遅い時があるらしい(?)ですが私が見ている時間で遅いことは無かったですね。運が良いだけかな?

Windows XP HomeとWindows Server 2003

Windows XP Professionalしか使っていなかったので気がつきませんでしたが、Windows XP HomeでWindowsServer 2003のファイル/プリンタ共有を利用するには問題があるようです。

Winodws XP Homeはドメインに参加できないため、共有を利用するにはワークグループモデルのセキュリティーで共有リソースにアクセスする事になります。ワークグループモデルのセキュリティーとはユーザ名とパスワードが一致する場合、共有等へのリソースを許可するモデルです。ユーザ名とパスワードが一致しない場合は共有へアクセスするためのユーザ名とパスワードを入力するようにダイアログが表示されます。色々な問題はありますが小規模なネットワークではワークグループモデルで十分な場合も多いです。

Windows Server 2003とWindows XP Homeでもワークグループモデルでの共有アクセスは可能なのですが、困ったことに気まぐれ(?)にアクセスを許可する場合と許可しない場合があります。Windows XP Home(Professionalも?)は一旦共有リソースを利用するためにユーザ名とパスワードを入力するとそのユーザ名とパスワードを記憶するらしく、再起動後ユーザ名とパスワードの入力が必要なユーザでWindows XP Homeにログオンしてもユーザ名とパスワードを入力しないでリソースにアクセスできました。

勝手にユーザ名とパスワードを記憶してまう動作にも問題があるのですが、もっと困ったのはユーザ名とパスワードを全く聞かずにアクセスが拒否されてしまうことです。どういった条件で発生するのは判っていません。何日間が放っておくとまたアクセスができるようになったりするようです。一番最初にアクセスするときはほぼ確実に正しく動作するようです。しかし、リソースをアクセス用にユーザ情報が記録されている場合、保存されたユーザ情報が正しく利用されていないようです。せめて拒否して全くアクセスさせないのではなく、ユーザ名とパスワードを再入力できるようになっているべきです。

ネットワーク接続のプロパティーの詳細タブが表示されたり、されなかったりする不具合と同じような感じですね。この問題はSP2になってずいぶんましなったようですが…

とにかくWindows XP Home(Professionalも?)のワークグループモデルを利用した共有リソースへのアクセスに以下の問題があります。

パスワードを保存するかユーザに確認できない
保存したパスワード情報が削除できない
保存したパスワード情報が一致しない場合(?)、アクセス拒否ではなくパスワードを再入力できない

小規模な会社にはXP HomeのノートPCがあったりします。ドメイン(アクティブディレクトリ)を使わずにWindows XP Homeから共有リソースへはまともにアクセスできないのでので本当に困ります。もしかしてワークグループモデルはサポート対象から除外されているのでしょうか?

Apache 2.0.51 Secirity Hole

Apache 2.0.51がリリースされましたが重大なセキュリティー上の問題が見つかりました。

From http://www.apacheweek.com/features/security-20

Fixed in Apache httpd 2.0.52-dev

Bypass of authentication CAN-2004-0811

A flaw in Apache 2.0.51 (only) broke the merging of the Satisfy directive which could result in access being granted to resources despite any configured authentication
Affects: 2.0.51

Satisfyディレクティブは外部のIPからはHTTP認証行い、プライベートIPからはIPアドレスベースの認証を行ってユーザ/パスワードの記入を省略する、など使います。(反対に両方要求することも出来ます)

昨夜の時点ではアナウンスは無い&ミラーには2.0.52のファイルは無かったですが、apache.orgには既に配置されていました。今はミラーリングも完了したころかもしれません。

HDDのパフォーマンス

折角久しぶりにLinuxマシンのSATAドライブが動作したのでhdparmで速度を測定してみました。

[root@sena root]# hdparm -tT /dev/hdb

/dev/hdb:
Timing buffer-cache reads: 3400 MB in 2.00 seconds = 1700.85 MB/sec
Timing buffered disk reads: 122 MB in 3.04 seconds = 40.11 MB/sec
[root@sena root]# hdparm -tT /dev/sda

/dev/sda:
Timing buffer-cache reads: 3408 MB in 2.00 seconds = 1704.85 MB/sec
Timing buffered disk reads: 160 MB in 3.02 seconds = 53.03 MB/sec

普通の速度は出ているようです。

そういえば「高速ネットワーク通信実験に成功。DVD一枚分のデータが数秒で送信可能」という見出しの記事を見掛けますが、数秒で送るにはメモリから送信しないとダメですね。仮に私のPCではDVD一枚分を数秒で送信するとして、十分なメモリがあってもPC3200 Dual Channelでは厳しそうな感じですけど… 実用化するときにはMRAMが湯水のように使える時代になっているのでしょうね。

SATAデバイス

今Momonga Linuxが動作しているPCでSATAドライブが付いているのは1台きりだったのですが、この1台のSATAドライブがMoで認識されなくなって久しいです。データ用のディスク領域が足りなくなって来たので「今時PATAドライブではなぁ」と思いSATAのドライブが買ってきてしまいました。

買って来てしまった物は仕方無いので使える様に設定するまでです。使えるようにする環境はHEADではなくSTABLE_1 (Momonga Linux 1)です。とりあえず今SATAドライブがつながっているいるだけのPCのカーネルはとても古い(2.4.26-12mp4-smp)ので最新のSTABLE_1のkernel(2.4.27-4mp4)にアップグレードしました。ブート時にkernel bug云々と言われpanicを起こしました。困ったときのIRCと言うことでMoのIRCで聞いて見るとSATAでも普通に使えてるようです。「オンボードのIDE RAIDのI/FをBIOSで無効にしてみたら」と言われ、試してみた所とりあえずブートはするようになりましたがfdisk -lとしてもドライブが見えません。

古いカーネル(2.4.24とかだったような)では/dev/hdeと形で認識されていたのですが、今のカーネルはSCSIとして認識させないとならないとの事だったので

modprobe ata_piix

とすると/dev/sdaとして認識されました。ここまで来れば/etc/modules.confに

alias scsi_hostadapter ata_piix

を追加して/boot/kernel-2.4.27-12mp4-smp.imgをmkinitrdで作り直せばfdisk -lで普通に見えるようになります。


[root@sena root]# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 19457 156288321 83 Linux

Disk /dev/hda: 80.0 GB, 80054059008 bytes
255 heads, 63 sectors/track, 9732 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 8400 67472968+ 8a Unknown
/dev/hda4 8401 9732 10699290 5 Extended
/dev/hda5 8401 8650 2008093+ 82 Linux swap
/dev/hda6 8651 9732 8691133+ 83 Linux

Disk /dev/hdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 9729 78148161 83 Linux

記事など

本当はとっくに書き終わっているはずの「はじめてのPHP」(技術評論社)より前に、PHPとPostgreSQLムック(Impress)に私が執筆したページが掲載されます。予定通りなら本の執筆はとっくに終わっているハズだったので引き受けたのですが… 技術評論社の関係者の皆様、本当に申し訳ございません…

入試にリスニング

今日のテレビのニュースで大学の入試に英語のリスニングが加わった、と報道していました。リスニング試験の方式になれるための予行演習にとアナウンサーが原稿を読み上げているその時の映像を見て固まってしまいました。そこにはSDカード付き、何やら再生や早送り・巻き戻しが可能らしいプレーヤーにつながっているヘッドフォンを付けているいる高校生がいました。

TOFEL、TOEICのどちらも受けたことがありますが両方ともラジカセクラスのプレーヤーからのスピーカーの音声を聞いて試験をしました。特に問題は感じませんでしたが、だれが一人一人にプレーヤーを付けることにしたのでしょう? もし会場が広くて後ろの席の受験生が不利と言うことであればミニFM局を作ってラジカセで再生した方が低コストなような気がします。アメリカだったらこんな非効率な方式はありえないような気がしますが、どこかの国のリスニング試験がモデルになっているのでしょうか?

b2evolutionに移行します

さすがにPukiWikiの日記はおまけ的なプログラムという事、Wikiと日記を別に管理したいのでblogをe2evolutionに移行します。

採用理由はPHPで記述されたGPLかBSDライセンスのblogアプリケーションをググって最初に見つけたアプリケーションがb2evolutionだったこと、ソースをざっと見てまともそう、と言う印象だったので使ってみることにしました。本当はもっとソースレベルで精査しないとならないのですが、今はその余裕がありません。b2evolutionは残念ながらb2evolutionはMySQLしかサポートしていません。暇があったらソースのチェックを兼ねてPostgreSQLに移植できるとよいのですが、いつになることやら….