それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ruby

Emunrable#each に関数・メソッド・Procを渡す。

irb でチマチマ考えながら作ってると、each/mapなどのブロックの内部を修正したりが面倒になってくるので、簡単にやりたかった。 通常の Enumerable#each eachはブロック渡すように習います。 ["a","b","c"].each{|e| puts e} Procも渡せます。 もちろんProc…

Array#select(&:each_object_method)の簡略記法

配列に入った要素のメソッド順番に実行してselectの良い方法をyuku_tに教えてもらった。 &:method でオブジェクトのメソッドを指定できる ["a","b","c"].map(&:to_sym) #=> [:a, :b, :c] これは次のコードと同じ。 ["a","b","c"].map{|e| e.to_sym } 仕組み…

nokogiriでHTML/XMLの属性値の書き換え。

NokogiriでHTMLの属性は Element#attr(name) で取れる doc.search("img").first.attr("src") #=> /top.jpgと属性値の取得ができる。jquery っぽく node.attr(name,value)としたらエラーになる。 書き換えはElement#[name]= を使う。 doc.search("img").first…

rbenv 本体 のアップグレード

ruby と gem upgrade やっててふと思った、rbenv そのものアップグレードってどうやるんだろう OSX 版の場合 brew update brew upgrade rbenv ruby-buildこれだけ。楽ちんですね。brew からrbenv使うのが覚えること少なくて楽です。 または git から取ってき…

Mechanize でCookieの追加と削除

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.…

WEBページの更新チェッカー

明日はいよいよ、iphone 5の発売日です。みなさん予約できましたか?私はヨドバシカメラで予約しました ヨドバシカメラはWEBで予約状況を通知しますって ヨドバシカメラは個別に電話くれないんですよ。WEBで販売日を告知するから、定期的に見て下さいってこ…

オークファンのスクレーパー。

もっとみんなヤフオクやろうよ。ヤフオクって出品者の性格が全面にでてて、面白いです。面倒くさがり屋、こだわり屋・・・etc ヤフオクでこれいくらになるんだろう?と思った時に過去ログから調べてくれるのがオークファン。なんでヤフーはこの機能を提供し…

ruby で content-type判別する

Ruby でファイルタイプの判別をして、HTTPヘッダにContent-Typeを書き出したい時。 mime/types を使う 使い方 require 'mime/types’ これを使う。 使い方は以下のエントリに詳しいので割愛 MIME::Typesは、IANAに登録されているMIME型情報を元に、ファイルの…

hexファイルをバイナリに書き出しする。

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でWEBサイトのスクリーンショットを作ってサムネイル化する。

Rubyプログラムからサイトをサムネイルのように表示するには、Windowsの場合RubyのWin32関連にそのものズバリなモジュールがある。 配布元 以前はRubyforgeにありました。いまは、githubにいどうして、rubygemsになっていました。 以前の配布先 http://rubyf…

Amazonのギフトカードの登録をするスクリプト

友人どうしでギフトカードのやり取りをしたときに、 Amazonのギフトカードを一気に登録する方法がないかどうか考えてみた。楽ちんに登録できたら複数枚登録できて便利。 #!/usr/bin/env ruby require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::V…

rubyで可変関数的に、オブジェクトのメソッドを文字列で指定して呼び出す。

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>…

rubyでinは予約語だから注意な

もしかしてinは予約語? for in で使う予約語だそうです。forループそのものを使わないrubyにおいて in がいつまでも予約語である必要があるのかというそんな思いはある。rubyでforループは書かない。eachの発明が偉大すぎた。 IO.pipeを使ってて気づいた >>…

Rubyは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を用意する。CygwinでもRVMでRuby使い分けたいよね。

Cygwinでもrvm使えると便利かも。と思いました。i7マシンだとビルドの遅さもそんなに気にならないし。 まず必須なところから。 rvmのインストール bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) ex…

Rvmを使ったRubyのインストール管理方法で便利なものをまとめ。

RVMは自分のユーザー環境に、独自のRuby環境を作ることができる。homebrewのように、/usr/localですらない。/home/takuya/.rvmに、バージョンが違うRubyを大量に飼育できるのです。 RVMを使えば、opensslなどの依存モジュールもRVM側だけで管理できる。 つま…

システムのRubyの更新:DebianのAPTでインストールされた物

debian の rubygemsパッケージを更新しようとしている。 あるシステムでは。できる限りAptで管理するべきかもしれないし あるシステムでは、ユーザーごとにRuby環境を作るべきかもしれない でもいろいろ考えるの面倒くさい。とりあえずシステムのrubygems環…

