Ruby による情報科学入門
今、一生懸命読んでます。コンピュータサイエンスをマジメに勉強した事の無い人や SICP に挫折した人にはちょうどいいかもしれません。演習問題の解答例が直後に載ってるのがいいです。さすがは教科書。
解答例のコーディングスタイルが微妙におかしいのは、丸写ししないようにかなぁ?
Posted in Ruby | コメントはありません |
rcodetools が emacs 上で動かない
解決したのでメモっとく。
環境変数 GEM_HOME を設定するなどして、標準のインストール先と違う場所に Gem パッケージをインストールしていると emacs 上から rcodetools が動かない。
とりあえずシステムに rcodetools をインストールしてさっくり解決。 多分、emacs にわかるように Gem 関連の設定を環境変数経由でやればシステムに rcodetools をインストールしなくても 行けそうな気がするけど、試してない。
Posted in Ruby | コメントはありません |
るりまの今月の進捗
我ながらなかなか頑張ってる。
- RubyGems 一通り書いた。けどまだ書いてないメソッドエントリがあるし説明不足。todo タグも消してない。
- Rake 一通り書いた。todo タグを消してない。
- minitest 書き始めた。意外と量が少ない模様。
最新ドキュメントは http://doc.okkez.net/ から (毎日 01:00 ころ更新予定)
うまく行けば今週中に上記三つを完了させられるかもしれない。
Posted in Ruby | コメントはありません |
Ruby で Church 数を書いてみた
今日は SICP 読書会だったので復習がてら Ruby で書いてみた。 分かってしまえば簡単に書けた。
Posted in Ruby | コメントはありません |
nginx + webrick でるりまを公開する方法
nginx と webrick を使用してるりまを公開しているので手順と使っているスクリプトを公開しときます。
nginx の設定は以下。
Debian 風に設定ファイルが分かれているのでそれ以外の人は適当に想像して読み替えてください。
こんな感じです。
まとめ
webrick を 10 個も起動しているのがちょっとダサいところなんですが、まあメモリもたくさん積んでいるのでいいのかな、と。
もっといいやり方があったら教えていただけるとうれしいです。
Posted in Ruby, Debian | コメントはありません |
るりまを書くのに工夫していること
試しに見てみるサーバ。
るりまの DB をコンパイルする。
全てのバージョン。
こんな感じです。
Posted in Ruby | コメントはありません |
Typo のバグ
コメントが有効になりました のコメントで指摘された件ですが、どうやら Typo のバグのようです。
RAILS_ROOT/config/routes.rb にあるルート定義を行っている方法が古いようです。
たぶん、名前付きのルートの部分を全面的に直さないといけない気がします。 とりあえず、上で指摘されていた部分は先頭(追加場所は未検証)
を追加すれば直りました。
本家にバグレポして直してもらう必要があるようです。
Posted in Ruby | コメントはありません |
るりま進捗 @ RubyGems
るりまで RubyGems のドキュメントを書いてます。
あと 23 ファイルで一通り終わります。 まだ、内容の精査は必要なのだけど、 RubyGems のリファレンスが日本語で読めるのはるりまだけ!(と思いたい)
Posted in Ruby | 2 comments |
nginx + thin or Apache + fcgi
両方試した結果、しばらく後者で運用することにしました。
理由は以下。
- サーバマシンのメモリが 256MB しかない
- thin はプロセスごとの消費メモリが 50MB から 100MB 程度
- Rails アプリを三つ動かしてるので thin のプロセスが多い (6プロセス)
そんな感じでメモリの消費が多くてスワップしまくりだったのが遅い原因でした。
Rails アプリで nginx + thin を使うときは thin のプロセス数 * 100MB を以上搭載するのが目安になりそうです。
Posted in Ruby | コメントはありません |
nginx + thin
やってみた。
色々と試行錯誤した結果なんとか安定したのでその手順をメモしておく。
インストール
nginx からソースを落としてビルドする。
Thin - yet another web server は RubyGems でインストールする。
設定
thin の設定はコマンドラインでサンプルファイルを生成して、 /etc/thin 以下へコピーするだけ。 サーバの数を増やしすぎると、パフォーマンスが悪くなるので程々にしておく。 うちの場合は Rails アプリが三つあるのでそれぞれに二つずつサーバを起動するようにした。
# 三つずつにした場合は極端にパフォーマンスが悪化した。
nginx の設定は Main - Nginx Wiki を参照して行う。
移行
- Apache の設定を変更 (Listen 8080 にする)
- thin を起動
- Apache を再起動
- nginx を起動
- 動作確認
以降の設定変更は気をつける。
- thin -C 設定ファイル restart
- kill -HUP nginx の pid (pid ファイルを参照) ** すぐには反映されないので注意する
- Apache は普通に再起動する
はまったポイント
- proxy の設定
- rewrite の設定
- 設定の再読み込みが出来ていなかったこと (kill -HUP pid)
疑問点
- 特定のアプリで prototype.js の読み込みはすぐに終わるのにその後の動きが鈍い ** 読み込まなければ速い
Posted in Ruby, Debian | コメントはありません |
mongrel-1.1.5-java と mongrel-1.1.5
JRuby で mongrel を動かしたくて mongrel-1.1.5-java を入れたけど動かなかった。
それをそのまま放置していたら普通の Ruby で mongrel が動かなくて焦った。 mongrel-java を消したら解決したけど、焦った。
たぶん、原因はロードパスがおかしくなったことだと思う。
ちょっとこれ以上はわからない。。。
Posted in Ruby | コメントはありません |
JRuby on Rails with Tomcat
とりあえず、動いたので手順だけ。
必要なもの。
- JRuby 1.1.3
- Tomcat6 (Tomcat5.5だと動かなかった)
- Gem (必要なものを入れる) ** activerecord-jdbc-adapter (0.8.2) ** activerecord-jdbcmysql-adapter (0.8.2) ** activerecord-jdbcpostgresql-adapter (0.8.2) ** activerecord-jdbcsqlite3-adapter (0.8.2) ** jdbc-mysql (5.0.4) ** jdbc-postgres (8.2) ** jdbc-sqlite3 (3.5.8) ** warbler (0.9.10)
- database.yml を必要に応じて編集する
こんな感じでとりあえずは動いた。 けど mongrel の二倍位遅かった。
Posted in Ruby | コメントはありません |
REXML DoS 脆弱性対策
REXML DoS 脆弱性対策をしようとして typo があったため落ちてましたorz
落ちてる間に見ようとした人達がもしいたら、ご迷惑をお掛けしました。
Posted in Ruby | コメントはありません |
Hash#default_proc をあとでセットする方法
Hash#default_proc= がなかったのであるハッシュにあとで default_proc をセットする方法を考えてみました。
以下のようにするとうまく行きます。
Posted in Programming, Ruby | コメントはありません |
Hiki on Rack 2
続き。
とりあえず、ページを編集できるところまで確認。 作業手順をまとめると以下のような感じ。
- hiki.ru を用意する。
- hiki.rb を用意する。
- Hiki::App クラスを作って call メソッドを定義する
- @cgi を使っている部分を全て @request に変更する
- params[‘hoge’][0] を全て params[‘hoge’] に変更する
- ENV を使用している部分を @request.env に変更する
- クッキーを使用している部分を修正する
- セッションキーだけなので簡単
- print している部分を Rack::Response 的なものを返すように変更
- [ヘッダー,ステータス,ボディ] な配列で OK
- 面倒なのでヘッダーとボディだけ返してステータスは常に 200 にしといた
- Rack::Lint によるとヘッダーに Status を入れてはいけないらしいのでそれを入れてる部分を削除
- その他こまごまとした修正が必要。
- CGI に依存している部分とか、ロードパスとか。
まとめ
頑張ればできる。
いや、でも Hiki のソースも意外とひどいというのがわかった。統一感がないというかカオス一歩手前というか。
Posted in Ruby | コメントはありません |
Hiki on Rack
Hiki - Hiki -Front Page- を Rack: a Ruby Webserver Interface に載せる実験中。
概ねうまく行きそうな感じだけど、セッションまわりに苦戦中。あと、たぶんプラグインを全部修正しないといけないのが辛いかもしれない。
ちゃんと出来たら公開する予定。
Posted in Ruby | コメントはありません |
第29回 Ruby/Rails勉強会@関西
行ってきました。
ちょっと睡眠不足気味だったので各セッションの記憶はあまりなかったりします。
なので今回は行ったという記録のみ残しておきます。
Posted in Ruby | コメントはありません |
RSpec で transaction のテスト
Yuya さんのヒントをもとにしてこんな風にしてみました。
sqlite3? は spec_helper に定義した。ヘルパーメソッド。 SQLite3 だとトランザクションの入れ子が出来なかった(例外が発生する)のでこうしてます。
一応 shouldnotreceive で特定の処理から先には進んでないことは確認しているし、 エラーメッセージも確認しているのでこれでテストとしては良さそう。
あとは、実装コードの最初の方で呼んでる処理をモック化すればいいと思う。
これをモック化すると、通しのテストはどうすればいいのだろう、というのが今の疑問。
Posted in Programming, Ruby | コメントはありません |
アンケートのデータ修正しました
http://q.okkez.net/ の第 28 回 Ruby/Rails 勉強会のアンケートで選択肢が英語になっていたデータを修正しました。
簡単なスクリプトを書いて script/console にコピペして実行した。 ちょっと複雑な修正なら SQL 書くより早いしわかりやすいね。
一部のデータがおかしくなってしまったのは SQL 書いて修正しましたけど。。。
多分、原因は私が使ってる Iceweasel に日本語言語パックをインストールしていなかったためだと思います。 次に同じようなミスがあった場合はすぐに修正できそうです。 r
Posted in Programming, Ruby | コメントはありません |
Rack 使ってみた
諸事情で web アプリを Rails を不使用で書く必要があったので cgi.rb の代わりに Rack を使ってみた。
主に上記を参考にして書いた。
ソースコードは整理して色々名前とか変えたら公開できるかもしれない。
感想
意外と短い行数で書けてびっくりした。 Rails の劣化版くらいなら一日くらいででっちあげられそうな感じ。
Posted in Programming, Ruby | コメントはありません |
第 28 回 Ruby/Rails 勉強会
日本Rubyの会 公式Wiki - 第28回 Ruby/Rails勉強会@関西
行ってきました。
エラトステネスの嵐—Rubyの集合演算を活用する by こなみさん
いろいろやってたらあまり聞けなかった。残念。
git - 分散バージョン管理システム by 舘野祐一さん a.k. id:secondlife
かわいいよ git かわいいよ。
今、作ってる某課題の管理はこれでやってみようかなぁ。
git-svn の使い方とか調べたい。
Ruby 初級者向けレッスン 第 22 回 by okkez さん
今回は irb について。
演習の後半は irb 関係ない感じでいきました。
演習の解答例は wiki にアップしたのでそちらを参照してください。
とりあえず、うちの ~/.irbrc です。refe2 のところはあまりうまく動かない。 まともに実装しようとすると bitclust を require してごにょごにょする必要があったりなかったりする。
Posted in Ruby | コメントはありません |
RubyKaigi2008 extra
http://i.loveruby.net/d/20080629.html
青木さんが大変な中、発表してくれたのにそんな裏側があったなんて。 外野の戯れ言には負けてられないので、頑張る。
来年はもっとよいリファレンスマニュアルにしてやるぞ。
Posted in Ruby | コメントはありません |
KansaiWorkshop#27
行ってきた。@京都女子大学
関数型言語 Ruby by keisuken さん
最初ネットワークに全くつながらなくて、ust 配信に失敗してた。 なので、内容の方があまり聞けなかった。
途中から真剣に聞いたけど、わかりやすい説明で非常によかった。
日本 Ruby 会議 2008 参加報告 by いまいさん
Matz のバランスボール写真が素敵だった。多分次のるびまの著者近影はアレになると予想。
あと、あゆさんの営業活動が素晴らしかった。
Ruby 初級者向けレッスン 第 21 回 by okkez さん
オブジェクト指向。
ポリモルフィズムの説明のところが、やっぱり引っかかった。
初級者レッスンに対するアンケートの回答は全部読んでいるので、次回以降改善されるかもしれません。
オープンソースとビジネスの実際 by かずひこさん
京都大学でも聞いたのであとで書く。
Posted in Ruby | コメントはありません |
RubyKaigi2008 2nd day
2日目。
午前 1
arton さんの発表は arton さんが普通にマイペース過ぎておもしろかった。 typo に気付かない arton さんが素敵。「うしろー、うしろー!」
Ruby で出来たアプリケーションを活用してお仕事するお話。 去年と同じかなぁーって思っていたら、さらに参考になる話だったのでいい意味で期待を裏切られた感じ。 使ってるツール自体は、自分も使ったことのあるものだったのでわかりやすかった。
IRC で調子に乗りすぎて反省。 これも、去年と似てるのかなぁと思ったらそうでもなかった。 今後の erb に期待。
午前 2
matz を説得する方法は、一般的に応用が出来そうだと思った。 自分のしたいことを正しく相手に伝える必要があるのだと思った。
るりま。青木さんのセッション。 コミット数ランキング 2 位。いつか追いつきたいけど多分無理。 そんなにたくさん文章を書いているわけでもないのですが、今後は細かいフォーマットのチェックとかバージョン間の 動作の違いとかに気をつけて書着たいです。 あと、るりまを書く人向けの用語集は整備した方が、今後参加する人は書きやすいのかしら?
MacRuby の話。 デモがよかった。あと、自分は mac 持ってないけど、試してみたくなった。
午後 1
REST。Ruby と REST は相性がよい。 、 大場さんがボケで高井さんがボケでした。 アドリブが多かったらしく、大変そうでした。 Ruby でやったプロジェクトの FP 計測結果には興味があるのだけど、企業秘密らしく公開してもらえなかった。 いつかそんな情報が気軽に共有出来るようになったらいいなと思いました。
午後 2
iKnow! の舞台裏。 スケールさせるのが大変なのがよくわかった。あと OpenID のせいで天然 DDoS されて困った話とか。
食べログ。 おいしいポジションにいる人の話。 大規模サイトでいかにしてスケールさせたかと言う話。 食べログでは、ハイスペックサーバを少数精鋭で運用するポリシーらしい。 ここも、MySQLを使っていた。
携帯プラグインの話。 携帯向けサービスは面倒なのがわかっていたので避けていたけど、やっぱり面倒だと再認識した。
午後3
どのセッションもあまり聞かずに、企業ブースめぐりなど。 多目的ホールで、セッションやってるときにブースを回るのが困難であることがわかった。
Closing
今年の総括など。 いつか Regional RubyKaigi が行われるらしい。
RejectKaigi and Reject RejectKaigi
RejectKaigi と Reject RejectKaigi の場所が近すぎでわけわからないことになっていた。 正直、 Reject RejectKaigi は要らないと思った。
かくたにさんの RegionalRubyKaigi の話は詳しく聞きたかった。いつかどこかに詳細が公開されるのを期待して待つことにしよう。
まとめ
始まる前は、「メインセッションが去年と同じだなぁ」と思っていたけど、実際はそんなこと無くてパワーアップしていた。 結局、ほとんどサブセッションは見てなくて、メインホールに張り付いてた感じ。ブースもほとんど手伝わなくて、ちょっと申し訳なかった。 ust 中継は文句言っている人がいたけど個人的には良かったと思う。 IRC は翻訳用と、ツッコミ用は分かれてた方がいいのではないかと思った。
最後に、写真のことでちょっと心配なことがあったけど撮った人の良心に期待する。
知らない人の写真を撮った人は、その人がweb上に公開される事を本当に迷惑だと思っていないかというのをもう一度よく考えてから公開してほしいと思います。
Posted in Ruby | コメントはありません |
RubyKaigi2008 0th day
前日入りしていたので、朝から行ったら、Ruby関西の人は誰もいませんでした。
裏シリコンバレーツアーで一緒だった友人にも再会して楽しい会話をした。 twitter でいつも見てるから久しぶりだけど、あまり久しぶりな感じがしなかった。
コードゴルフコンペがおもしろかったけど、コードゴルフに夢中でスポンサーセッションをほとんど聞いてなかった。 あと、ブースに人が来なかったなぁ。
コミュニティ紹介のコーナーでは、なんか無理矢理いれてもらった感があって、ちょっと申し訳ないことをした。 やっぱり、イベントごとにディレクタを決めてきっちりスケジュールを押さえていかないと、他が主催している大きなイベントに参加しつづけるのは難しい。
まわりのテンションについていけないうちに終わってしまった感じ。
明日はテンション上げて行こうと思う。
Posted in Ruby | コメントはありません |
KansaiWorkshop#27 on 2008-06-28
日本Rubyの会 公式Wiki - 第27回 Ruby/Rails勉強会@関西
もうすぐ開催されます。
今回はかずひこさんも久しぶりに登壇しますので、すごく楽しみです。
お時間のある方は、上記URIに申し込み方法が書いてあるので、そちらを参照の上、参加申し込みしてくださいね。
Posted in Ruby | コメントはありません |
るりまに検索機能とかいろいろ付きました
Posted in Ruby | コメントはありません |
Ruby1.8.7 で Ruby on Rails が
動かない。
Ruby1.8.7/Rails2.0.2 で動かない。
[ruby-dev:34939] で解決したと思ったけど、やっぱり動かない部分がある。
ActiveScaffold で動的に作成した Controller が動かない。ちゃんと調べてないけど どうやら色々なものが Enumerable::Enumerator を返すようになったのが問題らしい。
ActiveScaffold にパッチあてるしかないのかな。
Posted in Programming, Ruby | コメントはありません |
RSpec で rollback のテストを行う方法
色々と調べたり試したりした結果、以下の方法で妥協することにした。
RAILS_ROOT/spec/spec_helper.rb をコピーして RAILS_ROOT/spec/rollback_spec_helper.rb を作成して、 use_transactional_fixtures = false にする。
これで、ファイルごとに実行するテストはうまくいくようになる。
この方法は簡単なんだけど、 rake spec や rake spec:rcov でテストを実行すると rollback 関連のテストが必ず失敗する。
もっとうまい方法はないのだろうか。
Posted in Programming, Ruby | 2 comments |
第 26 回 Ruby/Rails 勉強会 初級者レッスン添削
添削しようと思って、日本Rubyの会 公式Wiki - 第26回 Ruby/Rails勉強会@関西 にトラックバックをしているサイトを見たけど、みんなそれぞれなりに上手に書いてるなぁと思った。
回答例は 日本Rubyの会 公式Wiki - Ruby勉強会@関西-15 を見てもらうことにしよう。
Posted in Ruby | コメントはありません |