Flickr: Add referrer into comments 1.1

さいきんFlickrのコメントをみていると、なんかどこで写真をみつけました、みたいなのがでてるときがあります。これです。

Flickr Referer

図1. リファラー?

赤丸でかこってあるのがそれです。(?)というリンクがあるのでぽちっとしてみました。参考文献[1]がそれですが、それによると「Flickrでいやなのは、自分の写真をみんながどこでみつけたのかわからないってことだよね」とのこと。これを使えば、自分がコメントを書くときに、どこで見たか知らせることができる! いいですね。

わたしも以前、Explore / Most recent photosでみつけた写真にコメントつけたら、「だれ? どこでみつけたの?」と気味悪がられて、アク禁にされたことがあるのでそのきもちはよくわかります。というわけで、さっそく使い方です。

Firefoxのひとは、Greasemonkeyをインストールしましょう。そして、参考文献[1]のお猿のアイコンをぽちっとするとインストールされます。あとは自動でリファラーがつくみたいです。Greasemonkeyのインストールの仕方などは、参考文献[3]がんちゃんのブログ:autopagerizeを参照してください。

Firefox以外のひとはGreasemonkeyが使えないので、ブックマークレットを使います。さっきの参考文献[1]にある緑のアイコンをブックマークツールバーにドラッグアンドドロップします。

add-bookmarklet

図2. アイコンをブックマークツールバーにドラッグしてドロップ

そして、コメントを書くときにブックマークツールバーにできたリンクを押せばいいというわけです。試しにやってみよう! わたしは最近Safariで生活しているので、2番めのブックマークレット版をためしてみました。

まず、コメントをつけたい写真をみつける。

find-a-pic.jpg

図3. これにコメントをつけたい

そしたら、さきほど追加したブックマークレットをポチとします。すると次のようになる。

after-pressed-the-button.jpg

図4. ブックマークレットをポチとするとコメント欄に

このようにコメント欄にリンクが挿入されます。あとはその上にコメントを書いて「POST COMMENT」を押せば完成。

finnished-a-comment.jpg

図5. 完成

この例だと「きみのフォトストリームでみつけたよ」となってますね。そのフォトストリームをどこでみつけたのか知りたい気もしないでもないが、とりあえずこれで目的(?)達成! かな?

しかし美人のおかあさんですねえ。菊池桃子? お子さんもちいさいので3倍ですね!

参考文献

  1. Flickr: Add referrer into comments 1.1, 6V8 – Production of my Mind, 2006
  2. flickr
  3. 自動でページをめくるautopagerize, がんちゃんのブログ, 2007

アドセンスにスクロール矢印?

何気なくみていたら、広告に矢印がついてました。

is this scroll arrows?

図1. スクロール用矢印?

なんだこれは? とおもってしらべたら、去年の12月ぐらいから出はじめてるみたいですね(参考文献[1])。想像通り、スクロールして表示されている以外の広告もみられるようです。

しかし、こんなの押して隠れてる広告をみるひとなんて、いないんじゃないの? ^^; なんのためにあるんでしょうね、これ。

参考文献

  1. AdSenseの広告枠にスクロールボタン, SEO32, 2007

wordpressのビジュアルエディタを無効にする方法

以前さくらのレンタルサーバーにwordpressをインストールする方法で使い始めたwordpressですが、記事を書いてみるとなぜか<div>が<p>になってしまいます。divの中に入っているpもなんか変換されちゃってへんなかんじ…なんだろうと思ったら参考文献[1]に書いてありました。ビジュアルエディタにバグが! へんなバグだなあしかし…

解決するにはビジュアルエディタを無効にするか、そのバグそのものを直すパッチをあてればいいようです。わたしはビジュアルエディタはぜんぜん使わないので、無効にすることにしました。これがまた、無効にする方法がわからん…うーん。ユーザー→編集ってどこよ! ないし!

