第 20 回 Ruby 勉強会@関西 初級者レッスン演習課題解答例(RSpec版)

Posted by okkez Sun, 04 Nov 2007 03:22:00 GMT

Test::Unit版 と同じことを RSpec でやってみた。

第 20 回 Ruby 勉強会@関西 に解答例(answer.pdf)がアップされていますがそれの捕捉説明的なものです。前回と同様、配布資料(print.pdf)が手元にある前提で進めます。

Test::Unit 版とは書いた時期が違うので微妙に実装が違っていたりします。

ちなみに RSpec を使って書くのは初めてです。RSpec についてはるびまの記事を参照してください。

なお、stack_spec.rb は、そのとき注目している機能に関係のある部分のみ掲載します。

Posted in | コメントはありません |

Update Typo

Posted by okkez Fri, 02 Nov 2007 14:24:00 GMT

Typo を svn up してみたら管理ページがクールになった。

使い易くなった気がする。

Posted in |

第20回 Ruby 勉強会 @ 関西

Posted by okkez Fri, 02 Nov 2007 11:52:00 GMT

行ってきた。

第 20 回 Ruby 勉強会

内容は置いといて、初級者レッスンの解答例(answer.pdf)に補足説明を入れておく。 資料は上記サイトでダウンロードしてくださいな。

以下では、配布資料(print.pdf)が手元にあることを前提に進めていきます。

実装するメソッド

  • empty?
    • スタックが空なら true、そうでなければ false を返す。
  • size
    • スタックのサイズを返す。
  • push(val)
    • 引数の値をスタックの一番上に積む。
  • pop
    • スタックの一番上の値を取り除いて返す。 スタックが空の場合は Stack::EmptyStackErrorが発生する。

Posted in | コメントはありません |

rd2latex + Rake で画像を PDF に入れてみよう

Posted by okkez Fri, 14 Sep 2007 15:26:00 GMT

使用するものはこいつら。

あとは外部コマンドを色々。Debian なら aptitude ですぐにインストールできる。 把握してるのはこんだけ。

  • convert
    • 画像を png -> eps に変換する
  • platex
    • TeX -> dvi に変換する
  • dvipdfmx
    • dvi -> pdf に変換する
Rakefile
require 'rake/clean' require 'strscan' $KCODE='e' CLEAN.include('*.tex','*.dvi','*.aux','*.log') CLOBBER.include('*.pdf','*.sxi') SRC = FileList['**/*.rd'] DVI = SRC.ext('.dvi') PDF = DVI.ext('.pdf') target = 'print.pdf' desc "make print.pdf" file "print.pdf" => ["print.dvi"] rule '.tex' => '.rd' do |t| metadata = meta(t.source) sh <<EOD rd2 --require=rd/rd2latex-lib \ --documentclass="jarticle" \ --documentclass-option="a4j" \ --preamble-file="#{File.dirname(__FILE__)}/preamble.tex" \ --title="#{metadata['title']}" \ --author="#{metadata['author']}" \ --date="#{metadata['date']}" \ --maketitle \ --no-section-number \ #{t.source} > #{t.name} EOD end PNG = FileList['*.png'] EPS = PNG.ext('.eps') EPS.zip(PNG) do |eps, png| file eps => png end desc "create print.rd" file 'print.rd' => ['print.rd.in'] + SAMPLE + EPS do |t| str = implant(t.prerequisites.first) File.open(t.name, 'w+') do |f| f.write(str) end end rule '.eps' => '.png' do |t| sh "convert #{t.source} -format eps #{t.name}" end rule '.dvi' => '.tex' do |t| 2.times{ sh "platex #{t.source}" } end rule '.pdf' => '.dvi' do |t| sh "dvipdfmx #{t.source}" end def meta(filename) ret = {} File.readlines(filename).each do |line| %w[title author date].each do |item| if m = /^#{item}: "(.+)"/.match(line) ret[item] = m[1] next end end end ret end def implant(target) scanner = StringScanner.new(File.read(target)) ret = '' re = /^(?:(\s*)#include "(.*?)")|(?:\s*#image "(.*?)", "(.*?)")/ until scanner.eos? ret << case scanner.scan(re) when /#include/ arr = File.read(scanner[2]).to_a Array.new(arr.size){|i| i + 1 }.zip(arr).map{|line| "#{scanner[1]}#{'%02d' % line[0]}: #{line[1].chomp}" }.join('').gsub(/\n+/,"\n") when /#image/ filename = scanner[3].split('.').first option = scanner[4] implant_image_helper(filename, option) "\n<<< #{filename}" else scanner.getch end end ret end def implant_image_helper(filename, options) File.open("#{filename}.tex", 'w') do |f| f.puts '\begin{center}' f.puts " \\includegraphics[#{options}]{#{filename}.eps}" f.puts '\end{center}' end end

