タグクラウド

2008年05月29日

svndumpfilterで「単に番号が飛ばないようにするための空のリビジョンです」を出させない

svndumpfilterをincludeやexcludeオプションと一緒に使って特定のリビジョンのみを抽出した場合、抽出されなかったレビジョンはコミットログが「単に番号が飛ばないようにするための空のリビジョンです。」という内容の空のレビジョンで置き換えられます。

空のリビジョンを出力したくない場合は--drop-empty-revsオプションをつけます。このままでは番号が飛び飛びになるので、--renumber-revsも同時につけて、番号をつめます。

svnadmin dump /var/svn/repos | svndumpfilter include --drop-empty-revs --renumber-revs /foo

svnadmin dumpした内容を新しい空のリポジトリにloadする場合のように以前のリビジョン番号を保存したい場合は有用ですが、通常は単に目障りなだけです。特に理由が無ければ--drop-empty-revs --renumber-revsを常に指定しておけばよいでしょう。


●関連ページ
Subversionのリポジトリの内容を別リポジトリに移動する。
タグ:SVN
posted by maeda at 23:36| 島根 ☁| Comment(1) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

Googleのサイト内検索を使うのなら「Googleカスタム検索」

Googleの検索フォームをwebサイトに埋め込んでサイト内検索に利用することができますが、古くからある「 Google フリー検索 (カスタマイズ版)」ではなく「Google カスタム検索」を利用すると、検索結果のデザインをwebサイトにあわせることができます。

例: Redmine.JPのサイト内検索結果

google_custom_search.png

■注目ポイント
デザインを検索フォーム設置先のサイトに会わせることができるので、利用者に違和感を感じさせません。

  • ブラウザのタイトルバーの文字列が「Redmine.JP サイト内検索」になっています。
  • ページヘッダはサイト全体で共通で使用しているものと同じものです。
  • URLが「http://redmine.jp/」で始まっています。Googleのものではありません。
タグ:google Web制作
posted by maeda at 07:24| 島根 ☔| Comment(0) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

2008年05月28日

Amazon EC2のすごい点

Amazon EC2は、Xenによる仮想サーバ環境を提供するwebサービスです。思い立ったらすぐに、インターネットにつながったそこそこの性能のサーバを低コストで調達ができます。他のレンタルサーバサービスと比べるといくつか目立った特長をもっています。世の中を変える画期的なサービスといってもよいでしょう。

もし私が今日からネット上のサービスを提供する事業を始めるのなら、迷わずEC2を使うと思います。


1. 高性能
もっとも低スペックな"Small Instance"でもメモリ1.7GB、ディスク160GBが利用可能。

2. 低価格
"Small Instance"で1時間10セントから。1ヶ月動かしても72ドル。
別途データ転送料金が必要ですが、サーバへのアップロードで$0.100、サーバからのダウンロードが$0.170。100GBダウンロードしても17ドルなので、一般的なサイトであればそれほどびっくりするような金額にはなりません。

3. 一時間ごとの課金
課金はインスタンスが起動している間のみ、1時間を単位として行われます。朝から夕方までの間だけ検証サーバが欲しいといった場合は1ドル程度で使えます。初期費用や基本料金も無いので、全く使わなければ請求金額は0です。

4. すぐに使える、すぐにやめれる
ブートするイメージを選んでインスタンスを起動すれば、数分内に利用できるようになります。OSをシャットダウンさせればインスタンスも終了します(再起動ではインスタンス終了とはならない)。

5. ディストリビューションを選べる
CentOS、Fedora Core、Debian、Ubuntu、OpenSolarisなど、あらかじめ用意された様々なディストリビューションが利用できます。

6. 構成を柔軟に変更可能
一つのアカウントで最大20のインスタンスが起動できます。トラフィックが急増した場合にアプリケーションサーバの追加するといった対応も迅速に行えます。
タグ:ec2
posted by maeda at 01:09| 島根 | Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月25日

Amazon EC2で素のCentOS 5を動かす手順

