Archive for the ‘Web’ tag
ニコニコ大百科「面白げなページ・動画」のRSSを作ってみた
ニコニコ大百科の右サイドバーにある「面白げなページ・動画」をご存じでしょうか?
個人的には比較的面白い確率が高いので気に入っています。
実はここに載っている動画はフロッグ!というサービスでピックアップされているものと同一であり、フロッグ!のサイトにあるRSSを購読すればひとまず同じ情報を手に入れることが可能です。
しかし、このRSSに含まれているリンクはフロッグ!上のクッションページを挟んでおり、直接動画が再生できないため微妙に不便です。
そこで、クッションページを経由せず、直接動画を開くことができるフィードを作ってみました。
生成にはYahoo! Pipesを使い、ニコニコ大百科のHTMLをスクレイピングして実現しています。
また、これは想定外だったのですが、HTMLをそのまま持ってきたことで動画のサムネイルを見ることができるというメリットもあります。
Perfume HeadlineをWordPressに移行
Perfume HeadlineをWordPressに移行させました。
これまでのRamaze+Sequelで作ったCGIと比較して、高い安定性、高速な表示、以前よりきれいなケータイ対応、iPhone対応、PubSubHubbub対応(これはうまく動かないのでまだ見送っています)などの利点があります。
実装方法は、クローラで収集した記事をXML-RPCで投稿しているだけのシンプルなものです。
datファイルの閲覧などは、これまでどおりRamaze+SequelのCGIになっています。
Ramazeでセッション情報を生成しない方法
今日ふとPerfume Headlineのキャッシュディレクトリを開いてみると、セッション情報であふれていました。
そもそもPerfume Headlineにはセッションを必要とするような機能を何も実装していないので、削除したついでにセッション情報を生成しないようにしてみました。
というわけで、以下にその方法をメモしておきます。
記述する場所はstart.rbとかでいいんじゃないでしょうか。
Ramaze::Global.no_cache_flash = false
なお、この方法はRamaze-2009.03で動作することを確認しています。
2009.04以降ではRamaze::Globalが廃止されたらしいのでたぶん動作しないと思います。
Ramazeでレンダリング結果をファイルにキャッシュする正しい方法
たまたまRamazeをインストールしたディレクトリを見ていたところ、ramaze/cache/file.rbなるファイルが。
というわけでstart.rbあたりに以下のような記述をするとキャッシュがファイルに生成されるようになり、CGIでもキャッシュを活用できるようになります。
前回書いたコードは忘れてください。
Ramaze::Global::cache = Ramaze::FileCache
あとはメモリキャッシュを用いる場合と同様にコントローラを記述すれば細かな制御が行えます。
とっても簡単できれいですね。
この方法だとCGI起動、ライブラリ読み込みのオーバーヘッドは発生してしまいますが、何もしないときよりは高速ですのでまあ十分かと思います。
ただし、Ramazeは「:(コロン)」を含んだファイル名でキャッシュを生成しようとするので、Windows環境だとローカルでのデバッグ時にエラーが発生します。
そのへんは各自対処してください。
Ramazeでレンダリング結果をファイルにキャッシュする
「mod_rewriteを使ってCGI環境で超高速にキャッシュを返す」という記事を読んで、Ramazeで同じことをやろうとしたら結構困ったのでメモしておきます。
ちなみに、Ramazeに標準で用意されているキャッシュはメモリ上にキャッシュするものなので、CGIでは使えません。
キャッシュを生成するためにはレンダリング結果のHTMLが必要なわけですが、Ramazeにはレンダリング結果を読んだり書いたりする方法は(たぶん)用意されていません。
そのため、Ramaze内部のレンダリングを行っているメソッドを上書きして強引にデータを読み取ります。
module Ramaze
class Action
unless method_defined?(:static_html_original_render)
alias_method :static_html_original_render, :render
end
def render
# オリジナルのレンダリング処理を呼び出す
content = static_html_original_render
# ここで適当に content の内容を保存
# full_pathでリクエストのパスがとれるのでこれを使うとよいです
# オリジナルと同じ値を返す
content
end
end
end
あとは冒頭で挙げた記事にあるように、.htaccessで制御、cronで古いキャッシュの削除を行えばOKです。
Perfume Headline Archiveを公開
Perfume Headlineの過去のデータを閲覧できるPerfume Headline Archiveを公開しました。
今までのデータは保存していなかったのでまだデータ数が少ないのですが、時間があるときに過去ログを解析する予定です。
Perfume Headlineを再開
チケット当選のうれしさから久しぶりに2chのPerfumeスレをのぞいたところ、
同じ方かどうかは分かりませんが、「今日のまとめ、明日の予定」という投稿が毎日行われているようです。
投稿者の方に感謝しつつ、早速Perfume Headlineの対応作業を行いました。また以前と同じようにご利用いただければと思います。
なお、以前のまとめと予定氏はトリップをつけてくださったため、正確に書き込みを抽出することができましたが、今回は本文やレスの内容からまとめかどうかを判断して掲載しているため、掲載漏れや関係ない記事が掲載される可能性があります。あらかじめご了承ください。といっても、公開直後ほど簡単に荒らされることはないと思いますが。
ニコニコ動画(秋)をすっきりさせるユーザースタイルシート
とりあえず再生画面だけで、ページ右側の広告はそのままです。また、確認はOpera 9.6 beta1でしかしていないので、ほかの環境でどうなるのかは知りません。
div#PAGEHEADER > table[width="960"],
div#WATCHHEADER > div[style="padding:4px;"],
div#web_pc_top,
table#subinfo,
div#PAGEFOOTER,
div#WATCHFOOTER > p.TXT12,
div#WATCHFOOTER > div.mb16p4
{
display: none;
}
サーチエンジンライブラリを公開
先日サーチエンジンライブラリを公開しました。
正直サーチエンジン#はツールとしてかなりいい感じにできていると思っている(というより思っていないとこんなことやってられない)のですが、以前からユーザーによるサーチエンジンの登録が面倒かつ難しいこと、具体的に気になっているのはデータのフォーマットと登録方法あたりがかなり気になっていました。分かりにくく自由度も低いフォーマットで作られたデータを、2chのスレからコピペするという操作をユーザーに強いるというのは、いくら何でもひどすぎですよね。
そんなわけで今回のサーチエンジンライブラリはとりあえず後者に対応してみました、という感じです。前者はそのうちOpenSearchなんかに対応できればと考えていますが、普及具合を考えると微妙な気もします。何かいい案があればよろしくお願いします。
Perfume Headlineほか
2chのPerfumeスレからまとめと予定氏の書き込みを抽出してAtomフィード化するPerfume Headlineを作りました。
http://mwks.biz/perfume/headline/
すばらしいまとめをほぼ毎日のように投稿してくださるまとめと予定氏に感謝します。
他にも公式サイトのブログをAtomフィード化(FC会員限定なのでタイトルだけですが)してみたり。こっちはまだ紹介ページを用意していないのでAtomフィードに直リンです。
- http://mwks.biz/perfume/blog/staff/atom
- http://mwks.biz/perfume/blog/a-chan/atom
- http://mwks.biz/perfume/blog/kashiyuka/atom
- http://mwks.biz/perfume/blog/nocchi/atom
ログインしていない状態だと何も表示されませんが、ページ左上からログインすればちゃんと表示されます。
クローラの実装に使用した言語はRubyで、やってることはdat or htmlをスクレイピング(htmlはHpricotを利用)してRSS::Makerに投げてるだけです。