ruby

配列のコピーでハマった。

array = [] array2 = [] : array2 = array array.clear 当然のことなんですが、上のように記述したら、 array2の内容もclearされます。そんなときは、sliceを使う。配列を要素を含めて全てコピーする - gan2 の Ruby 勉強日記

rubyでハッシュのハッシュ

h = Hash.new{ |hash,key| hash[key] = {} } Ruby 2次元のハッシュ -Rubyで2次元のハッシュを扱いたいです。perlで- その他(プログラミング・Web制作) | 教えて!goo

Kwartzの学習メモページ

Kwartz - kuwata-lab.com るびま るびま学習したことをメモがてら、載せていく。 ex プレゼンテーションデータファイルex.html <table> <tr id="list"> <td id="mark:item">Foo</td> </tr> <tr id="dummy:d1"> <td>Bar</td> </tr> </table> プレゼンテーションロジックファイルex.plogic #list { logic: { for member in @members _stag _cont _etag end …

kwartzでtenjinを使う方法

Makoto Kuwataさんに教えて頂きました。 早すぎる最適化オジサン on Twitter: "@rdera とりいそぎ、kwartz 3.2.0用のパッチを作成しました。http://gist.github.com/646778 これを例えばpatch.diffで保存し、kwartz.rbがあるディレクトリでpatch -p1 < patch…

マイクロ秒まで含んだ文字列が欲しい。

マイクロ秒まで含んだ文字列が欲しかった。 以下の記事のコードを少し修正して、対応した。 instance_evalのこと、良く分かってませんが……。 ミリ秒まで含んだ時刻文字列 - gan2 の Ruby 勉強日記 エロと風俗情報満載 どう抜く? puts Time.now.instance_eva…

ファイルの行数を取得したい

rubyで任意のファイルの行数を調べたいときはどうするのか。 方法は2つあると思っている。 fp = open(filename,'r') line_count = fp.read.count("\n") fp = open(filename,'r') line_count = 0 while fp.gets line_count += 1 end 前者の方法はファイルの…

rubyでjsonを処理するときメモ

require 'json' open(filename,'r'){|fp| fp_json = JSON.parse(fp.read) } fp_json.each_key do |key| p fp_json[key][hoge] end とか。filenameの容量が大きい場合、 JSON.parse(fp.read)って、一気に読み込んでるんだけど。 これって、問題はないのかなぁ…

rvmでインストールしたrubyをapacheで使いたいんだけど、ハマってる。

やりたいこと $ rvm install 1.9.2 $ rvm use 1.9.2 $ gem install pg rvmでruby1.9.2をインストールして、 そのrubyのgemでpgをインストールした。この、pgをapacheのcgiで使用したい。 で、使ってみる #!/home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby…

no such file to load -- openssl (LoadError)とか言われたら

環境 rvm 1.2.8 centos 5 ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] opensslがrequireできない require 'openssl' requireしたら、怒られた。 no such file to load -- openssl (LoadError) 解決手順 id:TrinityTさんの下記記事通り実行し…

rubyでxmlを処理する

自分がフォローしている人のXMLデータをゲットするAPIを叩いて、 idだけを取得したかった。 http://api.twitter.com/1/friends/ids/rdera.xml rubyでxmlデータを処理するには"rexml/document"というのが、 利用できるようなので、使ってみた。 コード requir…

rubyでファイル中の文字列を書き換える方法

やりたかったこと 以下のようなファイルを abc.txt <aaa></aaa> <bbb></bbb> <ccc></ccc> <ddd></ddd>以下のようなファイルへ書き換える abc.txt <aaa></aaa> <bbb></bbb> <ccc>hogehogehoge</ccc> <ddd></ddd> コード #!/usr/bin/ruby open("abc.txt","r+") {|f| f.flock(File::LOCK_EX) body = f.read body = body.gsub(/(^<bbb>).*(<\/bbb>$)/) do |tmp| </bbb>…

rvmの導入から利用まで設定してみた

