タグ:Ruby ( 15 ) タグの人気記事
今週末はRubyKaigi2008
角谷HTML化計画(2008-06-17): 今週の金曜日からRubyKaigi2008

 今週末はRubyKaigi2008だ。うっかり意識から外れてた。まだ、どのセッションに出るか決めてなかったので、ざっと眺めてみる。


日本 Ruby 会議 2008 - プログラム(タイムテーブル)

 どうやら、今年は前夜祭的な 0th day があるらしい。僕も、ビジネスマンのたしなみとしてGolfコンペに出たかったけども、時間的に無理だなぁ。つか、普通に 0th day のセッションも面白そう。ニコニコ動画で公開される予定なので、そっちを楽しみにしよう。

 1日目は開場が9:30ということで、7:00ぐらいの電車に乗らなきゃだめだな。たぶん、ずっとメインセッションの方で過ごすことになりそう。

 2日目はそれぞれの部屋を行ったり来たりしたいんだけど、部屋ごとにセッションの開始時間と終了時間が違ってて、ちょっと微妙かも。


日本 Ruby 会議 2008 - Ruby技術者認定試験

 あ、あと、マグカップ目当てで試験受けたかったんだけど、もう持ってるんだよなぁ、この資格。ということで、泣く泣くスルー。


 いろいろ書いてたら、気分が盛り上がってきた。
[PR]
by fkmn | 2008-06-18 23:55 | 日記
Super Mario Bros. on Ruby
スーパーマリオブラザーズをRubyで作ってみた - I am Cruby!

Ruby/SDL で動くスーパーマリオを作ったとの事。すげー。

これはぜひとも動かしてみたい!、ということで、Mac (10.4) で 動かそうとしてみました。
が、うまく動かず・・・。

実行したコマンドは以下のような感じ。

まず、SDL まわりで必要な者を、MacPorts でインストール。

% sudo port install libsdl
% sudo port install libsdl_image
% sudo port install libsdl_mixer
% sudo port install libsdl_ttf
% sudo port install rb-opengl

そのあと、gem で rubysdl をインストール。

% sudo gem install rubysdl

例のファイルをチェックアウトして、以下のページを参考にちょっと修正。
% svn co http://svn.coderepos.org/share/lang/ruby/mariobros
参考:SUPER NARIOをプレイしてみた(最速レビューをめざして) - きみのハートを8ビットキャスト

そして、main.rb を実行すると、なぜか sdl の require でこける・・・。

