MODxをサブドメイン対応する方法

CMS(CMF)のMODxは、1つのスクリプトを共有して、複数のサイトを稼動させることが出来ません。そのため、修正をしない方法では、サブドメイン毎にMODxを設置するか、DBを共有したままプラグインによりスタートページを振り分けるもの(Subsites/subdomains 0.1)に留まっています。

それぞれ一長一短あります。前者はサブドメイン分のMODxを設置するため、リソース増加してしまいます。プラグインも共有出来ません。しかし、全てのリソースが分離されている分、メンテは容易です。後者は単一のMODxをおいて置けばいいのでリソースは少なくてすみます。反面、DBを共有しているので、ページ数が増えメンテが困難になります。また、閲覧者が適当なページIDをリクエストしたときに、隠しておきたいはずの他サブドメインページが表示されてしまう問題も残ります。

そこで私は第3の方法を提案したいと思います。物理的なファイルリソースを共有したまま、DBとキャッシュを分離する方法です。このケースで言うDBとは、コンテンツ、スニペット、プラグイン、MODxの設定です。

この方法はMODxのコアスクリプトを変更します。本体がバージョンアップした際には、私のリリースを待つか自分で再修正をするしかありません。その代わり、MODxコアをバージョンアップしない限り、あらゆる問題に対応できる利便性が売りです。

方法は至極単純、インストール時に出力されるconfig.inc.phpをサブドメインごとに分ければいいのです。ただし、これだけでは不十分で、不具合が多発します。というのも、cacheディレクトリの中身をMODxが頻繁に参照するからです。ここに、MODxの設定の一部もなぜか含まれています。生成されるキャッシュをそれぞれサブドメインごとに分別されるように修正してください。

そんなわけで、私が改造したMODxを公式にポストしておきました。

日本語サポートスレッド本サポートスレッドも活用してください。

Subsites the MAD [HACK] ver.2.0

ログ解析「Visitors」

1秒で10万行を処理するフリーの超高速なログ解析ソフト「Visitors」

Visitorsはapacheのログを僅か数秒で解析して表示してくれる、コマンドラインベースのプログラム。Graphvizを利用するとリファラーを利用して視覚的なユーザ追跡(Tracking)も可能。通常はCron tabで解析結果を自動出力することを想定していると思われます。

しかし、この解析速度であれば、日時範囲を指定してオプションを切り替えながら、ログを比較してみたいものです。使いやすいGUIフロントエンドはないでしょうかね?

ちなみに、これ、ソースコードで配布されてます。Windowsにはコンパイルしたお試し版がありますけど、完全版実行ファイルは有料サービスです。以下にVisual C++ 2005での修正個所を記しておきます。

#tail.c
#line3
- #include <unistd.h>
+ #include "unix2win.h"

#visitors.c
#line22
+ #include "unix2win.h"
unix2win.h
#ifdef WIN32
#define snprintf	_snprintf
#define vsnprintf	_vsnprintf
#define strcasecmp	strcmpi
#define strncasecmp	strnicmp
#define ssize_t	int
#define inline __inline
#include <io.h>
#define off_t _off_t
#define read _read
#endif

百度からのアクセスを制限する方法

Baiduspider(Wikipedia)

先月22日から2分に1回の頻度で、BaiduspiderというROBOTから絨毯爆撃が来ています。おかげでログがBaiduspiderの名前で埋まってしまいました。

このROBOT、どうやら中国"国内"限定の"百度"と言う検索エンジンのようです。中国国内ということは、幾ら百度の検索TOPになっても、我々日本人には恩恵が少ないと思われます。それよりも、このDOS攻撃に近い絨毯爆撃によるサーバ負荷のほうが遥かに問題。ご丁寧にも同じURLを何度もリクエストしてくる行儀の悪さです。

そこで、robots.txtで規制をする事にしました。まずは温厚に1時間1回のアクセスにしてもらうようお願い。

User-agent: baiduspider
Disallow:
Crawl-delay:3600

User-agentにはBaiduspider(最初大文字)やBaiduspider+(最後に+)を書くと認識してくれません。ログのUser-agentと認識名が違うところに悪意さえ感じてしまいます。

さて、この状態で20日経ちましたが、アクセス頻度が下がりません。更に問題なのが「Robots.txt」を読みに来ないこと!一体何ヶ月待てば設定が反映されるんでしょう。

どうしたものかと調べてみると、この百度のクローラーBaiduspiderは、巷でも評判が悪いらしい。先のWikipediaの記事でも、それが窺い知れると思います。

そこで、Robots.txtで一切拒否。サーバ側でも弾くようにしてしました。行儀が良くなってから開放する予定です。百度は今後日本にも進出するらしいですが、これでは先が思いやられますね。

User-agent: baiduspider
Disallow: /

その他、行儀が悪かった最近のROBOT。

  • BecomeBot←ショッピングリサーチ用
  • BecomeJPBot←上記日本語版

ウィッシュルーム

ウィッシュルーム 天使の記憶

CINGが開発したDS用アドベンチャーゲーム。海外名は"HOTEL DUSK"。シナリオも然ることながら、キャラデザイン、演出に至るまで、ムービーを見る限りでは遊びたくなる要素たっぷりです。

独特の実在感があるキャラクターアニメーションは、ミュージックビデオでも目にする実写トレースのようです。俳優が演じたものをトレースして、味のあるペンシルアニメを実現させたらしい。この部分、もしや自社作画なのでしょうか。アニメーションは非常に手間がかかる部分だけに、外注してしまったほうがコスト削減に繋がる場合もあるんですが。まぁ、海外に丸投げされ使い物にならない動画が送られてくるよりは安心できますね。

前作、アナザーコードも面白そうです。

MSペイントでダヴィンチ

今春は上野でダ・ヴィンチ展をやってますね。そこでダ・ヴィンチに因んだ話題をお届けしましょう。

なんと、MSペイントだけでモナ・リザを模写するという荒業をやってのける動画です。タイルパターンと中間色で、ここまで再現してしまうとは圧巻。しかも、早回しとは言え、迷い無く描いてるように見えます。これはボブ先生に負けない才能の持ち主か!?

https://www.youtube.com/watch?v=uk2sPl_Z7ZU

ちなみに、この人、チョコレートやケチャップでも絵を描いてます。ケチャップでは、スーパーサイズミーの監督とドナルド。風刺が効いてますね。