Ruby

言語を選ぶ基準

前回のエントリで私は Ruby 党と言いながら Ruby を批判したかのようにもとれるので、改めて Web アプリにおける私の採用言語の選定基準(というほど厳密ではないが)について書いてみます。 まず、本番稼動環境がどういうところなのかというのが最大のポイ…

「今の」Java を見ていない人が「今の」Ruby を見て浮かれている(ようにしか見えない)

Ruby普及でNaClなど3社が提携、CodeGearのIDEを推奨 − @IT 私はもともと Ruby 党でありますが(サーバの保守などに Ruby スクリプトを多用してます)、ここ最近の Rails ブームには眉をひそめたくなります。というか OSJ さんは、ちょっと前までは PHP に傾…

Radiant CMS 0.6.5 以下から 0.6.6 以上にアップデートする方法

昨日のエントリのリンク先を見れなかった方、失礼しました。Radiant CMS のアップデートにもろに失敗してました。0.6.2からアップデートしてなかったので久々にアップデートするかと思い、最新版は 0.6.7 で、最後の数字しか違わないし、まぁ、ちょちょっと…

本当は Seasar の講習会をやりたかった(笑)

本日、山形県内の某所で、Ruby on Rails のハンズオン講習会の講師をやります。この講習会は二回目です。 でも私は、言うほど Ruby on Rails って好きじゃないんです(笑) たぶん外国産だから(笑) Ruby 自体は好き(笑) 正直、やるんだったら Seasar の…

Rails や S2* を使うのは「スウィート」だから

Java の Web アプリケーションフレームワークである「Click」はよくできていると思いますし、私はけっこう好きです。でも、その割には使う気になりません。それは、O/Rマッパや DI コンテナが別だからです。Click には Hibernate や Cayenne、Spring と連携…

Rails はレーサーミニ四駆みたいなもの

Ruby on Rails をしばらく触ってみて私が思ったのは、レーサーミニ四駆みたいだなぁってことです。 レーサーミニ四駆を知らない人はすいません。 今でこそミニ四駆というと、オンロード(というか専用コース上)を走るスピードマシンのイメージですが、今の…

Ruby の標準添付ライブラリをネイティブコードにしないのは何故だろう?

Ruby は遅いとよく言われます(一時ほどではないですが)。私も体感的に遅いと感じることもあります。ならば、Ruby はグルー言語としても優秀なんだから、標準添付ライブラリもネイティブコードにしたらいいんじゃないかと思うのですが、何故されないのでし…

Radiant CMS にフィルタを追加する

まず Radiant CMS 自体のインストール方法をまとめましたので参考にしてください。 Radiant CMS の導入 Radiant CMS にフィルタを追加するには、Radiant CMS 自体が Rails でできているので、Rails のプラグイン機構を利用すると簡単です。 たとえば、「hoge…

Radiant CMS を入れてみた

私は「CentOS で構築する自宅サーバ」というサイトを運営しているのですが、どうも管理に手間がかかるので CMS を使うことにしました。 それで今回採用したのは、Radiant CMS というもので、Ruby on Rails で作成された CMS です。これは Ruby の公式サイト…

Ruby on Rails で CAPTCHA を行う

長年メンテナンスしてきた幾多の掲示板 CGI がスパムに犯されているのを目の当たりにしているので、最近は CAPTHCA に大注目の私なのですが、今日は、Ruby on Rails による Web アプリケーションに割と簡単に CAPTCHA を導入する方法を紹介します。 使うのは…

Ruby 1.8.6 リリース

CentOS 4.x の標準パッケージの Ruby のバージョンは 1.8.1 なんですよね。ちなみに、これって 2003年12月25日にリリースされたものです。ふるっ。 Ruby on Rails は 1.8.2 以上が必要ですから、CentOS で Rails を動かしたいなら必然的に手動でインストール…

Apache + lighttpd で Rails を動かす。

しばらく Ruby 界から離れていたのですが、最近舞い戻りました。Ruby on Rails が流行り、Ruby にあたる脚光も強くなってきている昨今ですので、Ruby の情報(ぐぐって出てくる情報)の質も上がっているのだろうと思っていたのですが、相変わらずイマイチな…

新 gem でインストールしたライブラリを require するには

gem を新しくしたら、この間紹介した方法では、警告が出るようになってしまいました。相変わらずのドキュメント不足(あるのかもしれないが見つけにくい)で多少戸惑いましたが、次のようにすれば OK でした。 require 'rubygems' gem 'sqlite3-ruby' require…

gem でインストールしたライブラリを require するには

