第2回 リファクタリング Ruby エディション読書会に行ってきた

今回は 2 章から 6 章の途中まで読んだ。 3 章はリファクタリングの基礎。 どういう時にどういう技を使うべきか書いてある。職場のコードは、ほとんどの悪いパターンに該当していてヘコむ。*1その反面、今まで経験と勘でやってきた修正が間違ってなかったの…

OSC2010 Kansai@Kyoto に行ってきた

今年はボランティアスタッフとして参加した。 ボランティアスタッフになると、 T シャツがもらえる 打ち上げに参加できる 今回は家庭の事情で遠慮したが いろんな人に気軽に話しかけられる 聴講したいセミナーに行けない (こともある) LT & 抽選会に行けない…

Minami.rb 第1回 勉強会に行ってきた

少人数、初心者歓迎の勉強会 Minami.rb ブログを作ろう id:rudeboyjet が live coding するのを、みんなで写経。 みんな好き勝手に質問する。 id:rudeboyjet は「なかなか進まんなぁ」とボヤいていた。 時間が足りないので、いろいろ機能を省略。 ブログでは…

モテると聞いて女子大に iPad 持って行ってみた

先週のRuby/Rails勉強会@関西に iPad を持って行った。 結論から言うとモテなかった。「初めて見ましたー」「触ってもいいですかー」と女子大生がやってきたので、とりあえず "Winnie the Pooh" を見せて、 "noby noby boy" を見せて、 「つみネコ」をやらせ…

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

第44回 Ruby/Rails勉強会@関西 初級者向けレッスンの演習問題 Arrayクラスの次のメソッドを Stringクラスにも作ってください。 文字列はアスキー文字 (1バイト文字) だけからなるもとのします。 sort については、非破壊的なメソッドと破壊的なメソッドを作…

fibonacci(36) を計算してみた

いつも読んでる SoftwareDesign 誌の 2010年 5月号に Konoha という言語が紹介されていた。Konoha というのは静的型のスクリプト言語らしい。記事の最後にフィボナッチ数列を求めるスクリプトのベンチマークが載っていた。 我らが Ruby は断トツの最下位に挙…

数値からローマ数字への変換

