web開発とrubyに関するhokousyaのブックマーク (11)

  • Apache リバースプロキシ→ Lighttpd + Rails の設定方法 - WebOS Goodies

    今週はあまり時間がないので、 Rails 関連の Tips でお茶を濁すことにします。 以前投稿した Apache のリバースプロキシの設定方法という記事では、 Apache ベースのサイトの一部として Rails アプリケーションを公開する方法をご紹介しました。今回はその mongrel を Lighttpd で置き換え、 Apache → Lighttpd + Rails という構成にする設定をご紹介します。まあ、仕事でやった作業の覚え書きです。 Lighttpd ならパフォーマンスも出るので、一般公開するサイトでもじゅうぶんに使える方法です。 Apache で運用しているサイトに Rails アプリケーションを組み込みたいという際は、参考にしていただければと思います。 なお、 Lighttpd や Ruby fcgi ライブラリのインストールは OS のパッケージ管理コマンド等で一発

    hokousya
    hokousya 2008/12/04
    Apacheのリバースプロキシを使ってLighttpd+Railsのアプリケーションを公開する方法です。
  • Rails のフォームで配列形式のデータを扱う方法 - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 「今週の話題」を除くと、すごく久しぶりの投稿になってしまいました。いろいろあってなかなか時間が取れなかったのですが、やっと復活できそうです。ネタはだいぶ溜まっているので、頑張って書いていこうと思います。 さて、日ご紹介するのは Rails アプリケーションで配列構造のデータを扱うフォームに役立つ Tips です。 Rails は特殊な name 属性を指定するこ

    hokousya
    hokousya 2008/09/17
    配列として params に変換されるフォームの書き方です。
  • Ruby on Rails で郵便番号検索 - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。

    hokousya
    hokousya 2008/08/13
    日本郵政のデータをインポートするRakeタスク、表記の揺れに対応するようファインダを拡張したモデルなど。
  • Rails + BackgrounDRb でメール配信 - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 皆さんご存知のとおり、 Rails をはじめとする多くの Web アプリケーションフレームワークは、リクエストベースで設計されています。つまり、すべての処理は HTTP リクエストごとに起動され、それにレスポンスを返すことで終了します。ほとんどの場合、これは非常にうまく機能しますが、タイムアウトが発生してしまうような時間のかかる処理、一定間隔で定期的に起動したい処

    hokousya
    hokousya 2008/07/08
    バックグラウンド処理を簡単に実現できる Rails プラグイン「BackgrounDRb」のご紹介です。
  • Ruby で bash の特殊文字をエスケープする - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 日は Ruby のちょっとしたユーティリティー関数のご紹介です。 Web アプリケーションを作っていると、ときには入力されたデータを引き渡して外部コマンドを実行したいときがあると思います。そのときに重要なのが、特殊記号のエスケープです。これを忘れると、 Web サーバー上で任意コマンドを実行されてしまう可能性もあります。 そこで、 bash が特殊文字として認識

    hokousya
    hokousya 2008/07/01
    信頼できない文字列を外部コマンドに渡すために、特殊文字をエスケープする関数を作りました。
  • ブラウザで Ruby on Rails 開発! Heroku を使ってみよう - WebOS Goodies

    Heroku は現在リミテッドβの状態なので、ユーザー登録を行うにはこちらのページでメールアドレスを登録し、招待メールが来るのを待たなくてはなりません。私が登録したときは 2 週間待ちだったのですが、現在はだいたい 1 日以内に招待が来るようです。ちょっと面倒ですが、ぜひサインアップして、 Heroku の素晴らしい世界を体感してみてください。 ・・・どうでもいいけど、サインアップのページにある看板はいったい。 無事にサインアップできたら、さっそくこちらのページから heroku にログインしましょう。すると、最初に以下のアプリケーション管理画面が表示されます。 heroku では同時に複数の Rails アプリケーションが開発できるので、この画面でそれらを管理するわけです。しかし、現在はひとつもアプリケーションが存在しませんので、新たに作成してみましょう。アプリケーションの作成は「Cre

    hokousya
    hokousya 2008/02/05
    Firefox 上で Ruby on Rails アプリケーションが開発できる Web サービス「Heroku」のご紹介です。
  • Ruby で OpenSSL の乱数生成を利用する - WebOS Goodies

    単純な乱数よりだいぶ良くなっていますが、それでも思ったよりシンプルですね。また、最後に MD5 をかけると、 ID の長さが固定されてしまう(鍵空間の広さを調整できない)という欠点もあります。短期間しか使わないセッション ID なら大丈夫でしょうが、永続的な ID としてはちょっと不安が残ります。 なにか Ruby で簡単に強固な ID を生成する方法はないかなぁ、と考えていたのですが、そういえば Ruby には OpenSSL バインドが標準で添付されていました。強力な暗号化には予測困難で偏りの少ない乱数が不可欠ですから、これは期待できますね。そんなわけで、 Ruby から OpenSSL の乱数生成器を利用する方法を調べてみましたので、日はそれをご紹介しようと思います。 調べてみたところ、 C 言語なら OpenSSL の乱数は RAND_bytes という関数で利用できるようです。

    hokousya
    hokousya 2007/03/23
    OpenSSLの乱数を使って予測しにくいIDなどを作る方法です。
  • UTF-8 エンコーディングの危険性の補足 - WebOS Goodies

    えー、昨日投稿した「UTF-8 エンコーディングの危険性」の記事ですが、なにを間違ったのか過去最高のアクセスを記録しています。その前の Ruby 用 JSON クラスの反響がさほどでもなく、今回も大したことないだろうと思っていたので、かなりびびってます(((゜Д゜;)))ガクガク。はてぶコメントでも多くのご指摘をいただきまして、私自身反省している点もあるので、少し補足しておこうかと思います。 昨日の記事の意図は、まず単純に不正な UTF-8 シーケンスの存在を知ってもらい、そして具体的な対策として、入力の水際で不正な UTF-8 シーケンスを潰してしまおうというものです。ここが説明の足りなかった部分ですが、入力段で HTML などのエスケープをしようということではありません。 UTF-8 の正規化は HTML などのそれと違って二重にかけても結果が変わりません。また、目的はクライアントの保

    hokousya
    hokousya 2007/02/23
    ありがとうございます。wcharサポートのない言語では文字列を数値配列として扱うことになるので、効率はむしろ落ちるように思うんです。言葉遣いは元記事でもご指摘いただきました。「正規化」が正しいでしょうか。
  • UTF-8 エンコーディングの危険性 - WebOS Goodies

    的に、まともな国際化ライブラリを使っていれば、上記のような不正な文字コードはきちんと処理してくれるはずです。実際、 Opera, Firefox, IE ともに適切にエスケープしてくれました。また、 UCS に変換した後にエスケープ処理を行うことでも対処できるかもしれません。しかし、複数のモジュールで構成されるような規模の大きいアプリケーションでは、そのすべてが適切な処理を行っていると保証するのも、なかなか難しいかと思います。ここはやはり、すべての外部入力に含まれる不正なシーケンスを、水際で正規化するという処理を徹底するのが一番かと思います。 例えば Ruby の場合、不正な UTF-8 コードを検出する最も簡単な方法は、 String#unpack を使って UCS へ変換してみることです(昨日の記事への kazutanaka さんからのはてぶコメントにて、 iconv でも同様なこ

    hokousya
    hokousya 2007/02/22
    UTF-8検証の必要性。なるほど、確かに正規化と呼ぶのが正しい気がしますね。時間を見て修正します。ありがとうございます。
  • Ruby 用 JSON パーサーを更新、 JSON への変換も追加 - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 以前公開した前バージョンにはたくさんのアドバイス、リンクなどいただきまして、ありがとうございます。少々時間が経ってしまいましたが、あれからいろいろと勉強しまして、 strscan なる便利なライブラリが Ruby の標準ライブラリに含まれていることも知りました。それらをきちんと使えばコードをだいぶシンプルにできそうだったので、思い切って書き直してみました。まだまだ

    hokousya
    hokousya 2007/02/21
    JSON生成、UTF-8検証機能、サロゲートペア対応などを追加しました。「スケーラブルWebサイト」興味深い内容なので即買いしました(笑)>kazutanakaさん
  • Ruby で JSON パーサーを書いてみました - WebOS Goodies

    WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。

    hokousya
    hokousya 2006/12/27
    evalを使わない(たぶん)フルスペックのJSONパーサーです
  • 1