ruby

Rubyで文字列中の数字をインクリメントする

"012345".gsub(/\d+/) { |num| num.to_i+1 } #=> "123456"

RVMでRails3環境を作る

Ruby1.8.7とRails3という環境をRVMを使って作る $ rvm install 1.8.7 #=> Ruby1.8.7をインストール $ rvm use 1.8.7 #=> Ruby1.8.7を使うことにする $ ruby -v ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] $ rvm gemset create rails3 #=> rails…

第2章 火曜日メソッド

Ruby東海 Wiki - 第15回勉強会で司会を務めるので、そのメモ Javaなどのコンパイラによる静的型チェックが行われる静的言語に対し、PythonやRubyのような動的言語ではそのようなことは行われない 動的言語では存在しないメソッドを呼び出すようなコードを書…

Rails3の学習用サイトメモ

2011/10/31 参考書籍を追記また習得するころには新しいバージョンになってるんだろうな・・・ これだけ読めば本は要らない Ruby on Rails Guides (edge) 基本的な使い方から、コメント、タグつきのブログアプリケーションを作るまでのチュートリアル Ruby on…

メタプログラミングRuby(火曜日・2.2)

さあ火曜日 「この重複コードを排除するには2つの方法が考えられる」と、ビルは自慢げに言う。 P74 今日もビルは絶好調みたいですね!次のページでは若いころの話とかしちゃってるし 2.2.1 メソッドを動的に呼び出す sendメソッドでメソッドを動的に呼び出す…

Nokogiriの覚書

使い方をいつも忘れるのでメモ 詳しい使い方は以下のURLが素晴らしい Nokogiri(公式サイト) スクレイピングのためのNokogiri利用メモ - それはそれ。これはこれ。 基本 Nokogiriのノードオブジェクトを得る require 'rubygems' require 'nokogiri' require '…

メタプログラミングRuby(月曜日)

面白かったところ、知らなかったことなどのメモ Ruby東海でメタプログラミングRubyの読書会が始まるのでその予習 Rubyのクラス宣言 3.times do class C puts "Hellow" end end これがclass Cを3回宣言したということじゃないということ つまりRubyにおけるcl…

変数に入ってる値から動的にインタンスを生成