Amazon EC2でCentOS 5のサーバを動かすまでの作業手順です。

■要約
・Rightscaleが公開しているAMIを使用する。
・以下のコマンドを使う。

ec2-describe-images -x all --- 公開イメージの一覧を表示
ec2-add-keypair 鍵名 --- 鍵ファイル作成
ec2-describe-images --- インスタンスの状態を確認
ec2-run-instances イメージ番号 -k 鍵名 --- インスタンス起動
ec2-terminate-instances インスタンス番号 --- インスタンス終了

■前提条件
・AWSのアカウント作成が完了している。
・Amazon EC2 Command-Line Toolsの導入が完了している(ec2verコマンドが動く状態)。
・Access Key ID、Secret Access Keyの取得が完了している。
・X.509証明書(certificateおよびprivate key)の取得が完了している。

■CentOS 5のイメージファイルを探す
 RightScaleが公開しているCentOS 5 base imageを使用します。必要最小限のパッケージのみインストールされているので、検証環境が必要な場合や自分で自由に環境を構築したい場合に最適です。

$ ec2-describe-images -x all | grep rightscale | less


 5月24日現在の最新のCentOS 5のイメージは、rightscale_images/CentOS5_0V2_0_1.img.manifest.xml です。ec2-describe-imagesの実行結果から次のような行を探して確認します。

IMAGE ami-5c08ed35 rightscale_images/CentOS5_0V2_0_1.img.manifest.xml 411009282317 available public i386 machine


■ssh用の鍵ファイルを作成
 ec2上のサーバにsshで接続するための鍵ファイルを作成します。鍵の名称は、ec2で動かすサーバのホスト名など、わかりやすい名前をつけます。

$ ec2-add-keypair servername | sed -e "1d" > id_servername
$ chmod 400 id_servername


・sed -e "1d"は、先頭の1行を削除します。
・chmodによるパーミッションは必ず行ってください。644など誰でも読み取りできる設定だとサーバ側のsshdでログインを拒絶されます。

■インスタンス起動
 ec2-describe-imagesで確認したイメージ番号と、ecs-ad-keypairで指定した鍵の名称を指定してインスタンスを起動します。

$ ec2-run-instances ami-5c08ed35 -k servername

■ファイアウォールの設定変更

 sshで接続するために、22/tcpを開きます。

$ ec2-authorize default -p 22


 なお、ポートを指定せずに実行すると、0から65535までのすべてのポートが開放されます。

■インスタンスの起動確認
$ ec2-describe-images
RESERVATION r-4bfb3c22 181775919748 default
INSTANCE i-b82ae3d1 ami-5c08ed35 ec2-72-44-52-225.compute-1.amazonaws.com domU-12-31-38-00-24-31.compute-1.internal running lagavulin 0 m1.small 2008-05-24T12:46:45+0000 us-east-1a


■sshでの接続
$ ssh -i id_servername root@ec2-72-44-52-225.compute-1.amazonaws.com


■インスタンス終了
$ ec2-terminate-instances i-b82ae3d1
タグ:CentOS ec2
posted by maeda at 00:34| 島根 ☔| Comment(0) | TrackBack(1) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月23日

DovecotのPOP3ログの見方

DovecotのPOP3サーバが出力するログの説明です。
メール受信がうまくいかない場合の問題の切り分けを想定しています。


POP3サーバに接続、なにもせずに切断した場合:

dovecot: pop3-login: Aborted login: rip=192.168.1.254, lip=192.168.1.1


ユーザー名またはパスワードが誤っている場合:
何もせずに切断した場合と同じ"Aborted login"だが、ユーザー名が表示される。

dovecot: pop3-login: Aborted login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1


処理が正常終了した場合:
"Logged out"はQUITコマンドにより正常終了した場合のみ表示される。

dovecot: pop3-login: Login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1
dovecot: POP3(username): Disconnected: Logged out top=0/0, retr=1/471, del=0/1, size=455


ログイン後に何らかの原因で切断した場合:
"Disconnected"表示。正常終了の場合と異なり"Logged out"表示が無い。

