Ruby

メソッドとクロージャとオブジェクト

ときどきの雑記帖 i戦士篇: Rubyについて Part 33 (http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0811c.html#D20081125-5) メソッドとクロージャに関して、 表層的には ・ブロックが関数と同等でない(ブロックをとれないなど) ・内部関数(Schemeのinte…

まるごとRuby!

404 Blog Not Found: Ruby beyond Rails - 書評 - まるごとRuby! (http://blog.livedoor.jp/dankogai/archives/51060449.html) artonさんの記事が読みたいから買おうかな。『まるごとPython!』はいつ出るのだろう。

無限リスト

メモ。後で試す。 バリケンのRuby日記: Ruby 1.9のEnumerable::EnumeratorとStreamで無限リスト (http://rubyist.g.hatena.ne.jp/muscovyduck/20080122/p1)

sort_by

先日の日記のコメントでsortよりsort_byを使った方が良いとご指摘頂いた。Rubyのsort_byはPythonで言うところのDSUにより実装されているらしい。まとめると以下の通り。 Ruby Python sort sort(cmp=...) sort_by sort(key=...) RubyのEnumerable#sort、Enume…

アレイのuniq

どう書く?org: アレイのuniq (http://ja.doukaku.org/16/) Pythonの以下の事をRubyでやってみた。 xs = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9] sorted(set(xs), key=xs.index) require 'set' xs = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9] S…

Enumerator

odz buffer: Enumerator (http://d.hatena.ne.jp/odz/20080111/1200070915) trunkではちゃんと動くらしい。trunkというのは調べてよく分からなかったが正しく動くということなので自分が使用したバージョンのバグだろうか? Pythonは安全性やシンプルさを重…

with_index

Rubyの外部イテレータ使えない…。ちなみに以下のサンプルは1.9.0でテストした。 > (1..4).each.with_index.to_a => [[1, 0], [2, 1], [3, 2], [4, 3]] > e = (1..4).each.with_index => #<Enumerable::Enumerator:0xc8c404> > e.next 1 何でe.nextで[1, 0]でなくて1が返るのかな?with_indexの</enumerable::enumerator:0xc8c404>…

モジュール

モジュールを少し勉強した。 module Trig PI = 3.141592654 def Trig.sin(x) # .. end end requre 'trig' y = Trig.sin(Trig::PI/4) reqireで文字列で渡すのはまあ良いとして、定数アクセスの"::"と、メソッドアクセスの"."を区別しているのは気に入らない。…

Rubyの学習

昨日ピッケル本第2版で少し勉強していたがRubyはPythonよりも覚えることが多い。覚えることが嫌いな人はRubyは好きになれないかもと思った。バイナリ本家サイトに置いてないし。 昨日面倒だと思ったのは、同値判定に==、===の2種類(も含めて3種類?)あったり…

Ruby 1.9.0 Windowsバイナリ

http://www.garbagecollect.jp/ruby/mswin32/ja/download/develop.html 見つけた!置いてある場所が分かりにくい…。明日は有給で明日から休みなので年末はピッケル本第2版でRubyを勉強するつもり!e = [1,2,3].eachで、ブロックを与えなければeが外部イテレ…

1.9.0

本家サイトからダウンロードしたらバイナリじゃないやん!one click installerが出るまでやる気なくなった…。

Enumerator

面白い記事があった。 まめめも: Enumerator とブロックの省略 (http://d.hatena.ne.jp/ku-ma-me/20071129/p1) Enumeratorの3つのメリットとして、外部イテレータとして使える、Enumerable#with_indexが使える、Enumerable#zipの引数に渡せるというのがあっ…

takeやdrop

d.y.d: ヘッドドロップ (http://www.kmonos.net/wlog/79.html#_2005071114) k.inabaさんのheadやdropをPythonでどう書けるか検討してみた。 from itertools import dropwhile, takewhile # Pythonで # Rubyの妄想で # 結果 [1,2,3,4,5][0] # [1,2,3,4,5].hea…

関数内ローカルな関数

常山日記経由で面白い記事を見つけた。 msshの日記: 関数内ローカルな関数が定義 (http://d.hatena.ne.jp/mssh/20071102) スコープは奥が深いし非常に重要な機能だと思うので、Pythonのスコープはいずれまとめたいと思っている。PythonはローカルになるがRub…

ピッケル本第2版

第1版も持っているが、もう一度読み直そうと思ってピッケル本第2版を会社で読んでいる。Duck Typingという用語はこの本が発信元だと思うが、その部分の説明をPythonでは『初めてのPython第2版』でどういう説明をしていたか忘れた。RubyGemsの内容も第2版…

RubyKaigi2007

開催することすら忘れていてチケットとれなかったので行ってない訳だが、いつの間にか終了していたみたい。 tomisima::memo (http://d.hatena.ne.jp/tomisima/20070609) を読んでいるとRubyは2011年に書籍が14冊も出るらしく、RubyがJavaの次の言語になる気…

メタプログラミング

Rubyでプログラム内で関数を定義するには、Module#define_methodを使用する(Mudule#module_evalやModule#instance_evalを使用した方法もあるが省略)。 irb(main):001:0> class GeneratedFetcher irb(main):002:1> def fetch(how_many) irb(main):003:2> puts…

デコレータ

RubyのModuleクラスのattr_accessor、attr_reader、attr_writer、private、protected、publicメソッドはデコレータメソッドである。 class Foo1 def test print "hello\n" end private :test end class Foo2 private def test print "hello\n" end end Pytho…

Enumerableモジュール

RubyのEnumerableで重要なメソッドとPythonのメソッドとの対応表は以下のもの。 Ruby Python collect map find_all, select filter inject reduce sort_by sorted また、Rubyのは、Pythonのcmpと同等なもの。Pythonではmap、filterはもちろん関数でなくリス…

Rubyの嫌なところ

『Rubyクックブック』を読んで、早速、嫌なところをいくつか書いてみる。 関数にカッコが不要なので優先順位に注意しないといけない 1.upto 3 do |x| puts x end # 1 # 2 # 3 1.upto 3 { |x| puts x } # ブロックが3にバインドしてしまう # SyntaxError: com…

Ruby本

オライリーのサイトで『JavaからRubyへ』という本の第一章を無料で読めるので読んでいて興味を持ち、会社帰りに『JavaからRubyへ』と『Rubyクックブック』を勢いで買ってしまった。 Rubyは捨ててPythonに集中しようと思っていたが転職も考えているし、これか…

昨日の感想の再考

Domain Specificな(開発対象の分野に特有の)ベースのライブラリをクライアントに安全で使いやすいように設計・実装するのは難しい。それによりアプリ側に近い部分(上位階層の部分)の処理のロジックも良い意味で自由度が減って(つまり誰が作成しても似たよう…

昨日メモした記事に関して

気になったところがいくつかあった。 経験の浅いプログラマにとって,適切なアルゴリズムで繰り返したり,適切なリソース管理を実装したりすることは容易ではありません 後半部分はともかく、前半部分は重要だろうか?確かに例で挙げていた木構造のデータを…

記事のメモ

まだ読んでないが、面白そうだったのでメモ。読んだら感想書くつもり。 Rubyを仕事に使うべし! Part1なぜ仕事で使うとうれしいのか http://itpro.nikkeibp.co.jp/article/COLUMN/20060919/248312/

最近のRuby本

最近気になったRuby本を挙げておく。買わないが。 洋書 Ruby Cookbook 和書 はじめてのRuby on Rails Ruby on Rails入門 かんたんRuby on RailsでWebアプリケーション開発 はじめようRuby on Rails ライド・オン・Rails Ruby on Railsを徹底攻略 Railsによる…