ぬけラボ

φ(..)メモメモ

Ruby

Rails4.0.3のアプリをRails4.1に上げてみた

Rails4.1がリリースされたのでRails4.0.3のアプリをアップグレードしてみました。 docrails/guides/source/upgrading_ruby_on_rails.md at master · rails/docrails · GitHub概ね4.0.3で書かれたアプリケーションはそのまま動きましたが、一部でエラーが出ま…

WEBrickで簡易Webサーバ

ちょっと実験とか試したいときに便利使用したパラメータ Port: 使用するポート番号 DocumentRoot: ドキュメントのルートパス その他のパラメータはこちらを参照 Module: WEBrick (Ruby 2.0.0) require "webrick" params = { Port: 8888, DocumentRoot: File.…

fluent-plugin-http-ex をリリースしました!

Fluentd in_http プラグインにデータを送る際、ある程度データをまとめて送ったり、in_forward のように高速に処理させたかったので in_http にいくつか機能を追加した in_http_ex をリリースしました!! github https://github.com/hiro-su/fluent-plugin-…

HTTP1.1のTransfer-Encoding: chunkedを試してみる

RFC2616 Transfer-Encoding: chunked を試すために、 curlとかnetcatとかrubyで色々やってみます。 仕様 とりあえず仕様を確認してみます。 Chunked-Body = *chunk last-chunk trailer CRLF chunk = chunk-size [ chunk-extension ] CRLF chunk-data CRLF ch…

Rubyでデーモンを作ってみる

Rubyでデーモンを作ってみます。 test.txtファイルに1秒ごとに"test"と書き続けるデーモンです。 # daemon.rb require 'fileutils' require 'logger' class DaemonTest def initialize @term = false @logger = Logger.new(STDOUT) @logger.info "daemon sta…

Ruby FiberとEnumerator

FiberとEnumeratorのメモ。 EnumeratorはFiberを使って実装されているらしい? 実行速度の比較をしてみた。 Fiber words = Fiber.new do DATA.each do |line| line.scan(/\w+/) do |word| Fiber.yield word.downcase end end nil end counts = Hash.new(0) w…

beginのブロックに対してwhileが行える

Rubyって面白いなー。 i = 0 begin print i i += 1 end while i < 10 #=> 0123456789

Ruby my_each

Rubyでeachぽいものを実装する時のメモ。 class Array def my_each &block self.size.times do |i| block.call self[i] end end end p Array.instance_methods(false).grep(/my_each/) data = [1,2] data.my_each do |v| puts v end #=> [:my_each] #=> 1 #=>…

0で割り算したとき@Ruby193

Fixnumの0だとZeroDivisionErrorだけど Floatの0だとInfinityと表示される。 irb(main):001:0> 123 / 0 ZeroDivisionError: divided by 0 from (irb):1:in `/' from (irb):1 from /usr/local/Cellar/ruby/1.9.3-p327/bin/irb:12:in `<main>' irb(main):002:0> 123 </main>…

Gruffを使ってみた

Rubyでかっこいいグラフが簡単に書ける http://nubyonrails.com/pages/gruff https://github.com/topfunky/gruff http://gruff.rubyforge.org/ install on mac rmagickが必要 macportsの場合 $ sudo gem install gruff $ sudo port install tiff -macosx ima…

Rubyでの各メソッド実行時間測定

Rubyでの各メソッド実行時間測定方法を知らなかったのでメモ こんなコードを書いて $ vim test.rb arr = [:hoge,:fuga,:moge] arr.each{|i|puts i} 実行 $ ruby -r profile test.rb hoge fuga moge % cumulative self self total time seconds seconds calls…

rubyでライブラリ/コマンド作成、gem公開までの流れ

※記載したコマンド例は作業の流れを示すためのサンプルです。 bundler インストール $ gem install bundler bundle gemでテンプレート作成 $ bundle gem hoge gemspecファイル修正 descriptionとかsummaryを適切に編集 $ vim hoge.gemspec libにプログラム作…

CentOS6.3にソースコードからRubyをインストール

普段行なっているRubyのインストール手順と設定をメモ 1.インストール準備 $ sudo mkdir -p /var/service/nuke/local/ruby $ sudo mkdir /var/service/nuke/local/src $ cd /var/service/nuke/local/src 2.yamlのインストール ruby193でyamlが必要なので先に…

Ruby193で乱数字生成

こんな方法があったのか!と驚いたのでメモ 配列 [*0..9, *'a'..'z', *'A'..'Z'].sample(10).join #これでも出来る [*0..9, *'a'..'z', *'A'..'Z'].sample(10) * "" #=> "eBoO8LnmIT" securerandom require 'securerandom' SecureRandom.base64[0..9] #=> "B…

Ruby193でnamedcaptureメモ

正規表現でマッチした物を変数として使えるやつ fluentdの設定ファイルでよく使うのでメモ hoge = "#{Time.now.to_i}\t#{Time.now.sec}\t#{Time.now}" hoge[/^(?<time>.*)\t(?<hoge>.*)\t(?<fuga>.*)$/] p $~[:time] #=> "1355798336" p $~[:hoge] #=> "56" p $~[:fuga] #=> "2</fuga></hoge></time>…

Ruby193でファイルカウンター

Rubyでファイルカウンターが必要になったのでメモ ここが参考になりました http://doc.ruby-lang.org/ja/1.9.2/method/File/i/flock.html #encoding: utf-8 class Counter def initialize(file) @file = file end def increment begin until File.exist?(@fi…

Ruby json/messagepack

Ruby193 json/messagepackメモ 一度シリアライズするとkeyがStringになる json require 'json' def hashtojson {"hoge" => 1, :fuga => 2}.to_json end def jsontohash(arg) JSON.parse(arg) end puts jsontohash(hashtojson) #=> {"hoge" => 1, "fuga" => 2…