Ruby

Mac OS X Snow Lopardでmysql2 gemをインストールする

Rails3(3.0.5)をいじっていたら、どうやらActiveRecordのmysqlアダプターがmysql2というgemを使うように実装がかわったらしいので、mysql2 gemを試行錯誤してインストールした。(いちおう書いておくと試したOSXは10.6.7) gemのインストール MySQL/Rubyのとき…

Rubyでハッシュ操作

配列の操作をまとめたので、ハッシュの操作もまとめておこうかなと思って書いてみた。基本的なデータ構造の扱いをマスターすることは日々のプログラミングのスピードアップに重要ですね。 リテラル hash1 = { "key1" => "value1", "key2" => "value2" } hash…

Rubyのhashメソッドをきちんと実装するとある1つの方法

前回のエントリの続き。こんなmoduleを作ってみました。includeするだけでまともなhashが使えるようになります。 module Hashable require "digest/sha1" def hash class_name = self.class.to_s hash_str = class_name hash_str.concat("={") if not define…

なぜRubyを使うのか

最近なぜPerlを使うのか?という問いに対するアンサーエントリーがいろんなところで見られますが、これは各言語のユーザがやってみるとその言語のポジティブな部分が見れていいのではないかと思いますので僕もLLでは一番気に入っているRubyをなぜ気に入って…

30byte FizzBuzz問題チャレンジ

i=0;loop{i+=1;m="";m<<"Fizz" if (0==i%3);m<<"Buzz" if (0==i%5);puts(m!=""?m:i)} 79が限界でした。(5分で挫折)ちょっとがんばったら75になった。そして71になった。 # 75 i=0;loop{i+=1;m=""<<(i%3==0?"Fizz":"")<<(i%5==0?"Buzz":"");puts(m!=""?m:i)} …

Rubyで数値の配列からバイナリ構造体をつくるには

1個前のエントリの対応で。 data = [0xA1, 0xB2, 0xC3] data.pack("C*")

Rubyでバイナリデータをヘキサダンプするには?

バイナリデータをコンソールに出力して確認したいときとかなどにたまに使う。 bin = "\xa1\xb2\xc3" p bin.unpack("H*").first #=> "a1b2c3" firstのあとにupcaseメソッドをチェインすれば大文字になる("A1B2C3"のように)

Rubyのhashメソッドをきちんと実装するには?

データ構造のハッシュテーブルにオブジェクトが利用されることを想定する場合、同値性を確かめるeql?メソッドと、同じ値のオブジェクトに対して実行すると同じ値のFixnumを返すhashメソッドを実装する必要があります。これを実装しておかないと、自分で独自…

Rubyのhashメソッドをきちんと実装するには?

データ構造のハッシュテーブルにキーとしてオブジェクトが利用されることを想定する場合、同値性を確かめるeql?メソッドと、同じ値のオブジェクトに対して実行すると同じ値のFixnumを返すhashメソッドを実装する必要があります。これを実装しておかないと、O…

るりまサーチべんり

http://rurema.clear-code.com/便利!Groongaすごそうなのでそのうち遊んでみたい。

リアクティブプログラミング

class ReactiveValue def initialize(&proc) @proc = proc end def value return @proc.call end end a = 1 b = 2 c = ReactiveValue.new{ a + b } p c.value #=> 3 a = 2 p c.value #=> 4 こういうことなんだろうか。

MacでローカルのRackアプリケーションを管理してくれるソフトを作りたい

RailsとかSinatraとか、Lokkaとか、RubyによるWebアプリケーション開発フレームワークがいろいろ出てきて便利なのだけど、ローカルでやるにはやはりapacheとかあげるのダルイから、コマンドでscript/serverとかrails serverとかするわけですが、ちょっと日常…

文字コードをUTF-8に変換しまくるスクリプト

Eclipseで新規にプロジェクトを作るとWinやMacだと文字コードがデフォルトでShiftJISになっている。普通はプロジェクトのデフォルトエンコーディングをUTF-8にソッコーで変更するが、たまに忘れてしまう。見た目的には変わらないので何も気づかないままsvnと…

