Skip to content

Instantly share code, notes, and snippets.

@k2works
k2works / 11-13.rb
Created December 24, 2014 02:50
ヘッダ付きCSVデータを生成する
require 'csv'
headers = %w(name age gender)
people = [
['alice',14,'female'],
['bob',32,'unknown'],
['carol',17,'female']
]
csv_string = CSV.generate('', write_headers: true, headers: headers) { |csv|
@k2works
k2works / 11-14.rb
Created December 24, 2014 02:52
CSVファイルを直接操作する
# coding: utf-8
CSV.open('people.csv').each do |row|
# 何かしらの処理
end
CSV.open('people.csv', 'a') do |csv|
csv.flock(File::LOCK_EX)
people.each do |person|
csv << person
@k2works
k2works / 11-16.rb
Created December 24, 2014 03:32
集合から別の集合を作る
# coding: utf-8
require 'set'
a = %w(a b c d).to_set
b = %w(c d e f).to_set
# どちらかに含まれる要素の集合(和集合)
p a | b # >> #<Set: {"a", "b", "c", "d", "e", "f"}>
p a.union(b) # >> #<Set: {"a", "b", "c", "d", "e", "f"}>
@k2works
k2works / 11-19.rb
Created December 24, 2014 03:37
集合の比較
require 'set'
a = %w(Alice Bob Charlie).to_set
b = %w(Alice Bob).to_set
p a.superset?(b) # >> true
p b.subset?(a) # >> true
p a.proper_superset?(b) # >> true
p b.proper_subset?(a) # >> true
@k2works
k2works / 11-7-1.rb
Created December 24, 2014 05:00
Time
# coding: utf-8
require 'time'
# Time#parseはTimeオブジェクトを返す
Time.parse('2011-04-01 16:01').class # => Time
# 様々な形式の時刻を表す文字列をTimeオブジェクトに変換する
Time.parse('2011-04-01 16:01') # => 2011-04-01 16:01:00 +0900
Time.parse('2011/04/01 16:01') # => 2011-04-01 16:01:00 +0900
Time.parse('2012-01-29 14:13:08 +900') # => 2011-04-01 16:01:00 +0900
@k2works
k2works / 11-7-2.rb
Created December 24, 2014 05:36
Date
# coding: utf-8
require 'date'
# 年月日から日付オブジェクトを得る
date = Date.new(2011,4,1) # => #<Date: 2011-04-01 ((2455653j,0s,0n),+0s,2299161j)>
# 日付を指定した書式の文字列で表現する
date.strftime('%Y/%m/%d') # => "2011/04/01"
date.strftime('%Y/%m/%d %H:%M:%S') # => "2011/04/01 00:00:00"
@k2works
k2works / 11-7-3.rb
Created December 24, 2014 05:56
DateTime
# coding: utf-8
require 'date'
# 年月日からDateTimeオブジェクトを得る
date = DateTime.new(2011,4,1,4,4,23)
# => #<DateTime: 2011-04-01T04:04:23+00:00 ((2455653j,14663s,0n),+0s,2299161j)>
# 日時を指定した書式の文字列で表現する
date.strftime('%Y%m%d %H:%M:%S') # => "20110401 04:04:23"
@k2works
k2works / config.rb
Created December 27, 2014 01:17
最小構成のRackアプリケーション
require 'rack'
class RackApplication
def call(env)
[200, {'Content-Type' => 'text/plain'},['Hello!']]
end
end
run RackApplication.new
@k2works
k2works / config.rb
Created December 27, 2014 01:19
リクエストとレスポンスをクラスで扱う
require 'rack'
class RackApplication
def call(env)
request = Rack::Request.new(env)
response = if request.path_info == '/'
body = "#{request.request_method}: Hello! #{request.params['name']}!"
Rack::Response.new(body, 200, {'Content-Type' => 'text/plain'})
else
Rack::Response.new('Not Found',404,{'Content-Type' => 'text/plain'})
@k2works
k2works / config.rb
Created December 27, 2014 01:27
Rackミドルウェアを使ったコード
require 'rack'
class RackApplication
def call(env)
[200, {'Content-Type' => 'text/plain'},['Hello!']]
end
end
use Rack::ShowStatus
use Rack::Auth::Basic do |username,password|