第42回 Ruby/Rails勉強会@関西 の演習問題 一方 Windows では Excel を使った。 require 'win32ole' class Integer EXCEL = WIN32OLE.new 'Excel.Application' def to_roman EXCEL.WorksheetFunction.Roman(self) end end [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, …

iPhone でバーコードをちゃんと読む方法

はてなモノリスを使い始めた。ところがバーコードが小さいと iPhone の貧弱なカメラだと読み取れない。そこで、誰でも持っているコンパクトデジカメを使ったライフハックを紹介する。*1まず、バーコードをコンパクトデジカメのマクロ機能を使って撮影する。…

第42回 Ruby/Rails勉強会@関西

第42回 Ruby/Rails勉強会@関西 京都女子大学にて開催。 土曜日だというのに女子大生が大勢いて女子大感満載。勉強会にもたくさんの女子大生が参加してくれた。 実践スクレイピング by ふるかわだいすけさん モバイラーズオアシスというサイトを作るためにス…

謎のウイルス検知が止まらない

Windows では WDS (Windows Desktop Search) を使ってメール、その他を検索している。*1 ある日、トロイの木馬を添付したメールを受け取った。 すると翌日から NOD32 (アンチウイルスソフト) が毎朝ウイルスを検知するようになった。おそらく POP からメール…

代入メソッドの罠

Ruby ではメソッド名の末尾に = が付いていると、属性への代入のように使える。 def Foo def name=(name) @name = name end end foo = Foo.new # => #<Foo:0x100c7f98 @name=""> foo.name = 'foo' # => "foo" ←ここに注目 foo # => #<Foo:0x100c7f98 @name="foo"> つまり代入のように書くと Foo#name=(name) を呼び</foo:0x100c7f98></foo:0x100c7f98>…

覚えておくと便利な Array のメソッド

いつも「何かそういうメソッドあったはず」と思ってるりまを調べなおすことになるのでメモ。 Enumerable#each_cons 順番に n 個ずつ取り出す。 marunouchi = ['方南町', '中野富士見台', '中野新橋', '中野坂上'] marunouchi.each_cons(2).to_a # >> [["方南…

無料のカメラアプリをいろいろ試してみた

操作方法は詳しく書かないことにする。 バージョンが変わると操作方法もガラリと変わったりする。 無料なので実際に試した方が早い。 Apple の都合でアプリが削除されてたらゴメン。 写真アルバム 位置情報 Camera 利用可 SepiaCamera カメラのみ 利用不可 V…

第1回 関西Emacs勉強会

ポジションペーパーなるものが必要らしいので書いてみた。 自己紹介 ひがき・まさる Ruby関西 @higaki id:mas-higa Emacs 遍歴 μEmacs (OS-9) Nemacs (SunOS) Mule (SunOS) Meadow (WindowsXP) Carbon Emacs (Mac OS X) Emacs で何をしているか MFC・.NET プ…

告知: 第41回 Ruby/Rails 勉強会@関西

今週の土曜日は第41回 Ruby/Rails 勉強会@関西です。 日時 2010年 3月 20日 (土) 13:00〜 場所 神戸大学 学術情報基盤センター分館 内容 RubyとWebCamであんなこと by にしたかお さん 非同期 by ujihisa さん ActiveScaffold デモ by cuzic さん Ruby初級者…

ブロックの受け渡し

以前マージソートを作ったとき、受け取ったブロックを別のメソッドへどう渡したらいいのか分からずに試行錯誤した。 マージソートにブロックを渡す 「プログラミング言語 Ruby」を読んでいたら、もっとシンプルなブロックの渡し方が書いてあった。 module En…

topcoder sample1

topcorder sample1 - うんたらかんたらRuby 与えられた英語の大文字で構成された文字列の中の文字を、与えられた数字の分だけ左にシフトさせなさい。 たとえば、'C' を 2 つ左にシフトさせると 'A'、'Z' を 2 つ左にシフトさせると 'X'。 与えられる英語の文…

IronRuby を使ってみた

仕事で C# を使うことになったので「Ruby on Windows」を見ながら RubyCLR を試してみた。ところが Ruby 1.9.1 に対応していないらしく、require すると SyntaxError が出る。 case when: ... when の : をひたすら ; に置換するなどした。それでも activesu…

RMagick で色を変更

年賀状に使いたい素材があったのだけど、色が気にくわない。筆文字なので黒なんだろうけど、それを金色っぽくしたい。そんなときは ImageMagick の convert $ convert -fill '#ffdf36' -opaque '#000000' src.png dst.pngとかすると、黒が黄色っぽくなる。 …

each が返すのは self か?

リファレンスマニュアルは通読しよう 結局 Enumerator#each の戻り値は object ではなく self っぽい。 String#each_byte の戻り値は () ではなく self っぽい。self っぽいけど、本当に self なのか?試してみた。 "NO RUBY, NO LIFE".each_byte{|b|} # => "…

リファレンスマニュアルは通読しよう

第39回 Ruby/Rails 勉強会に行ってきた。「KVS と MapReduce の密な関係について」と「それ Mechanize で」もちゃんと聞きたかったけど、遅れて来た人の対応をしたりバタバタしててちゃんと聞けなかった。 「JRuby でなんちゃら」では、Ruby から Java のク…

Genius bar の使い方

Mac

Apple 製品の具合が悪くなったら Apple store 内の Genius bar へ持って行くと故障の診断、修理、交換などしてくれる。Genius bar を使うには若干のコツがいる。 とりあえず予約 昔とちがって数日前から予約ができるようになった。 最寄りの Apple store の …

Real World Haskell

O'Reilly のキャンペーンで Haskell T シャツもらった。 Web で注文するときにメールアドレスを ...@gmail.com とするところを ...@gmial.com と間違えてしまった。 幸い注文番号は控えていたので、担当の方と 2 〜 3 度メールのやりとりをして無事購入でき…

中の人に聞け

京都女子大学に まつもとゆきひろ さんが来るというので行ってきた。 小波先生の開会挨拶。 京都女子大学と Ruby の浅からぬ関係について。 宮下先生の講演。 「情報化社会を作り上げる人々」 中の人とは? 情報技術の進歩は速い。 チャールズ・シモニーって…

Excel をもっと Ruby らしく使いたい

Excel のワークシート名をまとめて取ろうと思った。 require 'win32ole' excel = WIN32OLE.new 'Excel.Applicatin' at_exit{excel.Quit} book = excel.Workbooks.Open 'sample.xls' book.Sheets.map(&:Name) # ~> -:10:in `method_missing': unknown propert…

第36回 Ruby/Rails 勉強会@関西

第36回 Ruby/Rails 勉強会@関西 2009 年 8 月 22 日に神戸大学で開催。*1第 2 セッションで「定規とコンパスを使って正三角形、正方形、正五角形を描いてみよう」という問題が出た。ruby-processing を定規とコンパスに使う。 任意の 2 点間に線を引く (定規…

eval ってクロージャなのか

evalでローカル変数を定義することはできない - willnetの日記 これを見て、なんとなくそうかなと思って試してみた。 y = 1 f = eval "x = y\nlambda{x += 1}" f.call # => 2 f.call # => 3 y # => 1 x # => # ~> -:6:in `<top (required)>': undefined local variable or me</top>…

多重代入と暗黙の型変換

以前 Ruby には型変換メソッドが沢山用意されているが、あまり暗黙の型変換はしてくれないと書いた。 暗黙の型変換 ところが多重代入をすると Array への型変換をやってくれるらしい。 class Foo def to_a; [:to_a] end def to_ary; [:to, :ary] end end foo…

コマンドの終了ステータスが取れない

DOS

errorlevel コマンドプロンプトからコマンドを実行すると、成功したか失敗したかが数値で返ってくる。その値は errorlevel で見ることができる。 C:\> dir ... C:\> echo %errorlevel% 0 C:\> dirr 'dirr' は、内部コマンドまたは外部コマンド、 操作可能な…

スクリプトの国際化

ruby-list ML で「変数名、関数名に日本語を」というのがあったので、ネタでやってみた。 # -*- coding: utf-8; -*- class Numeric def +(o) self + o end def −(o) self - o end def ×(o) self * o end def ÷(o) self / o end end 底辺 = 3 高さ = 4 底辺.…