MySQL 4.1リリース と PostgreSQL 8.0

MySQL 4.1がリリースされたらしい。今年中にはPostgreSQL 8.0もリリースされると思いますが同じくらいのニュースとして扱われると良いですね。

PostgreSQL 8.0の目玉はネイティブWindows版です。使いやすいインストーラもあります。インストーラを起動する前に管理者では無い一般ユーザ(ユーザ名: postgres)を先に作成しておけば簡単にインストールできます。PostgreSQLはもちろんサービスとして実行されます。RULE, PL/PGSQLを使ったシステム、300万レコード程度、システムロードはかなり高い状態で試用していますが特に問題は見つけていません。

Win32 Native Server以外の重要な機能追加は以下の通りです。

Savepoints
Point-In-Time Recovery
Tablespaces
Improved Buffer Management, CHECKPOINT, VACUUM
Change Column Types
New Perl Server-Side Language
CSV support in COPY

PHPで巨大ファイル

PHPで巨大なファイルを取り扱うことが出来るか下調べしました。PHP内部的にPHPストリームと言う仕組でファイル等を取り扱う事が可能になっているのですが、ファイルヘのアクセスに符号付き32bit整数を使っています。このため扱えるファイルサイズが2GBに制限されています。

タイムリーな事にPHP-INTERNALメールリストでPHPストリームのコードを書いたWez氏がint64_t対応を行う旨の投稿をしていました。待っていれば2^63-1バイトまでのファイルが取り扱える様になるようです。

関西オープンソース 2004

去年は関西オープンソース&フリーウェアというタイトルで開催されたイベントが今年は関西オープンソース 2004として今日から開催されています。

各方面に「仕事で行けない」と言っていたのですが何とか来る時間を作れました。行けないと言いつつ来ています。

ディスプレイ

SXGAのLCDモニタ(FlexScan L565 2台)に替えた時は十分満足していたのですが、UXGAのモニタがかなり安くなってきました。15でUXGA – IODATA LCD-AD152U、実売で7万円台や20インチクラスでも10万円を切っています。現在使用しているノートのディスプレイがSXGA+なのでなおさら欲しくなってきます。

Macユーザでは無いのでいつから方針を変えた(?)のか知らないですが、最近はAppleも100dpiくらいが適切なディスプレイ解像度と言っているようですね。個人的には解像度は高ければ高い程良いと思うのですがどうでしょうか? FAXでも200dpi(低解像度時は100dpi)あるのでディスプレイでも200dpi程かそれ以上あっても良いような気がします。

IOデータのLCD-AD152Uはプログラマ等大量のテキストを表示したいユーザにはかなり良いかもと思っています。実際に15′ UXGAの画面を見たことがないので作業しやすいかは不明ですが、アンチエイリアスが効くシステムでは解像度は高い程良いのではと思います。気になる点はスペック上の反応速度と明るさですがテキスト表示がメインである私の使い方では問題なしかな?やはりNanaoが同様のスペックのモニタを出すまで待つべきか?

HTTP Response Splitting Attack: PHPの場合

ここの日記にも書いたHTTP Response Splitting Attackの対策がPHPでも取られるようです。

header(“bad-header: This is bad header\r\n but having CR/LF in a haeder is allowed by the standard in some case.”);

上記のヘッダが送られた際に\r\nを自動削除可能な設定が追加されます。ただし、\r\nがヘッダ中に現れる事は標準で認められいいますが、パッチを適用したPHPの場合は拒否&警告エラー(php.ini設定のデフォルト値になる)が発生します。もちろん「不正なユーザ入力対策は万全」というサイト向けではそのままCR/LFを送ることも可能です。次のPHPリリース時には取り込まれていると思いますが、仕様が変わっているかも知れないのでChangeLogなどで確認する必要があります。

未対策のアプリがあるサーバはエラーハンドラ(必ず作ってますよね。PHPプログラマの方!)で処理するだけです。普通にエラー処理しているPHPアプリケーションならPHP本体にパッチを当てるだけで完了です。

すごいペンギン

kazさんの日記で見つけたのですがEmperorPenguinEmpire 〜ペンギンのフリーWEB素材サイト〜はすごいですね。

同じ日の日記にtDialyもb2evolutionと同じように集中型ブラックリストを構築する動きがあると書いてありますね。メールのみ無くてオーブンプロキシを対象にしたブラックリストが必要になって来ていると思います。tDialyでrbldnsを使ったIPブラックリストが出来たら早速利用させていただきます。

# rbldnsならb2evolutionをカスタマイズして取り込むのも簡単!

SANS Top 20

SANS Top 20が10/8日に発表されていますね。UNIXはBINDが1位になっています。インストールしたままアップグレードしない、古いパッケージをそのまま使う管理者も多いと言うことなのでしょう。

ちなみに私は出来るかぎりdjbdnsを使ってます。このリンク先にDan J. Bernstein氏が随分前から指摘していたDNS キャッシュを DNS サーバから分離することの重要性を知らないユーザも多いと言うこともあるでしょう。こちらも随分前になりますがCERTもこの件に関してアドバイザリを出しています。

しかし、今でもDNSキャッシュとDNSサーバに同じIPアドレスを指定させているISPがあります。CERTアドバイザリのURL等を添付して改善を依頼するメールを送った所、「検討します」という内容のメールが来ました。しかし、それから早くも半年近くも経ちます。DNSキャッシュの汚染によるサイトの乗っ取りなどの被害が発生した場合、このISPは損害賠償を請求されても仕方が無いですね。

世界中にはこの様なISPが沢山あるのかも!?

RFID報道の大間違いを正す