メモ irb(main):034:0* class HelloWorld irb(main):035:1> def initialize irb(main):036:2> p "Hello World" irb(main):037:2> end irb(main):038:1> end => nil irb(main):039:0> class_name = "HelloWorld" => "HelloWorld" irb(main):041:0> eval("#{cl…

Rails3のscaffoldを試す

目的 データベースのテーブルをつくり、CRUD処理ができるようにする。 所要時間 5分 作業 ショッピングモールのようなものを作ることが目的なので、まず商品のマスタを管理できるようにします。 テーブルをつくり、商品のCRUD処理を自動生成する とりあえず…

WindowsにRails3環境を構築(Ruby1.9.2)

目標 WindowsXPの環境にRuby1.9.2とRails3をインストールし、Rails3アプリケーションが動作することを確認する。 所要時間 5分ぐらい(RDocのインストール時間による) 目次 Ruby(とrubygems)のインストール SQLite3のDLLのインストール Ruby on Rails3のイ…

Ruby1.9.2に乗り換えた(1.9はやい)

RubyKaigi2010にも参加したし、1.9対応のRuby on Rails3も正式リリースされたということなので、1.9に乗り換えることにした。記念にフィボナッチ、FizzBuzzに次ぐ三大非実用関数「竹内関数」で1.9に乗り換えた幸せを確認してみる。 $ rvm use 1.9.2-preview1…

Ruby on Rails製のCMS「Radiant」を試す

http://www.ruby-lang.org/で利用されており、Railsで作られているというCMS「Radiant」を試してみた。 単純で使いやすそうだが、画像管理などもプラグイン(extension)で行わなければならないのは不便だし、ここまで低機能なものをわざわざRailsで動作させ…

Rakeに入門

やれば簡単そうだけど、いままでやってなかったRakeについて調べた。 練習としてsubversionのリポジトリからコードをチェックアウトして、シンボリックリンクを張りなおすというcapistranoっぽい作業を自動化する。 やりたいこと ファイル構成はこんな感じ -…

Chunky Bacon

ホワイの(感動的)Rubyガイドオリジナルはこっちにある http://www.aoky.net/articles/why_poignant_guide_to_ruby/chapter-3.html

「dRubyで並列処理 - ohacの日記」を読んだ

dRubyで並列処理 - ohacの日記をいう記事を見たのですが 自分の読解力不足だったので時間をかけて読んだ。 面白かったのでコメントをつけて紹介させて頂きます。 なにか このサンプルコードは500万回の疑似乱数の中から最も0に近い実数を見つけだすというプ…

超簡易HTTPポート監視

アクセスできなかったら例外 require 'open-uri' loop { open('http://www.yahoo.co.jp'){|f| raise f.status.to_s unless f.status[0] == "200" } sleep(30) } はてなブックマーク数も気になる人用(今の僕) require 'open-uri' uri = "調査したいアドレス…

Debian etchにソースからrubygemsを入れる

wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz tar vzxf rubygems-1.3.6.tgz cd rubygems-1.3.6 ruby setup.rb ln -s /usr/local/bin/gem /usr/bin/gem普通はここで終わり。Rubyもソースコードから入れている場合はzlibが入っていな…

レシピ2.1

RubyのlambdaとProc.newは凄くにてるけど、少し違う 同じ挙動 irb(main):012:0> square = {|x| puts x**2} SyntaxError: compile error irb(main):016:0* square1 = lambda {|x| puts x**2} => #<Proc:0x00002ab8c198d420@(irb):16> irb(main):017:0> square1.call(2) 4 => nil irb(main):021:0</proc:0x00002ab8c198d420@(irb):16>…

AI用のライブラリ「AI4R」

Ruby用の人工知能ライブラリ「AI4R」というのがあるのでサンプルを動かしてみた。AI4Rはニューラルネットワークや遺伝的アルゴリズム、決定木などのいくつかのAIアルゴリズムが実装されている人工知能用ライブラリです。 gemで提供されているので gem instal…

brainf*ckでジョジョ言語

CSNagoya3周年記念の発表で使ったネタ言語。 ジョジョ言語 バージョン3です。 タイトルでピンと来なかった人はwikipediaのbrainfuckの項目などをご覧下さい。 賢い人がバージョン6を作って素数をカウントするなどしてくれたらいいと思います。 特徴 バトル風…

RubyでBrainf*ck

チューリング完全って言ってみたかっただけ。Ruby1.8.7から動くはず $KCODE = 'u' class BrainF_ck class ProgramError < StandardError; end def initialize(src) @tokens = src.scan(/./) @jumps = analyze_jumps(@tokens) end def run tape = [] pc = 0 c…

Rubyで相対URLから絶対URLを求める

URIというライブラリを使う require 'uri' URI::join('http://example.com/a/b/foo.html','bar.html').to_s #=> http://example.com/a/b/bar.html

rvmでRubyのバージョンが切り替わらない(解決)

$ ruby -v ruby 1.8.5 (2006-08-25) [x86_64-linux] $ rvm use 1.9 <i> Now using ruby 1.9.1 p376 </i> $ ruby -v ruby 1.8.5 (2006-08-25) [x86_64-linux] なんでなの?rvmのバージョンは0.0.999。 ruby 1.8.5はaptitudeでいれたruby 追記(解決) インストール後…

ruby1.8でメソッドキャッシュが無いとどれぐらい遅くなるのか(竹内関数)

Ruby1.8はメソッド呼出のとき、スーパークラスをたどりながらメソッドの実体を検索するのだが、メソッド呼出のたびに検索するのでは効率が悪いのでメソッドキャッシュというキャッシュを使う。Rubyソースコード完全解説をCSNagoyaで読んでいたときに「キャッ…

ActiveRuby-1.8.7-p170前後でRailsが激重い件(解決)

windowsで久しぶりにRailsを触ったら激重になっていて驚いた partialを一個レンダリングするのに0.3秒とかかかるようになっていた。 原因はActiveRubyで、とりあえずはp72にすればよいらしい下記ページのコメント欄にp72へのリンクがある L'eclat des jours(…

SQLite3の例外が補足できない(未解決)

windowsのruby1.8.7でSQLite3を使っていて、UNIQUE制約に引っかかったときの例外 SQLite3::SQLException: SQL logic error or missing database: INSERT INTO (SQLがつづく) が補足できない。Rubyのコードは begin user.save rescue SQLite3:Exception=> e…