ruby
irb でチマチマ考えながら作ってると、each/mapなどのブロックの内部を修正したりが面倒になってくるので、簡単にやりたかった。 通常の Enumerable#each eachはブロック渡すように習います。 ["a","b","c"].each{|e| puts e} Procも渡せます。 もちろんProc…
配列に入った要素のメソッド順番に実行してselectの良い方法をyuku_tに教えてもらった。 &:method でオブジェクトのメソッドを指定できる ["a","b","c"].map(&:to_sym) #=> [:a, :b, :c] これは次のコードと同じ。 ["a","b","c"].map{|e| e.to_sym } 仕組み…
NokogiriでHTMLの属性は Element#attr(name) で取れる doc.search("img").first.attr("src") #=> /top.jpgと属性値の取得ができる。jquery っぽく node.attr(name,value)としたらエラーになる。 書き換えはElement#[name]= を使う。 doc.search("img").first…
ruby と gem upgrade やっててふと思った、rbenv そのものアップグレードってどうやるんだろう OSX 版の場合 brew update brew upgrade rbenv ruby-buildこれだけ。楽ちんですね。brew からrbenv使うのが覚えること少なくて楽です。 または git から取ってき…
MechanizeでCookieを弄るときに必要になる。Cookieの制御 クッキーの追加 mech = Mechanize.new uri = URI.parse("http://www.example.com") cookie = Mechanize::Cookie.new('my_name', uri.host, {:value=>"takuya",:domain=>uri.host, :path=>"/"}) mech.…
明日はいよいよ、iphone 5の発売日です。みなさん予約できましたか?私はヨドバシカメラで予約しました ヨドバシカメラはWEBで予約状況を通知しますって ヨドバシカメラは個別に電話くれないんですよ。WEBで販売日を告知するから、定期的に見て下さいってこ…
もっとみんなヤフオクやろうよ。ヤフオクって出品者の性格が全面にでてて、面白いです。面倒くさがり屋、こだわり屋・・・etc ヤフオクでこれいくらになるんだろう?と思った時に過去ログから調べてくれるのがオークファン。なんでヤフーはこの機能を提供し…
Ruby でファイルタイプの判別をして、HTTPヘッダにContent-Typeを書き出したい時。 mime/types を使う 使い方 require 'mime/types’ これを使う。 使い方は以下のエントリに詳しいので割愛 MIME::Typesは、IANAに登録されているMIME型情報を元に、ファイルの…
pastebin に貼られたHexDumpをファイルに書き戻したかった。BCAS関連の例のあれです。 str = open("./test.txt").read str.gsub(/\n/, "") list = str.split.map{|e| e.hex} f = open("out.rar", 'w') list.each{|e| f.putc e} #バイナリ書き込みは putcを使…
お題のとおりです。処理が終わったら、Growlやメールで通知したい。ちょっと時間のかかる処理をやっていて、終わったら、メールで通知してほしい。ddとかね。 通知するアイディア パっと、思いつくのはこんな感じで使うこと。でもこれじゃダメなんだ。 $ ./c…
Rubyプログラムからサイトをサムネイルのように表示するには、Windowsの場合RubyのWin32関連にそのものズバリなモジュールがある。 配布元 以前はRubyforgeにありました。いまは、githubにいどうして、rubygemsになっていました。 以前の配布先 http://rubyf…
友人どうしでギフトカードのやり取りをしたときに、 Amazonのギフトカードを一気に登録する方法がないかどうか考えてみた。楽ちんに登録できたら複数枚登録できて便利。 #!/usr/bin/env ruby require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::V…
rubyのクラスメソッドを指定して呼び出す。 >> class Test>> end #=> nil >> class Test >> def hoge >> puts :hoge >> end >> end #=> nil >> t = Test.new #=> #<Test:0x10fdf3288> t.method("hoge").call hoge これで出来るのですね。callはrubyの()省略の副作用なので仕方</test:0x10fdf3288>…
もしかしてinは予約語? for in で使う予約語だそうです。forループそのものを使わないrubyにおいて in がいつまでも予約語である必要があるのかというそんな思いはある。rubyでforループは書かない。eachの発明が偉大すぎた。 IO.pipeを使ってて気づいた >>…
IO.pipeを使えば、パイプを作ることが出来る パイプを作ると楽しい。 o,i = IO.pipe 100.times{ i.puts :test } 100.times{ puts o.gets }これだけ Pipeを使うと何が便利か。スレッドをブロック出来る loop{ p o. gets }で i.puts を待つことが出来る。どう…
Cygwinでもrvm使えると便利かも。と思いました。i7マシンだとビルドの遅さもそんなに気にならないし。 まず必須なところから。 rvmのインストール bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) ex…
RVMは自分のユーザー環境に、独自のRuby環境を作ることができる。homebrewのように、/usr/localですらない。/home/takuya/.rvmに、バージョンが違うRubyを大量に飼育できるのです。 RVMを使えば、opensslなどの依存モジュールもRVM側だけで管理できる。 つま…
debian の rubygemsパッケージを更新しようとしている。 あるシステムでは。できる限りAptで管理するべきかもしれないし あるシステムでは、ユーザーごとにRuby環境を作るべきかもしれない でもいろいろ考えるの面倒くさい。とりあえずシステムのrubygems環…
JavaからjRubyを起動すると、JavaにRubyインタプリタを組み込むことが出来る。 どうやるのかなと思ってたら。 evalしろや。ってことらしい。 まじEvalしとる。 package takuya.mmo; import java.io.*; import org.jruby.Ruby; import org.jruby.runtime.Thre…
URIのエンコードをコマンドにしていつでも呼べるようにしておくと便利だと思う。v8エンジンが確実だと思ったけれど、V8はコマンドプロンプトから呼んでもShebangで呼べない。 URIencodeがコマンドから呼べるように encodeURI 1 #!/usr/bin/env ruby 2 3 requ…
オレオレRubyGems配布サイトを作りたいと思った。 やりかた Route477さんがやってる。→http://route477.net/d/?date=20100720 インストール gem install geminabox サーバの起動 設定ファイル config.ru を書いて「rackup config.ru -p 9292」とかするとgem…
定型文字列から,数字を抜き出したい時がある。 降水確率0% 降水確率90% このように定型フォーマットで出力の文字列は山ほどアルフォーマットを見つける 降水確率NN% と見なして、数字だけを取出すことは可能. SCANFを使います とても簡単で出来ます.いく…
Rubyで文字列と文字列の引き算が出来れば、コードが読みやすくなると思いました。 "httpd.conf.bak" - ".bak" #=> "httpd.conf"になればいいと思いませんか.僕はイイと思います.extname をつかって dirname するよりスッキリしてて良いですよね. 文字列ど…
日本語文字列を一文字ずつ取出したいN-gram を作るとかで重宝しそうですよね $KCODE='u' "3月のライオン".split // #=> ["3", "月", "の", "ラ", "イ", "オ", "ン"] $KCODEを使うのがちょっと1.8系依存だけどね 一文字ずつ処理するにはコレが確実.
csplit は便利なんだけど.csplit はファイル名が連番になって嬉しくなかった.そこでRubyで書いてみた 出力ファイル名を区切り文字にした ##あああ ここ ##いいい さらにを処理すると あああ.txt いいい.txtになるようにした。 使い方 csplit.rb サンプル.t…
任意のデータベースにActiveRecord でアクセスしよう。 ActiveRecordで何でもかんでもヤルと楽になる気がした。 RubyでMySQLにアクセスしてデータ読み書きすれば便利そう インストール gem install activerecord sudo aptitude install libmysql-ruby #mysql…
rubyのAPIドキュメントをruby-doc-server.exeでなく,CGIとして任意のディレクトリで動かしたい http://localhost/ruby-doc/ にドキュメント置きたい localhost にあるとナニカと便利なAPIドキュメント.rubydoc-serverをローカルホストで動かしたいなとか思…
rubyでコードを書いてるとライブラリのパスだとか,モジュールの依存関係とかめんどくさくなってくる.あとGithubなどに置いておきたくなる.github にコードを置いてgem パッケージにしたい.*1ライブラリのロードパスを解決したい 2011-05-17追記 rubygems…
Windowsのフォルダを監視して,ファイルが追加されたら、通知したい. .NetFramework つかえば簡単にできるんだけど.IronPythonとか使えば一瞬で出来るんだけどね.Rubyのgems でがんばってみて Windowsのフォルダ監視 WinShotがどんどんキャプチャしてくれ…
Rubyクックブックを見ていたらLEDをチカチカさせて遊ぶ方法が載ってたのでやってみた. キーボードLEDを点滅(明滅)させる require 'rubygems' require 'blinkenlights' BlinkenLights.open{|l| 10.times{ l.right_to_left} }何の意味もないけど,楽しい. …