dovecot: pop3-login: Login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1
dovecot: POP3(username): Disconnected top=0/0, retr=0/0, del=0/1, size=455


rip
クライアントのIPアドレス

lip
Dovecotを実行しているサーバのIPアドレス

top=x/y
x: TOPコマンドの実行回数
y: TOPコマンドによりサーバから転送されたバイト数

「x回のTOPコマンドによりyバイトのデータが転送された」

retr=x/y
x: RETRコマンドの実行回数
y: RETRコマンドによりサーバから転送されたバイト数

「x回のRETRコマンドによりyバイトのデータが転送された」

del=x/y
x: DELEコマンドで削除したメールの件数
y: メールボックスに蓄積されているメールの件数

「メールボックスに蓄積されているy件のメールのうちx件を削除した」

size=nnn
POP3の処理完了後のメールボックスのサイズ(バイト)。
例えば、すべてのメールを削除して終了したら0になる。
タグ:dovecot
posted by maeda at 01:00| 島根 | Comment(1) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月22日

Windowsでディレクトリのシンボリックリンクに相当するのはジャンクションポイント

UNIX系OSにおけるディレクトリのシンボリックリンクに相当するのは、Windowsではジャンクションポイント。

Vista/Windows Server 2008では標準コマンドのmklink、XP/2000/2003 Serverではリソースキットに付属のlinkdを使う。

Windows 2003 Serverのリソースキット付属ツールはマイクロソフトのサイトからダウンロードできる。

Windows Server 2003 Resource Kit Tools

ちなみに、ファイルのハードリンクを作る場合はfsutil。


なお、ショートカットはこの目的では上記いずれのケースでも使用できない。
ショートカットの実体はリンク先の情報を持った単なるファイルであり、エクスプローラーがリンク先のファイルを代わりに開いたりしている。つまりエクスプローラー以外では単なるファイルにしか見えない。リンク先のディレクトリにアクセスすることはできない。
タグ:Windows
posted by maeda at 02:03| 島根 | Comment(0) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

2008年05月21日

VMware対応のFTサーバ

VMwareに対応したFTサーバを調べた記録です。

FT(Fault Tolerant)サーバとは、サーバを構成するハードウェアのうち、ある箇所が故障しても無停止で稼働し続けることができるサーバ。ハードウェアを完全に二重化した上で常に同期させながら動作させることによって実現するものです。

FTサーバはOSにもFT用のソフトウェアを導入する必要があるため、一般のIAサーバと比較して対応するOSが限定されます。さらにVMWareも対応するハードウェアを選びますので、VMWareが利用できるFTサーバというのは選択肢が多くありません。

現時点でVMwareに正式対応しているのは日本ストラタスの製品です。同社のftServer 6200およびftServer 4400のVMwareモデルが2008年2月1日に出荷が開始されています。
http://www.stratus.co.jp/products/index.html

【ftServer 6200システム】
CPU: クアッドコア Xeonプロセッサ(2.66GHz) 2基
メモリ: 8G〜24GB
価格: \6,892,000〜(Standard) / \7,182,000〜(Enterprise)

【ftServer 4400システム】

CPU: デュアルコア Xeonプロセッサ(2GHz) 2基
メモリー: 8G〜12GB
価格: \4,102,000〜(Standard) / \4,392,000〜(Enterprise) 


NECは、2008年上半期にVMware対応製品のリリースを予定しています。
http://www.nec.co.jp/press/ja/0711/2105.html


なお、日本ストラタスとNECは協業関係にあります。
http://www.nec.co.jp/press/ja/0511/2501.html

ftServer 6200は、協業の最初の成果です。
http://www.nec.co.jp/press/ja/0707/0901.html
posted by maeda at 00:47| 島根 ☀| Comment(0) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

2008年05月18日

気象予報士試験の受験申請書請求フォームはFC2無料メールフォームサービス

8月に実施される第30回気象予報士試験の受験申請書請求の受付が開始されました。

