monoの開発ブログ

プログラム開発の記録

Archive for the ‘Web’ tag

ニコニコ大百科「面白げなページ・動画」のRSSを作ってみた

without comments

ニコニコ大百科の右サイドバーにある「面白げなページ・動画」をご存じでしょうか?
個人的には比較的面白い確率が高いので気に入っています。

実はここに載っている動画はフロッグ!というサービスでピックアップされているものと同一であり、フロッグ!のサイトにあるRSSを購読すればひとまず同じ情報を手に入れることが可能です。
しかし、このRSSに含まれているリンクはフロッグ!上のクッションページを挟んでおり、直接動画が再生できないため微妙に不便です。
そこで、クッションページを経由せず、直接動画を開くことができるフィードを作ってみました。

Pipes: 面白げなページ・動画

生成にはYahoo! Pipesを使い、ニコニコ大百科のHTMLをスクレイピングして実現しています。
また、これは想定外だったのですが、HTMLをそのまま持ってきたことで動画のサムネイルを見ることができるというメリットもあります。

Written by mono

1月 16th, 2010 at 9:45 pm

Posted in Web

Tagged with , ,

Perfume HeadlineをWordPressに移行

without comments

Perfume HeadlineをWordPressに移行させました。
これまでのRamaze+Sequelで作ったCGIと比較して、高い安定性、高速な表示、以前よりきれいなケータイ対応、iPhone対応、PubSubHubbub対応(これはうまく動かないのでまだ見送っています)などの利点があります。

実装方法は、クローラで収集した記事をXML-RPCで投稿しているだけのシンプルなものです。
datファイルの閲覧などは、これまでどおりRamaze+SequelのCGIになっています。

Written by mono

8月 27th, 2009 at 3:03 pm

Ramazeでセッション情報を生成しない方法

without comments

今日ふとPerfume Headlineのキャッシュディレクトリを開いてみると、セッション情報であふれていました。
そもそもPerfume Headlineにはセッションを必要とするような機能を何も実装していないので、削除したついでにセッション情報を生成しないようにしてみました。

というわけで、以下にその方法をメモしておきます。
記述する場所はstart.rbとかでいいんじゃないでしょうか。

Ramaze::Global.sessions = false
Ramaze::Global.no_cache_flash = false

なお、この方法はRamaze-2009.03で動作することを確認しています。
2009.04以降ではRamaze::Globalが廃止されたらしいのでたぶん動作しないと思います。

Written by mono

5月 28th, 2009 at 7:46 pm

Posted in Ramaze, Ruby

Tagged with , ,

Ramazeでレンダリング結果をファイルにキャッシュする正しい方法

without comments

たまたまRamazeをインストールしたディレクトリを見ていたところ、ramaze/cache/file.rbなるファイルが。
というわけでstart.rbあたりに以下のような記述をするとキャッシュがファイルに生成されるようになり、CGIでもキャッシュを活用できるようになります。
前回書いたコードは忘れてください。

Ramaze::Global::cache = Ramaze::FileCache

あとはメモリキャッシュを用いる場合と同様にコントローラを記述すれば細かな制御が行えます。
とっても簡単できれいですね。
この方法だとCGI起動、ライブラリ読み込みのオーバーヘッドは発生してしまいますが、何もしないときよりは高速ですのでまあ十分かと思います。

ただし、Ramazeは「:(コロン)」を含んだファイル名でキャッシュを生成しようとするので、Windows環境だとローカルでのデバッグ時にエラーが発生します。
そのへんは各自対処してください。

Written by mono

5月 2nd, 2009 at 8:31 pm

Posted in Ramaze, Ruby

Tagged with , ,

Ramazeでレンダリング結果をファイルにキャッシュする

with 3 comments

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です。

Written by mono

4月 19th, 2009 at 7:02 pm

Posted in Ramaze, Ruby

Tagged with , ,

Perfume Headline Archiveを公開

without comments

Perfume Headlineの過去のデータを閲覧できるPerfume Headline Archiveを公開しました。

Perfume Headline Archive

今までのデータは保存していなかったのでまだデータ数が少ないのですが、時間があるときに過去ログを解析する予定です。

Written by mono

2月 22nd, 2009 at 12:58 am

Posted in Perfume, Ruby

Tagged with , , , ,

Perfume Headlineを再開

with 2 comments

チケット当選のうれしさから久しぶりに2chのPerfumeスレをのぞいたところ、
同じ方かどうかは分かりませんが、「今日のまとめ、明日の予定」という投稿が毎日行われているようです。

投稿者の方に感謝しつつ、早速Perfume Headlineの対応作業を行いました。また以前と同じようにご利用いただければと思います。

Perfume Headline

なお、以前のまとめと予定氏はトリップをつけてくださったため、正確に書き込みを抽出することができましたが、今回は本文やレスの内容からまとめかどうかを判断して掲載しているため、掲載漏れや関係ない記事が掲載される可能性があります。あらかじめご了承ください。といっても、公開直後ほど簡単に荒らされることはないと思いますが。

Written by mono

2月 14th, 2009 at 9:24 pm

Posted in Perfume, Ruby

Tagged with , , ,

ニコニコ動画(秋)をすっきりさせるユーザースタイルシート

without comments

とりあえず再生画面だけで、ページ右側の広告はそのままです。また、確認は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;
}

Written by mono

10月 3rd, 2008 at 8:20 pm

Posted in 未分類

Tagged with , ,

サーチエンジンライブラリを公開

without comments

先日サーチエンジンライブラリを公開しました。

正直サーチエンジン#はツールとしてかなりいい感じにできていると思っている(というより思っていないとこんなことやってられない)のですが、以前からユーザーによるサーチエンジンの登録が面倒かつ難しいこと、具体的に気になっているのはデータのフォーマットと登録方法あたりがかなり気になっていました。分かりにくく自由度も低いフォーマットで作られたデータを、2chのスレからコピペするという操作をユーザーに強いるというのは、いくら何でもひどすぎですよね。

そんなわけで今回のサーチエンジンライブラリはとりあえず後者に対応してみました、という感じです。前者はそのうちOpenSearchなんかに対応できればと考えていますが、普及具合を考えると微妙な気もします。何かいい案があればよろしくお願いします。

Written by mono

9月 15th, 2008 at 2:38 am

Perfume Headlineほか

with 2 comments

2chのPerfumeスレからまとめと予定氏の書き込みを抽出してAtomフィード化するPerfume Headlineを作りました。

http://mwks.biz/perfume/headline/

すばらしいまとめをほぼ毎日のように投稿してくださるまとめと予定氏に感謝します。

他にも公式サイトのブログをAtomフィード化(FC会員限定なのでタイトルだけですが)してみたり。こっちはまだ紹介ページを用意していないのでAtomフィードに直リンです。

ログインしていない状態だと何も表示されませんが、ページ左上からログインすればちゃんと表示されます。

クローラの実装に使用した言語はRubyで、やってることはdat or htmlをスクレイピング(htmlはHpricotを利用)してRSS::Makerに投げてるだけです。

Written by mono

9月 3rd, 2008 at 9:00 am

Posted in Perfume, Ruby

Tagged with , , ,