遅ればせながら「Rubyソースコード完全解説」

以前、Amazonのマーケットプレースでプレミアつきで購入してあったのですが、なかなか読みはじめられなかった「Rubyソースコード完全解説」を、連休だというのにカゼをひいて出かけられないので、良い機会だと思い、読みはじめました。

まだ、第5章までですが、特異メソッド(特異クラス)のしくみや、さまざまな工夫など、内部構造を理解できると、すぐには役に立たなくとも、「深い知識」を得るのには最適ですね。

Published on 2007/05/04 at 08:18 by いたさん, tags ,

IronRuby発表

MicrosoftがカンファレンスMIXで、IronRubyの開発を公式発表しました。

RubyCLRの主要開発者で、今年からMicrosoftに入社したJohn Lam氏がブログで伝えています。

Introducing IronRuby

これまでは、守秘義務のため何もかけなかったとのことですが、IronRubyはIronPython同様、3週間に1回のリリースを目指すそうです。ライセンスはBSDライクな"Microsoft Permissive License":http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx だそうです。

また、Windows Presentation Foundation/Everywhere(WPF/E)と呼ばれていたリッチクライアント実行環境Silverlightでも、Python、JScriptに加えて、RubyとVBも利用可能になるそうです。

Published on 2007/05/01 at 12:26 by いたさん, tags , , , ,

IronRuby発表

MicrosoftがカンファレンスMIXで、IronRubyの開発を公式発表しました。

RubyCLRの主要開発者で、今年からMicrosoftに入社したJohn Lam氏がブログで伝えています。

Introducing IronRuby

これまでは、守秘義務のため何もかけなかったとのことですが、IronRubyはIronPython同様、3週間に1回のリリースを目指すそうです。ライセンスはBSDライクな"Microsoft Permissive License":http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx だそうです。

また、Windows Presentation Foundation/Everywhere(WPF/E)と呼ばれていたリッチクライアント実行環境Silverlightでも、Python、JScriptに加えて、RubyとVBも利用可能になるそうです。

Published on 2007/05/01 at 12:26 by いたさん, tags , , , ,

Ruby Quiz: LCD

勉強会の題材で、Ruby Quizを取り上げているのですが、わたしの拙いプログラムを、皆様の御参考に公開してみようと思います。 最初は、LCD Numbersです。コマンドライン引数として渡された数字を、電卓の液晶画面のように表示するのが課題。サイズ指定も出来ることが条件です。 本来の出題意図は、空白  と - マイナスと | で数字を表現するらしいのですが、通常のターミナルではあまり数字らしく見えなかったので、 - の代わりに _ を使ってみました。

require 'optparse'

class Digit
  @@digits = Array.new
  @@digits[0] = [[" ", "_", " "],
                 ["|", " ", "|"],
                 ["|", "_", "|"]]
  @@digits[1] = [[" ", " ", " "],
                 [" ", " ", "|"],
                 [" ", " ", "|"]]
  @@digits[2] = [[" ", "_", " "],
                 [" ", "_", "|"],
                 ["|", "_", " "]]
  @@digits[3] = [[" ", "_", " "],
                 [" ", "_", "|"],
                 [" ", "_", "|"]]
  @@digits[4] = [[" ", " ", " "],
                 ["|", "_", "|"],
                 [" ", " ", "|"]]
  @@digits[5] = [[" ", "_", " "],
                 ["|", "_", " "],
                 [" ", "_", "|"]]
  @@digits[6] = [[" ", "_", " "],
                 ["|", "_", " "],
                 ["|", "_", "|"]]
  @@digits[7] = [[" ", "_", " "],
                 [" ", " ", "|"],
                 [" ", " ", "|"]]
  @@digits[8] = [[" ", "_", " "],
                 ["|", "_", "|"],
                 ["|", "_", "|"]]
  @@digits[9] = [[" ", "_", " "],
                 ["|", "_", "|"],
                 [" ", "_", "|"]]


  def initialize(size)
    @size = size
  end

  def row(n,row_num)
    case row_num
    when 0
      " " + @@digits[n][0][0] + @@digits[n][0][1] * @size 
          + @@digits[n][0][2]
    when Range.new(0,@size,true)
      " " + @@digits[n][1][0] + ' ' * @size 
          + @@digits[n][1][2]
    when @size
      " " + @@digits[n][1][0] + @@digits[n][1][1] * @size 
          + @@digits[n][1][2]
    when Range.new(@size,@size * 2,true)
      " " + @@digits[n][2][0] + ' ' * @size 
          + @@digits[n][2][2]
    when @size * 2
      " " + @@digits[n][2][0] + @@digits[n][2][1] * @size 
          + @@digits[n][2][2]
    else
      raise "Error"
    end
  end
end

size = 2
opt = OptionParser.new
opt.on('-s SIZE') {|v| size = v.to_i}

opt.parse!(ARGV)
number = ARGV[0]
out_digits = []
d = Digit.new(size)

0.upto(size * 2) do |i|
  line = ""
  number.each_byte {|c| line += d.row(c.chr.to_i, i)}
  puts line
end
</pre>

Published on 2007/04/30 at 15:47 by いたさん, tags , ,

Ruby Quiz: LCD

勉強会の題材で、Ruby Quizを取り上げているのですが、わたしの拙いプログラムを、皆様の御参考に公開してみようと思います。 最初は、LCD Numbersです。コマンドライン引数として渡された数字を、電卓の液晶画面のように表示するのが課題。サイズ指定も出来ることが条件です。 本来の出題意図は、空白  と - マイナスと | で数字を表現するらしいのですが、通常のターミナルではあまり数字らしく見えなかったので、 - の代わりに _ を使ってみました。

require 'optparse'

