ruby

Ruby で \( じゃない場合に ( を \ でエスケープする

某ももんがさんに教えてもらったので覚書。 結果的に以下のような正規表現になるらしい。 puts "() aa (((() \() \\()".gsub(/(? \() aa \(\(\(\() \() \() 正規表現の否定戻り読みとかあまりよくわかっていないので使っていきたい。 参照 http://d.hatena.n…

sinatra + guard + foreman + chrome で LiveReload 環境を整える

sinatra + guard + foreman + chrome で LiveReload するための環境を簡単にまとめてみました。 [必要なもの] gem foreman sinatra guard chrome Chrome Web Store - LiveReload ブラウザのリロードは Chrome の LiveReload を使用します。 1.適当なディレ…

foreman で guard と sinatra を実行した時に正しくプロセスを終了させる

関連:Webアプリのモックアップ作業土台を作る その1 - cu39's diary 上記の記事を参考にして sinatra を liverealod にしてみたんですが、1箇所だけ気になる点があったので覚書。 上記の記事では Procfile に guard: bundle exec guard application: bundle…

Ruby で文字列内の URI を抽出する

某所でそのような話がでていて調べてみたら URI.extract が利用できるようです。 [ソース] require "uri" text = " あああ http://atnd.org/events/33746 いいい https://f.cloud.github.com/assets/214488/2436964/04c70a28-ade2-11e3-88b7-0ed9a83b4704.gi…

sinatra からコンソールに出力を行う

某所で教えてもらったので覚書。 sinatra を使っている場合にコンソールへ出力を行いたい場合は、 $stdout.sync = true # コンソールへと出力される puts "homu" のように #stdout.sync を設定しておけば出力されます。 ちょっとした変数の値を確認したい場…

Ruby の gsub() に hash を渡す

そんな事できたのかーという覚書。 [ソース] puts "homumamimado".gsub(/(homu|mami|mado)/, { "homu" => "ほむ", "mami" => "まみ", "mado" => "まど" }) [出力] ほむまみまど 普通に便利そう。

jekyll server で 『invalid byte sequence in Windows-31J〜』とエラーになった時の対処方法の別解

前回、同じ問題で $ set RUBYOPT=-EUTF-8とすれば解決すると書いたのですがそれの別解です。 Lingr で crazymaster さんに教えてもらいました。 http://lingr.com/room/vim/archives/2014/02/16#message-18366809 と、いう風に環境変数ではなくて _config.ym…

jekyll server で 『invalid byte sequence in Windows-31J〜』とエラーになった時の対処方法

2回ぐらい嵌ったので覚書。 jekyll server を実行した時に $ jekyll server 〜〜〜エラーいっぱい〜〜〜 Liquid Exception: invalid byte sequence in Windows-31J in archive/001.md error: invalid byte sequence in Windows-31J. Use --trace to view bac…

Ruby と Python を少し使ってみての感想

去年は Ruby、年末辺りから Python を少し使っていたのでそれぞれの個人的な感想をまとめてみるなど。 両方共ガッツリと学習したわけではないのでボケてるかもしれませんが。 [Ruby] Lingr の bot をつくるときに使用 Sinatra + heroku で Web サーバの運用 …

quickrun.vim でリアルタイムに出力を行う場合の注意

この記事は Vim Advent Calendar 2012 347日目の記事になります。 Vim Advent Calendar 2013 の募集も開始しました。 興味のある方はぜひご参加下さい。 今回は Vim 成分薄いんですが、簡単な小ネタでも。 関連:ruby で sleep が含まれているコードを quick…

watchdogs.vim に Rubocop の設定を追加した

関連 : Rubocopをsyntasticを使ってVimから自動実行する - Qiita って事で、watchdogs.vim にも Rubocop でシンタックスチェックを行う設定を追加しました。 使用するためには Rubocop のインストールと g:quickrun_config へ設定を追加する必要があります。…

Sinatra 側で送信されたファイルを受け取る

覚書。 [web.rb] # -*- encoding: UTF-8 -*- require 'sinatra' get '/' do "Hello, world" end post '/' do if params[:file] # ファイルの中身を読み込んで返す return params[:file][:tempfile].read else return "Not found" end end [転送] $ curl -F f…

たった3行のコードでひたすらアイドル水着画像をあつめる(Ruby と mechanize だよ)

せっかくなので mechanize を使って書いてみました。 [ソース] require "mechanize" url = "http://matome.naver.jp/odai/2135350364969742801" puts Mechanize.new.get(url).images_with(:dom_class => /MTMItemThumb/).map(&:node) [出力] コードがすっき…

Ruby の mechanize を使用して Web ページ内の img を取得する

Ruby で Web ページ内の画像URLを取得したかったんですが『mechanize を使うと楽』と教えてもらったので試してみました。 確かに楽ちんでした。 [インストール] gem でインストールします。 $ gem install mechanize [ソース] require "mechanize" agent = M…

Ruby でワンライナーでクイックソート

と、いっても lambda で簡単に再帰するために Proc を拡張しているんですが。 [ソース] class Proc def self_curry self.curry.call(self) end end p lambda { |f, seq| seq.empty? ? [] : seq[1..seq.size].partition { |a| a < seq.first }.map { |a| f.ca…

Ruby でクイックソート 2回目

コメントで partition を教えてもらたので使ってみました。 [ソース] # 偶数と奇数に分割 evens, odds = (1..10).partition { |n| n % 2 == 0 } p evens p odds def quick_sort(seq) if seq == [] return [] end x = seq.first xs = seq[1..seq.size] left, …

Ruby でクイックソート

とりあえず、書いてみた。 [ソース] def quick_sort(seq) if seq == [] return [] end x = seq.first xs = seq[1..seq.size] quick_sort(xs.select { |a| a < x }) + [x] + quick_sort(xs.select { |a| a >= x }) end source = (1..10).sort_by{rand} p sour…

awesome_print でハッシュのキーを左寄せにする

indent オプションで左寄せに出来ました。 [ソース] require "awesome_print" data = { :now => Time.now, :class => Time.now.class, :distance => 42e42 } # 何も設定しない場合 ap data # indent に -2 を設定する ap data, :indent => -2 # デフォルトの…

awesome_print で整形して Ruby のデータを出力

Twitter で(U^ω^)に教えてもらったので試してみました。 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.…

Ruby で値を整形して出力する

Vim でいう prettyprint.vim みたいな感じですが、リストやハッシュをいい感じに整形して出力する場合、pp を使えばいいみたいです。 こんな感じ。 [ソース] require "pp" data = { "data" => { 1 => "one", 2 => "two", 3 => "three" }, "name" => ["homu",…

sinatra + heroku 触ってみた

といってもまだ hello, world 程度ですが。 ちょっと欲しい Web サービスがあったので『自分でつくってみるかー』って事で敷居が低そうな sinatra + heroku を触ってみました。 とりあえず、手元から git push して Web に表示させるまではできた。 Windows …

neocomplcache-snippets-ruby

neocomplcache-snippets-complete のデフォルトのスニペットがものたりなかったので色々と付け加えて書いてみた。 需要があるようであれば github にでも上げたほうがいいかしら? [ruby.snip] snippet if abbr if end if ${1:condition} ${2} end snippet i…

Ruby で FizzBuzz

Ruby だとこういうやり方もありなのかなー。 [ソース] class Integer def fizz? !fizzbuzz? && self % 3 == 0 end def buzz? !fizzbuzz? && self % 5 == 0 end def fizzbuzz? self % 15 == 0 end end 1.upto 30 do |n| puts n.fizz? ? "Fizz" : n.buzz? ? "B…

RSense

前回、うまく動作しないと言っていた RSense ですが、あのあと色々と試してみて動作したので覚書。 [Rsense] RSense ユーザーマニュアル [動作環境] WindowsXP Rsense 0.3 ruby 1.9.3p194 (2012-04-20) [i386-mingw32] [セットアップ] RSense ユーザーマニュ…

vim-ruby のオムニ補完を試してみた

Twitter で vim-ruby なるもの見かけてオムニ補完が出来るとの事なので試して見ました。 (あとで気づいたんですけどここにも vim-ruby について書いてありましたね…) [導入] NeoBundle "git://github.com/vim-ruby/vim-ruby.git" [オムニ補完] 設定とかは…

rubyとか

スクリプトの勉強をしたかったので最近 ruby をいじったりしているんですが、 機能は沢山あるんだけどもイマイチかゆいところに手が届かないというかなんというか・・・。 とりあえず、型がないのが気持ち悪くてしょうがない。あと今はネットで機能を調べな…