rvmとは Ruby Version Managerのこと。 rubyのversionを管理できるツール。 rvmをインストールする。 下記の通り実行。 $ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ).bashrcとか.zshrcに以下追記。 [[ -s "$HOME/.rvm/scrip…

rubyでhttpヘッダーを出力する。

プログラミング言語 Ruby リファレンスマニュアル cgi.headerを使う cgi= CGI.new cgi.header({ "status" => "OK", "server" => "ENV['SERVER_SOFTWARE'] }) みたいな。 クッキー クッキーオブジェクトを作成する。 cookie1 = CGI::Cookie.new({ 'name' => '…

rubyでrmagickを使うために

centos5.5のyumで入れるImageMagickは古い。 そのため、rubyのgemでrmagickをinstallしようとすると エラーが出ていた。 そのため、以下手順でImageMagickをインストールした。 手順はid:tohaeさんの下記記事の通り。 CentOS5にRMagickをインストールする - …

rubyでexec_preparedを使うとき

例えば、以下のようにプログラムを書いていた。 conn.exec_prepared("stmt",[hoge_1,hoge_2,hoge_3]) exec_preparedの引数が多いときは、一行がとても長くなってしまい、ちょっと困っていた。 でも、少し考えて、気づいたのだが、配列で渡してやれば良いんだ…

rubyでsprintfを使うのを止めた

rubyでsprintfを使うと、NoMethodErrorとか怒られて、 よく分からなくなるときがあるので、困っていた。 ググッてみたら、rubyではsprintfを使わなくても、 やりたい事ができるみたいなので、sprintfを使うのを止めた。 sprintf使ってた頃 str = sprintf("%0…

配列に要素を追加したい。

#!/usr/bin/ruby -Ku a = [1,2,3] a.unshift(100) a << 200 puts a

STDERRに出力

Rubyで標準エラー出力に出力したい時。 STDERR.puts(args[0])

ruby1.9.2でメールを送信する

rubyバージョン $ ruby -v ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux] メール送信するクラスを作ってみた class SendMail require 'net/smtp' def initialize(from,to,sub,server,port=25) @from = from @to = to @sub = sub @server = serve…

mod_ruby1.3.0をmakeできない。

実施環境。 CentOS release 5.5 (Final) ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] Server version: Apache/2.2.3 ruby1.8.7をインストール # wget ftp://ftp.iij.ad.jp/pub/lang/ruby/1.8/ruby-1.8.7-p302.tar.gz # tar zxvf ruby-1.8.7-p302…

テンプレートエンジンkwartzを使いたいけど、うまくいかない

[rk10][29S09] HTMLデザインをまったく崩さないテンプレートエンジンの作り方 - ニコニコ動画でKwartz - kuwata-lab.comの存在を知り、 これは良いなーと思い、使ってみたんだけど、うまくいかない。 行ったことは以下の通り。 kwartzをインストールする # g…

CGIを試しに実行して、怒られた

offline mode: enter name=value pairs on standard input と怒られた。 CGIのオフラインモードを回避するには - わさっきhb ありがとう。id:takehikomさん。 ということで、CGI.newの前にARGV.replace(["abc=001"])と記述して、解決した。

入力値で条件分岐

半角英数字の3文字以上32文字以下の文字列を"true"として、それ以外は"false"として扱いたかった。 以下のような制御構造の文を書いてみた。これで対応できると考えている。 #!/usr/bin/ruby -Ku #str = "a" #str = "ab" str = "abc" if str.empty? str =…

rubyで日本語を使えなくて、ちょっとハマった。

rubyでcgiを書いてて、htmlを出力する部分に日本語を書いてたんだけど、そこが怒濤の勢いで怒られた。ちょっと調べてみたら、rubyの実行を以下のようにすることで解決した。UTF-8で記述していたので。 #!/usr/bin/ruby -Ku rubyはデフォルトでは漢字を処理し…

メソッドを動的に呼び出したい。

今までは、メソッドを動的に呼び出したいときは、 以下の手順を踏んでいた。 1.evalでメソッドが記述されているファイルをrequire 2.evalでメソッドを実行。ただ、この方法だとメソッドに引数を渡すのが、 うまくできなくなったんで、__send__を使うことに…

メソッドに複数の値を渡したいし、メソッドから複数の戻り値を貰いたい

ググったら、一発でした。 プログラミング言語 Ruby リファレンスマニュアル 複数の戻り値の渡しかた def hoge(*z) if z.empty? puts "YES!!" else puts "NO!!" puts z.first end end def hoge2(x,*z) puts x puts z.first end hoge("a","b","c") # => NO!! …

自作のmoduleを利用しようとしてハマった

題名の通りの現象に直面した。 どうやら、自作のmoduleを使用するには requireが必要らしいのだ。 requireしてなかった。以下の記事が詳しい。Rubyで自作の外部モジュールを読み込む方法 - include と extend と module_function - (゚∀゚)o彡 sasata299's blo…

ruby dynamic constant assignment,でハマった。

rubyを弄ってて、ruby dynamic constant assignment,と怒られた。 どうやら、定数をメソッド内で使うとダメみたいだ。 def hoge Hoge = "" end dynamic constant assignment - リンギオ

rubyで文字列を作成したい

#!/usr/bin/ruby STRINGS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._+-" puts STRINGS str = "" 40.times do str += STRINGS[rand 66] end puts str

if文を1行で書きたい

;を使えば、良いと知った。 if a==1; puts "a" elsif a==2; puts "b" else puts "c" end と以下は同様な実行結果。 if a==1 puts "a" elsif a==2 puts "b" else puts "c" end