Fiber で FizzBuzz

ruby-list で Fiber のサンプルがイケてない。 Fiber.yield, Fiber#resume の戻り値使えよ。 と言われてたので、そんな FizzBuzz に挑戦してみた。 class FizzBuzz def initialize @buzz = Fiber.new do |i| loop do print "buzz" i = Fiber.yield(i+1) end …

るびきちさんを囲む会

るびきちさんが関西にいらっしゃるというので kansai-emacs #x03 開催が決まったようだ。勉強会については他の人にお任せするとして、午後からの勉強会に先立って午前中に行われた会合についてレポートしてみる。 朝 9:30 になんばマルイ前でるびきちさんと…

プリンタの調整

Mac

Mac を買い替えて OS が変わったので、プリンタドライバも変わった。案の定、印刷位置が微妙にズレている。地図なんかを印刷するぶんには多少ズレたって問題ないが、100μm 程度の制度を要求されるものがある。名刺と年賀はがきだ。 プリンタはキヤノンの PIX…

rvm の設定あれこれ

Mac を新調したのを機に Ruby の環境も変えてみる。今までは、Ruby を野良ビルドしてコマンド名を変えて使い分けていた。 Ruby 1.9 をインストール これをやめて rvm を使ってみる。 rvm とは 様々なバージョン、実装の Ruby をインストールして必要に応じて…

Emacs に必ずインストールするアプリ

MacBook Pro を買ったので Emacs をインストールしなおした。Emacs の設定に関することは、ググるよりも WEB+DB PRESS Vol.58 を見た方が早い。必要なことが、ほとんどまとまっている。WEB+DB PRESS Vol.58作者: 松田明,大竹智也,はまちや2,外村和仁,横野巧…

Mac を買ったら最初に入れるソフトウェア

Mac

随時追記予定。 Xcode これがないと何もできない。 付属 DVD からインストール。 MacPorts いるよね。 早速 clamav をインストール。 ところが、何故か SEGV$ sudo freshclam ClamAV update process started at Sun Mar 20 14:18:20 2011 main.cld is up to …

Mac を買ったらまずやること

Mac

MacBook Pro 買った! 半年待てば Lion だとか、時期モデルは解像度が2倍だとか、そもそも 13" は (ry 色々言われているが買った!さて、Mac を買ったら、まず最初にやることは何か?そう、液晶にアンチグレアフィルムを貼ること。*1【2010年モデル】ELECOM 液…

Mac を買ったら最初にやる設定

Mac

MacBook Pro 買った! 13" 2.7GHz Core i7 8GB DDR3 512GB SSD 休日になると予定が入って 2週間放置してたので、そろそろ設定とか始める。(随時追記予定) 初めに Dock にターミナルを入れる Dock からいらないものを捨てる App Store Dashboard Mail FaceTime…

第49回 Ruby/Rails勉強会@関西で ust してきた

ust

第49回 Ruby/Rails勉強会@関西で ust 係をしてきた。これまで Ruby関西の ust は、スライドが見えないとか、音声が聞こえないとか、散々文句を言われていた。そこで機材を揃えるところからやってみた。 今さら聞けない Rake 入門 - 第49回 Ruby/Rails勉強会@…

完全に一致しなくても、だいたい合ってりゃいいとき

浮動小数点の数は直接比較してはいけない。 0.3 == 0.1 + 0.2 # => false 0.1 + 0.2 # => 0.30000000000000004 ほぼ同じなんだから、なんとかならんのか。 そんなの誤差でしょ。≒みたいなのが欲しい。MiniTest::Assertions#assert_in_delta では、ふたつの数…

SHOT NOTE 買った!

SHOT NOTE とは 手書きメモを iPhone に取り込むための専用用紙と専用アプリからなるシステム。普通に写真を撮るのと何が違うのかと言うと、専用用紙の四隅にあるマーカを認識して、画像を台形補正してくれること。*1 用紙の自作 プレス発表を見て最初に思っ…

浮動小数点はむずかしいですね

2.2250738585072011e-308 というのは、なかなか厄介な数値らしい。Java もこの数値を文字列に変換したりするのが苦手らしい。Ruby では、どうか? RUBY_VERSION # => "1.9.2" bang = '2.2250738585072011e-308' bang.to_f # => 2.225073858507201e-308 bang.t…

覚えておくと便利な Array のメソッド (追加)

前回「覚えておくと便利な Array のメソッド」のつづき。 Array#permutation サイズ n の順列を生成。 (1..8).to_a.permutation(2).to_a # => [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], # => [2, 1], [2, 3], [2, 4], [2, 5], [2, 6], [2, …

第49回 Ruby/Rails勉強会@関西では発表者を募集しています

第49回 Ruby/Rails勉強会@関西 では発表者を募集しています。以前話してくれた人や他の勉強会で話している人に声を掛けると、 「もうネタないから」 「そのネタは○○で話したから」 などの理由で断わられる。*1 ネタがない? 以前話したネタがあるじゃないか!…

ファイル入出力とエンコーディング

Ruby1.8 の文字列はただのバイト列だったが、Ruby1.9 からは、それぞれの文字列がエンコーディングを持っている。 エンコーディングの変換には String#encode を使う。utf8 = 'Ruby関西' eucjp = utf8.encode(Encoding::EUC_JP) utf8.encoding # => #<Encoding:UTF-8> eucjp.</encoding:utf-8>…