これはひどいと思いました。SQLite3/Ruby を触っていて気づいたのですが、たぶん、tar 玉から野良ビルド・インストールすると require 'sqlite3'で require できるものが、gem でインストールした場合は require 'rubygems' require_gem 'sqlite3-ruby'じゃ…

LoginEngine がちょっと変わっていた

Rails のすてきなところのひとつに、いわゆる「ログイン処理」の仕組みがアドオンとはいえ手軽に利用できるようになっているということが挙げられます。一方 Java 陣営、特に Struts や JSF は「んなもん、J2EE コンテナの機能を利用しろよ、そのほうが安全…

エラーの数え方が違う!

今回も Ruby on Rails の話です。 たとえば、@hoge というModelオブジェクトが入ったインスタンス変数があったとします。これは以下のようにして作られたとします。 @hoge = Hoge.new(@params[:hoge]) これはフォームから入力された値を元にオブジェクトを作…

selectボックスとAjax

mixi とかでプロフィールを入力すると、都道府県をselectボックスから選ぶとそのとなりの市郡selectボックスが変わります。mixiの場合はAjaxじゃないんだけど、RoR+Ajaxでやってみたくて調べてみました。 とりあえず「Rails' Wiki - gdvfhfmb」この辺とか参…

Railsって凄いですね

今更ながらにRuby on Railsを試しています。思いのほか凄いソリューションですね、コレ。でも、WEBRick上で試しているせいか、ものすごーく遅いです。

ERBをCで書いたら需要ある?

最近Rubyの拡張ライブラリの作成にはまっているわけですが、ERBこそ、Cで書くべきだと思うのですよ。結構View層にERBを使ってるパターンがあると思うのですが、いかんせん遅い。Cで書いたら需要ありますかね? と書いてはみたが、それってerubyか。でもERBの…

今すぐ欲しいものを作るならRuby、いつか欲しくなるものを作るならJava

久しぶりにRubyでごりごりとCGIを書きました。それで思ったのですが、「今すぐ欲しいものを作るならRuby、いつか欲しくなるものを作るならJava」ということです。 ちょっとRubyのブランクがあったので知らないだけなのかもしれませんが、例えば「これ、世界…

Ruby/SALTのこれからの修正点メモ

とりあえずは以下の点はすぐに対応したい。 ERB.newと同様にテンプレートの汚染チェックを行う。 ID属性を表示しないモードを作る(特にケータイコンテンツを作る場合には必須) 無駄な空白とか改行とかを消すモードも欲しいけど遅くなるかなぁ

もっと実用的なベンチマーク

今度は、Apache Benchで計測。100Base-TXでつながれたクライアントからアクセスします。

最終的なパフォーマンス

例によって(?)、Yahoo! JAPANの重量級HTMLのパース&レンダリング対決。

ついでにerubyと比較

驚きの結果が出た。

できた!

だいたい使えるレベルになりました。私は仕事ではCでCGIを組むことが多いので、Cライブラリとしても十分使いやすいように配慮しつつ作りましたので、コアライブラリはlibsalt.aとして、Ruby用のインタフェースを作ってRuby/SALTというような呼び名にしようか…

ということでHello, world!

作成中のYet Anotherなテンプレートライブラリの名前は「SALT」にしました。RAAにもこういう名前のがなかったのでよしとしよう。Simply Accessible Light Template。んー、略称から考えたからフルネームが変だ(笑) で、おきまりの Hello, world! ぐらいは…

さらにチューニング

YARVが構文解析を再起型からスタック型にして高速化したとかいう記事を見かけたので、私もHTMLパーサを再起型からスタック型に書き直してみた。結果、0.0046秒になった。YahooのトップページのHTMLが死ぬほど(ってことでもないか。容量は53KBもあるけど)複…

だいたいできてきた

目鼻がつき始めたのでパフォーマンステスト。動き的には テンプレートを読み込む 似非DOMツリーを構築 そこからHTMLを出力 というもので、一見無駄っぽい(ってか無駄だらけ)がCなので速い(ハズ)。ということで、Yahoo! JAPANのトップページをテンプレー…

そしてチューニング

目論見としてはid属性を持つタグに対して何かしてやろうということで、amritaとかmayaaみたいな考え方なんですよね。ということで、id属性を持っていないならとことん無視しようとということでチューニングしたら、何もしないときはまさしく何もしないような…

拡張ライブラリ書いてます

Yet AnotherなHTMLテンプレートライブラリを書いてます。とにかく速いのが欲しくって、少し難儀しながらもCでゴリゴリ書いてます。せめてC++を使えば、自分的には楽なのですが、gccとg++ではロードモジュールのサイズにかなり開きがあるみたいですし、やっぱ…