Trackbackスパムがやってきた
今まで被害を受けていなかったのが不思議なんですが、初めてTrackbackスパムにやられました。30時間に渡って、数分おきに複数のIPアドレスから273件のアクセス。数量的には大したことない(と思う)んですが、英語のくだらない単語が並んでいて気分がよろしくないです。
とりあえず、COREBlogの設定で、受けたTrackbackを公開する前にモデレートが必要な設定にしましたが、うまく動きません。幸いなことに、Trackback先は3つのエントリに限定されていたので、その3つのエントリだけTrackbackの受付を拒否するように設定して対処しました。
対策として、昨年、ブログ界隈で論争になった"言及リンクのないTrackbackは拒否"するのもありかなと思います。私としては、エントリに関係のある内容のTrackbackなら言及リンクはなくても構わないのですが、実装の手間と管理の手間を考えると仕方がないかもしれません。
一番良いのは、自分のエントリとTrackbackテキストで、単語の出現頻度を比較して相関性がなければ拒否するという方法でしょう。人間が「これはスパムだ」と判断する処理をプログラムで書く、これが一番カッコイイ対策。
とりあえず、COREBlogの設定で、受けたTrackbackを公開する前にモデレートが必要な設定にしましたが、うまく動きません。幸いなことに、Trackback先は3つのエントリに限定されていたので、その3つのエントリだけTrackbackの受付を拒否するように設定して対処しました。
対策として、昨年、ブログ界隈で論争になった"言及リンクのないTrackbackは拒否"するのもありかなと思います。私としては、エントリに関係のある内容のTrackbackなら言及リンクはなくても構わないのですが、実装の手間と管理の手間を考えると仕方がないかもしれません。
一番良いのは、自分のエントリとTrackbackテキストで、単語の出現頻度を比較して相関性がなければ拒否するという方法でしょう。人間が「これはスパムだ」と判断する処理をプログラムで書く、これが一番カッコイイ対策。
plone.orgのトラフィックを見る
アクセス解析つながりということで。plone.orgのアクセス解析を下記から見ることができます。12/9に移行したPlone 2.1 + Zope 2.8な環境で、Zopeのフロントに置いたSquidのログを集計しているようです。
http://antiloop.plone.org/cgi-bin/awstats.pl?config=squid
1日当たり60,000PVとかのオーダーですね。利用ブラウザは、Firefoxがぶっちぎりで1番っていうのも興味深いですが、日本からのアクセスが10位っていうのはちょっと寂しいかも。
moblog地図を世界測地系に対応
moblog地図を世界測地系に対応させました。Google Maps APIは、12月1日より日本測地系(Tokyo Datum)から世界測地系(WGS84)に移行しているので、実際の位置とずれが生じていました。
そこで、Nowalさんの三角関数を使わない変換式を使って、次のように変換しました。この位の計算だったら、サーバサイドでもクライアントサイドでも差はないので、JavaScriptにしました。
そこで、Nowalさんの三角関数を使わない変換式を使って、次のように変換しました。この位の計算だったら、サーバサイドでもクライアントサイドでも差はないので、JavaScriptにしました。
// TOKYO to WGS84
lt = b - b * 0.00010695 + l * 0.000017464 + 0.0046017;
bt = l - b * 0.000046038 - l * 0.000083043 + 0.010040;
auの携帯電話では、GPSを使って取得した現在地は世界測地系になります。しかし、現在地から位置を修正したり、キーワードから場所を検索した場合は日本測地系になるという不思議な仕様になっています。実際に、携帯で表示される位置とGoogle Maps上の位置がずれたり、正常に表示される場合もあったりして悩みました。
一応、"WGS84"と"Tokyo"のどちらで測位しているかは、Exifデータに含まれているので後から判別は可能なようです。"WGS84"か"Tokyo"かを判断して、"Tokyo"だったら上記の変換式を通すという処理をデータ登録時に行うのが一番良さそうです。
CMS/Blog Exchange 1
もう一昨日(12日)ですけど、参加してきました。またしても、携帯電話を置き忘れたまま家を出てしまいました。私は地図を印刷しない派で、いつもEZナビのお世話になっているので、こういう時は携帯がないと困ります。今回は、1ヶ月くらい前にも行ったことのある場所だったので助かりましたけど…
内容は、清水川さんによる「COREBlog2と連携する最小プロダクトの作成」というものでした。ソースコードを追いながら基本的なプロダクトの作り方を紹介してくれて、私は細かい所は全然分かってませんが、なんとなくPloneの流儀を知ることができました。
以下、自分用メモ
内容は、清水川さんによる「COREBlog2と連携する最小プロダクトの作成」というものでした。ソースコードを追いながら基本的なプロダクトの作り方を紹介してくれて、私は細かい所は全然分かってませんが、なんとなくPloneの流儀を知ることができました。
以下、自分用メモ
・ATContentTypeがベース
・デバッグモードだとファイルの更新日をみて変更が反映される
2.8からデフォルトでオフ
・ブラウザがJavaScriptオフだとPloneは自動でJavaScriptを使わないようになる
・global_allow 直下に設置できなくなる
→ allowed_content_typesで定義
smallcontent.pyがメイン
・implementsでインタフェースを定義
・meta_type,portal_type,archetype_nameの違い
→ Plone上,Zope上の違い?
・Schema定義は、Globalに定義する必要はないそう
→ Zope3との関係?
・canSetDefaultPageは、デフォルトビューになりませんという定義
・ReferenceFieldでリスト一覧を生成可能
・Schemaでデータ保持の方法を定義できる
・validatorはタプルで複数設定可能
・デバッグモードだとファイルの更新日をみて変更が反映される
2.8からデフォルトでオフ
・ブラウザがJavaScriptオフだとPloneは自動でJavaScriptを使わないようになる
・global_allow 直下に設置できなくなる
→ allowed_content_typesで定義
smallcontent.pyがメイン
・implementsでインタフェースを定義
・meta_type,portal_type,archetype_nameの違い
→ Plone上,Zope上の違い?
・Schema定義は、Globalに定義する必要はないそう
→ Zope3との関係?
・canSetDefaultPageは、デフォルトビューになりませんという定義
・ReferenceFieldでリスト一覧を生成可能
・Schemaでデータ保持の方法を定義できる
・validatorはタプルで複数設定可能
2次会にも参加したのですが、皆さん私が見たことのあるサイトの人ばかりで、だいぶ顔とサイトが一致しました(^^; みんな凄いなぁと思うことしきり。うちも早くCOREBlog2に移行しなくっちゃ。COREBlogの他にもBlogツールは沢山あるし、今は無料のサービスもいろいろあるわけで、Zope + Ploneならではの旨みを表現できたらなぁ、と思っています。
うーん、それって何だろう。
# 次回は堀田さんの発表を楽しみにしてます。
11月のアクセスは、316,000PV
9月 80,000PV 10月 120,000PV
急成長しました。でも、これはバブルなので、真に受けないことにします。大切なのは、自分の好きなことをやって、好きなことを日々書き連ねていくこと。さらにその好きなことで、他の誰かの役に立てたら、こんなに幸せなことはないです。Ploneのプロダクトとか作れるようになりたいなぁ。
アイデアはいろいろあるのに、うまく表現できないこのもどかしさ…
たぶん、ここが乗り越えなければならない壁なのでしょう。
急成長しました。でも、これはバブルなので、真に受けないことにします。大切なのは、自分の好きなことをやって、好きなことを日々書き連ねていくこと。さらにその好きなことで、他の誰かの役に立てたら、こんなに幸せなことはないです。Ploneのプロダクトとか作れるようになりたいなぁ。
アイデアはいろいろあるのに、うまく表現できないこのもどかしさ…
たぶん、ここが乗り越えなければならない壁なのでしょう。
やっと、COREBlog2を使ってみました
Fedora on VMwareな環境にZope 2.8.3とPlone 2.1.1をインストールして、COREBlog2を試してみました。
関連オブジェクトのインライン表示は、Ploneならではの機能でいいですね。一番使うのは画像だと思いますが、ブログのエントリにPloneのオブジェクトを関連付けることができます。画像、MP3やビデオはもちろん、単純なファイルではないイベントやPollなども記事の中に埋め込むことができるようです。
清水川さん作のATBookshelfもインライン表示に対応しているようで、とても楽しみです。仮想本棚を自分のサイト上に作ったり、Wishlistを別ページで表示したりしたら面白いかも。
あとは、COREBlogのサイト同士(以外でもいいけど)をTrackBackではない「何か」で有機的に繋げるような仕掛けがあれば面白いなぁ、と思ったりします。具体的にどうすればいいのかは、分かりませんけども。
# でも、Plone 2.1に移行するのはかなり大変だということが分かりました…
関連オブジェクトのインライン表示は、Ploneならではの機能でいいですね。一番使うのは画像だと思いますが、ブログのエントリにPloneのオブジェクトを関連付けることができます。画像、MP3やビデオはもちろん、単純なファイルではないイベントやPollなども記事の中に埋め込むことができるようです。清水川さん作のATBookshelfもインライン表示に対応しているようで、とても楽しみです。仮想本棚を自分のサイト上に作ったり、Wishlistを別ページで表示したりしたら面白いかも。
あとは、COREBlogのサイト同士(以外でもいいけど)をTrackBackではない「何か」で有機的に繋げるような仕掛けがあれば面白いなぁ、と思ったりします。具体的にどうすればいいのかは、分かりませんけども。
# でも、Plone 2.1に移行するのはかなり大変だということが分かりました…
Zopeで301リダイレクトするには
「301 Moved Permanently」を返すには、DTML Methodの中で次のように書きます。
ページを移動した場合は、302よりも301を返したほうがSEO的に良いらしいです。302を多用するとSPAMとみなされるとか、301だとPageRankを引き継げるとか。真偽の程は不明ですが…
<dtml-call expr="RESPONSE.redirect('http://hoge/', status=301)">statusオプションを付けないと、「302 Moved Temporarily」になります。ページを移動した場合は、302よりも301を返したほうがSEO的に良いらしいです。302を多用するとSPAMとみなされるとか、301だとPageRankを引き継げるとか。真偽の程は不明ですが…
Plone版のCOREBlog2α1リリース
COREBlog2α1をリリース
ついこないだPlone版のCOREBlogを開発しますと宣言したばかりなのに、もう形になっているなんて凄いです。オリエンタルラジオの真似して「かっこいいー!」と叫びたいくらいです。
皆さん、既に続々と試しているみたいですが、うちのサイトはまだPlone2.0.5なので、動かすために、まず2.1にアップグレードしなければなりません。とりあえずVMware or coLinux環境に入れてみるのが簡単かも。
ところで、「Ploneって何?」っていう人も多いと思いますが、あなたが見ているこのページがPloneです。CMSツールの一種で、Xoopsの高機能なやつと思ってもらえればよいです(語弊があるかな?)。ページデザインの統一されたWebサイトを簡単に更新/管理することができます。
海外だと、ハワイ州政府、NASA、コンチネンタル航空、Computer Associates、OSDL、日本だと毎日新聞社、JETROのサイトなどで採用されています。
関連リンク:
・Zope + CMFのCMS"Plone"を使ってみよう - Yet Another 仕事のツール
・plone.org (本家)
・plone.jp (日本)
・『開発のプロが教える標準Plone完全解説』アスキー
Plone対応版のCOREBlog,COREBlog2のα1をリリースしました。
詳細を知りたい方はML(http://mail.webcore.co.jp/mailman/listinfo/coreblog) へどうぞ。Ploneは複雑ですし,COREBlogはPloneをフレームワークとして利用して作られていますので,ある程度Ploneの複雑さを継承しています(反面,高機能なわけですが:-))。細かいノウハウや情報を共有するには,やはりMLが便利だと思います。
詳細を知りたい方はML(http://mail.webcore.co.jp/mailman/listinfo/coreblog) へどうぞ。Ploneは複雑ですし,COREBlogはPloneをフレームワークとして利用して作られていますので,ある程度Ploneの複雑さを継承しています(反面,高機能なわけですが:-))。細かいノウハウや情報を共有するには,やはりMLが便利だと思います。
ついこないだPlone版のCOREBlogを開発しますと宣言したばかりなのに、もう形になっているなんて凄いです。オリエンタルラジオの真似して「かっこいいー!」と叫びたいくらいです。
皆さん、既に続々と試しているみたいですが、うちのサイトはまだPlone2.0.5なので、動かすために、まず2.1にアップグレードしなければなりません。とりあえずVMware or coLinux環境に入れてみるのが簡単かも。
ところで、「Ploneって何?」っていう人も多いと思いますが、あなたが見ているこのページがPloneです。CMSツールの一種で、Xoopsの高機能なやつと思ってもらえればよいです(語弊があるかな?)。ページデザインの統一されたWebサイトを簡単に更新/管理することができます。
海外だと、ハワイ州政府、NASA、コンチネンタル航空、Computer Associates、OSDL、日本だと毎日新聞社、JETROのサイトなどで採用されています。
関連リンク:
・Zope + CMFのCMS"Plone"を使ってみよう - Yet Another 仕事のツール
・plone.org (本家)
・plone.jp (日本)
・『開発のプロが教える標準Plone完全解説』アスキー
10月のアクセスは、119,000PV
10月のアクセスは、119,065PV(ページビュー)でした。お陰様で9月の1.5倍の量です。ここのところ順調な推移です。どうもありがとうございました。
それから、ここ2,3日くらいのアクセス量が凄いなと思っていたら、VMwareのエントリがはてなブックマーク人気エントリーのトップに掲載されていました。とりあえず記念ショット。いや、2番目ですけど、昼間は確かに1番上だったんです…
id:jkondoのブックマークにも入ったみたいです。はてなダイアリーの外でも「はてな入りたい!」とか書いたら、面接してもらえるのだろうか(^^;
# del.icio.us の popularにも載ってたそうです。
それから、ここ2,3日くらいのアクセス量が凄いなと思っていたら、VMwareのエントリがはてなブックマーク人気エントリーのトップに掲載されていました。とりあえず記念ショット。いや、2番目ですけど、昼間は確かに1番上だったんです…id:jkondoのブックマークにも入ったみたいです。はてなダイアリーの外でも「はてな入りたい!」とか書いたら、面接してもらえるのだろうか(^^;
# del.icio.us の popularにも載ってたそうです。
Ploneのチューニング
自宅サーバで稼動しているPloneを少しばかり、チューニングしてみました。
結構速くなった気がしますが、これはプラシーボ効果!?
1.Zopeのデバッグモードを無効にする
2.Ploneのgzip圧縮を止める
3.ナビゲーションとカレンダー・ポートレットを削除
4.Apacheのmod_chacheを有効にする(失敗)
以上で、ページの表示が体感できるくらいに速くなった気がします。mod_cacheに関しては、ちょっと悔しいので、もう少し調べてみます。
結構速くなった気がしますが、これはプラシーボ効果!?
1.Zopeのデバッグモードを無効にする
デバッグモードだと、portal_skinsツールに含まれるすべてのページテンプレート、スクリプト、オブジェクトがファイルシステムと比較され、最新であるかどうかチェックされるそうです。10~20倍遅くなるとか…
現在、どういう設定になっているかは、ZMIでPloneインスタンスの下の"portal_migration"を確認すると分かります。なんと!うちのサイトは、"Debug mode: Yes"になっていました。
無効にするには、/var/lib/zope/etc/zope.conf 内を編集して、
現在、どういう設定になっているかは、ZMIでPloneインスタンスの下の"portal_migration"を確認すると分かります。なんと!うちのサイトは、"Debug mode: Yes"になっていました。
無効にするには、/var/lib/zope/etc/zope.conf 内を編集して、
debug-mode offに設定します。変更した後は、Zopeの再起動が必要です。
2.Ploneのgzip圧縮を止める
HTTPヘッダを見ると分かるのですが、Ploneはデフォルトで、ブラウザに送るソースをgzip圧縮しています。この機能により、ネットワーク通信量が減るというメリットがあります。私も以前、ISDNとかADSL回線だった頃は、Apacheにmod_gzipモジュールを組み込んで圧縮をかけていました。
しかし、最近のブロードバンド環境を考えると、そんなに効果はないような気がします。逆に、うちのサーバはCPUがあまり速くない(いまどき866MHz…)ので、余分な処理が増えることでパフォーマンスを悪くしていることが考えられるので、この機能を無効にしました。
portal_skins/plone_scripts/enableHTTPCompressionを編集して、
しかし、最近のブロードバンド環境を考えると、そんなに効果はないような気がします。逆に、うちのサーバはCPUがあまり速くない(いまどき866MHz…)ので、余分な処理が増えることでパフォーマンスを悪くしていることが考えられるので、この機能を無効にしました。
portal_skins/plone_scripts/enableHTTPCompressionを編集して、
ENABLE_ZLIB_COMPRESSION = 0に変更しました。
3.ナビゲーションとカレンダー・ポートレットを削除
この2つのポートレットは負荷がかかるらしいです。無くても困るものではないので削除しました。各フォルダのPropertiesを開いて、left_slotsおよびright_slotsから、
here/portlet_navigation/macros/portletを削除しました。
here/portlet_calendar/macros/portlet
here/portlets/calendar (COREBlog内の場合)
4.Apacheのmod_chacheを有効にする(失敗)
gifやjpegなどの静的コンテンツを、毎回Zopeで出力するのではなく、フロントのApacheにキャッシュさせて高速化するのが狙いです。
しかし、これは失敗しました。なぜかHTTPヘッダのContent-Encoding,Expires,Pragmaの値がアクセスする度に長くなってしまいました。
例えば、
Webで検索してもこのような症状は出てこなかったので、うちだけの現象っぽいです。原因不明なので、これは無効にしておくことにしました。
しかし、これは失敗しました。なぜかHTTPヘッダのContent-Encoding,Expires,Pragmaの値がアクセスする度に長くなってしまいました。
例えば、
1回目 Content-Encoding: gzipといった具合です。Firefoxだと2回目以降のアクセスからページが見れなくなってしまいます。gzip,gzipと続くと、gzip圧縮を2回かけているとみなされるようです。IEでは、仕様に準拠していないことが幸いしてか普通に見れましたが…
2回目 Content-Encoding: gzip, gzip
3回目 Content-Encoding: gzip, gzip, gzip
Webで検索してもこのような症状は出てこなかったので、うちだけの現象っぽいです。原因不明なので、これは無効にしておくことにしました。
以上で、ページの表示が体感できるくらいに速くなった気がします。mod_cacheに関しては、ちょっと悔しいので、もう少し調べてみます。








