機略戦記

Maneuver warfare

ruby

rubyでcall stack参照するメソッドがなんだっけ

結論 callerだった。 使用例: $ pry [1] pry(main)> caller => ["/Users/hoge/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:355:in `eval'", "/Users/hoge/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/pry-0.10…

Twitter APIを制限目一杯まで実行したい

結論 あるAPIを残り何回叩けるか、いつ制限がリセットされるかなどの情報を取得できるTwitter APIがあるので、そいつから取得した情報を元に制限一杯まで実行すれば良い。 このAPI: GET application/rate_limit_status | Twitter Developersdev.twitter.com …

twitter APIをrubyから実行したい

結論 twitter gem使おう sferik/twittergithub.com 補足 twitter gemを使うのにあたって、各種認証情報が必要だ。 認証情報を得るにはTwitterAppを作る必要がある(ようだ)。 tiwtterAppを作るには、地震のtwitterアカウントに電話番号を登録しておく必要があ…

あるUnicodeの文字列が中国語かどうかを判定したい

このエントリを書いた人間はUnicodeや中国語について素人です。 このエントリに載っている情報は誤っている可能性があります。 結論 厳密では無いが、Unicode Han Database(Unihan)を参照して広東語または北京語の発音を持ちかつ音読みまたは訓読みの発音を…

Rubyの手軽なプロファイラ

結論 $ ruby -r profile 調べたいやつ.rb #=> メソッドの呼び出し回数とか実行時間とかがワラワラと表示される 詳細 library profile

String#splitに引数を指定しないと空白文字でsplitされるというのを今日しった

される。 [4] pry(main)> "1\n2\n3\n4".split => ["1", "2", "3", "4"] !? [5] pry(main)> "1\n2\n3\n4".split(nil) => ["1", "2", "3", "4"] [6] pry(main)> "1\n2\n3\n4".split(' ') => ["1", "2", "3", "4"] instance method String#split nilや' 'を与え…

Hashの中から特定のKeyを持ったValueだけを再帰的に取り出したい

このようなHashのなかから、keyが:targetである要素を再帰的に取得したい。 {a: {b: {c: {d: {e: {target: :f}}}}}, f: [:g, :h, {target: [:i]}], j: {target: nil}} こうしてみた 再帰的に取得したいので再帰的に取得する。 # keyを持ってる要素を再帰的に…

rubyでtmpfileを安全に簡単に扱いたい

標準ライブラリにある。 class Tempfile Rubyist Magazine - 標準添付ライブラリ紹介 【第 15 回】 tmpdir, tempfile

net-sftpでポートを指定してsftpしたい

こうする Net::SFTP.start('host', 'username', :password => 'password', :port => port) do |sftp| # ... end 参考: net-ssh/net-sftpgithub.com

Rubyでsftp使いたい時ってどのGme使うのが良いの?

分からんけど、ダウンロード数はnet-sftpがダントツだった。 net-sftp | RubyGems.org | your community gem host ダントツの様子です。 search | RubyGems.org | your community gem host

Pryの結果に表示されるのって「実行したコードの戻り値を`#inspect`したもの」であってるんだっけ

結論 あってる(たぶん) 調べ方 適当なClassを作って評価してみる。 これが戻り値の#inspectなんじゃないかと思っており、それを確かめたい。 > class AnyClass ; end #=> nil > AnyClass #=> AnyClass #inspectを上書き。実行されたら#callerを吐き出すよ…

アプリケーションエンジニアが初めてserverspecに触ってみた

テストコードによるインフラのテスト serverspecはインフラの構築状況に対してテストコードによるテストを行うgemだ。 packageのインストール状況、serviceの起動状況、ポートの開放状況などの各種設定状況を、 rspecの文法でテストできる。 このserverspec…

スコープの外からインスタンス変数を操作

前回、privateメソッドをスコープの外から操作する方法を紹介したが、今回は(getterやsetterが用意されていない)インスタンス変数に、スコープの外からアクセスする方法について書く。 例えば、以下のクラスの@instance_variableは、普通、インスタンスの…

privateメソッドを外から実行

irbとかrails consoleでデバックを行なっている時に、privateなメソッドを呼び出して動作を確認したい時がたまにある。 そんな時、my_object.private_my_methodのように"."でメソッドを実行する代わりに、my_object.send(:private_my_method)と、#sendでメソ…

irbでrequireしたファイルを再読み込みしたい時には

自分で作ったライブラリの動作をirbで確認している時に、「requireでライブラリを読み込む->動作を確認する->ライブラリをちょっと修正->もう一回動作を確認する」と、言うことがやりたい。 そんな時、ライブラリをもう一回requireしても、修正内容はirb上に…

自分で作ったクラスでmap, with_index, selectなどを使えるようにする

自分で作ったクラスに、組み込みライブラリのEnumerableをインクルードしてあげると、map, with_index,selectと言った便利メソッドが使える様になる。 やりかた 例えば、複数のアイテムを表すItemWithQuantityと言うクラスを作ったとする。 ItemWithQuantity…