MacBook Air 11インチ欲しい!

MacBook Air 11インチ欲しい!当たった場合、英語キーボードを選んだりできるんだろうか?日本語キーボードだったら即換金して英語キーボードのやつを買いなおす!!

第48回 Ruby/Rails 勉強会@関西で ust したけど失敗した

新春 Ruby/Rails勉強会@関西 に行ってきた。 今回は司会兼 Ustream (以下 ust) 係をやったんだけど、かなり失敗した。 以下は ust 中継に失敗した言い訳と開き直り。 ust 中継の位置付け まず、勉強会における ust の位置付けは、オマケでしかない。 勉強会…

練習1-1 また間違えてた

このまえの練習問題。 練習1-1 次のように、任意の数の整数データを与えるとその総和を計算するメソッドを書いてください。 sum_all(1, 2, 3, 4, 5) # => 15.0 結果は Float でないといけないのか!入力は整数なのに?整数でない入力もありだとしてやってみる…

電子書籍をいくつか試してみた感想

電子書籍にはまったく興味がなかったんだけど、iPad を人に見せると「本が読めるんだよね?」とか聞かれるので、いくつか買ってみた。 書籍アプリ 電子書籍ならではの特殊効果を使ったりするにはアプリにするしかないのか?Apple の DRM が使えるのも利点なの?…

第47回 Ruby/Rails勉強会@関西に行ってきた

第47回 Ruby/Rails勉強会@関西でいつものように京都女子大学へ。 おけいはんで七条駅に着くと、いつもと違って女子大生がいない。*1 「女子大生いないよー」と tweet しかけて止めた。*2 Rubyist のための HTML5 入門 - Content models - by Sixeight さん H…

Bluetooth ヘッドセット買ってみた

知人が Bluetooth ヘッドホンをしていて「線から解放された」と嬉しさを語っていたので、以前から気になっていたのを買ってみた。Jabra Clipper 長いケーブルが不要になったのは確かに楽だが、クリップ (本体) から出たイヤホンの線がやっぱり邪魔。しかし S…

練習 3-4 やりなおし

前回 ごにょごにょしたけど、String#scan 使えば簡単だった _| ̄|○ require 'open-uri' RUBY_VERSION # => "1.9.2" puts open('http://www.google.com', 'r:cp932', &:read). scan(%r|<a.*?href="(.*?)".*?>(.*?)</a>|m). map{|url, text|"#{text} <#{url}>"} # >> 画像 <http://www.google.co.jp/imghp?hl=ja&tab=wi> # >> 動画 </http://www.google.co.jp/imghp?hl=ja&tab=wi>

練習 3-4

初級者向けレッスンの宿題。文字列から抽出する練習問題。空気を読んで出題者の意図通りに。 require 'open-uri' RUBY_VERSION # => "1.9.2" puts open('http://www.google.com', 'r:cp932', &:read). gsub(/\n/, ' '). split(%r|</a>|). map{|i|i.sub(/^.*<a/, '')}. map{|i|[$1, $2.strip] if /href="(.*?)".*>(.*)/</a/,>…

練習 3-3

文字列を置換する練習問題。前回、文字コードの変換が面倒だと書いた。 もうちょっとシンプルに変換 File#open で外部と内部の文字コードを指定。読み込んだ文字列は内部コードに変換済み。1行ずつ変換するよりも効率がよい (と信じてる*1 ) # -*- coding: u…

練習 3-2

`cmd` を使って文字列を作る練習問題。 前回の修正 前回のをちょっと修正。 puts `ls -la | awk 'NF==9{printf("%s, %d\\n", $9, $5)}'` # >> ., 3366 # >> .., 204 # >> .bash_history, 507123 # >> .bash_profile, 16 # >> .bashrc, 1188 ... NF==9 がない…

第46回 Ruby/Rails勉強会@関西 練習問題

第46回 Ruby/Rails勉強会@関西に行ってきた。初級者向けレッスンの練習問題に挑戦。 練習 3-1 任意の桁数の数字の文字列があったとき、その数字 0, 1 ... 9 を巡回的に 1, 2 ... 0 に入れ替える方法を考えてください。問題を誤解していた。314159 が与えられ…

O'Reilly のキャンペーン来た

4週連続のキャンペーン。今回はトートバッグをゲット。

メソッドチェーンの p デバッグ? それ tap でできるよ

「リファクタリング Ruby エディション」によると、一時変数は極力排除した方がいいらしい。メソッドチェーンを使えば、結果をいちいち変数に覚えなくても最終結果だけ得られる。 s.split(/\n/).each_slice(2).map(&:join) でも、結果が意図したものと違った…

第45回 Ruby/Rails勉強会@関西に行ってきた

第45回 Ruby/Rails勉強会@関西演習問題をやってみた 正の整数 n の階乗 n! を求める方法を何通りでも考えてください class Integer def ! case self when 0, 1 1 else self * (self-1).! end end end # とか class Integer def ! (1..self).inject(1, &:*) e…

iPad のここがダメ

WiFi 接続が頻繁に切れる Pocket WiFi でインターネットに接続して、メールを読んだり、Web サイトを見たりしていると、突然 「WiFiパスワードが違います。」 とか言われる。パスワードを入力せずにキャンセルすると、 「接続しています。…」 とか言う。なん…