悩むこと3分、参考文献[2]を発見。ディレクトリ「wp-includes/js/tinymce/」をリネームすればいいらしい。簡単だね!

$ cd wordpressをインストールしたディレクトリ
$ mv wp-includes/js/tinymce wp-includes/js/tinymce.bk

案外簡単になおりました。オタメシアレ!

参考文献

  1. WordPressの文章整形機能でdivタグがpタグに…, lovelog, 2007
  2. Disable Visual Editor, wordpress.org, 2007

さくらのレンタルサーバーにWordPressをインストールする方法

ちょっと思い立ったので、さくらのレンタルサーバにWordPressをインストールしてみました。WordPressのインストールって、ちょう簡単なのねえ…しらなかった。作業開始から動作確認まで3分ぐらいで完了しました。さくらのレンタルサーバーをかりてるひとは、wordpress.comとか借りる必要まったくないですね。とかいいつつ、これはblogger.comだけど! その、今回インストールしたのはこちら、Performance Parts Central。まあなんていうんですか、普通のブログです。

インストールは簡単に言うと、ダウンロードして、展開して、パーミッションなおして、データベースの設定をするだけなんです。というわけで、さっそくやってみよう。用意するものはtelnetの端末とウェブブラウザだけです。WindowsのひとはコマンドプロンプトかTera termを、Mac OS Xのひとは「ターミナル」を使ってください。WindowsやMac OS Xのftpクライアントとかは必要ありません。

ではまず、コマンドプロンプト/Tera Term/ターミナルをつかって、さくらのレンタルサーバーにログインしましょう。ログインの仕方はだいじょうぶですかー?

% ssh ****.sakura.ne.jp -l ****  ←借りるときに指定したサブドメイン名とユーザー名ね
****@****.sakura.ne.jp's password: ←パスワード入力
Last login: Tue Dec 18 10:11:03 2007 from xxxx.xxxx.xx
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
 The Regents of the University of California.  All rights reserved.

FreeBSD 6.1-RELEASE-p17 (SAKURAx) #0: Mon Jun 11 20:40:49 JST 2007

Welcome to FreeBSD!

%

では、つぎにWordPressをダウンロードしましょう。日本語版のひとはWordPress Localizationリリースファイル・リストを、英語版でいいひとはDownload WordPressを見て、ダウンロードするファイルのURLを見つけてください。現在のところ、日本語版のひとは「http://prdownloads.sourceforge.jp/wordpress/27093/wordpress-me223.zip」、英語版のひとは「http://wordpress.org/latest.zip」です。そうしたらこれをさくらのサーバー上でダウンロードします。場所はどこでもいいですが、ホームディレクトリにしておきましょうか。ここでは英語版にしました。

% cd ~/
% ftp http://wordpress.org/latest.zip
Requesting http://wordpress.org/latest.zip
  1040 KB  296.92 KB/s 
1065215 bytes retrieved in 00:03 (296.92 KB/s)
% ls -l ./latest.zip
-rw-r--r--  1 narak  wheel  1065215 Dec 19 17:32 ./latest.zip

ダウンロードできたら、展開します。これもとりあえずはどこでもいいです。ホームディレクトリで展開しちゃいます。

% unzip latest.zip
Archive:  latest.zip
   creating: wordpress/
  inflating: wordpress/wp-trackback.php  
  inflating: wordpress/wp-config-sample.php 
....
  inflating: wordpress/wp-content/plugins/akismet/akismet.gif  
  inflating: wordpress/wp-content/plugins/akismet/akismet.php  
  inflating: wordpress/wp-content/plugins/hello.php 

これで、「~/wordpress」以下に展開できました。展開できたら、ブツを所望の位置に移します。ここでは仮にxxx.sakura.ne.jp/blog/というディレクトリで動かすことにします。すると、移動する先は「~/www/blog」になるはずです。