インターネット経由での資料請求は前回まではフリーフォーマットで住所氏名を記入したメールを送っていたのですが、今回からはwebサイト上のフォームから請求できるようになっています。この請求フォーム、JavaScriptを使ってページ遷移無しで処理が完了するなど気象業務支援センターにしては凝った作りだと思ったら、FC2の無料メールフォームサービスでした。

国家試験に関係する個人情報収集に民間の無料サービスを活用しているのが斬新です。

見た目はこんな感じです。「確認」ボタンを押すと枠の中の表示だけが変わります。

http://www.jmbsc.or.jp/hp/cwfe/p0031.html
cwfe_form.png

scriptタグで埋め込みます。
cwfe_form_src.png

FC2のサービスはサーバ上にもデータを蓄積する機能があるのですが、最新の100件までの情報しか保存されないそうです。ということは、気象業務支援センターでは到着したメールを順次手作業で処理するのが前提なんでしょうね。CSVで一括処理とかではなくて。
posted by maeda at 10:28| 島根 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年05月17日

Radiant CMSのアップデート方法

サーバにインストールされているRadiant CMSをアップデートしても、そのままでは以前のバージョンで作成したwebサイトでは古いRadiant CMSが使われ続けます。つまり、radiantコマンドでサイトを作成したときのバージョンが使われ続けます。

サイトで使われるRadiant CMSを更新する手順は以下の通り。http://www.radiantcms.org/download/ に記述されています。

  1. Radiant CMSのディレクトリ($RAILS_ROOT)に移動
  2. config/environment.rb中のRADIANT_GEM_VERSIONを、使いたいバージョンに変更
  3. rake radiant:update
  4. rake db:migrate RAILS_ENV=production
  5. Rails再起動
タグ:Radiant CMS
posted by maeda at 18:28| 島根 ☀| Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

ウィルコムは端末固有情報を通知できないのでGREE不可

ウィルコムの端末は、端末製造番号など、端末固有情報をHTTPヘッダでwebサーバに通知する機能がありません。なので、個体識別番号を使って認証を行っているサービスは使うことができません。

例えばGREEとか。

GREEの招待状をもらったのに、ウィルコム端末からは「端末製造番号を通知してください」というエラーで登録できませんでした。PCからの登録も試みましたが、ドコモ、au、ソフトバンクのうちいずれかのアドレス入力が必須なので断念。

この程度の機能、ウィルコムもさっさと対応してほしいです。
タグ:ウィルコム
posted by maeda at 15:15| 島根 ☀| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年05月16日

WebryReaderが無意味にサーバにアクセスする件

BIGLOBEがサービスしているweb型RSSリーダー「WebryReader」が、Perfume blog RSSフィードでサービスしているフィードを無意味に激しくアクセスしにきてます。実害は無いですが気に入らないです。

約10秒の間に同じコンテンツを繰り返し取得しています。
まさか、購読者の数だけ繰り返し同じRSSを取得している?


60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:45 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:45 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:06 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"



# 三人ともブログ更新してください...
タグ:Perfume RSS
posted by maeda at 01:59| 島根 ☁| Comment(1) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

Subversionのリポジトリの内容を別リポジトリに移動する。

Subversionのリポジトリの内容を別リポジトリに移動する手順について。

<想定>
移動元: /var/lib/svn/repos
異動先: /var/lib/svn/repos_new

svnadmin dump /var/lib/svn/repos > repos.dump
cat repos.dump | svnadmin load /var/lib/svn/repos_new



移動元リポジトリの特定ディレクトリのみ対象とする場合はsvndumpfilterを併用する。

<想定>
リポジトリ中の /some_dir のみを対象とする

svnadmin dump /var/lib/svn/repos | svndumpfilter include /some_dir > repos.dump
cat repos.dump | svnadmin load /var/lib/svn/repos_new


異動先リポジトリ内の特定ディレクトリ以下にdumpした内容を格納する場合は、--parent_dirオプションを使う。指定したディレクトリは存在しているものでなければならない。

cat repos.dump | svnadmin load /var/lib/svn/repos_new --parent_dir /foo/


●関連ページ
svndumpfilterで「単に番号が飛ばないようにするための空のリビジョンです」を出させない
タグ:SVN
posted by maeda at 00:04| 島根 ☁| Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年05月13日

気象予報士試験勉強のブログを始めた

8月の第30回試験に向けて、実技の勉強のために勝手にその日の気象の解説をするブログを始めました。日々まじめに天気図を解析するモチベーションになるはず。

http://harerun.seesaa.net/

仕事で気象警報・注意報を処理するプログラムを書いていたらいつの間にか気象にのめり込んで、今年の1月に初めて気象予報士試験を受けました。結果は一般知識と専門知識のみ合格。実技で落ちました。

次回と次々回は学科免除で受験できるので、なんとしても合格したいです。まじめに勉強するために、ブログで毎日天気の説明をすることにしました(気象業務法に抵触しないように)。
タグ:気象予報士
posted by maeda at 00:11| 島根 ☀| Comment(0) | TrackBack(0) | 気象 | このブログの読者になる | 更新情報をチェックする

2008年05月11日

Redmineが最も使われている国は日本?

Googleで「redmine」というキーワードで検索を行う回数が最も多い国は日本のようです。Redmineの作者であるJean-Philippe Langが住んでいるフランスが2位。1位と2位の差は異常と感じるほど圧倒的です。


GoogleでRedmineというキーワードがどの程度検索されているかをグラフ表示するGoogle Trendsで、キーワードredmineの結果を調べてみました。

Google Trends: redmine
http://www.google.com/trends?q=redmine&ctab=0&geo=all&geor=all&date=ytd&sort=0

グラフに載る程度に検索回数が増えたのが昨年後半から。そして、検索が行われている国は圧倒的に日本です。言い方を変えると海外におけるRedmineの利用は非常に低いということ。どこに原因があるのか、興味深いです。

google_trends_redmine.png
タグ:redmine
posted by maeda at 10:07| 島根 ☁| Comment(0) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

2008年05月10日

webで公開する資料を作るにはGoogle Docsが便利

Google Docsで作った文書は、「公開」機能を使えばHTML化してweb上に公開することができます。作成から公開までweb上でのオペレーションで完結するため、webで公開するための文書はGoogle Docsで作るのが便利です。

文書を公開するには、文書の編集画面の右上にある「公開」タブの中の「公開する」ボタンをクリックします。

google_docs_publish.png

以下は、Google Docsのスプレッドシートで作成した文書を公開した例です。公開設定を行うと、固有のURLが割り当てられ、インターネット上で閲覧できるようになります。JavaScriptやActiveXを使わない純粋なHTML+CSSで記述されているため、多くの環境で閲覧できます。

GAME オリコンランキング推移:
http://spreadsheets.google.com/pub?key=proSItWcJi5lX8HWlq5bmAA
posted by maeda at 23:45| 島根 ☔| Comment(0) | TrackBack(0) | IT | このブログの読者になる | 更新情報をチェックする

2008年05月07日

Google検索結果 1位と2位のアクセス数の違い

4月30日ごろから、Googleで「redmine」を検索するとRedmine.JPがトップに表示されるようになりました。これによって、Googleで「redmine」を検索した結果からのアクセスが約1.4倍になりました。

1位と2位で、これほどアクセス数が違うとは思っていませんでした。

redmine_jp_analytics_20080505.png


redmine_jp_google_top.png
タグ:google
posted by maeda at 00:25| 島根 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年05月06日

Radiant CMSでPerfumeブログのRSSフィード

PerfumeのオフィシャルブログはRSSが出力されていません。日々更新をチェックしにいくのもアミューズにお願いするのも面倒だったので、自分のサーバでRSSフィードを生成・提供するようにしました。
配信するのはタイトルとURLのみで、ファンクラブ会員限定コンテンツである本文の配信は行いません。

http://perfume.yurufuwa.jp/blog_feeds/