こんな Rakefile をさっくり準備する。

で RD なファイルを準備。ついでに sample.rb と sample.png も用意しとく。

print.rd.in
title: "かいしんのいちげきの出し方" author: "武闘家" date: "2007年09月23日" =begin = include とか #include "sample.rb" = 画像とか #ここに画像 #image "sample.eps", "width=15cm,clip" =end
sample.rb
10.times do puts "hello" end

上記のファイルを変換すると以下のようになる。

print.rd
title: "かいしんのいちげきの出し方" author: "武闘家" date: "2007年09月23日" =begin = include とか 01: 10.times do 02: puts "hello" 03: end = 画像とか #ここに画像 <<< sample =end

こんなんになって最終的には tex -> div -> pdf になるのです。

説明したりない部分があるけど、とりあえず今日はここまで。

Posted in |

るびま本読書会

Posted by okkez Sat, 08 Sep 2007 02:11:00 GMT

行ってきた。

今回は DBF 。

今回もやっぱりちょっと進みが悪かった。

けど、まあそういう会なのでいいかな、と。


それはそれとして、今日の某集まりは中止。

昨日、「また明日」って言って cuzic さんや、 Yuya さんとお別れしたのに残念。

Posted in , | コメントはありません |

XP祭 2007

Posted by okkez Tue, 04 Sep 2007 12:48:00 GMT

日帰りで行ってきた。

疲れたけど、いろいろ勉強になった気がする。

印象に残っているものを順不同で。詳しいレポートは他の人がやってるので私は手抜きで。

Rubyist ドリームチームによるなにか

解説として参加。色々な人に感想を聞きたかったけど、人見知りな性格が災いして聞けず仕舞い。

ドリームチームのみなさんありがとうございました。 牛尾さん、誘っていただいてありがとうございました。

平鍋さんの

AgileConf2007 の参加報告。

アメリカでは Enterprise と Agile は相反するものではないらしい。

ちょっとアメリカに行ってみたくなった。(会社のお金で)

LT 昼

10ヶ月は反則。

懇親会

買い出しに行ってから、開始。

あまりいろんな人と話せなかった。えがぴ〜さんの正体がようやく把握できた。 JaSST Osaka とかで見てて、すげー人だと思ってたんだけど、やっとちゃんと話ができてよかった。また大阪にも来てくれるらしいです。

LT 夜

えがぴ〜さんの歌が最高でした。あれは昼のLTじゃできない。 どこかに動画が上がってるはずなので見てない人は見ること。

楽しかったので、また来年も行きたい。

Posted in | コメントはありません |

openwengo on Debian GNU/Linux etch

Posted by okkez Fri, 17 Aug 2007 03:45:00 GMT

openwengo を試したみたので書いておきます。

この情報は 2007-08-17 時点のものです。

openwengo のインストール

Debian 用のパッケージが存在するのでそれを使用します。DebianUbuntuPackages - OpenWengo - Trac

/etc/apt/source.list に以下を追記します。

deb http://pkg-voip.buildserver.net/debian etch main

以下のコマンドを実行すると警告メッセージが表示されます。

