irb(main):012:0> not "foo" (irb):12: warning: string literal in condition => false irb(main):013:0> not /foo/ (irb):13: warning: regex literal in condition => true 「!」でも同じ。 defined? は文字列を返す irb(main):018:0> defined? 1 => "expression" irb(main):019:0> defined? 1+2 => "method" irb(main):020:0> defined? :foo => "expression" irb(main):021:0> defined? "foo" => "expression" irb(main):022:0> defined? Array => "constant" どういう時に使う...
ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。 関連情報 InfoQ Japanはコンポーネントスクエアが運営しています システムに潜む性能問題や品質問題を簡単に見える化!「ENdoSnipe」製品紹...
WEBrickには、HTTPサーバーの機能が標準で装備されていますが、同時にHTTPプロキシの機能も搭載されています。 WEBrick::HTTPProxyServerというクラスがその機能を提供していますが、公式マニュアルにはまったく載っていません。 しかし、「第2回:基本機能の実装にチャレンジ!」で紹介したHTTPサーバーと非常によく似ているので、それをベースに簡単にHTTPプロキシを作ることが...
『 Railsに特化したmod_ruby的なものをつくったという話/『最大シェアを誇るApacheHTTPServerだが、Railsとの相性はあまりよくない。』←mod_rubyとrailsの相性がわるいだけでは? 』
Ruby, XML, Amazon使用したライブラリopen-urirexml/documentrss/maker RSS Parser※ RAA - ruby-amazon という Amazon Web Service を簡単に使えるライブラリも存在するが、単にリストを取得するだけなので今回は見送った。コードRSS 2.0 で出力する。RSS::Maker.make(version) で引数にバージョンを入れて指定する。Description にイメージと著者、出版日、価格を入れている。Author は複数タグあるため、カンマで結合...
『 Rails2.2からスレッドセーフになる模様. 』
『 ついにスレッドセーフか。プロセス多重起動は不自然な感じがしていたのでたいへんよいと思う。というかみんなプロセス多重起動による並列化って気持ち悪くないのかな。 』
多数の日本人プログラマーは、かなり前から知っていました。シアトルで開催されたRubyConf 2002に出席した者は誰も、ある陳列テーブルの光景を決して忘れないでしょう。そこには当時日本で発売中のRubyに関する本が1部ずつ、売り物としてではなく、啓蒙のために置いてあったのです。これが2002年のことであったと覚えておいてください。本は全部で23種類ありました。ですか...
restful_authenticationに権限(role)管理を追加して、実用的に利用するカスタマイズ例として、Restful Authentication with all the bells and whistlesを参考にいろいろ考えてみた。コードを読みながら、次第に以下のような疑問や考えが浮かんできた。 メール送信処理のきっかけに、なぜobserverを利用するだろうか? observerはコールバック(before_createとかafter_save等)を外部のオブザーバーオブ ...
named_scopeによるPagination を行うためのGemを作りました。 通常はwill_paginateを利用するほうがいいと思いますが、 :joinsを含む複雑なnamed_scopeを介してpaginationを行いたい場合には、 利用すると便利かもしれません。 pagination_scope 使い方 まず、モデルクラスの中でincludeします。 1 class Post 2 include PaginationScope 3 end これによって、Postク...
Ruby on Rails を簡単に日本語化する RailsJa, ActionMailerJa を公開しました。 プラグインをインストールするだけで、Rails と ActionMailer の日本語対応ができます。 経緯 現在の Ruby on Rails の日本語化の定番と言えば、Ruby-GetText です。 しかし、多国語対応ではなく、単に日本語対応したいだけであれば、少し大げさな印象がありました。 そこで、Ruby on Rails をカンタンに日本語対応できる...
Adhearsion - next killer app for Ruby? - O'Reilly Radar Adhearsion が VoIP における Ruby on Rails、つまり Ruby の次のキラーアプリになるぜ! とのこと。 Adhearsion は元々はここでも何度も紹介しているオープンソース PBX である Asterisk がキャズム越えできないことなどに対するフラストレーションから生まれたフレームワークで、Asterisk とは独立したデーモンとして動作しながら、Asterisk Gateway Interface ...
Railsアプリケーションでpaginationといえば、 will_paginate等のプラグインやGemを使うのが一般的だと思います。 しかし、named_scopeでjoinsを使った場合にうまく paginationができなかったので、 named_scopeだけを使ってpaginationする方法を考えてみました。 まずは以下のようなnamed_scopeを作ります。 以下の例はPostクラスで宣言される事を想定しています。 1 named_scope :paginate, pro...
あんま深く考えず valgrind を Ruby の head のテストに適用してみたところ、結構もにょもにょ漏れてるもんだなぁと気付いたので、いくつか修正してみたりしたのですが、その時案外困るのが、リークする最小のコードが簡単に作れない、ってことでした。 valgrind は C 言語的にどこで malloc を呼んだかは教えてくれるものの、 Ruby コードでどこだったかは教えてくれないからです。修...
Googleが公開したバイナリエンコード手法であるProtocol Buffersは、クライアントとサーバーの両方でシリアライズ形式を取り決めておき(IDL)、双方がそれに従ってデータをやりとりするようにします。 この方法では高速なデータのやりとりができる反面、IDLを書かなければならない、仕様を変えるたびにIDLを書き直さなければならない(あらかじめしっかりとIDLを設計しておかな...
『 Rails、リファレンス、チートシート、API/rake/Generators/Plugins/Migration/RJS 』
RubyKaigi2007 で、JRuby のセッションがあって、「Java のライブラリを Ruby から触れて便利だよ。ほらこんなに Swing 呼べた。」ってデモをやってたんですが、Perl の場合は Java のライブラリ触るの簡単なのか、という話。 CPAN の Java::Swing を使うと、Perl から気軽に Java の Swing library を呼ぶことができます。 サンプルコードは下記のような感じ。 use warnings; use strict; use Java::Swing; my $expressi...
小雨の振る中、秋葉原駅前というか、雨を避けてダイビル前に寄ったあたりに集まった。怪しい集団が飲物片手に集まっているので、ダイビルの守衛さんに「敷地内飲食禁止だよ」と怒られる。でも、どこまで公道でどこから敷地なのか不明。 今回は勉強会・懇親会ともに参加者が過去最高ということである。大阪の勉強会の大規模さと本格さには及ばないけれど、東京も盛り上...