ハノイの塔(Ruby版)

N = ARGV[0].to_i $s = [[],[],[]] N.downto(1){|i| $s[0] << i } def printstack puts "-----------" (0..2).each{|i| puts "s[#{i}]=[#{$s[i].join(",")}]" } end def movehanoi(f, t, d) puts "movehanoi(#{f}, #{t}, #{d})" tmp = ([0, 1, 2] - [f, t])[…

rvmで複数のバージョンのRubyを切り替えられるように

rvmというものが便利そうなので導入。http://d.hatena.ne.jp/mirakui/20100502/1272849327 や http://amerine.net/2010/02/24/rvm-rails3-ruby-1-9-2-setup.htmlを参考にさせていただきました。rvm use 1.9.2 とかすると使用するバージョンが切り替わるっぽ…

Rubyで配列操作

Rubyでの配列操作をまとめてみました。0. 定義 他にもStringクラスのsplitなどでも作り出せますね。 a = [1 ,2, 3] b = %w[str1 str2 str3] # ["str1", "str2", "str3"] 1.ランダムアクセス a[0] # 最初の要素 a[-1] # 最後の要素 a[0..2] # インデクス0から…

Rubyで最短経路問題に挑戦してみた

人生を書き換える者すらいた。- 人材獲得作戦・4 試験問題ほかで採用に使ったという最短経路を求める問題にRubyで挑戦してみました。 というかこれはダイクストラ法を知ってるかどうかなような... 自分も中学からプログラミングやってたけどダイクストラ法…

Mac OS X Leopard(10.5.7)でMySQLのRubyバインディングがうまく入らない

Mac OS X Leopard(10.5.7)でRailsでなんかアプリつくろうと思って、環境を整えておりました。 まず、最新のrubygemsとrailsを。 $ sudo gem update --system $ sudo gem install railsrubygems1.3.5とrails2.3.4が入りました。最新ぽいです。ここまではよか…

Railsのコントローラでヘルパーメソッドを呼ぶ方法

class HogeController class HogeHelperImpl include Singleton include HogeHelper end def index @helper_result = HogeHelperImpl.instance.hogege_helper end # HogeHelperImpl.instanceとうつのがあまりにもめんどい場合 private def hoge_helper retur…

ActiveRecord::Base#findの例外

ActiveRecord::Baseを継承したクラスでIDからレコードを引っ張り出したいという場合はよくある話。僕はよく有効なIDであるかどうかをfindの帰り値がnilかどうかで調べるんですが、ActiveRecord::Base#find(id)を使うと存在しないレコードのIDの場合例外が発…

Aptana+RadRailsで「チーム」→「共有」を使ってsvnリポジトリにプロジェクトをチェックインできない

いまだに治らないAptanaのバグ(だと思う)。亀さんを使えばおk1. Aptanaをしめる 2. プロジェクトのディレクトリを丸ごとコピーして念のためバックアップする 3. TortoiseSVNを使ってcheckin 4. Aptanaのworkspaceとして使っている場所からプロジェクトのデ…

will_paginate

Rails.2.0.2でwill_paginateを使うときにハマったので。 require "will_paginate"はconfig/environment.rbの一番ケツに書く。 それだけ。 Rails::Initializer.runより前に書くと各種定数がundefinedなのでwill_paginateのenableが走らない。ちなみにAptana R…

pとかputsとかによるデバッグだとRadRailsのコンソールで文字化ける@Rails

※開発環境はWindowsXP+RadRails, Rails自体は2.0アクションの処理をデバッグするときとか、pとかputsとかでRadRailsのConsoleビューに表示させてるんですが、今日どうやらConsoleビューに日本語を出すと文字化けするという現象を確認しました。http://leno-i…

Controllerの外でsessionは使えないらしい

Ruby on Railsの話。 まんま。controllerの外でsessionに関係する実装を隠蔽するクラスをlib/session_manager.rbとかして作ってみたんだけどcontrollerの外ではsessionが使えない様子。controllerの中にclassを作ってもダメ。Javaでいうところのstaticインナ…