JavaからjRubyのソースコードを読み込んで使う。

JavaからjRubyを起動すると、JavaにRubyインタプリタを組み込むことが出来る。 どうやるのかなと思ってたら。 evalしろや。ってことらしい。 まじEvalしとる。 package takuya.mmo; import java.io.*; import org.jruby.Ruby; import org.jruby.runtime.Thre…

URIのエンコードをコマンドにしていつでも呼べるようにしておくと便利だと思う。

URIのエンコードをコマンドにしていつでも呼べるようにしておくと便利だと思う。v8エンジンが確実だと思ったけれど、V8はコマンドプロンプトから呼んでもShebangで呼べない。 URIencodeがコマンドから呼べるように encodeURI 1 #!/usr/bin/env ruby 2 3 requ…

オレ専用のrubygems配布サイトが欲しいですね。

オレオレRubyGems配布サイトを作りたいと思った。 やりかた Route477さんがやってる。→http://route477.net/d/?date=20100720 インストール gem install geminabox サーバの起動 設定ファイル config.ru を書いて「rackup config.ru -p 9292」とかするとgem…

Rubyで文字列をテンプレートの出力と見なして定型フォーマットされ文字列から値を取出す方法

定型文字列から,数字を抜き出したい時がある。 降水確率0% 降水確率90% このように定型フォーマットで出力の文字列は山ほどアルフォーマットを見つける 降水確率NN% と見なして、数字だけを取出すことは可能. SCANFを使います とても簡単で出来ます.いく…

文字列と文字列の引き算。

Rubyで文字列と文字列の引き算が出来れば、コードが読みやすくなると思いました。 "httpd.conf.bak" - ".bak" #=> "httpd.conf"になればいいと思いませんか.僕はイイと思います.extname をつかって dirname するよりスッキリしてて良いですよね. 文字列ど…

日本語文字列を一文字ずつ処理をしたい

日本語文字列を一文字ずつ取出したいN-gram を作るとかで重宝しそうですよね $KCODE='u' "3月のライオン".split // #=> ["3", "月", "の", "ラ", "イ", "オ", "ン"] $KCODEを使うのがちょっと1.8系依存だけどね 一文字ずつ処理するにはコレが確実.

csplit コマンド ruby 版、区切り文字をファイル名にする

csplit は便利なんだけど.csplit はファイル名が連番になって嬉しくなかった.そこでRubyで書いてみた 出力ファイル名を区切り文字にした ##あああ ここ ##いいい さらにを処理すると あああ.txt いいい.txtになるようにした。 使い方 csplit.rb サンプル.t…

ActiveRecord を使って好きなデータベースにアクセス。注意点とか。始めにやることとか使い方の基本

任意のデータベースにActiveRecord でアクセスしよう。 ActiveRecordで何でもかんでもヤルと楽になる気がした。 RubyでMySQLにアクセスしてデータ読み書きすれば便利そう インストール gem install activerecord sudo aptitude install libmysql-ruby #mysql…

RubyのAPIドキュメントを CGIとして動かす方法

rubyのAPIドキュメントをruby-doc-server.exeでなく,CGIとして任意のディレクトリで動かしたい http://localhost/ruby-doc/ にドキュメント置きたい localhost にあるとナニカと便利なAPIドキュメント.rubydoc-serverをローカルホストで動かしたいなとか思…

gemパッケージ の作り方

rubyでコードを書いてるとライブラリのパスだとか,モジュールの依存関係とかめんどくさくなってくる.あとGithubなどに置いておきたくなる.github にコードを置いてgem パッケージにしたい.*1ライブラリのロードパスを解決したい 2011-05-17追記 rubygems…

RubyでWindowsのフォルダを監視する

Windowsのフォルダを監視して,ファイルが追加されたら、通知したい. .NetFramework つかえば簡単にできるんだけど.IronPythonとか使えば一瞬で出来るんだけどね.Rubyのgems でがんばってみて Windowsのフォルダ監視 WinShotがどんどんキャプチャしてくれ…

キーボードLEDを点滅させて遊ぶRuby

Rubyクックブックを見ていたらLEDをチカチカさせて遊ぶ方法が載ってたのでやってみた. キーボードLEDを点滅(明滅)させる require 'rubygems' require 'blinkenlights' BlinkenLights.open{|l| 10.times{ l.right_to_left} }何の意味もないけど,楽しい. …