% ruby main.rb
main.rb:9:in `require': no such file to load -- sdl (LoadError)
from main.rb:9

しょうがないので、ソースを落としてきてインストール。

% tar zxvf rubysdl-1.3.1.tar.gz
% cd rubysdl-1.3.1
% ruby extconf.rb&& make && sudo make install

これで、sdl の require は通るようになった。
が、しかし、main.rb を実行すると、盛大にエラーが発生・・・。
%  ruby main.rb
2008-04-23 23:48:38.360 ruby[13393] *** _NSAutoreleaseNoPool(): Object 0x375650 of class NSLock autoreleased with no pool in place - just leaking
2008-04-23 23:48:38.361 ruby[13393] *** _NSAutoreleaseNoPool(): Object 0x3760c0 of class NSCFNumber autoreleased with no pool in place - just leaking
(中略)
./mario/gamestart.rb:135:in `main': uninitialized constant SDL::Mixer (NameError)
from ./mario/gamestart.rb:169
from main.rb:17:in `require'
from main.rb:17

というか、マリオ以前に、rubysdl のサンプルコードが動かないっす。
動かすまでには、ちょっと時間がかかりそう・・・。
[PR]
by fkmn | 2008-04-23 23:55 | IT
Ruby で、連続した数列を範囲形式にまとめてみる

問題
 並んだ数字を確認用にわかりやすくする為に、ソートされた数字の列をハイフンで繋ぐにはどうすればよいでしょうか?
(中略)

仕様

  • 数値は、半角スペースで区切られた文字列で渡されます。
  • 続いている部分は、最初の数値と最後の数値を-(ハイフン)で繋いだ表記にします。
  • 連続が1回の場合(前の数も後ろの数も連続でない)は、-(ハイフン)では繋ぎません。
  • 出力は、「,」(カンマ)と半角スペースで区切られた文字列でなければなりません。

Rubyでどう書く?:連続した数列を範囲形式にまとめたい - builder by ZDNet Japan

「Rubyでどう書く?:連続した数列を範囲形式にまとめたい」をやってみる - kenmazのはてな」経由


オイラならこう書くかなぁ(こっちの方がベターだ、という意味じゃないです)。

def nums2str_range(str)
nums = str.split(' ').map { |i| i.to_i }.uniq.sort
nums.inject([[nums.shift]]) { |r, s|
if r.last.last.succ == s
r.last << s
else
r << [s]
end
r
}.map { |i|
i.size > 1 ? [i.first, i.last].join('-') : i.first
}.join(', ') + '.'
end

str = '1 2 3 5 7 8'
puts nums2str_range(str) #=> 1-3, 5, 7-8.

str = '1 3 4 5 7'
puts nums2str_range(str) #=> 1, 3-5, 7.

一応解説。以下のような感じの事をやってます。
  1. 文字列を受け取って、半角スペースをデリミタにして配列へ変換(ついでに、重複を排除して、ソート)
  2. 数値が連続する部分ごとに配列を作成(以下のような感じ)
    [[1, 2, 3], [5], [7, 8]]
  3. 各配列ごとに、配列の長さが1より大きければ最初と最後の要素を取り出してハイフンで繋ぐ。



いじょ
[PR]
by fkmn | 2008-04-21 23:55
三項演算子の書き方と FizzBuzz
三項演算子?:の正しい書き方
プログラマの思索: 三項演算子?:の正しい書き方 経由)
条件演算子は、正しくは以下のように書く。

condition ? true-expression
: false-expression

(中略)

条件演算子には、以下の表記方法もある。この表記は、 switch文や else-if構文と同様に使える。

case1 ? expression1:
case2 ? expression2:
case3 ? expression3:
...
default-expression

 すごく分かりやすい三項演算子の書き方の説明。「プログラマの思索」さんのエントリでも触れられてるとおり、三項演算子は Lisp の if式 や cond式 に発想が近い気がするので、インデントもそれ(if式やcond式)に近くすると、読みやすくなると思う。

RubyでFizzBuzzかけたよ!+いろいろ考えてみた - バイオ研究者見習い生活 with IT
このような記述を見つけたので適用してみると

for i in 1..100  do
puts((i % 15 == 0) ? "FizzBuzz" :
(i % 3 == 0 ) ? "Fizz" :
(i % 5 == 0 ) ? "Buzz" :
i)
end

こうなろうか。

僕だったら、もうちょっとレイアウトを整えて、こうするかなぁ(あと、for は rubyっぽくないので、あんまり使いたくない)。
(1..100).each do |i|
puts i % 15 == 0 ? 'FizzBuzz' :
i % 3 == 0 ? 'Fizz' :
i % 5 == 0 ? 'Buzz' :
i
end


これ、もっと短くできる人居たら教えてくれませんか?
for i in 1..100 do puts(i%15==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i)end

僕はゴルファーじゃないんでよく分かんないですが、短く書こうとするとこんな感じ?(63バイト)
1.upto(100){|i|p i%15==0?:FizzBuzz:i%3==0?:Fizz:i%5==0?:Buzz:i}
シンボルのコロン(:)と三項演算子のコロンを、Rubyがちゃんと区別してくれるのが嬉しい。
[PR]
by fkmn | 2008-03-20 22:52 | IT
Ruby認定試験に合格したんです
先日(12/1)、Ruby認定試験を受けてきたわけですが、結果が今日届きました。

さて、その合否はというと、、、

この度はRuby認定試験をご受験いただき、誠にありがとうございます。
採点の結果、第2回 Ruby認定試験の合否結果を以下の通り通知いたします。

受験日:2007年12月1日
受験番号:xxxxxx
受験者氏名:xxxxxx


************
* 結 果 *
************
* 合 格 *
************

合格者には、後日Rubyアソシエーションより認定証が発行されます。
わーいヽ(´▽`)ノ


 結構分からない問題が多かったので、ギリギリの合格だとは思います。最後のDateクラスの問題なんか、ほとんど山勘だったし。あるいは、山勘でも割といけるくらい "驚き最小の法則" が徹底されてるのがRubyだ、とも言えるのかも(笑)。


 基本クラス(String, Arary, Hash, etc.)のメソッドに関する問題の割合が多めだったので、これから受験するかたは、その辺りを重点的に勉強すると良いかもしれません。Ruby認定試験対策問題の総合問題編が、僕が受けた問題のイメージに近いです。
[PR]
by fkmn | 2007-12-14 23:51 | 日記


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX