Skip to content

Instantly share code, notes, and snippets.

View yancya's full-sized avatar
💭
😂

Shinta Koyanagi yancya

💭
😂
View GitHub Profile
@yancya
yancya / months.rb
Last active December 21, 2015 01:29
連続した年月の文字列を出力する
# rjust をいつも忘れる
(2011..2013).each{|y| (1..12).each{|m| print [y.to_s, m.to_s.rjust(2, "0")].join('-') + ' '}}
# こっちの方がスマートかも
(2011..2013).to_a.product((1..12).map{|n| n.to_s.rjust(2, "0")}).map{|a| a.join("-")}.join(" ")
@yancya
yancya / answer.sh
Last active December 21, 2015 16:09
シェル芸の課題、やっとできた Ruby でだけど... 課題: https://twitter.com/usptomo/status/371095051826245632
echo 56 2 8 9 | ruby -e 'nums = ARGF.read; loop{exp = nums.split(" ").shuffle.inject(""){|exp, num| [num, exp].join(%w{+ - * /}.sample)}.gsub(/.$/, ""); if eval(exp) == 100; puts exp; break; end}'
@yancya
yancya / create_function_array_minus.sql
Last active December 21, 2015 16:59
PostgreSQL で配列と配列の差集合の配列を返す関数
--
-- SELECT array_minus(array[1,2,3], array[1,2]); -> {3}
--
CREATE OR REPLACE FUNCTION pg_temp.array_minus (anyarray, anyarray) RETURNS anyarray AS
$$
SELECT array_agg(t.unnest)
FROM ((SELECT UNNEST($1))
EXCEPT
(SELECT UNNEST($2)))
@yancya
yancya / cookie_loop.js
Created September 25, 2013 06:31
0.005 秒毎にクッキーを勝手にクリックしてくれるチートスクリプト
@yancya
yancya / range.sql
Created October 10, 2013 02:00
PostgreSQL 9.2 以降で使える Range 型の使い方
-- 日付の内包状況
select daterange('2013-08-01', '2013-08-31', '[]') @> '2013-08-13'::date; -- t
select daterange('2013-08-01', '2013-08-31', '[]') @> '2013-09-13'::date; -- f
-- 範囲の重なり
-- [ は「以上」、 ] は「以下」
select daterange('2013-08-01', '2013-08-31', '[]') && daterange('2013-08-31', '2013-09-30', '[]'); -- t
select daterange('2013-08-01', '2013-08-31', '[]') && daterange('2013-09-01', '2013-09-30', '[]'); -- f
-- ( は「より大きい」、) は「未満」
select daterange('2013-08-01', '2013-08-31', '[]') && daterange('2013-08-31', '2013-09-30', '()'); -- f
@yancya
yancya / range.sql
Created October 10, 2013 07:08
下限、上限が共に閉じてる Range 型に対して lower と upper をかけたときの挙動が気になる。
-- PostgreSQL 9.2 以降で動く
select lower(daterange('2013-08-01', '2013-08-31', '[]'))
,upper(daterange('2013-08-01', '2013-08-31', '[]'))
;
-- lower | upper
--------------+------------
-- 2013-08-01 | 2013-09-01
[1] pry(main)> hoges = 10.times.map{{fuga:10, piyo:20}}
=> [{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
{:fuga=>10, :piyo=>20},
@yancya
yancya / rwc2013_by_sunrise.md
Last active December 25, 2015 21:19
サンライズ出雲で行く RubyWorld Conference 2013

はじめに

RubyWorld Conference 2013 の開催まで、1ヶ月余りとなりましたね。まだ旅程が決まっていない方はいらっしゃいませんか?東京駅から松江駅まで乗り換え無しの一本で行けるサンライズ出雲は、RubyWorld Conference へ行くためにあつらえられた列車といっても過言ではありません。寝台特急での旅は大変楽しいですので、是非ご検討ください。

前提条件

RubyWorld Conference は 10:30 開始です。会場のくにびきメッセは松江駅から 10 分〜 15 分くらい歩いたところにあります。余裕を持って参加するには、当日の 10:00 くらいには松江駅に着いていたいです。

主な交通手段との比較

交通手段 所要時間 費用 前日入り
@yancya
yancya / hoges.rb
Created November 12, 2013 02:53
ハッシュの配列の各要素の共通のキーの値の配列に簡単にアクセスするにはどうしたらいいか
def method_missing(name)
Proc.new{|o| o[name]}
end
hoges = [{hoge: 1, fuga: 2}, {hoge: 3, fuga: 4}]
p hoges.map(&fuga) #=> [2, 4]
p hoges.map(&hoge).reduce(&:+) #=> 4
@yancya
yancya / float_vs_bigdecimal.rb
Created November 25, 2013 06:53
Float と BigDecimal の誤差の出方を比較
[1] pry(main)> (1000.times.inject(0){|sum| sum += 0.0000001})
#=> 0.00010000000000000159
[2] pry(main)> require 'bigdecimal'
#=> true
[3] pry(main)> (1000.times.inject(0){|sum| sum += BigDecimal.new("0.0000001")}).to_f
#=> 0.0001