ruby

NokogiriでXMLに子要素を追加すると要素名が小文字になる

環境 Mac OS X 10.7.5 Ruby 1.9.3-p327 Nokogiri 1.5.6 問題 XMLノードに子要素を追加する際にNokogiri::XML::Node#add_childを使いつつ引数を文字列で渡すと、要素名が小文字になる。要素名はdowncaseしないでほしい。 解決 Nokogiri::XML::DocumentFragmen…

メソッド内でメソッドの引数の一覧を取得する

def hoge(a, b, c) p self.method(__callee__).parameters #=> [[:req, :a], [:req, :b], [:req, :c]] end hoge(1, 2, 3) Kernel.#__callee__とMethod#parametersを使う。 __callee__で今いるメソッドの名前がSymbolとして取れるので、それをself.methodの引…

セキュリティ&プログラミングキャンプ「Rubyのバグを探せ」問題を解いてみた

セキュリティ&プログラミングキャンプ「Rubyのバグを探せ」問題 - 西尾泰和のはてなダイアリーを見て、面白そうだなーと思ったので挑戦してみた。 Evernoteにログを残しながらやってて、ダウンロードして解凍が完了したのが20時56分、makeが通ったのが23時4…

古いgemをインストールしようとすると警告を出すgemを作った

昨日メンテナンスされていないgemをインストールしてはまって大変だったので、インストールする際に古いgemだと警告を出すgemを作った。 GitHub - ohnishiakira/check-date: Check gem's date and warn if date is more than 1 years ago. 1年以上メンテナン…

gem installでインストールするrefeは使わない方がいい

更新が2006年と古いし、多分まともに動かない。自分の環境(Mac OS X 10.5.8 + RVM 1.6.20 + Ruby 1.9.2p180 + Rubygems 1.8.5)ではエラーが出る。 $ gem specification refe (略) date: 2006-02-28 00:00:00.000000000 +09:00 (略) $ refe /Users/akira/.rvm…

RVMを導入している時にgem installでrdocやriをインストールしないようにする

RVMを導入する前は~/.gemrcに色々書いてsudo無しでgem install hogehoge出来るようにしたり、rdocやriをインストールしないようにしていた。けど、RVM導入してからは~/.gemrcでは特に何もせずに*1RVMの設定そのままでgem install hogehogeするようにしていた…

ファイル内で定義されている変数の一覧を取得する

ファイル内で定義されている変数の一覧が欲しい時がある。例えばこんな感じで変数が定義されていたとする。 hoge = 3 fuga = "bero" この変数の一覧を取得したい場合、local_variablesを使うと上手くいく。 local_variables do |v| puts v end #=> hoge #=> …

頭の体操

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

ウェブ上から画像を取得してRMagickで変換してRuby/Tkで表示する

#!/usr/bin/env ruby # coding: utf-8 require "rubygems" require "tk" require "tkextlib/tkimg/png" require "open-uri" require "rmagick" width = height = 45 icon = "http://a0.twimg.com/profile_images/1182392304/bakeneko.png" image = Magick::I…

オブジェクトが持っているメソッド一覧を出力する

def show_all_methods(o = Object) o = eval(o) if o.class == String all = [] o.methods.each do |m| begin all << o.method(m).call if m.to_s.include? "methods" rescue ArgumentError next end end all.flatten.uniq.sort end p show_all_methods ARGV…

Watirで診断メーカー巡り

Watirを使って延々と診断メーカーするだけの簡単なスクリプトを書いた。 入力フォームに入力されるのが妙に遅いのが気になるのと、Ctrl+Cしても異常終了しないようにSignal.trapしてるけど効いていない気がする。 #!/usr/bin/env ruby # coding: utf-8 requi…

Excelの列の形式を数字に変換する

Excel等では列が"AA"とか"AB"のようにアルファベットで表示されているんだけど、この表記だと今の列が何列目か直観的に分からないので書いてみた。 def col_to_number(str) sum = 0 al = ("a".."z").to_a.join str.downcase.split(//).reverse.each_with_ind…

テキストを正方形っぽく整形したい

ふとなんとなくテキストを正方形っぽく整形したいなあと思って書いてみた。割とそれっぽくなるはず。 class String def pat w = Math.sqrt(self.length).ceil a = self.split(//) t = [] self.length.times do |s| t[s%w] ||= "" t[s%w] << a.shift end t en…

オレオレrequire

gemをいじってたら、gemのパス周りがなんだかヘンな事になってirb側からgemが読み込めなくなってしまった。 gemを直すのが先決なんだけど、とりあえず応急処置的な感じで読み込めるようにした。.irbrcの先頭にでも記述しましょう。 def require(path) begin …

CotEditorからTwitterにポストする

#!/usr/bin/ruby -Ku # %%%{CotEditorXInput=Selection}%%% # %%%{CotEditorXOutput=ReplaceSelection}%%% require "net/http" username = "" password = "" req = Net::HTTP::Post.new("/statuses/update.json") req.basic_auth username, password Net::HT…

ファイルの文字数を表示するCotEditorスクリプト

行数と文字数(改行含む)を表示する。やっつけ。 #!/usr/bin/ruby1.9 # %%%{CotEditorXInput=AllText}%%% # %%%{CotEditorXOutput=AppendToAllText}%%% while l = STDIN.gets lines += 1 len += l.length end print "#{lines} lines, #{len} chars."

irb1.9が落ちる

環境 akira@macbookair:ruby $uname -a Darwin ohnishi-akira-no-macbook-air.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 akira@macbookair:ruby $irb1.9 --version irb 0.9.5(05/04/…