% mv wordpress ~/www/blog
% cd ~/www/blog
% ls
index.php  wp-config-sample.php wp-rdf.php
license.txt  wp-content/  wp-register.php
readme.html  wp-cron.php  wp-rss.php
wp-admin/  wp-feed.php  wp-rss2.php
wp-app.php  wp-includes/  wp-settings.php
wp-atom.php  wp-links-opml.php wp-trackback.php
wp-blog-header.php wp-login.php  xmlrpc.php
wp-comments-post.php wp-mail.php
wp-commentsrss2.php wp-pass.php

ターミナルでやる作業はこれでおわりです。あとはweb経由で設定を行います。動かすつもりのディレクトリにブラウザでアクセスすると、次のような画面が出るはず。

wordpress1.jpg

図1. 初めてのアクセス

ここの「create a wp-config.php file through a web interface」というリンクをぽちっとします。

wordpress2.jpg

図2. 次の画面

この画面の「Let’s go」をクリックしましょう。するとこうなるはず。

wordpress3.jpg

図3. データベース設定画面

ここで、さくらでつかえるMySQLサーバー名やデータベース名などを入力します。最後の「Table Prefix」は、WordPressを複数設置するときは、重ならないように適当にユニークな名前にしておきます。入力できたら「Submit」をポチ。

wordpress4.jpg

図4. 準備完了

ここで「run the install!」をポチとします。

wordpress5.jpg

図5. タイトルとe-mail入力

ブログのタイトルと、emailアドレスの入力を求められるので入力します。入力したら「Install WordPress」をポチ。

wordpress6.jpg

図6. インストール完了!

ここで表示されるパスワードは忘れないようにして下さい。あとは、ここで与えられたパスワードをつかって、wp-login.phpにログインすればオッケーです。「wp-login.php」というリンクをポチ。

wordpress7.jpg

図7. ログイン画面

ユーザー名「admin」パスワードは先ほどのものでログインしてください。すると、

wordpress8.jpg

図8. 管理画面

おおっ! そして、ブログの本体の画面はというと…

wordpress9.jpg

図9. てきとうすぎるブログ名のブログ!

できましたー。あとは先ほどの管理画面から投稿すればオッケーです。管理画面は「ブログのURL/wp-admin.php」です。あとは、ユーザーを作成したり、テーマをダウンロードしてブログの見た目をかえたり、パーマリンクのURLのかたちを変えたり、いろいろやりましょう!

参考文献

  1. wordpress.org (WordPressの配布元)
  2. Installing WordPress, WordPress Codex

さくらのレンタルサーバーのRuby on Railsを高速化する方法

以前、さくらのレンタルサーバーにRuby on Railsをインストール、動作を確認し、実際に簡単なアプリケーションをうごかしてみました。

  1. さくらにRailsをインストールする方法
  2. その動作確認
  3. サンプルアプリケーション

しかし、これがどうにも遅い! 通常はApacheに加えてfastCGI等を利用して起動の高速化をはかるのですが、さくらの共用サーバーでは利用できません(参考文献[1])。ただのCGIで動かした場合にどれぐらい遅いかというと、参考文献[2]をごらんください。普通の(?)方法でうごかすのと比較すると、ただのCGIはざっと100倍ぐらい遅い。ひどい!

というわけで、多少でもはやくならんもんかと思い色々と試してみました。速度の測定にはhttperfを使ってみました[3]。Mac OS X の場合はMacPortsで簡単にインストール可能です。ほかのプラットフォームでもいろいろあると思いますが、割愛します。

まずは、RailsもRubyも関係ない、静的ファイルの場合を測定してみます。ファイルの内容はあとで出てくるRailsのものとおなじです。

% httperf --server=narak.sakura.ne.jp --port=80 --uri=/test.html --num-conns=100 --num-calls=1
httperf --client=0/1 --server=narak.sakura.ne.jp --port=80 --uri=/test.html --send-buffer=4096
  --recv-buffer=16384 --num-conns=100 --num-calls=1
httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE
Maximum connect burst length: 1

Total: connections 100 requests 100 replies 100 test-duration 8.095 s

Connection rate: 12.4 conn/s (80.9 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 77.5 avg 80.9 max 88.4 median 80.5 stddev 2.2
Connection time [ms]: connect 27.0
Connection length [replies/conn]: 1.000

Request rate: 12.4 req/s (80.9 ms/req)
Request size [B]: 78.0

Reply rate [replies/s]: min 12.2 avg 12.2 max 12.2 stddev 0.0 (1 samples)
Reply time [ms]: response 27.3 transfer 26.6
Reply size [B]: header 231.0 content 5512.0 footer 0.0 (total 5743.0)
Reply status: 1xx=0 2xx=100 3xx=0 4xx=0 5xx=0

CPU time [s]: user 1.83 system 6.17 (user 22.7% system 76.2% total 98.9%)
Net I/O: 70.2 KB/s (0.6*10^6 bps)

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

httperfは指定のサイトの指定のページにある回数アクセスして、速度を測定します。今回は100回にしてみました。結果が色々出てますが、とりあえず

Request rate: 12.4 req/s (80.9 ms/req)

ここだけみることにします。これは1リクエストあたり80.9msかかり、1秒間に12.4リクエストの処理が可能ということです。Railsの処理時間をいくらみじかくしても、これより速くなることはないという値です。

ではつぎに、サンプルのtodoリストの速度を測定してみます。

Request rate: 0.5 req/s (1851.1 ms/req)

うーん、100倍は遅くありませんが、静的ファイルの場合と比較すると25倍ぐらい遅いですね。これをベースに、どれぐらい高速化できるか検討します。

まずは実行環境です。実は上記todoリストはdevelopment環境で稼働していました。これをproduction環境に変更します。production環境の方が速い。らしいです。変更の仕方は、

  1. config/database.ymlでproduction環境にもデータベースの設定を書く。
  2. config/environment.rb で「ENV['RAILS_ENV'] ||= 'production'」の行のコメントを外す。

です。これでプロダクション環境になります。ではさっそく、速度を測ってみよう!

Request rate: 0.6 req/s (1675.0 ms/req)

ビミョーに速くなりました!

さらに、今回の例はセッションを使っていないので、セッションを無効にしてみます。無効にする方法はapp/controllers/application.rbを下記のように変更します。

class ApplicationController < ActionController::Base
  # Pick a unique cookie name to distinguish our session data from others'
  # session :session_key => '_Todo_session_id'
  session :disabled => true
end

このときの速度は下記の通り。

Request rate: 0.6 req/s (1752.7 ms/req)

うーん、あまりはやくならない。ていうかむしろすこし遅くなったような。セッションはDBに保存するので、DBが遅い場合はセッションを無効にすると劇的に改善することがあるようです。しかし、さくらのようにデータベースがMySQLで別のサーバになっている場合は効果があまりない。残念。

気を取り直して今回の最後の手段。必要のないモジュールをロードしないようにします。具体的には、config/environment.rbの下記の行のコメントアウトをとります(行頭の#を削除して行を有効にします)。

  # Skip frameworks you're not going to use (only works if using vendor/rails)
  config.frameworks -= [ :action_web_service, :action_mailer ]

このときの速度は下記の通り。

Request rate: 0.9 req/s (1103.7 ms/req)

おおっ、だいぶはやくなった! 静的ファイルと比較して25倍から13倍によくなりました! というわけでみなさんもお試しあれ。焼石に水という気もしますが...

参考文献

  1. Movable Type 3.34 アップグレード, blog kazuking, 2007
  2. 優しいRailsの育て方, 2006
  3. Welcome to the httperf homepage, HP Labs, 2005

モバイル向けAdsenseが本日サービス開始

Googleが本日より日本でも「モバイル向けAdsense」をはじめたようです。9月に発表だけされていたものが、サービスインしたもの。今日たまたまアドセンスの管理画面にログインしたら、「レポート」→「概要」の「収益総額」のうえあたりに突如「モバイル向け AdSense – 開始する」というのが表示されていて気がつきました。

モバイル向けAdsenseで利用可能なデザインは下記の「シングル」と「ダブル」の2種類のみ。

Adsense Design

このモバイル向けAdsense広告を貼るページはXHTML、WML、CHTMLのどれかで書かれている必要があります。また広告のコードはPHP、CGI/Perl、JSP、ASPで提供されるので、ページそのものも生XHTMLとかではなくて、どれかの言語で書かれてないとだめ。まあPHPだったら、そのまま拡張子をphpにすればうごくけど。

いまわたしはモバイル用のサイトはひとつももってないので、このAdsenseを張ってみるためにいっちょ作ってみようかしら ^^;
なお実物はたとえばこのへんで見られるみたいです。

参考文献

  1. Google、モバイル向けのアドセンスサービスを開始 – AdSense for Mobile, マイコミジャーナル, 2007
  2. モバイル向けAdsense, Google Adsenseヘルプセンター, 2007
  3. Google Adsense モバイル広告フォーマット
  4. お待たせしました!モバイル版コンテンツ向けAdSenseがスタートします, Adsense日本版公式ブログ, 2007

アドセンスのエラーメッセージに書かれた27言語一覧

日本時間の2007年10月7日22時現在、アドセンスのサイトが見られないようになっています。みようとするとエラーメッセージが表示されるのですが、これがおどろいたことに27箇国語で書かれています。というわけで表にしてみた。

No. 言語 文言
1 英語 The Google AdSense website is temporarily unavailable. Please try back later.
We apologize for any inconvenience.
2 日本語 Google AdSense の web サイトは一時的にご利用いただけません。後で再度お試しくださいますようお願いいたします。
お手数をおかけいたしますことをお詫びいたします。
3 ドイツ語 Die Google AdSense-Website ist vorübergehend nicht verfügbar. Bitte versuchen Sie es später noch einmal.
Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten.
4 フランス語 Le site Google AdSense est temporairement indisponible. Veuillez réessayer plus tard.
Nous vous prions de nous excuser pour le désagrément occasionné.
5 スペイン語 El sitio web de AdSense de Google no se encuentra disponible en estos momentos. Por favor, inténtelo de nuevo más tarde.
Disculpe las molestias.
6 中国語(簡体字) Google AdSense 网站暂时无法浏览。请您稍候再尝试。
对于造成您的不便我们感到抱歉。
7 イタリア語 Il sito AdSense di Google è temporaneamente non disponibile. La preghiamo di provare più tardi.
Ci scusiamo per il disagio.
8 オランダ語 De website van Google AdSense is tijdelijk niet beschikbaar. Probeert u het later opnieuw.
Onze excuses voor het eventuele ongemak.
9 トルコ語 Google AdSense Sayfası geçici olarak hizmet dışıdır. Lütfen, daha sonra tekrar deneyin.
Bu geçici sorundan dolayı özür dileriz.
10 ポルトガル語 O site do Google AdSense não está disponível no momento. Tente novamente mais tarde.
Pedimos desculpas pelo inconveniente.
11 英語 The Google AdSense website is temporarily unavailable. Please try back later.
We apologise for any inconvenience.
12 ポーランド語 Witryna programu Google AdSense jest chwilowo niedostępna. Prosimy spróbuj później.
Przepraszamy za wszelkie niedogodności.
13 ロシア語 Веб-сайт Google AdSense временно недоступен. Попробуйте, пожалуйста, еще раз через несколько минут.
Мы приносим свои извинения за причиненные неудобства.
14 スウェーデン語 Google AdSense webbplats är för tillfället inte tillgänglig. Försök igen senare.
Vi ber om ursäkt för eventuellt besvär.
15 デンマーク語 Google AdSense-webstedet er ikke tilgængeligt i øjeblikket. Prøv igen senere.
Vi beklager ulejligheden.
16 韓国語 Google AdSense 웹사이트를 일시적으로 사용하실 수 없습니다 . 나중에 다시 시도해 보십시오 .
불편을 끼쳐드려 죄송합니다 .
17 ノルウェー語 Google AdSense-webområdet er midlertidig utilgjengelig. Prøv igjen senere.
Vi beklager eventuelle problemer dette medfører.
18 中国語(繁体字) Google AdSense 網站暫時無法瀏覽。請您稍候再嘗試。
對於造成您的不便我們感到抱歉。
19 ハンガリー語 A Google AdSense oldal jelenleg nem elérhető. Kérjük, látogasson vissza később.
Elnézést kérünk az esetleges kellemetlenségekért.
20 フィンランド語 Google AdSense –sivusto ei väliaikaisesti ole saatavilla. Yritä myöhemmin uudelleen.
Pahoittelemme tämän aiheuttamaa hankaluutta.
21 チェコ語 Stránka Google AdSense je dočasně nedostupná. Zkuste to později.
Omlouváme se za způsobené nepříjemnosti.
22 スロバキア語 Stránka Google AdSense je dočasne nedostupná. Skúste neskôr, prosím.
Ospravedlňujeme sa za spôsobené nepríjemnosti.
23 クロアチア語 Google AdSense sučelje trenutno je nedostupno. Molimo Vas pokušajte kasnije.
Ispričavamo se za neugodnosti.
24 アラビア語
إن موقع Google AdSense غير متوفر حاليا. يرجى تكرار المحاولة لاحقا. نعتذر عن أي إزعا
25 ヘブライ語
אתר Google AdSense איננו זמין כרגע. אנו מצטערים על אי הנוחות. אנא נסה שנית מאוחר יותר.
26 ブルガリア語 Google AdSense уебсайта е временно недостъпен. Моля опитайте по-късно. Извиняваме се за неудобството.
27 ギリシャ語 Η ιστοσελίδα του Google AdSense δεν είναι διαθέσιμη προς το παρόν. Παρακαλώ δοκιμάστε αργότερα. Ζητούμε συγγνώμη για την ενόχληση.

あてくしの限られた語学で判別しましたので間違ってるのがあるかも! 間違ってたら教えてくださいね。しかし、どういう基準で選んだんだろうね、この27箇国語。

参考文献

  1. アドセンスのエラーメッセージ
  2. 国・機関のコードリスト

FastladderにもiPhone/iPod touch用のインターフェースが!

livedoor ReaderにiPhone/iPod touch用のインターフェースがついた、という記事(参考文献[1])を読んで、わたしが愛用するFastladderにもついてないのかなー、とおもって試したら使えるみたいだったので書いておきます。

まずふつうのバージョンのFastladderをiPod touchでみてみる。

fastladder on ipod touch

写真1. iPod touchでふつうのFastladder

一応、ちゃんと動くんだけど、問題点がいくつかあります。

  1. ショートカットキーが使えない
  2. 右ペイン(記事画面)がスクロールできない

ようするにちゃんと記事が読めない! どうなってんのー。とおもってたら、参考文献[1]によると以下のURLで「livedoor Reader lite」が動くらしい。

えー、じゃあ、そういうアナウンスはないけど、ひそかにFastladderでもつかえたりして! と思って以下のURLにアクセスしてみた。

その画面がこれ。

fastladder lite on iPod touch

写真2. iPod touchでFastladder lite

おー、うごくじゃーん。ただ参考文献[1]にも書いてありますが、「新着チェック」用の簡易インターフェースなので、こちらから読んでも「未読」の状態のままです。正規のインターフェースから読まないと「既読」になりません。どんどんたまっていくー。並び順は「更新時期」のみです。そのなかから、フォルダーとレイティングで絞り込みができます。

いつものインターフェースと使い方が変わってしまうのでちょっと戸惑いますが、出先でちょっとだけチェックするのには使えるかもー。皆さんもつかってみよう!

参考文献

  1. iPhone/iPod touch対応の「livedoor Reader lite」, livedoor Reader 開発日誌, 2007

Apple iPod touch 16GB MA627J/A


さくらのレンタルサーバでRuby on Railsをうごかしてみた…らかなり遅いかも…

その1
その2
さくらのレンタルサーバにRuby on Railsをインストールして、
動作確認をするところまでやりました。今回は簡単なアプリケーションを作って、どれぐらいの速度で
うごくのか確かめてみたいと思います。題材は「ToDoリスト」です。

その2の続きで、$HOME/Railsの下にTodoというアプリケーションを作ります。

% cd ~/Rails
% rails Todo

mySQLで「todos」という名前のテーブルを作っておきます。sqlサーバー、ユーザー名、パスワード、DB名はそれぞれ自分のものにかえてください。

% mysql --host=mysqlhoge.db.sakura.ne.jp --user=xxxx --password=yyyy xxxx
...
mysql> create table todos (
  -> id int primary key not null auto_increment,
  -> desctiption varchar(100) not null,
  -> done tinyint not null default 0);
Query OK, 0 rows affected (0.03 sec)

mysql> desc todos;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      |      | PRI | NULL    | auto_increment |
| desctiption | varchar(100) |      |     |         |                |
| done        | tinyint(4)   |      |     | 0       |                |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

テーブルが出来たら、各種設定です。

  1. config/environment.rbの設定
  2. public/.htaccessの設定
  3. tmpとlogのパーミッション
  4. config/database.ymlの設定

(1)(2)(3)はその2に詳しいので、そちらをご参照の上、設定してください。(4)は、DBの設定です。
development:とtest:とproduction:の3セクションがありますが、今回はdevelopment:を下記のように
設定します。

development:
adapter: mysql
database: xxxx
username: xxxx
password: yyyy
host: mysqlxx.db.sakura.ne.jp

次にアプリケーションのモデルとコントローラーを生成します。

% cd ~/Rails/Todo
% ruby script/generate model Todo
% ruby script/generate controller todo

詳しい説明は省きますが ^^;; app/controllers/todo_controller.rb を以下のようなかんじにします。

% cat app/controllers/todo_controller.rb
class TodoController < ApplicationController
 model :todo
 def index
   redirect_to :action => :list
 end
 def list
   @items = Todo.find_all
   @newitem = Todo.new
 end
 def edit
  @edititem = Todo.find(params[:id])
 end
 def update
  item = Todo.find(params[:id])
  item.update_attributes(params[:todo])
  if item.save
        redirect_to(:action => "list")
  else
        render_text "Couldn't update an item"
  end
 end
 def add_item
  item = Todo.new(params[:todo])
  if item.save
        redirect_to(:action => "list")
  else
        render_text "Couldn't add new item"
  end
 end
end

app/views/todo/edit.rhtmlを下記のように。

% cat app/views/todo/edit.rhtml
<html>
  <head>
    <title>Edit an item - My todo list</title>
  </head>
 
  <body>
  Edit the item:<br>
  <% form_for :todo, @edititem, :url => { :action => :update , :id => @edititem } do |f| %>
    <%= f.check_box :done %>
    <%= f.text_field :description %>
    <%= submit_tag 'Update' %>
  <% end %>
  </body>
</html>

app/views/todo/list.rhtmlを下記のように。

% cat app/views/todo/list.rhtml
<html>
  <head>
    <title>My todo list</title>
  </head>
 
  <body>
    <% @items.each do |i| %>
    <%= check_box_tag("i", i.done, (i.done == 1)) %>
    <%= i.description %>
    <%= link_to("Edit", :action => "edit", :id => i.id) %>
    <br />
    <% end %>
  <hr>                                                   
  <% form_for :todo, @newitem, :url => { :action => :add_item } do |f| %>
    New item:
    <%= f.text_field :description %>
    <%= submit_tag 'Add item' %>
  <% end %>
  </body>
</html>

config/routes.rbに下の2行を追加。

map.connect '', :controller => "todo"
map.connect 'list', :controller => "todo", :action => 'list'

webで見られるところから、publicにシンボリックリンクを張る。

% ln -s /home/xxxx/Rails/Todo/public ~/www/todo

そんなこんなで完成。「My todo list」でうごいています。みてみるとわかりますが、かなり遅い。リロードに3秒ぐらいかかりますね。さくらのレンタルサーバーはfcgiが使えなくって、cgiなのが原因みたい。ちょっとこの遅さではツカエナイカモ…

参考文献

  1. テスト
  2. さくらのレンタルサーバーにRuby on Railsをインストールする方法
  3. さくらのレンタルサーバーにRuby on Railsをインストールする方法 その2
  4. Rail’s wiki

Firefoxでしたまでスクロールすると自動でページをめくってもらえるスクリプト(AutoPagerize)

2008/12/23追記:現在autopagerizeがうまく動かないようです。詳しい対処法は
autopagerizeが動かなくなった時の対処法をご覧ください。


今日は面白いものを教えてもらったのでメモっておきます。

たとえばGoogleで検索したとき、デフォルトの1ページ表示数10件のなかに希望のものがなかった場合、
次のページに簡単にいけたらいいなー、とおもいませんか? わたしはsite:をつかって検索したとき、
なにがインデックスされてるのかざっと見たいだけなのに、いちいちポチポチ「次へ」をおすのが
めんどくさいなあ、とおもってました。そこでこれだ! AutoPagerize。一番下までスクロールすると、
自動で次のページがつながって表示されます。言葉で説明するとよくわからんが、図で見るとこんなかんじ。

autopagerize.jpg

図1. GoogleにてAutoPagerize動作中

まんなかの線から下が勝手につながった「次」のページです。便利かも。Googleだけじゃなくて、

hatena.jpg

図2. はてな注目のエントリーにてAutoPagerize動作中

flickr.jpg

図3. FlickrにてAutoPagerize動作中

というように、いろいろなサイトに対応しています。詳しくはAutoPagerizeのSITEINFOデータのページをみればわかる。というわけで、インストールしよう。

AutoPagerizeはGreasemonkeyのスクリプトなので、Firefoxじゃないとだめです。またGreasemonkeyの
アドオンをいれていないひとは、まずGreasemonkeyをいれましょう。Firefox Add-ons – Greasemonkey
行って、緑の「インストール」ボタンを押し、そのあと出てくるダイアログの「今すぐインストール」を
押します。

greasemonkey.jpg

図4. Greasemonkeyのインストール

インストールが終わるとFirefoxの再起動を求められますから、再起動しましょう。再起動して
立ち上がってくると、右下におサルさんのアイコンが出るはず。

monkey.jpg

図5. おさるのアイコンほいさっさ

この状態になったらつぎはAutoPagerizeのインストールです。AutoPagerizeのページにいって、
わかりにくいけど右側の黒い「Install this script」を押し、出てくるダイアログで
「インストール」を押します。

autopagerize-install.jpg

図6. AutoPagerizeのインストール

これにてインストール完了。これであなたもAutoPagerizestだ! (なにそれ)。AutoPagerizestのキミなら、2ちゃんねるをこえる日本最大の釣り堀との呼び声もたかいあのサイトも! ↓

komachi.jpg

図7. 発言小町でAutoPagerize中

おおっ。結構便利。かも? みなさんもごかつようあれー。

参考文献

  1. Firefox Add-ons – Greasemonkey
  2. AutoPagerize
  3. AutoPagerizeのSITEINFOのページ