常識を覆すソートアルゴリズム ! その名も "quick sleep sort" ! を CoffeeScript で実装しました
Coffee キメるの気持ちいいですね.
Node.js で実行してください.
See also
Coffee キメるの気持ちいいですね.
Node.js で実行してください.
See also
この連休中, Ruby の Padrino というフレームワークを使って Web サービスを作っています.
その中で Cafe というモデルが必要で, それ用の管理ページを Padrino のコマンドで自動生成したところ, caves という名前のコントローラが生成されてしまいました.
なんとなくカッコ悪いので調べてみたところ, Padrino では, 名詞の複数形変化に, Rails の ActiveSupport を利用していることがわかりました.
ActiveSupport は, ロード時に String クラスに対していくつかのメソッドを追加しており, pluralize というメソッドで, 名詞の複数形への変換を行います.
pluralize メソッドについては, Padrino のコンソールを使えば簡単に確認できます.
(当然 Rails でもできるとは思いますが, 特に試してはいません)
このように, 不規則変化や, 数えられない名詞にも対応はしているのですが, cafe は caves になってしまいます.
そのあたりのルールがどう定義されているかは, ActiveSupport::Inflector.inflections を実行すればわかります.
いくつかルールが出てくるのですが, どうも以下のものが原因のようです.
どうやら **fe という名詞は複数形にすると **ves になる, というルールのようです.
確かに knife の複数形は knives ですし, wife の複数形は wives であり, 先の例でもそのようになっています.
ですが, このルールは cafe には当てはまらないので, ActiveSupport に教えてあげましょう.
Padrino においては, とりあえず ./config/boot.rb の中の Padrino.before_load ブロックの中に記述してみました.
上記の記述を追加したあとで, Padrino のコンソールを再起動し, 再び試してみました.
cafe がちゃんと cafes になるようになりました.
knife や wife のルールもちゃんと適用されています.
モデルの管理画面の自動生成時にも, ちゃんと cafes というコントローラが生成されるようになりました.
めでたしめでたし.
参考にしたページ
最近 .htaccess をいじることが多いんですが, 融通効かないなと思うことが多々あります.
.htaccess を Ruby で書くことができれば... ということでとりあえずプロトタイプ程度ですが作ってみました.
DSL の記述例
これが以下のように出力されます.
<IfModule mod_rewrite.c> RewriteEngine on <Limit GET> RewriteRule ^/user/(.*)$ /user.cgi?id=$1 [L,R] </Limit> </IfModule> Order Deny,Allow Deny from All Allow from 192.168.0.11 Allow from 192.168.0.12 Allow from 192.168.0.13 Allow from 192.168.0.14 Allow from 192.168.0.15
この .htaccess 自体はあまり気にしないでください.
DSL の構文を紹介するために適当に書いてます.
この DSL を実行するのに必要なプログラム, 使い方は以下の Gist をご覧ください.
DSL to write .htaccess files.
特徴
あくまでもプロトタイプなので, 全然実用レベルでは無いですが, 洗練させればなかなかおもしろいものになるんでしょうか.
DSL を作るためのノウハウが足りないので, いいアイディアをお持ちの方は, 是非 @yuya_takeyama まで教えてください.
とりあえずは dsl { ~~~ } を省略できるようにしたい...