ITMediaに総論:RFID報道の大間違いを正すと言う記事が掲載されています。RFIDについて時々日記に書いていましたがこの記事は必読と思います。

RFIDとは全く異なりますがBluetooth話題になっているころには色々ありましたね。Bluetooth対応洗濯機・レンジ・冷蔵庫は2年以上前のニュースです。今頃Bluetoothが溢れているハズだったのですが、先日買った東芝の最新型の洗濯乾燥機にはBluetoothは付いてませんでした。

Mozillaプロファイルの引っ越し

メインのLinuxで使っているMozillaがメールを自動的にダウンロードしなかったり、ブラウザが設定している検索サイトで検索出来なかったり、瀕死の状態になっていました。しかも随分長い間… こういった場合、壊れたプロファイルが原因である事がほとんどであることは知っていたのですが…

やっと重い腰を上げて新しいプロファイルに移行することにしました。

方針

  • メールとニュースの設定およびダウンロード済みメッセージは保持
  • 残りは全て再設定

まず新しいプロファイルをプロファイルマネージャ([ツール]-[プロファイルの切替え])で作成します。

古いプロファイルと新しいプロファイルに位置を確認します。

~/.mozilla/<ProfineName>/<salt>/

Mail メールメッセージ(ディレクトリ)
News ニュースメッセージ(ディレクトリ)
prefs.js メールアカウント等の情報(ファイル)
abook.mab メールアドレスDB(ファイル)
数字.s パスワードファイル

prefs.jsからメールとニュース設定項目を新しいプロファイルにコピー。重複するエントリは削除。

以下の文字列で始まる行がコピー対象の行

user_pref(“mail
user_pref(“news

古いプロファイルディレクトリのMail, Newsをコピー。


cp -a Mail News ../yohgaki/some-salt/

以上で引っ越し完了。
後は面倒なパスワードの再設定を行えば移行完了です。パスワードの再設定が面倒な場合、

“数字.s”形式のファイルをコピーします。


93824234.s

を新しいプロファイルディレクトリに作成された同様の形式ファイルに上書きするとパスワードも移行できます。

# もしかしてプロファイル移行ツールとかあるのかも?知っているかたコメントお願いします。

tDiaryローカル・キャッシュ・システム

著作権法は引用を正式に認めているので、引用の程度を越えなければ法律上は問題無いはずです。音楽に関しても同様だったと思います。(何小節まで同じメロディーでもOK、と言うような感じだったと思います)

引用は法律上問題無く行えるといっても、ハイパーリンク先のページが無くなると後でページを読んでも意味が通じない事がしばしばあるのでtDiaryローカル・キャッシュ・システムは便利そうですね。

Home -> Professional


Windows XP HomeとWindows Server 2003
でHome Editionでは少なくとも共有に問題がある、と書きました。この日記を書いた時点ではHome->Professionalのアップグレード版は無かったようですが、苦情が多かったせい(?)かHome->Professionalのアップグレード版が10/22から発売になるようです。価格は通常のアップグレード版の約半分の約1万円。泣く泣く通常のXP Professionalのアップグレード版を買った人も多いのではないかと思います。

Homeを付けて販売しているノートPCはかなり多いのでビジネス用ノートPCの選択肢が増えますね。このアップグレード版は期間が限定されていないと良いのですが… (調べてません。コメント歓迎)

HTTP Response Splitting Attack

HTTP Reponse Splitting AttackはOWASPの新しい脅威のカテゴリになるそうですね。

簡単言うと言語やブラウザ等のHTTP Reuqestヘッダによって別のページに振り分ける(リダイレクト)させるWebサイトのヘッダに問題があると脆弱性が発生し攻撃が可能になります。

可能になる攻撃にはクッキーの漏洩からキャッシュシステムが組み込まれたWebサイトでは意図しないページの表示(複数のユーザ向けへのページの改竄)まで、と色々な影響があります。対処方法は正しいヘッダを返す。つまりCR,LFを含んだ入力をリダイレクトに使わない。

詳しくは
http://lists.virus.org/webappsec-0403/msg00004.html
http://www.sanctuminc.com/pdf/whitepaper_httpresponse.pdf

PDFは非常に丁寧にHTTP Response Splitting Attackを解説しています。

Javaの特許侵害が確定!?

次のURLに記載されているニュースで争われていたKodakが持つオブジェクト技術の特許が認められたそうです。

http://www.itmedia.co.jp/news/0202/14/e_kodak.html

まだ本当に裁判が確定してはいないようでSunが逆転するチャンスはあるようですが、このままでは次のURLの特許が認められる様です。

http://www.freepatentsonline.com/5206951.html
http://www.freepatentsonline.com/5421012.html
http://www.freepatentsonline.com/5226161.html

Kodakは一時金で10億6000万ドルの特許料を請求するそうです。オブジェクト技術の基本に関わる特許らしいので.NET等にも影響が出そうです。

FATファイルシステム特許といい、ソフトウェア特許には特許として認めて良いのか疑問である特許が多すぎます。(幸いFAT特許は無効になる、なった?、と思いますが) 調べもせずコメントするのは不適切ですが、このKodakの特許は本当に特許に値する発明なのでしょうか? ソフトウェアの特許は明確なアルゴリズムのみに限定した方が良いと思うのですが…

1000億円以上の一時金+特許ライセンスを支払ってJavaを無料で提供できるか考えると不可能に思えます。少なくともSDKは有償になるかも知れません。JBossなどにも影響するかも知れませんね。(特許のクレームを読んでいないので妄想です。念のため)まだこの裁判にSunが勝つ可能性があるそうです。是非Sunに勝訴してもらいたい。

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用(?)のキーワードが増えるようです。便利便利。