Entries from 2009-01-01 to 1 year

c 92 w 75 h 90 m 47 n 39 y 82 s 57 k 52 f 83

意図がわからん

webrat0.5.1に以下のようなコードがあります。 # webrat-0.5.1/lib/webrat/core/elements/field.rb module Webrat class Field def escaped_value CGI.escape([*@value].first.to_s) end end end フィールド値(@value)をCGIパラメータに変換してるんだと思い…

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 =>…

Webratの強力なフィールド特定能力を値のテストにも使う方法

僕らは特定のフィールドをクリックしたり値を入力したりするだけじゃなく、値の取得や検証もしたいんだ。 Then /^"([^\"]*)"がチェックされている$/ do |arg1| field_labeled(arg1).should be_checked end Then /^検索ボックスのIMEモードがオフになっている…

レスポンスがSJISのときの対応とか

WebratとCucumberを使って携帯向けサイトをテストしてたのだが、レスポンスがSJISだとうまくいかない。 今はfeatures/support/env.rbに if ENV["MOBILE"] module ActionController class CgiResponse def body_with_convert body_without_convert.toutf8 end…

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…

IntegrationTest+Webratで複数セッション扱う方法(仮)

実際に使っているコードより抜粋。IntegrationTestの中に次の2つのメソッドを定義する。 159 def new_session(&block) 160 open_session do |sess| 161 webrat_session = ::Webrat.session_class.new(sess) 162 @_webrat_sessions.unshift webrat_session 16…

意地でもメソッドチェインにしたい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…

[rails] erbで価格表を美しく表現する方法

<pre style="font-size:x-small"> --------------------------- | サイズ |-------------------- 枚数 | B5・B6| A4・B4|B3~ | | |二つ折 ------+------+------+------<%= proc {|footer| (@price_table.map{|line| " % 6s|% 6s|% 6s|% 6s" % (0..3).map{|i| comma line[i]}} << footer).join </pre>…

RailsのログからIPアドレス、時間帯毎のアクセス数を集計するスクリプト

#!/usr/bin/env ruby require "enumerator" result = ARGF.enum_for(:each_line).inject({}) do |result, line| if line =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) at (\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/ ip,y,m,d,h,i,s = $1,$2,$3,$4,$5,$…

漢字チェッカー

使い方:書き方がわからない漢字を入力する。

残酷な天使のテーゼを耳コピしてみた

(E♭)蒼い風(B♭)がいま 胸(Cm)のド(B♭)アを叩(A♭)いても 私(B♭)だけをただ(E♭)見つめ(Cm)て 微(Dm7♭5)笑んでる(G7sus4)あな(G7)た (E♭)そっとふ(B♭)れるもの も(Cm)とめる(B♭)ことに(A♭)夢中で 運(B♭)命さえまだ(E♭)知らな(Cm)い い(Dm7♭5)たいけな瞳(G7)(A♭)…

エンコーディングについてメモ

vim

vim-cucumberを使おうとしたらエラーになった。どうも多言語対応で正規表現中に"\u017e"、つまりASCII的に"\x01~"が入っていることが原因だったらしい。set encoding=utf-8 とすればエラーにはならないが、私の環境はターミナル(というかスクリーン)がEUC-JP…

幅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*")…

SoftBank携帯で WJ46402Eエラー

一見ちゃんとしたHTMLなのにSoftBank携帯で見ようとすると「エラーが発生しました。レスポンスが不正です。 (WJ46402E)」なるエラーが発生することがある。どうもmetaタグに原因があるようで、 <meta content="text/html; charset=Shift_JIS" http-equiv="Content-Type" /> だとだめだが <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> だと大丈夫だった。SoftBank携帯に特有の現象の</meta></meta>…

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

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

伊坂幸太郎「グラスホッパー」読了。読みやすく、とても面白かった(なんという小学生的感想)。自分がもやな人間なので、こういった悪い人たちの世界を描いた話には憧れのようなものもあり、ついつい読み入ってしまう。映画化されたら面白そうだなぁと思った。…

いまなにしてる?

僕は馬鹿正直なので(気分が塞ぎ込んでるときは特にそうなので)、いつもtwitterで何をつぶやくかで悩んでしまいます。だって、厳密に「いまなにしてる」かを書こうと思ったら、「twitterしてる」とか「キーボードを叩いてる」ぐらいしか書きようが無いからで…

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…

パソコン 音楽 ギター ドラム 絵 陸上 鍵盤 本 服 数学 英語 歌 車 旅 海 エロ 女 ゲーム タバコ スロット 会計 バスケット 写真 料理 政治 経済 心理学 工作 DTP 音響 麻雀 酒 恋愛 栄養学 医学 哲学 教育 格闘技 歴史得意なもの または 好きなもの または …