class Digit
  @@digits = Array.new
  @@digits[0] = [[" ", "_", " "],
                 ["|", " ", "|"],
                 ["|", "_", "|"]]
  @@digits[1] = [[" ", " ", " "],
                 [" ", " ", "|"],
                 [" ", " ", "|"]]
  @@digits[2] = [[" ", "_", " "],
                 [" ", "_", "|"],
                 ["|", "_", " "]]
  @@digits[3] = [[" ", "_", " "],
                 [" ", "_", "|"],
                 [" ", "_", "|"]]
  @@digits[4] = [[" ", " ", " "],
                 ["|", "_", "|"],
                 [" ", " ", "|"]]
  @@digits[5] = [[" ", "_", " "],
                 ["|", "_", " "],
                 [" ", "_", "|"]]
  @@digits[6] = [[" ", "_", " "],
                 ["|", "_", " "],
                 ["|", "_", "|"]]
  @@digits[7] = [[" ", "_", " "],
                 [" ", " ", "|"],
                 [" ", " ", "|"]]
  @@digits[8] = [[" ", "_", " "],
                 ["|", "_", "|"],
                 ["|", "_", "|"]]
  @@digits[9] = [[" ", "_", " "],
                 ["|", "_", "|"],
                 [" ", "_", "|"]]


  def initialize(size)
    @size = size
  end

  def row(n,row_num)
    case row_num
    when 0
      " " + @@digits[n][0][0] + @@digits[n][0][1] * @size 
          + @@digits[n][0][2]
    when Range.new(0,@size,true)
      " " + @@digits[n][1][0] + ' ' * @size 
          + @@digits[n][1][2]
    when @size
      " " + @@digits[n][1][0] + @@digits[n][1][1] * @size 
          + @@digits[n][1][2]
    when Range.new(@size,@size * 2,true)
      " " + @@digits[n][2][0] + ' ' * @size 
          + @@digits[n][2][2]
    when @size * 2
      " " + @@digits[n][2][0] + @@digits[n][2][1] * @size 
          + @@digits[n][2][2]
    else
      raise "Error"
    end
  end
end

size = 2
opt = OptionParser.new
opt.on('-s SIZE') {|v| size = v.to_i}

opt.parse!(ARGV)
number = ARGV[0]
out_digits = []
d = Digit.new(size)

0.upto(size * 2) do |i|
  line = ""
  number.each_byte {|c| line += d.row(c.chr.to_i, i)}
  puts line
end
</pre>

Published on 2007/04/30 at 15:47 by いたさん, tags , ,

達人プログラマー

達人プログラマー―システム開発の職人から名匠への道 を今読み始めたところです。

有名な本だとは知っていたのですが、最近できたジュンク堂に立ち寄った際に、Joel on Software と見比べて、こっちを先に買いました。

プログラマーだけではなく、ソフトウェア開発に携わる方すべてにお勧めです。

Ruby会議でDave Thomasさんの話が聞けるのが楽しみになりました。

Published on 2007/03/29 at 15:08 by いたさん, tags ,

Ruby on Rails 1.2リリース

ついに"Ruby on Rails 1.2が正式リリース":http://www.amazon.co.jp/Agile-Development-Rails-Dave-Thomas/dp/0977616630/sr=1-1/qid=1169475428/ref=sr_1_1/503-6687049-0063153?ie=UTF8&s=english-books
です。

APIドキュメントの翻訳は全然進んでいないのにどうしよう。

CHANGELOGが大量にありますが、詳細はAgile Web Development With Rails (Pragmatic Programmers) を参照ということで、早速Amazonで入手。読まなくっちゃ。

Published on 2007/01/22 at 14:19 by いたさん, tags , ,

Ruby declared TIOBE's Programming Language of 2006!

予想通り、RubyがTIOBE Softwareの調査での、Programming Language of 2006になりました。

TIOBE Programming Community Index

この選択基準は、人気指数の上昇度合いで決められているようです。Rubyは+2.15%で、2位のJavaScriptの+1.31%を大きく上回っての1位です。

1月のランキングでも、初のベスト10入りでした。9位にはその強敵JavaScriptが控えています。

Published on 2007/01/05 at 13:12 by いたさん, tags , , ,

Ruby declared TIOBE's Programming Language of 2006!

予想通り、RubyがTIOBE Softwareの調査での、Programming Language of 2006になりました。

TIOBE Programming Community Index

この選択基準は、人気指数の上昇度合いで決められているようです。Rubyは+2.15%で、2位のJavaScriptの+1.31%を大きく上回っての1位です。

1月のランキングでも、初のベスト10入りでした。9位にはその強敵JavaScriptが控えています。

Published on 2007/01/05 at 13:12 by いたさん, tags , , ,

あけましておめでとうございます

2006年は、Rubyの年でした。

Linux Journalの Editor’s Choice 2006 ではLanguage部門で、Ruby 1.8.5が、Web Application Framework部門ではRuby on Rails 1.1.6が受賞という結果でしたが、 TIOBE Softwareが毎月発表している、検索エンジンを使ったプログラミング言語のランキング、"TIOBE Programming Community Index":http://www.tiobe.com/tpci.htm では、2006年12月のランキングで11位とベストテン入り目前であり、programming language of the year 2006でも、トップを走っているなど受賞はほぼ確実と思われます。

まつもとさんは、"2006年11月28日のmatzにっき":http://www.rubyist.net/~matz/20061128.html#p05 で、Editor’s Choice受賞を、Railsのおかげと謙遜されていますが、2006年はRailsのHypeから始まったにせよ、2007年はRubyの言語としての魅力が理解され、より普及が進むと期待しています。

Published on 2007/01/01 at 14:27 by いたさん, tags

Powered by Publify | Photo Startup stock photos