まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2006/05/08(月)5/8版スナップショット

  • スケルトンファイルの名称変更と多数の移動。特に害はありませんが、気になる人は旧スケルトンファイルとキャッシュをすべて消してから新バージョンを展開するとよいと思われます。
  • エラー処理を整理
  • TextParserのコメントの扱いに関するバグを修正。
  • RSS1.0, RSS2.0配信対応(デフォルトではRSS2.0を配信します)。
  • 日記の説明欄(概要欄)を追加。
  • 使用可能なタグを制限する機能(制限なしも可能)を追加。

ついでに、FirefoxのSageに「< >」などを2度解釈してしまうバグを見つけました。*1

*1 : これXSSになりかねないんだけど大丈夫なのかなぁ……

2006/05/04(木)adiary

何気なく検索してみたらadiaryというものはすでに存在するらしい(笑)

adiary の検索結果のうち 日本語のページ 約 159,000 件

adiary は開発コードということにして、何かナイスな名前を募集中(ぉ

まあ "aDiary"(PHP) は開発停止&公式サイト消滅みたいだし、こちらは "adiary" だから気にせず突進という手もなくはない。調べてみると、アルバム日記(adiary)やらADiaryなんてもあったりして(笑)

まったく余談ですが、このblogサービスの正式URLは http://blog.abk.nu/ です。http://adiary.abk.nu/ はadiary配布用サイトにする予定です。

追記

Googleでどんどんページ送りをしていったら

最も的確な結果を表示するために、上の140件と似たページは除かれています。

namespace adiary; は結構混沌としていますが、それにしても現状気にするほどじゃなさそうってことで気にしなくていいのかも(苦笑)*1

*1 : 159,000件というのは、日記システム内のすべての日記のページが検索に引っかかってるとかそういう感じみたいです

2006/05/01(月)5/1版スナップショット

久しぶりのsnapshotです。手元では一応問題なく動いていますが、ソースのあちこちに手を入れたため不具合あるかも……(不明)。

  • メッセージを翻訳式にして言語ファイル(info/language.euc-jp.txt)として外に出しました(English が poor ですが*1気にしない方向で(汗))*2
  • 分類リストの表示が選択式になりました(日記帳の設定、一番下)。旧バージョンから移行の場合、手動で表示onに設定しください。
  • [TextParser] 注釈をセクションごと(小見出しごと)に出力するようにしました。
  • [DB_mysql] DBIの $dbh->ping (コネクションの確認)が実装されてないために、長時間アクセスがないと文字化けすることがある問題に対処しました。以下推測ですが、コネクションの切断が検出できないために、Connection Poolな環境*3において実際には接続が切れているにも関わらず自動再接続され処理が継続し、そのため接続時に発行しておいた端末コード指定"SET NAMES <code>"が初期化されてしまうようです。
  • .confファイルの設定が多数追になってますので、新しいファイルをもとに再設定してください。
  • 今後のことを考え、データベースカラムが追加になりました。mysql の場合は以下を手動発行してください。
mysql> ALTER TABLE xxx_diary ADD (images text);
mysql> ALTER TABLE xxx_diary ADD (update_tm int);

カラム変更は、今回が最後の予定です。

*1 : ちなみに English to English な言語ファイルを用意すれば容易に解消できます(本末転倒)

*2 : InternationalよりはむしろUTF-8でどうしてもHTMLを出力したい人奇特(?)な人向けかも……いないと思うけど。この実装でcgi動作(not mod_perl/SpeedyCGI)の場合約3~5ms実行速度が低下しました、ナムー

*3 : mod_perl / SpeedyCGI で Connection pool を on にしている場合

2006/04/25(火)adiaryの開発

adiaryの開発ですが一段落してしまいました。困った(苦笑) いやまだ必要な機能(ToDo)はありますけど。

  • RSSの出力と更新通知 Ping
  • 画像アップロードへの対応*1
  • モバイル対応(モバイル更新とモバイル用skelton)
  • TypePad (Movable Type)形式、はてな形式、tDiary形式のデータインポート
  • データエクスポート(とりあえずTypePadと、……はてなかな)

これ以外の部分=基本的な機能は全部できてまして。開発者向け(プラグイン作者・改造者)に説明しておかなければならない、内部仕様がとんでもなくありましてドキュメントの整備を始めようかなぁと。

はじめは perlpod を使おうと思ったのですが、イマイチ機能不足な気がして*2、この構文解析を使って書けばいいかなぁ……とか悩み始めたのが運の尽き。ドキュメント整理用のシステムとかあったらいいよなぁ……とか。どんどん違う方向に(笑)*3 ほんとはシステム丸ごとCPANに起きたいところですが、blogシステム自体には日本でしか(?)意味のない文字コード機能がとても強化してあったり、基本システムには日本語コメントが沢山。とりあえず諦めよう(^^;;

ただ language ファイルシステム(メッセージをファイルに収めて他言語対応するシステム)は公開前に作っておいた方がいいのかなぁ~とか、本筋と関係ないところで悩み満載

*1 : 半分完成。某アルバム待ち

*2 : 日本語のセクションタイトルつけるとアンカーが変になったりとか

*3 : まあ元々このシステム自体、必要は発明の母的な発想で出来てるので間違ってないんですけど(苦笑)

2006/04/21(金)multipart/form-data

日記への画像添付に向けて、multipart/form-data の解析ルーチンでも作ろうかと思って調べ始めてみると……

  1. とりあえずネットで仕様書を検索。RFC1876, RFC2388だということは分かるが……見ても分かりにくいぞ、これは。
  2. 仕方ないので perl で書かれたサンプル(アップローダ)でも探してみると、CGI.pm を使用したものばかり見つかる。
  3. しょうがないので、ENCTYPE="multipart/form-data" なフォームで POST してデータを全部ファイルにはき出してみる。実に分かりやすい。
  4. 結局 boundary を認識しつつ読み出す必要があるので、perl 的にデリミタを書き換えてと思ったものの、例えば 100MB とか大きなファイルを受け取るとき、それだけメモリを食うこととなる。 → 常識的にはNG
  5. なんかいい方法ないかなぁーと再びネット内のcgiスクリプトを検索。…………見るんじゃなかった(笑)

どうしてネットに転がってる cgi (with perl) スクリプトってのは、有名どころ含め、汚いのばかりかなぁ(苦笑)*1

*1 : もっとも2年ぐらい前までヒトのこと言えないソースばかりですが(汗)

multipart/form-dataの例

というわけで例をアップしておきます。参考にどうぞ。アップロードしたファイルは、C++のソースです。

続きを読む