このフィードは、オープンソースのCMS「Radiant CMS」と、Radiant CMSのテンプレート上で直接Rubyコードを実行できるようにするエクステンション「Back Door」を使って生成しています。

http://www.radiantcms.org/
http://backdoor.rubyforge.org/


■処理の流れ

  1. Radiant CMSがRSSリーダーからのHTTPリクエストを受け、該当するテンプレートの処理を開始。
  2. Back Doorによりテンプレート内のRubyコードが実行される。オフィシャルブログのHTMLを取得、必要な情報を切り出しRSS生成。
  3. Radiant CMSが生成されたRSSを返す。


■実装
<レイアウト「XML Feeds」作成>
Content-typeを「text/xml」として以下の内容のレイアウトを作成します。

<r:content />


<スニペット「tag_perfume_blog_feed」定義>
テンプレート中で「perfume_blog_feed」というタグでRSSを生成できるようにします。タグにするのは、複数のフィード(のっち、かしゆか、あ〜ちゃん、スタッフの各ブログ)を生成する際にRubyコードを使い回せるようにするためです。


<r:tag name="perfume_blog_feed">

require 'rubygems'
require 'hpricot'
require 'rss'
require 'open-uri'
require 'cgi'

FETCH_URL = tag.attr['url']
FEED_TITLE = tag.attr['title']
FEED_LINK = tag.attr['url']
FEED_DESCRIPTION = tag.attr['title']

# 指定されたURLのコンテンツを取得し、Stringとして返す。
def get_html(url)
result = ''
open(url) {|f| result = f.read}
end

# HTMLからblogエントリーのタイトル、URL、更新日付を取得しHashのArrayとして返す。
#
# Hashのキー: :url => blogエントリのURL, :title => タイトル, :date => 更新日付
def extract_blog_entries(html)
result = []
doc = Hpricot(html)
doc.search("div.box_cont_01").search('h4').search('a').each do |e|
url = CGI::unescape(e['href'].sub(/.*set_ref__=http%3a%2f%2f/, "http://")).gsub(/&sid=[^&]*/, "")
date = Time.parse(e.search('span').inner_html.gsub(/\./, "/"))
title = CGI::unescapeHTML(e.inner_html.gsub(/<span.*/, ''))
result.push({:url => url, :title => title, :date => date})
end
return result
end

# extract_blog_entriesで戻された情報からフィードを生成する
def generate_feed(blog_entries)
rss = RSS::Maker.make("2.0") do |maker|
maker.channel.title = FEED_TITLE
maker.channel.link = FEED_LINK
maker.channel.description = FEED_DESCRIPTION

blog_entries.each do |entry|
item = maker.items.new_item
item.title = entry[:title]
item.link = entry[:url]
item.date = entry[:date]
item.dc_date = entry[:date]
end
end

result = rss.to_s
end


html = get_html(FETCH_URL)
if html != nil then
blog_entries = extract_blog_entries(html)
xml = generate_feed(blog_entries)
end
xml
</r:tag>


<RSS出力用テンプレート作成>
以下の内容のテンプレートを作成します。下記はあ〜ちゃんのブログ(http://www.amuse.co.jp/perfume/blog/a-chan/)のフィードの例です。


<r:snippet name="tag_perfume_blog_feed" /><r:perfume_blog_feed url="http://www.amuse.co.jp/perfume/blog/a-chan/" title="Perfume A-CHAN BLOG" />


テンプレートの「slug」はRSSっぽく「a-chan.xml」などとします。レイアウトは、前述の手順で作成した「XML Feeds」を適用します。

以上で完了です。

ピクチャ 4.png

Radiant CMSでは一定時間コンテンツがキャッシュされます。キャッシュが有効である間は、何度アクセスしても実際にはフィード生成処理は行われずキャッシュが使用されます。HTML取得先のサーバへの負荷が軽減されるので好都合です。

Radiant CMSでレスポンスキャッシュの有効期限を変更する:
http://vividtone.seesaa.net/article/94905361.html
posted by maeda at 12:10| 島根 ☀| Comment(3) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。