ruby

ヤマトメール便のチェックディジットを求めるRubyコード

"求めたいコード(チェックディジット除く11桁)".each_char.with_index.inject(0){|b,(a,i)| b+a.to_i*("46231546231"[i,1].to_i)}%7 Ruby1.8.7で確認。参考:ヤマト急便のチェックデジットの計算方法 -クロネコヤマトのメール便で- その他(データベース) | …

RubyでHaskellのwhere句みたいなことを実現

ネタです。λかわいいよλというだけのことです。 lambda {|f| if sku.quantity sku.quantity -= 1 if sku.quantity <= 0 f[:sku_delete].call end else f[:sku_delete].call end sku.save }[{ # where :sku_delete => lambda { sku.attributes = {:deleted =>…

Amazon Product Advertising API への対応例

2009年8月15日から何やらAmazon Web Serviceの仕様が変わるみたいです。 一つの対応例として、以下にコードを記します。これでちゃんと認証されているようです。 require "openssl" require "cgi" require "net/http" require "kconv" require "base64" requ…

webサーバを書いてみた

ふと何分で書けるのかやってみたくなった。 36分だった。 http://www.ruby-lang.org/ja/man/html/TCPServer.html のコードに毛を生やしただけ。 #!/usr/bin/env ruby require "socket" gs = TCPServer.open("", 8080) addr = gs.addr addr.shift printf("ser…

意地でもメソッドチェインにしたいA型の人のために

32 class Time 33 def pretty 34 self.strftime("%Y/%m/%d(%a) %H:%M").sub!(/\((\w+)\)/) do 35 { 36 "Sun" => "日", 37 "Mon" => "月", 38 "Tue" => "火", 39 "Wed" => "水", 40 "Thu" => "木", 41 "Fri" => "金", 42 "Sat" => "土", 43 }[$1].instance_ev…

幅416ピクセルのモノクロBMPファイルの上下と色を反転させ、データ部分のみを出力するフィルタ

require "enumerator" def convert(str,width=416) width /= 8 off = str[10,4].unpack("V").first header = str[0,off] data = str[off,str.size - off] data = data.enum_for(:scan, /.{#{width}}/m).map{|line| line.unpack("l*").map{|c| ~c}.pack("l*")…

TMailが不正なヘッダのパースで固まる

Rails1.1.4という化石のような環境で起こる。ActionMailerでメールを受信する際に、Fromヘッダなどに正しくエンコードされてないiso-2022-jpな文字列があると半永久的にCPUを消費する。ASCIIの開始シーケンスである"ESC B ("がない場合に起こるらしい。同梱…

RailsからRubyに入った俺がBrainf*ckを実装してみた

まあこれくらいできないとねぇ、みたいな。今変な言語を実装するのが流行ってるみたいですし。 #!/usr/bin/env ruby unless ARGV[0] puts "usage: ruby brainf*ck.rb [source file]" exit end def read_source_char open ARGV[0],"r" do |f| while c = f.get…

Rubyと日本語を比べてみる

Rubyと日本語は同じ「言語」と呼ばれるもので、多くのRubyist達が使いこなすものでもあります。 Ruby is a language. Japansese is a language. is-a関係が成り立っていますので、それぞれ「言語」のサブクラスと言えます。では「言語」クラスが持っている共…

ctagsの謎

exuberant-ctagsを使ってrailsのプロジェクト用にTAGSファイルを作ったとします。それで、User.authenticateのauthenticateメソッドの定義が知りたくて、M-.でauthenticateの定義に飛ぼうとするのですが、どういうわけかUser.authenticateには飛んでくれませ…