Ruby

日本語表記の日時をTimeオブジェクトに変換(Time.strptimeメソッド)

日本語表記の日時をTimeオブジェクトに変換(Time.strptimeメソッド) - Qiita

WatirでPhantomJSを使うときに出るエラー

PhantomJSでWatir(正確にはWatir WebDriver*1およびその中で働いているSelenium WebDriver)を使ってWebアクセスするとき、1回だけならばエラーが出ないのだけど、ループ処理など繰り返しPhantomJSとWatirを使うと時々PhantomJSが動かなくなるときがある。…

文字列"12時34分"を"12:34"へ一行で変換

文字列"12時34分"を"12:34"へ一行で変換 - Qiita

複数枚写真が添付されたツイートの写真URL等を取得するTwitter gemモンキーパッチ

複数枚写真が添付されたツイートの写真URL等を取得するTwitter gemモンキーパッチ - Qiita なお twitter gem の v5.10.0 で Twitter::Entities#media メソッドで複数の Twitter::Media::Photo オブジェクトが返るように更新されました。 Add support for ext…

スレッドをまたいだ大域脱出はエラーになるのでスレッドのブロックぎりぎりに大域脱出しよう

当たり前と言えば当たり前なんですけど。 スレッドをまたぐ大域脱出 Threadブロックよりも外にあるcatch(:out_of_thread)へ脱出しようとするとArgumentErrorエラーになります。 pry(main)> catch(:out_of_thread) do pry(main)* Thread.start do pry(main)* …

OAuth gemだけでTwitter APIを使ってみる

Twitter gemは非常に優秀ですので、低レイヤーなOAuth gemを使ってTwitter APIにアクセスする必要はまずありません。 ただし、「Twitterからの応答をちゃんと返してくれているのだろうか?」と疑問があったときに、gemを介さずに直接アクセスする手段を知っ…

アスタリスクとto_a

さっき見たスクリプトに衝撃を受けた。 class Hash def safe_invert invert.inject( Hash.new{ |h,k| h[k] = [] } ) do |hash, (keys, val)| [*keys].each{ |key| hash[key] << val } hash end end end 1つのキーに複数の値が対応して且つそれぞれの値が重複…

正規表現でユニコードの漢字・ひらがな・カタカナをマッチするには