$ sudo aptitude update
W: GPG error: http://pkg-voip.buildserver.net etch Release: 公開鍵を利用できないため、以下の署名は検証できま せんでした: NO_PUBKEY 2A5E3A5A52ABFCB1 W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません

なので AptGet - Debian GNU/Linux スレッドテンプレ を参考に鍵情報を登録します。

# sudo でやると何故かうまくいかなかった

# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 2A5E3A5A52ABFCB1 # gpg --armor --export 2A5E3A5A52ABFCB1 | apt-key add -

これで鍵情報を登録することができたので、openwengo をインストールします。

$ sudo aptitude update $ sudo aptitude install wengophone

インストールできたら、wengophone を起動してアカウントを作成すればよいです。

web カメラの設定

手元に web カメラ QVP-61HSRD があったので QuickCam を参考に使えるようにしてみる。

まずはデバイスを確認。

$ lsusb |grep Logitech Bus 001 Device 004: ID 046d:08d9 Logitech, Inc.

046d がベンダーID で 08d9 がプロダクトIDらしいので、spca5xx でページ内検索して確認します。

サポートされているようなのでドライバをインストールします。

$ sudo aptitude install spca5xx-source $ sudo module-assistant prepare $ sudo module-assistant auto-install spca5xx

上記コマンドで必要なもの一式インストールしてくれるはずです。途中でエラーメッセージがでたら、なんか足りてないので調べてインストールしましょう。

動作確認は ekiga でもできるし wengophone でもできます。

Posted in | コメントはありません |

Ruby KansaiWorkshop 18th

Posted by okkez Sun, 12 Aug 2007 11:29:00 GMT

Ruby/Rails勉強会@関西-18に行ってきました。

今回はいつにも増して盛りだくさんで、初めての方向けのお話が多かったように思います。 前回は色々と酷かったので今回はうまくいってとてもよかったと思います。

「Rubyの書き方のお作法?(仮題)」 by 中田伸悦さん

Ruby でプログラムを書くときのお作法と不作法について色々とお話してくれました。 ログ担当だったのでログはあとで Hiki にあげます。

「MyGameとゲームプログラミング」 by 山本 団さん

MyGame の使いかたをわかりやすく教えてくれました。

同梱のサンプルが全く動かなかったのは報告してないけど、報告した方がいいかなぁ。

「Rails初心者向けレッスン」 by 南木晴雄さん

もう三回目なので略。

毎回少なくとも一人は変なはまりかたをして私を困らせてくれる人がいます。

あと、既出かもしれないけど scaffold で作成される HTML は仕様通りではないらしい。

「nginxの話」 by Stoyan Zhekovさん

mongrel が雑種犬という意味だというのを知りました。 VPS (Virtual Private Server) などのメモリが少ないマシンでは nginx がお薦めでそれ以外のメモリをたくさん使用できる環境では、普通に Apache + いろんなモジュールでいいんじゃない?って話。

詳しい内容は Hiki にログがまとまってます。

「Internationalization in Ruby on Rails」 by 氏久達博さん

意外にも普通の話でした。

最後に ruby/gettext のデモをライブコーディングでやってくれました。今回は練習してきていたみたいで、わりとうまくいってよかったなと思います。

懇親会についてはmixiで。

Posted in |

Ruby Reference Manual

Posted by okkez Thu, 09 Aug 2007 16:25:00 GMT

るりまの作業を最近少しだけやってる。

あまり、たくさん作業できないけどスタンドアロンで簡単に見栄えを確認できるようになったので作業しやすくなった。やっと Module クラスのドキュメントが半分終わったかもしれない。

と思ったら、@see が導入されたのでまた全部見直しだorz

Posted in |

Typo の調子がわるい?

Posted by okkez Sat, 28 Jul 2007 14:24:00 GMT

なんとなく以前から Typo の調子が悪い。

以前に書いた記事の属性の編集が出来ない。新規投稿はできるのに。

あとトラックバックスパム多すぎ。

Posted in | コメントはありません |