New Found Glory - Catalyst [FROM US] [IMPORT]
MTV でヘビーローテーション中の All Downhill From Here が最高な New Found Glory のニューアルバムは 5.18 発売ですか。楽しみすぎ!
高田モンスター軍総統が長州抹殺を宣言した。高田総統は29日、マスコミを都内某所の「総統の部屋」に招待。橋本真也との“OH砲”で『ハッスル3』(5月8日、横浜アリーナ)に出場すると一方的に宣言した小川直也に対し「ハッスル度は40パーセントだったが、査定試合をクリアした。まあいいだろう。私からの贈り物だ」とタッグでの出場を容認。その後、笹原ハッスル事業主任に一部対戦カードを発表させたが「長州力」の名前を聞くと「ゲスト気取りでハッスルに出場し、燃えカスのような試合をした長州の名前がなぜあるのか」と激怒。これに対して事情を説明したのは島田裕二参謀長。
高田はじけてんなー。
BBC NEWS | Business | Google to sell $2.7bn in shares
Internet search powerhouse Google has confirmed it is to float on the US stock market.
The company has filed papers proposing to issue stock to raise an estimated $2.7bn, documents showed.
Google IPO キター。
dablog: iTunes4.5でシャッフル生活を充実させる
僕の場合をいうと、いままであるプレイリストで聴いている時に、"そのプレイリストに入っていないある曲を聴きたくなったけど、その曲の後は以前のプレイリストを継続したい"みたいなことがよくあって、その度に面倒な思いをしていたのですが、この機能を使えばプレイリスト外の曲を"パーティーシャッフルで次に再生"みたいなことが出来るので、凄く便利っぽいです。
ああ、これはすばらしい。Winamp から移行したときに一番不便だなとおもってたとこです。
『禁じられた遊び』『お厚いのがお好き?』に続く、大人のための知的情報番組。今度のテーマは"物のデザイン"。
デザインラボラトリー主宰・谷原章介の夢「21世紀の地球をもっと美しくすること」を実現すべく、今最も旬なクリエーターたちが、まったく新しいデザインの再生に挑む!!「デザイン」・・・ それは地球に残された最後の資源。
この番組面白いですね。90年代前半のフジテレビ深夜番組全盛期を思い出させます。そしてBGM は大好きな ニューシネマパラダイスのそれ!
Nick Bradbury: RSS, Atom...and SDF?
Daniel Henry calls for unity in the syndication war by proposing a new format called SDF.
I haven't had a chance to really read the spec, but David has obviously put a lot of effort into it. Although I'm certainly not wild about yet another feed format, if SDF ever gets widely used I'll support in FeedDemon.
yet another な Syndication フォーマット、だそうです。
I've just uploaded Blosxom 3.0 2i (aka alpha 2). This is a minor update, fixing only a couple of things: permalinking (i.e. requesting a particular entry) now works and an individual entry's path is now normalized (huzzah!), so no more having to figure out whether to put $url$path$fn or $url/$path$fn or $url/$path$fn--Blosxom does that for you.
Blosxom 3.0 でましたねー。んー、いじるかどうしようか。。
search.cpan.org: William Herrera / Crypt-MP4Stream-0.01_02
Crypt::MP4Stream DRMS decoding of Apple style encrypted MP4 player files
iTunes の DRMS を解くモジュール DeCRMS.c の Perl port かな?
Shibuya Perl Mongers : バッドノウハウカンファレンス 2004
平林純氏のさん招待講演が決定しました。 『史上最強科学のムダ知識』 を持参するといいかもしれません。
bkcon にて hirax.net の平林さんが講演してくれることになりました! ムダ知識本もっていってサインもらおう。。
Finally Atom: GoogleBot hunts for Atom
Googlebot has been spotted in a server's logs looking for atom.xml (and index.rdf, but interestingly not rss.xml). A little impolite, as it would only appear to be fishing. Or could it be the end of civilisation as we know it..?
Googlebot が /atom.xml を探してるらしいという話題。
64.68.84.9 - - [23/Apr/2004:00:04:02 +0900] "GET /mt/atom.xml HTTP/1.0" 404 279 "-" "Googlebot/2.1 (+http://www.googlebot.com/bot.html)"
たしかにきてますね。
ロケーションフリーテレビ「エアーボード」LF-X1 - SonyStyle
DVDやビデオもワイヤレスで楽しめる。操作もタッチパネルリモコンでらくらく。
ベースステーションにハードディスクレコーダーやビデオデッキなどを接続して、録画したテレビ番組やDVDソフト、テレビチャンネル切り換えなどをワイヤレスで楽しむことができます。操作も画面に表示されるタッチパネルリモコンに触れるだけ。 1階のリビングにあるDVDプレーヤーの映像を2階のプライベートルームで楽しむなど、離れた場所のAV機器の再生や停止などを簡単にコントロールできます。
基本的にテレビに支配されてる人間なのでベッドルームでも風呂でもテレビみてえなあ、とエアボードに注目。無線LANポイント機能とか全然イランのですが。
この、リモコンをボード側から操作する機能ですが、XFER にもついてるヤツだけど、SONY のエアボードの場合、非SONYな機械でも操作できるんすかねー? うちの東芝HDDレコーダ RD-XS41 が操作できるかなあ。
だったら買ってもいいかと思ってます。
Yahoo! Japan がマルチメディア検索をスタートしたようですね。エンジンは All the Web を使用しているみたいです。(e.g. 「人質」を画像検索)
画像、動画、音声などが検索できますね。音声って使い道あるのかな。。。動画はニュースとか検索できると便利そうです。
MODULE.JP の小山さんが Apache モジュールの講習会やるそうです。
本トレーニングでは、Apacheモジュールの開発やカスタマイズを行いたい方を対象に、C言語を利用したApacheモジュールの開発方法を解説します。さらに、実機を使用した実習で実際にモジュールの開発を行っていただきます。
講師には、『WebエンジニアのためのApacheモジュールプログラミングガイド』(技術評論社刊)の著者である小山 浩之氏をお招きいたしました。
Google が検索に新機能追加 だそうで。これってMozilla系とか、タブブラウザのカスタム検索とかの方が普通に便利っぽいですが。Google をホームにしてる場合とかは便利なのかな。
それに関連してるのかわかりませんが、昨日あたりからSJIS で生クエリ投げたときに文字コード判別してくれなくなったみたいですね。僕の使ってる DonutP は、カスタム検索で日本語いれるとエスケープしないで投げてくれるので、うまいこと検索できなくなってしまいました。Sleipnir とかでも同様だとおもいます。(ITMedia に記事でてました。Sleipnir ってそんなメジャーなのか?)
paperboy&co.、「JUGEM」がAtom0.3に対応
paperboy&co.は、同社が運営するブログサービス「JUGEM」にてAtom0.3への対応を開始した。Atom0.3は、RSSと同様にWebサイトの要約や見出しを配信するフォーマット。JUGEMではすでにRSSに対応しているため、2種類のフォーマットをサポートすることになる。「http://アカウント名.jugem.cc/?mode=atom」にアクセスすることで、最新15件のエントリがAtom形式で出力される。
JUGEM が Atom フィードを開始しました(すばらしい)。
しかしメディアはフィードの方ばっかり注目していますけど、「Atom 0.3 対応」というのは Atom API も含めて対応してるようなイメージを与えますので、Atom フィード 0.3 対応というのが正しいとおもわれます。
聞き覚えのあるニューシネマパラダイスのあのメロディ。テレビのCMでやってました。
最近では、NHK大河ドラマ『武蔵』の音楽を担当して話題になった史上屈指のフィルム・コンポーザー、エンニオ・モリコーネの初来日公演が決定した。
ニューシネマパラダイスとか、海の上のピアニストのジュゼッペトルトナーレとのコンビはほんと最強ですよね。
気づいたら サウンドトラック を買ってしまいました。なんだかいまさらですが、前々から欲しいと思ってたもんで。
無敵会議 帰ってきたアクセス向上委員会にスピーカーとして参加してきました。大方の人は僕が何を言ってたかもわからないかとはおもいますが、まあそれはそれで問題ないのであまり気にしないでください(笑)。一応私の発表資料を このあたりにおいておきます。
どれも楽しかったんですが、個人的にはみん就のいとまささんの話が一番面白かったですね。
antipop - lily 用 Bulkfeeds: Similarity Search プラグイン
やはり僕たちブロッガー(何)に欠かせないもの、それは Bulkfeeds: Similarity Search だよね! んなことないとかいうやつは、ブロッガー仲間に入れてやんないもんね!
…というわけで、Permalink に Similarity Search の結果を埋め込むプラグインを作成。上記は冗談としても、個人的に Similarity Search の結果はほんと重宝してるので、これは普通に必要なもの。まぁ、作ったとかいうようなものでもないわけだが。。
blosxom の Ruby 版 Lily 用の Bulkfeeds Similarity Search プラグインをけんたろさんが作ってくれました。
XML::Atom::Server を使って Atom API サーバを実装実験中。気づいたことメモ。
XML::Atom::Server ではWSSE認証のために password_for_user
というメソッドを実装して、
sub password_for_user { my($self, $username) = @_; return $password; }
みたいにする必要あり。ユーザの入力に password は含まれず、種 (Nonce + created) と PasswordDigest があるだけなので、パスワードがサーバ側でわからないとだめです。メソッドで password を文字列で返すってのが実装的には気持ちよくないんですが、まあこれがラクでいいのかな。別サーバとかにある場合は authenticate
そのものをオーバーライドしてやればいいとおもわれます。
パラメータの解釈には PATH_INFO を使用しています。
GET /atomapi/blog_id=12/entry_id=13
みたいなリクエストから
$VAR1 = { blog_id => 12, entry_id => 13, };
みたいなハッシュをパラメータとしてつくります。これは Atom API の Spec ではなく XML::Atom::Server の独自拡張だと思われます。
TypePad Atom API にあるような、URI から実装メソッドへのマッピングを行うのは結構しんどいです。request_method の GET / POST / PUT / DELETE と、PATH_INFO からとったパラメータ ($self->{params} でとれる) をひたすら if .. elsif で判定して実装メソッドに dispatch してあげる必要アリ。具体的には、
みたいになります(メソッド名は任意。もう少しエレガントにならんのかな。
handle_request
メソッドで、レスポンスのXMLを生成して返しますがここが抽象化されていません。生のXML文書を文字列で返すAPIです。自分は「実装メソッド名.xml」なファイルを テンプレートで読み込んで吐き出すようにラッパーつくってみましたが。
まだまだ未成熟なAPIなので、ツールも使いにくい状態です。いろいろいじって、XML::Atom の方にもフィードバックしていきたいですな。
現状のAtomって、独自のモジュール追加みたいな拡張系ってどうなってるの? RSS 1.0はRDF αの制約の範囲内で、解釈の仕方を含めてある程度対応できると思うけど、 ホントにAtomはあくまでSyndicationのフォーマットで、それ以上では無いってことなの?普通に xmlns を使って拡張できます。
<entry xmlns="http://purl.org/atom/ns#" xmlns:book="http://sixapart.com/atom/book#"> <book:isbn>:00000000000</book:isbn> </entry>
RDF ではないので解釈の仕方は個別になってしまうのがネックですね。なるべくボキャブラリは統一したほうが、アプリケーション開発者に優しいでしょうね。(e.g. カテゴリは dc:subject で表す、など)
Atom API のサーバ側をちょっといじくってるこの頃(というか今日見始めたばかりですが)。気になってきたことをメモです。
Atom API はBlog の XML-RPC まわりのために立ち上がったプロジェクトではありますが、仕様自体は拡張性があるので、別にBlogに限った用途なわけではありません。実際、TypePad の Atom API では、Blog 以外に TypeList や PhotoAlbum の編集を同様のAPIで処理することができます。
たとえば TypeList に書籍を追加するには、
POST /t/atom/lists/list_id=1 HTTP/1.1 Host: www.typepad.com X-WSSE: my credentials <?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://purl.org/atom/ns#" xmlns:book="http://sixapart.com/atom/book#" xmlns:rvw="http://purl.org/NET/RVW/0.1/"> <book:isbn>0375412808</book:isbn> <content>This is a funny book.</content> <rvw:value>4</rvw:value> </entry>
のようなリクエストを投げ、
HTTP/1.1 201 Created Content-Type: application/x.atom+xml <?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://purl.org/atom/ns#" xmlns:book="http://sixapart.com/atom/book#" xmlns:rvw="http://purl.org/NET/RVW/0.1/"> <title>Jeffrey Steingarten: It Must've Been Something I Ate: The Return of the Man Who Ate Everything</title> <issued>2003-12-05T00:21:54Z</issued> <id>tag:typepad.com,2003:listitem-201</id> <book:title>It Must've Been Something I Ate: The Return of the Man Who Ate Everything</book:title> <book:author>Jeffrey Steingarten</book:author> <content>This is a funny book.</content> <rvw:value>4</rvw:value> <book:isbn>0375412808</book:isbn> <book:thumbnail>http://images.amazon.com/images/P/0375412808.01.THUMBZZZ.jpg</book:thumbnail> </entry>
のようなレスポンスを受け取ります。エントリの要素の book:isbn
は http://sixapart.com/atom/book# という namespace で拡張された要素を表しています。
こうしてみてくると、Atom というのは HTTP の REST アーキテクチャを利用した、汎用コンテンツ編集のAPIなのかなあ、という気もしてきます。よりライトウェイトになった SOAP のようなモノですね。実際、CPAN の XML::Atom モジュールでは、REST 風と SOAP 風での Atom API 実装をオプションで切り替えることもできます。つまり役割としてはSOAP とおなじレイヤーに位置しているということがいえます。atom-syntax メーリングリスト でもこれは話題になっていて、The Atom API is just for Blogging?スレッドからその様子を見ることができます。
しかし、ライトウェイトになった SOAP って、それ XML-RPC じゃダメなの?とか思ってしまいます。XML-RPC と違うのは、より REST アーキテクチャよりになっているということです。XML-RPC では、1つのエンドポイントURI (たとえば http://www.typepad.com/t/api)に対して、XML でエンコードされたメッセージを投げます。
もっともよく使われている XML-RPC の例としては weblogUpdates.ping がありますが、これは
POST http://example.com/rpc Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value><string>blogname</string></value></param> <param><value><string>blogurl</string></value></param></params> </methodCall>
のような HTTP メッセージになっていて、メソッドがPOST であることとエンドポイントURIは固定されています。Atom の場合は、もう少しHTTPを有効に活用するために、
と、より直感的になっています。それ以外にも認証を WSSE (Web Service Security Enforcement) を使用している、とかもありますがここでは省略。
しかし URI で編集対象を表現して、HTTP のメソッドで内容を書き換える、っていうと WebDAV を思い出します。Atom Wiki でも Relationship between Atom and WebDAV としてこの関係が議論されています。WebDAV はバーチャルなファイルシステムに特化しているのに比べ、AtomはAPIなのでより自由度が高い (= 実装側でやるべきことが多いという意味でもある)というところが違いでしょうか。
SOAP よりライトウェイト、XML-RPC より REST 重視、WebDAV よりアプリケーション層の自由度が高い。Atom の特徴を、競合技術と比較するとこう表現することもできるかもしれません。
chaotic intransient prose bursts: ecto for Windows beta updated
Alex writes re the ecto for Windows beta:
Build 0.3.3.1 is now available for download.
Mac 用 Blogging クライアントとしてマニアには話題だった ecto の Win32 版がでたみたいです。ちょっと試しましたが TypePad でやったところとりあえず日本語も問題なく通るようです。Atom API はチェックボックスありますがアクティブにならない、ってことは未サポートですかね。
blog.bulknews.net: バッドノウハウカンファレンス 2004
バッドノウハウカンファレンス2004 を Shibuya.pm 主催で高林さんと開催します。ちょっと広めの部屋を予約したので (40人がとれなかったからですが) ぜひ遊びに来てください。
事前登録を開始しました。当日参加でもOKですが、ぜひ登録してくださいまし。
UPDATE: すでに70名を超える登録があります。部屋の定員が80名なので、これ以上のペースで登録が増えた場合には、当日参加をNGにする可能性があります。行こうかな〜と思っているけどまだ、という人はぜひ事前登録おねがいします。
知り合いにしか教えていなかったのですが、任意の tDiary を RSS 化するCGIを公開しています。
興味ある人のために、ソースも公開。あんまキレイじゃない。
#!/usr/local/bin/perl -w use strict; use Cache::FileCache; use CGI; use Encode::compat; use Encode; use LWP::Simple; use lib "/bulknews/lib"; use RSS::Simple; my $cache = Cache::FileCache->new({ namespace => "tdiary2rss", default_expires_in => 60 * 30, }); my $itempat = <<'PAT'; <div class="section"> <h3><a href="(.*?)"><span class="sanchor">.*?</span> </a> *(?:\[.*?\])?(.*?)</h3>(.*?) </div> PAT ; my $q = CGI->new; $q->charset("UTF-8"); my $url = $ARGV[0] || $q->path_info; $url =~ s!^/!!; my $html; unless ($html = $cache->get($url)) { $html = get($url); $cache->set($url => $html); } $html = decode("euc-jp", $html); my $title = ($html =~ m!<title>(.*?)</title>!i)[0]; my $rss = RSS::Simple->new(); $rss->channel( title => $title, link => $url, ); while ($html =~ s/$itempat//s) { my($link, $title, $body) = ($1, $2, $3, $4, $5, $6); $title =~ s/<.*?>//g; my @date = $link =~ /(\d{4})(\d{2})(\d{2})/; $rss->add_item( dc => { date => "$date[0]-$date[1]-$date[2]T00:00:00+09:00" }, link => $link, title => $title, content => { encoded => $body }, ); } print $q->header('text/xml'), encode("UTF-8", $rss->as_string);
RSS::Simple は適当にでっち上げた、XML::RSS 代替。なんとなく XML::RSS 使いたくなかったので。
「One True Love」に続くテンプロのセカンドシングル!
ストリートから生まれた新たなボーカルグループとして話題を集め、デビューシングル『One True Love』でいきなりTBS金曜ドラマ「奥さまは魔女」のエンディングテーマに抜擢された“テンプロ”のセカンドシングル。今作は、今後のテンプロの方向性を明確にするという位置づけの基、国内の他のボーカルグループとは一線を画した楽曲が出来上がりました。作編曲は、EXILE・BOA・Skoop On Somebodyなどで知られるFace 2 fAKE。
Pooh! のエンディングでかかってたんですけど。
作編曲は Face 2 fAKE。
あ、オリジナルなんだ。。。どこからどう聴いても Backstreet Boys の Shape of my heart にしか聴こえないんだけど。。。
知り合いにしか教えていなかったのですが、任意の tDiary を RSS 化するCGIを公開しています。
http://bulknews.net/syndicate/tdiary2rss.cgi/{tDiaryのURL}
みたいにして使えます。(e.g. Matz にっきのRSS)
教えてないはずなのに Matz にっきは Bloglines で 26 人も Subscriber が。。
グリーの利用者1万突破の記念を含めて、グリーユーザによるオフラインミーティング「Gree Night 1.0」を開催したいと思います。
Gree Night が開催されます。自分も参加予定。
人気サイトの秘密をこっそり、ごっそり共有する会議です。
お金をかけず、発想や感性、個人の能力で、月間何十万、何百万、何千万ページビューの人気サイトを作ることは、どうしたらできるでしょうか?実際にそれを「やってみせた」作者をゲストスピーカーにお呼びしながら、皆で、未来の人気サイトの作り方を考えてみましょう。
おこがましいですがゲストスピーカーで参加します。興味ある方はぜひ。
ITmediaニュース:MySQL、オープンソースクラスタリング技術発表
オープンソースクラスタリング技術「MySQL Cluster」は、プレビュー版がオープンソースGPLライセンスの下、MySQLのサイトで提供されている。製品版は今年7〜9月期に出荷開始の予定。
プレビュー版ダウンロードしようとしたけど見つからないな。。
PRIDE GP の初戦7カードが発表になってました。
(via 紙のプロレス i-mode)
小川直也 - レコ
ヒョードル - コールマン
ノゲイラ - 横井
ニンジャ - ハリトーノフ
シルバ - 戦闘竜
ヒースヒーリング - 高橋義生
小川はてっきりシルバあたりかとおもったけど。。
にしてもシルバ - 戦闘竜は寒いな。ノゲイラ 横井 楽しみ!
We have added two new features, Top Links and Citations. Top Links is a listing of the most popular links from the blogs that we index. The list is generated nightly, and you can view the overall ranking, or you can limit the listing to blogs that you subscribe to. The Top Links listing is a great way to find out what people are talking about today.
Citations is a way to search the Bloglines links database. Enter a partial URL, and it will find all matches for that URL from all the blogs that we index.
Bloglines に機能追加。Popdex 的なリンクランキング。
iPod のリモコンが不調。本体とつなぐ部分の端子がヘタってるせいか、音がガサゴソと切れます。Apple Store で検索してみると5000円もするのカー。まあ他にないからやむなく買いましたが。。
Shibuya Perl Mongers : バッドノウハウカンファレンス 2004
Shibuya Perl Mongers Presents "バッドノウハウカンファレンス 2004" を2004年5月14日に開催します。
バッドノウハウカンファレンス2004 を Shibuya.pm 主催で高林さんと開催します。ちょっと広めの部屋を予約したので (40人がとれなかったからですが) ぜひ遊びに来てください。
今のところ(mysql 4.0.18, 4.1.1)、MySQLのREGEXP関数は日本語を正しく処理できない(一方、LIKEやSUBSTRINGなどは日本語の処理に対応している)。そこで日本語を正しく扱える正規表現関数、mregexpというものをユーザー定義関数(UDF=User Defined Function)という仕組みを用いて作った。
鬼車ベースの MySQL Regexp UDF。 (via MySQL ML)
nikkansports.com > バトルTOP > バトルニュース
小川直也(36=UFO)が12日、PRIDEヘビー級GP(25日開幕)参戦を正式表明した。プロレスイベント「ハッスル」で敵対する高田モンスター軍高田総統の挑発にブチ切れ。プロレスラーの復権とハッスルの認知度アップを目指して、3年半ぶりのPRIDE再上陸を決意した。対戦相手は明日14日にも決定するが、クロコップら最強トリオとの対戦も辞さない覚悟を示した。
小川キター。良成じゃないよ。
ネットランナー今月号でRSS特集が掲載されていました。
「激生情報ぶっこぬき!」ってことで RSS アグリゲータやら Bulkfeeds なんかも紹介されていました。
妙に濃い内容。。。充実しすぎでちょっとヤバかったです。
はてなの引越し模様を azuma hiroki さんの Blog で moblog されてますね〜。家の近くなので遊びに行きたいのですが連絡先がわからない ;-) 今度平日遊びにいきますね>近藤さん
Bloggers meeting in Kyoto にスピーカーとして参加してきました。
前日に朝5時まで飲んでしまい、それから帰宅してパワポ書き。適当に1時間ででっち上げ、30分だけ寝よう。。と横になったら、目覚めて9時。思いっきり指定席とった新幹線に寝過ごしです。。ダッシュで品川からのぞみに乗る。チケットはそのまま使えました。
京都駅で kengo さん、工藤さんらと合流。会場であるデジタルハリウッド京都校へ。1Fがスターバックスカフェでした。会場で翔泳社毛利さん、インプレス安田さんと挨拶。営業おつかれさまです。
going my way の kengo さん。メタBlogサービスや RSS アグリゲータの活用法から FireFox, IRC などの小技など。Tips の方に目が行きがちですがどうやって情報をとりだし、それを配信していくかの参考になった方も多いのではないでしょうか。FeedDemon でRSSを大量に登録して、FeedDemon のウォッチリスト(キーワード検索)で読む、というのはローカルBulkfeeds みたいな感じで面白いなとおもいました。
読兎 の工藤さん。人工無能Blog、面白いですねえ。
3番目に自分。Bulkfeeds の紹介から Similarity Search の活用法、Bulkfeeds API による Hack など。やはり Bulkfeeds みたことはあるけど実際には使いこなしてない、という方がかなり多く、いろいろ終わった後声をかけてもらいました。
最後は COULD のヤスヒサさん。スタイルシートスタイルブックの作者でもある方です。Web デザイナーにとっての Blog ということで、非常に興味深い内容。自分も Web プロデューサー / ディレクター養成講座の講師などたまにやっていますが、考え方はかぶる内容もあったりして、参考になりました。ヤスヒサさん自身はデザイナであるのに PHP を使って自分で Blog ツールをつくってみたりして、SEO などにも造詣が深く、一緒に仕事してみたい感をかもしてましたよ。
というわけで、楽しい会でした。明日原稿がんばりたいので日帰りで帰ってきました。朝まで飲む組はまだやってるんですかね〜。
2004/04/21 追記: 適当にでっちあげたスライド をアップしておきました。
コメントSPAM対策その3として、mt-comments.cgi をリネームしてみた。
たいがいのfloodスクリプトは、mt-comments.cgi を決めうちしてるとおもうので。
やり方はカンタン。mt.cfg を開いて、CommentScript ってのを探して、コメントスクリプト名を変更します。ここでは mt-com.cgi にしましょう。
CommentScript mt-com.cgiとかします。
そんで mt-comments.cgi ファイルを mt-com.cgi にリネームして サイトをリビルド。これでおわり。
昨季王者のACミラン大敗 サッカー・欧州CL - asahi.com : スポーツ
サッカーの欧州チャンピオンズリーグは7日、準々決勝第2戦の残り2試合があり、昨季優勝のACミラン(イタリア)が、アウエーでデポルティボ・ラコルニャ(スペイン)に0―4と大敗した。ミランは第1戦を4―1で勝ったが、2戦合計4―5となり、4強入りを逃した。デポルティボは初の準決勝進出で、3点差をひっくり返して勝ち進んだのは史上初。
うへー。。まじでポルト-モナコとかなったらどうしよう。UEFAカップかよ。
アーセナル、ロンドンダービーで負けてしまいましたね ...
今シーズンはトリプルも夢じゃないかと思ったのに、FA カップでユナイテッド、CL でチェルシーに負けちゃって。あとはリーグだけですか。今日の試合は同点のレーマンのしょぼいパンチングがなあ。。
レアルも負け。1st Reg のモリエンテス2点目が痛かったですね。
これで決勝 リヨン - モナコとかなったらどうすんだろ。フランスリーグ最強!とかなるんか。
24 TWENTY FOUR でジャックバウアーが "Hey it's me" を多用するので、英語でも「オレオレ詐欺」ってのはありなのかな、Hey it's me 詐欺とかいうのかな、とか思って調べてみると、
おれおれ詐欺をネットの英辞郎で調べたがヒットしなかった。それでちょっと時事英語関係のサイトを当たったら、それ専門の「時事英語辞典」があった。結構最新語が載っている。そこで「詐欺」で検索したら、おれおれ詐欺は、"it's
me" fraudと出てきた。
だそうで、やはり英語圏でも同じようなのはあるんですねー。
内村プロデューススペシャルを某氏のためにDVDに焼こうとおもって、ドンキホーテで DVD-RW 1.1 2倍速を購入してみる。
帰ってマニュアルを見てみると、東芝RD-Xシリーズでは、
DVD-RAM: コピーワンスは「移動」可能
DVD-R/DVD-RW: コピーワンスの録画、コピーとも不可
らしい。そのかわりDVD-RAM だと再生できる機械が限られるのかな。PS-Xとかで見る人には DVD-R 系なんですかね。
んで、本題の内村プロデュース、地上デジタルで録画したら、見事にコピーワンスかかってた。というか地上デジタルってどの番組でもコピーワンスなんですかね。。
最近メッセやIRC とかで、「コメントSPAM対策はいいとして、TypeKey を導入しないとコメントできないってのは敷居高すぎでは?」とかいう声をよく聞きます。ちょっと誤解をまねいているところもあるようなので、私が FAQ を読んだり、シックスアパートの会見を読んで知る範囲で補足してみます。
TypeKey は MSN の .NET Passport のようなもので、ユーザを認証するだけのために利用されます。ここでいう認証は、Authentication の方で、Authorization ではありません。
ユーザは TypeKey に1度だけ登録すると、そのキーをつかって、TypeKey を導入したMT(あるいはTypeKey に対応した他のBlogシステム)サイトに、自分がたしかにそのユーザであることを通知できます。
TypeKey がやることは、それだけです。
その人がそのBlogでコメント許可されているかどうかは、Blog ごとの設定になります。これはおそらくMT側でハンドルされるのでしょう。MT3.0 のコメンター管理画面 ってのがそれでしょうね。
そして、MT3.0 になったら TypeKey がないとコメントできないのか、というとそうではありません。
With Movable Type 3.0 you have options. You can:Only accept TypeKey-authenticated comments where the commenter sends an email address
Only accept TypeKey-authenticated comments
Accept TypeKey-authenticated and moderated comments
Accept TypeKey-authenticated and regular comments
Accept moderated comments
Accept unmoderated comments
Accept anonymous comments
1. TypeKey で認証されたEmailアドレスつきコメントだけを許可
2. TypeKey で認証されたコメントだけを許可
3. TypeKey で認証されたコメントを許可、それ以外はモデレーション
4. TypeKey で認証されたコメントを許可、それ以外の通常コメントも許可
5. すべてのコメントをモデレーション
6. すべての通常コメントを許可
7. 匿名コメントを許可
というレベルわけがBlogごとに設定できるようです。
モデレートというのは、投稿されたコメントはいきなり Blog に表示はされないでいったんペンディング状態になり、管理画面から「許可/拒否」を選択することではじめてBlogに表示される、という機能ですね。これと TypeKey によるユーザ認証を組み合わせれば、その人のコメントは、以降すべて許可する、ということができるようになります。(これがないと、Email アドレス詐称の可能性があるので、毎回モデレートしなければいけなくなる) これを行う画面も 記者会見で発表されています。
つまり、MT 3.0 ではユーザごとにコメントを許可するかどうかを Blog で設定できる。ただしユーザを詐称されるおそれがあるので、それを助ける認証システムとして TypeKey を提供する。MT 以外でも使いたければ使ってね。というのが Six Apart の方針だと理解しています。これは共感できます。
以下技術的に考察すると、.NET Passport のように、他のシングルサインインサービスをMTから使用するという手段もありそうなのですが、その場合、
ユーザが submit → MT 側で .NET Passport の ID/PW をとる → .NET Passport で勝手に認証
という順番になってしまい、悪意のあるサイトでは .NET Passport のサインイン情報が盗まれてしまいます。(.NET Passport SDK を使ってサイト構築すれば、その問題はなくなりますが、そもそも .NET Passport の利用契約が必要だし、導入も簡単ではないでしょう)
TypeKey ではおそらく、
ユーザが submit → TypeKey へとんで認証 → 認証した結果を MT にリダイレクト
みたいになっているのではないかなー。
TypeKey 対応したコメント投稿画面 を見ると、やはりそのようになっていますね。気になるのは "You are not signed in" の部分ですか。どうやって TypeKey にサインインしてるかを各Blogサイトで把握するんでしょうね。TypeKey の Cookie をBlogサイトにとばすわけにはいかないでしょうし。
TypeKey 動作概念図 を見ると、やはり1回 TypeKey で認証してから、戻ってきたときのパラメータを MT 側でハンドルするみたいだけど、そうすると各サイトごとの2度目以降はどうやって認証するかが気になりますね。各サイトごとに固有になるような TypeKey 用 Cookie をはくのかなあ。
というわけで、平田さん、僕にもテスト版くださいよ、というお願いでした。
search.cpan.org: Timothy Appnel / XML-RAI-0.2
XML::RAI RSS Abstraction Interface. An object-oriented layer that maps overlapping and alternate tags in RSS to one common simplified interface.
RAI = RSS Abstraction Interface だそうで。XML::RSS はいろんなバージョンのRSSをパースできますが、dc:date と pubDate とかの違いだとかはやっぱりマニュアルでやる必要があり、その差異を吸収してさらに統一的なインタフェースをもう1枚かませるモジュール(だと思う)ですね。
Timothy 氏は Net::Trackback の作者でもあります。
前からデジカメがほしいなと思いつつ買ってはいなかったのですが、ふらっと Canon IXY Digital L プラチナシルバー を買ってみました。
ソニーの Cybershot U4, T1 とかと悩んだんですが U4 より画素数とか性能もよく、T1 より軽い、あとSDカードなので東芝のノートPCでそのまま読める(まあUSBでマウントできるんでこれはいらないですが)ということでコレに決めました。まだ使い込んでないので感想とかはまた。
そうするとフォトアルバムのASPとか使いたくなるなあ。登録して使ってない TypePad の機能をつかってみるか。
After my endless testing and bugswatting, XML::RSS::TimingBot is basically useable now. It's an LWP::UserAgent subclass that stops you from requesting RSS feeds more often than they say they'll update. I.e., when you request a feed, the module transparently looks for itselements and the like, and the next time you request it, if the previously-read information says that the feed won't updated by now, the module won't actually perform the request, but will generate a virtual response that looks like the server said "304 Not Modified" with no content. It also keeps track of last-modified times on RSS responses and inserts "If-Modified-Since" headers on subsequent outgoing responses. It's all very behind-the-scenes and transparent.
RSS フィードの syndication モジュールとかをつかってリクエスト周期を変更するモジュールかな? もうすぐCPAN にリリースされるとか。楽しみです。
ふと access_log をみていたら Googlebot/Test という User-Agent を発見。
64.68.83.191 - - [07/Apr/2004:07:21:31 +0900] "GET /app/similar.js?url=http%3A%2F%2Fantipop.zapto.org%2F%3Fid%3D998&n=100&style=mt-comments&oe=euc-jp& HTTP/1.1" 200 2822 "-" "Googlebot/Test"
こんな感じでやってきます。javascript include を読みにきているようですねえ。昔のログをあさってみると、3/5 ごろから実験をはじめたのかな? javascript を使用してムダな広告やナビゲーションをコンテンツから除去して SEO、という手法が通用しなくなるのかもしれない。
ノートパソコンのCtrlキーが死にました。
正確に言うと、中のゴムとかが弱っていてレスポンスが非常に悪い。
他のキーから移植してもあまりよくならないのである。
Emacs キーバインド人間にはつらい。。
コメントSPAMがかなりひどくIPベース制限では効かなくなってきたので、URLベースではじくように改良。
一部の方に好評なようなのでさらに Hack。blacklist ファイルを Comment 通知メールから更新できるようにしてみます。
以下のような mt-blacklist-append.cgi ファイルを mt.cgi とおなじとこにおきます。$blacklist
は blacklist ファイルの絶対パス、$password
は適当に決めてください。
#!/usr/local/bin/perl -w use strict; use CGI; use FileHandle; my $blacklist = "/path/to/blacklist"; my $password = "blahblah"; do_task(CGI->new); sub do_task { my $q = shift; $q->param('password') eq $password or return show_error($q, "Password mismatch"); my $out = FileHandle->new(">>$blacklist") or return show_erorr($q, "$blacklist: $!"); $out->print($q->param('url'), "\n"); $out->close; print $q->header, "Blacklist appended successfully."; } sub show_error { my($q, $msg) = @_; print $q->header, "Error: $msg"; }
このファイルに url ってパラメータをつけることで blacklist ファイルへの追記をおこないます。次に MT/App/Comments.pm の 120行目ぐらい。MT::Mail でメールをおくってるところのメール本文をこういう風に書き換えます。
MT::Mail->send(\%head, <<BODY); A new comment has been posted on your blog @{[ $blog->name ]}, on entry #@{[ $entry->id ]} (@{[ $entry->title ]}). $link_url IP Address: @{[ $comment->ip ]} Name: @{[ $comment->author ]} Email Address: @{[ $comment->email ]} URL: @{[ $comment->url ]} Comments: @{[ $comment->text ]} Blacklist this URL? @{[ $app->base . $app->path . "mt-blacklist-append.cgi?password=blahblah&url=" . MT::Util::encode_url($comment->url) ]} BODY
password のとこは、さっき mt-blacklist-append.cgi に指定したやつをいれときます。
これで、Comment 通知のときに来るメールに、
Blacklist this URL?
http://blog.bulknews.net/mt/mt-blacklist-append.cgi?password=blahblah&url=http://.......
ってな具合のリンクがつくので、SPAM くらったらこれをワンクリックで、blacklist ファイルが更新できます。blacklist ファイルの permission は 666 あたりにしておく必要があります。
こういう Hack をしてると、MT をアップグレードするのがめんどくさくなるので、素人にはオススメできない。
たまたま Bulkfeeds のログを眺めたら気づいたんですが、goo Blog が FOAF に対応していたみたい。FOAF Auto-Discovery もはいっていますね。
プロフィールを設定するとできるのかな。
notes not Notes: Movable Type(MT)3.0 発表記者会見
Movable Type(MT)3.0 発表記者会見
4月6日(火)シックス・アパート : ウェブログ・ソフトウェア「Movable Type 3.0」発表
あ、今日なの?今日なの?
よかったー間に合って。(ってことは明日からガリっと書かないといけないんですけど、ね)
UPDATE: Ben と Mena が来日中だそうで、やっぱそうなんすね。
AWS のRESTインタフェースで返ってくる ImageUrlSmall とか ImageUrlMedium のURLは、輸入盤の場合は 09 を 01 に置換しないとダメみたい。で、これを判断するために 「PATH_INFO の URL を受け取って、Content-Length: 807 のときはURLを置換したものをリクエストして返す mod_perl 用のプロキシハンドラ」というバッドノウハウの極みなものを書いてたんだけど、javascript を使ったもっとスマートな方法が hail2u に書いてありました。
hail2u.net - Weblog - Amazonの画像置換
AWSで返された画像のURLとかAmazonのASINコードから09で類推した画像が、1*1の黒いGIF画像だった場合に、01で類推できるURL無理やり置換してみる実験。
しかし、img タグに width とか height とかつけてるとそっちに引きずられて、このコードが動かなくなってしまうな。 if (this.width==this.height) だとうまくいく。でもこれだと正しい画像も表示できなくなるかも。
というわけでやはりプロキシなハンドラを使うことにした。一応mod_proxy 経由でキャッシュもみこめるし。
ちなみにコードはこんな感じであります。
package Bormius::AmazonImage; # <Location /awsimg> # SetHandler perl-script # PerlHandler Bormius::AmazonImage # </Location> # see http://hail2u.net/blog/coding/air.html use strict; use Apache::Constants; use HTTP::Request::Common; use constant BLANK_IMAGE_LENGTH => 807; sub make_request { my($r, $uri) = @_; my $request = GET $uri; return LWP::UserAgent->new->simple_request($request); } sub handler { my $r = shift; my $uri = $r->path_info(); $uri =~ s!^/!!; my $res = make_request($r, $uri); # if it's a Blank Image, try 09 => 01 if ($res->header('Content-Length') == BLANK_IMAGE_LENGTH) { $uri =~ s/\.09\./.01./; $res = make_request($r, $uri); } $r->content_type($res->header('Content-type')); $r->status($res->code); $r->status_line($res->status_line); my $table = $r->headers_out; $res->scan(sub { $table->add(@_); }); $r->send_http_header(); $r->print($res->content); return OK; } 1;
Bulkfeeds では、Google AdSense の代替広告を AWS で表示していますが、狭いボックスに文字数短く5個並べていて、あまりクリックレートも購入率も高くなかったので、AdSense と同じような見た目になるようにHTMLをカスタマイズしてみました。
売り上げランキングでソートしてシャッフル、2個を取り出して、CustomerReview の1個目の先頭40文字をくっつけています。
search.cpan.org: Grant McLean / XML-Simple-2.12
XML::Simple Easy API to maintain XML (esp config files)
Blog Hacker 御用達 XML::Simple がバージョンアップしてました。
2.12 Apr 05 2004 - added NumericEscape option - added ValueAttr option (patch from Anton Berezin) - suppress 'wide character in print' warning (reported by Dawei Lin)
ValueAttr オプションはベンリかもしれない。
コメントSPAMがかなりひどくIPベース制限では効かなくなってきたので、URLベースではじくように改良。
MT/App/Comments.pm の 64行目あたり(MT 2.5系(古)での話なので、2.66系では多分違います。MT::IPBanList でごにょごにょやってるとこあたり)に、以下を追加
use FileHandle; my %banned_url; my $blacklist = "/path/to/blacklist"; # 適当に my $fh = FileHandle->new($blacklist) or die "$blacklist: $!"; while (<$fh>) { chomp; $banned_url{$_} = 1; } if ($banned_url{$q->param('url')}) { return $app->handle_error('Banned'); }
メンテナンスは、Ban したいURL を、$blacklist
ファイルに追加していくだけでOK。パスは適当に変えてください。
gnews2rss が規約に違反しているのは google Hacks にも出ていますが、それはいいとして
ITmediaニュース:Google Newsの「RSSフィードお断り」にプログラマーが不満
IBM、Google、多数のブログツールベンダーの開発者がAtomシンジケートフォーマットを開発したことは、ソフト開発者の間で厳しく批判されている。Googleは傘下のBloggerサービスで、RSSを捨ててAtomを支持しているが、批判的な向きは、競合するフォーマットが提供されていることで、RSSのメインストリームへの採用が脅かされていると主張している。
Google と RSS ってネタになると、いっつも ITMedia (原文は internetnews.com か)はこういう煽りですな。あんま関係ないとおもうんだけど。
機能拡張したウェブ版をリリースしました。変更点は以下。
・キーワードの設定時にBulkfeedsとの連携を可能に
・OPMLからニュースサイトを登録
・並び替えのデフォルトを設定可能に
・ピックアップの表示方法を微調整
・ニュースサイトのランキング詳細を表示
・検索機能がやや賢く
・古い記事は灰色、ないしは非表示設定可能に
・その他内部のリファクタリング
ReadOne で Bulkfeeds のキーワード連携をサポートしたそうです。
Blog の次はソーシャルネットワーキングだ! ということで、BulkDegreesというサービスを始めてみました。例によってインビテーションオンリーです。
GREE のシステムをライセンス購入して、Bulknews の RSS や Bulkfeeds の Blog 検索とインテグレーションしました。
UPDATE: これはエイプリルフールのネタです。