個人的なメモ。大半は引用です。 参考文献 [連載:正規表現] Unicode文字プロパティについて(1) [連載:正規表現] Unicode文字プロパティについて(2) — Pの一族 [連載:正規表現] Unicode文字プロパティについて (3) 文字プロパティとは そしてまとめスライド […

(homebrewで)readlineを6.3.3にするとreadlineを使ったRuby 2.x.xのインストールで失敗する('14/4/14〜5/10)

更新:readline 6.3.5以上でpatchなしインストールが可能になったようです Homebrewの場合は5/10に6.3.5になりました。 readline 6.3.5 · d62a6cf · Homebrew/homebrew Ruby 2.1.1 を rbenv で入れようとするとビルドがコケる。 brew な readline が 6.3.3 …

Mavericksにqtbindingsをインストールする

資料 GitHub - ryanmelt/qtbindings: An easy to install gem version of the Ruby bindings to Qt MacにqtbindingとRuguiをインストールする - Qiita Ruby再コンパイル(CONFIGURE_OPTS="--enable-shared" 追加)が必要な理由、の資料 Mac osx (Lion)にrben…

lambda/Procと変数の関係(クロージャ)

クロージャ クロージャはブロックの内部に変数を保持できる、ということはいろんなところで書いてあります。 Rubyのブロックはそれ自身をオブジェクト化することができ、そうすることによってメモリ上に独立して存在できるようになる。 lambda { n += 1 } # …

PhantomJSを使ったWatirでUser-Agentを変更する

残念ながら引用だけなんですけどね。 オリジナル require 'watir-webdriver' capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like…

ツイート規制値は300ツイート/3時間(ソチ五輪以降

'14/5/18追記 昨夜は300ツイートを1時間半弱で記録したw riocampos(りおかんぽす)(@riocampos)/2014年05月17日 - Twilog riocampos(りおかんぽす)(@riocampos)/2014年05月18日 - Twilog のですが、規制されませんでした。もうしばらく調査してみます。 …

Thread.joinのイディオム

いままでよく使ってたイディオム Threadを集めるArrayを用意する。 th = [] n.times do |i| th[i] = Thread.start{ do_something } end th.each(&:join) '14/6/30追記:Arrayにpushする th = [] n.times do th << Thread.new { do_something } end th.each(&…

homebrewでOpenSSLの脆弱性対策版を入れたのでRubyも更新させる

OpenSSL脆弱性 ご存じだと思いますが、4/8にOpenSSLの脆弱性が公開されました。 JVNVU#94401838: OpenSSL の heartbeat 拡張に情報漏えいの脆弱性 解説や対策はこちらにまとめられています。 CVE-2014-0160 OpenSSL Heartbleed 脆弱性まとめ - めもおきば ho…

Rubyでpdfのテキストを取得(poppler gem編)

実はpoppler gemを使うまでにいろんなpdfを扱うgemを確認してました。でも上手く行かなかったのです。 Ruby/Popplerを使えば、テキストがポンと出てきます。gem i popplerでインストール出来ます。 require "poppler" document = Poppler::Document.new("kei…

Rubyでpdfのテキストを取得(その他メモ)

origami 非常に高性能なpdfパーサ。 なのですが、日本語テキストを取ろうとするとかなりむずかしい。 Ruby で PDF と戯れるの巻 - Qiita あたりを参照。 Google Code Archive - Long-term storage for Google Code Project Hosting. File: README — Document…

NHK語学講座のラジオ番組ストリーミングを取得するRubyスクリプトgogakuondemand.rbをv3.5に更新

NHKは今日から新年度なのですが、予想通り若干変更がありました。 945 :名無しさん@英語勉強中:2014/03/31(月) 10:54:52.22 3月31日からシステムが少し変わった。 listdataflv.xmlのURLが変わったから、スクリプトをいじれる人はそこだけ直せばOK。 …

MongoDBにTwitter Timelineを保存してごにょごにょする(その1:MongoDBを扱うためmongo gemをインストール)

きっかけ Qiitaでこの記事を読みました。 twitterからのデータを保存する tweetstreamがその機能を持っている…また、stasut.to_hでハッシュ化させることができるので、mongodbにはその状態をそのまま保存します。 mongodbに保存する mongodbには以下のように…

Marshalモジュールを使った「深い」コピー

配列やハッシュなどの要素がStringやIntegerなどであれば、dupメソッド又はcloneメソッドでコピーすれば問題がありません。コピー後の要素を書き替えても、元の配列やハッシュはそのまま維持されます。 しかし、配列やハッシュの要素として例えば配列オブジ…

githubからgit cloneしてみる

上記graphicsmagickのActive Support依存性が気に入らないので、消し去ってpull request掛けてやろうかと思っております。 pull requestはやったことが無いので、どきどきします。 作業開始 ~/prog/github というフォルダで作業しているとします。 いきなりg…

GraphicsMagickインストール

Mavericks(OS X 10.9.2)へインストールしたときのメモです。 homebrewでGraphicsMagickインストール GraphicsMagick Image Processing System コマンドリファレンスはGraphicsMagick GM Utility。 homebrewでのインストールオプションはhttps://github.com…

Ruby on Rails 4インストール

Mavericks(OS X 10.9.2)へまだ入れてなかったのでメモ。 バージョンは4.0.3。 $ gem install rails Fetching: i18n-0.6.9.gem (100%) Fetching: tzinfo-0.3.38.gem (100%) Fetching: minitest-4.7.5.gem (100%) Fetching: activesupport-4.0.3.gem (100%) …

twitter OAuthのアクセストークンをブラウザなしで取得

以前にブラウザを使った方法を引用したことがあります。 twitter OAuthのアクセストークンを取得 - 別館 子子子子子子(ねこのここねこ) ただし、この方法だと、目的のアカウントにログインしているWebブラウザを用意しておく必要があります。 面倒でした。…

秒を時分表示に変換するメソッド

Timeオブジェクト同士の差を取ると秒で返されるが、数字が大きすぎて何だかよく分からない。 ので何時間何分なのかを表示するようにした。秒は切り捨て。 def h_mm(sec) min = sec.to_i / 60 hh , mm = min.divmod(60) "%dh%02dm" % [hh, mm] end 応用編 「…

Object#methodsとModule#instance_methodsの違い

Object#methodsもModule#instance_methodsもメソッド名のシンボルの配列を返します。 しかし表記からも明らかなように、methodsメソッドはオブジェクトをレシーバとするメソッド、instance_methodsはモジュールまたはクラスをレシーバとするメソッドです。 …

Rubyにおける終了

スクリプトを途中で止めたいときにどうすればいいか分からなくて困ったことがあったのでKernel.#exitをメモ。 exit(status = true) -> ()Rubyプログラムの実行を終了します。status として整数が与えられた場合、その値を Ruby コマンドの終了ステータスとし…

module function Kernel.#warn

loggerを使わないときに、いちいち$stderr.puts "error message"とか書いてましたよ。warnを覚えておこう。 warn(message) -> nil message を 標準エラー出力 $stderr に出力します。 $VERBOSE フラグ が nil のときは何も出力しません。 文字列以外のオブジ…

Twitter gemおよびTweetStream gemでストリーミングを受けてみる

単なるメモです。改めて書き起こす予定。 Twitter gem key/secretなどはニセモノです。 #!/usr/bin/env ruby # coding: utf-8 require 'twitter' client = Twitter::Streaming::Client.new( consumer_key: '9Gu1FiE1IfKi32bR8Fw', consumer_secret: 'QUnRDVc…

URL及び写真へのURLを含むツイートに含まれるt.coを展開したテキストを得るメソッド

オープンクラスでTwitter::Tweet#full_text_include_uri(full_text_include_url)を作りました。 このメソッドはツイートに含まれるt.coリンクを全て展開したテキストにします。また「&amp; &gt; &lt; &quot; 」などをCGI.unescape_htmlを使って「& > 注意…