購読を始めるとコンテンツの最初のページから毎日1ページずつお届け。
のんびりペースで読むフィード。

rubyco(るびこ)の日記 2006年3月

スポンサードリンク

 タグ Ruby rubyco 勉強日記 プログラミング

 31ページ (31日間購読)

 1人購読中

  http://d.hatena.ne.jp/rubyco/

rubycoと同じペースでほほえみつつRuby。三ヶ月目です。

このフィードは部分配信フィードです。

このコンテンツに含まれるページ一覧

文字列リテラルクイズ Rubyで以下のスクリプトを実行したら何が表示されるでしょうか。実行すればすぐにわかるので、特に答えは書きません。 p " #{ " p " " } " } " # } " Permalink | コ...
Method#call 明示的にブロック引数をもらってcallする練習です。 def rubyco(c, &block) print c block.call(block) if block print c end rubyco('*') { rubyco('^') } #=> *^^* block_given?とyieldで実現した場合。 de...
$SAFE 変数$SAFEを1以上に設定すると、外部からのtaintedなデータを使った危険な処理ができなくなります。 以下では、環境変数経由でのevalがエラーになっています。 ENV["SECRET"] = "put...
alias メソッド名をaliasすると、メソッドに別名をつけることができます。別名といっても定義をシェアしているわけではないようです。元のメソッドを再定義しても、別名の側の...
pp ppを使うとプリティプリントができます。 require 'pp' a = { "Bobby" => 19, "Elvis" => 19, "Grimm" => 19, "Fredy" => 19, "Haris" => 13, "David" => 13, } b = { "Alice" => 13, "Chris" => 16, } people = [ a, b ] p people pp p...
Segmentation fault Segmentation faultが出てしまいました。 Windows XP 標準入力がNULデバイス STDIN.tty? #!行なし .rbはrubyに関連づけ C:\temp> assoc .rb .rb=rbFile C:\temp> type 1.rb STDIN.tty? C:\temp> type 2.rb re...
[am]エラトステネスの篩 Rubyで「エラトステネスの篩」を実装しました。単純な版♪ def sieve(m) prime = (0..m).to_a (2..m).each do |p| next if not prime[p] yield(p) if block_given? (p+p..m).step(p) do |k| prime[...
Mutex Mutex#lock, Mutex#unlockとbegin ... ensure ... endでクリティカルセクションを作りました。 require 'thread' M = Mutex.new def normal(c) 10.times { print '.' sleep rand(nil) / 10 } end def critical(c) c = c.upcase M.l...
Regexp.escape Regexp.escapeを使うと、正規表現で特別な意味を持つ文字を\でエスケープしてくれます。Regexp.quoteも同じです。 以下は、正規表現で特別な意味を持つ文字の一覧を表示す...
Struct Structクラスを使って、構造体クラスを作ることができます。 構造体クラスには自動的にアクセサが作られます。 以下のプログラムでは、Peopleというクラスを作っています。...
文字列リテラルとobject_id Rubyの文字列リテラルは、評価するたびに新しいオブジェクトが作られます。 object_idを調べればそのことが確認できます。 a = 'hello' b = 'hello' c = 'hello' p a.o...
rjust, ljust rjust, ljustでは、文字列を右寄せ、左寄せにします。 p "Rubyco".rjust(40) p "Rubyco".rjust(40, ".") p "Rubyco".ljust(40) p "Rubyco".ljust(40, ".") 実行結果です。 " Rubyco...
FEEDBRINGER 「FEEDBRINGER.netというサイトで、この「rubyco(るびこ)の日記」が日間・週間・月間の人気フィードになっている」と教えていただきました。見てみますと、日間1位・週間1...
send Object#sendメソッドは、メソッド呼び出しを行うメソッドです。 class Rubyco def self.hello(name) puts "Hello #{name}!" end end Rubyco.hello('Alice') #=> Hello Alice! Rubyco.send(:hello, 'Alice') #=> He...
method_added with callcc Module#method_added, Module#method_removedを使うと、メソッドの追加(定義)と削除を監視できます。 class Rubyco def self.method_added(sym) puts "method_added(#{sym})" end def self.method_removed...
ρヒューリスティック 大きな数の因数を発見的に求めるρ法(Pollardのρヒューリスティック)をRubyで実装しました。 # 2個の素数の積を因数分解する def factor_two(given) start = Time.now one =...
ブロックはProc ブロックとして渡されてくるのはProcオブジェクトです。proc { } や lambda{ }もProcオブジェクトです。ただ { } と書くとHashオブジェクトですね。 def p_block(&block) p block.cl...
Array.newとブロック 初期値を定めるために、Array.newにブロックを与えることができます。 a = Array.new(7) do |i| (?A + i).chr end p a #=> ["A", "B", "C", "D", "E", "F", "G"] 上と同じことは、以...
イテレータ変換 内部イテレータを外部イテレータに変換します。 あ、えーと、一言で言えばeachをnextに変換するということです。 each-ableなコレクションを渡してIteratorオブジェ...
Bindingと継続の類似性 bindingで作った「もし再帰の深みで評価したら」のサンプルを見ていて、「《Binding》って《継続》と似ているところがあるのでは?」と思いました。その「似...
nilとfalse Rubyの「偽」はnilとfalseだけです。 p !!nil #=> false p !!false #=> false でも、nilとfalseは等しくありません。 p (nil == false) #=> false Permalink | コメント(0) 0と"" Rubyでは...
Errno errno のリストもほしいと書かれていたので調べてみました。 プラットホーム固有のOSのエラー一覧は、Errno.constantsで得ることができます。 require 'pp' pp Errno.constants 実行結果で...
callerとalias callerとaliasを使うと、異なる名前で呼ぶとそれに応じた処理を行うRubyメソッドが作れるという話題がありました。なるほどです。 Permalink | コメント(0) SIGALRM 眠いので...
cryptの使い方 前もってcryptで作っておいた結果(saved_secret)を、次回はsaltとして使います。 実際にはsaltは乱数を使います。 password = "PaSsWoRd" salt = 'Ru' saved_secret = password.crypt(salt) #=...
Complexクラスと!のついたメソッド Complexは複素数です。 require "complex" c = Complex(1, 2) p c #=> Complex(1, 2) p c.real #=> 1 p c.image #=> 2 p c.arg #=> 1.10714871779409 p c.polar ...
Marshalでdeep copy Object#dupはshallow copyですけれど、Marshal.dumpとMarshal.loadでdeep copyになります。 a = ["A", ["B", "C"]] # dup - shallow copy b = a.dup p a == b #=> true p a.object_id == b....
Class.new Class.newを調べようと思ってri Class.newしたら以下のように怒られてしまいました。 私の理解ではClass.newとClass::newはほぼ同じで、メソッドのときには . を使い、定数の時には...
!が着いたメソッド探し ObjectSpaceを使って、!が着いたメソッド探しをしましょう!(これは感嘆符) name = Array.new ObjectSpace.each_object(Class) do |c| c.instance_methods(false).each do |mname| # super not in...
標準出力のリダイレクト IO#reopenを使うと、リダイレクトができます。 以下のプログラムでは、標準出力をoutput.txtというファイルにリダイレクトしています。"a"を使っているので...
変数$?とtexpdf.rb texpdf.rbは、pLaTeXPDF変換をするバッチファイル的なスクリプトをRubyで書いたものです。 目次生成のためにplatexを二回走らせるのですが、何らかのエラーが起こってp...
String#sum String#sum(bits=16)は単純なサムチェックを取るメソッドです。引数はビット数。 疑問:ri sumには「the sum of the binary value of each character in _str_ modulo +2n - 1+」と書いてありますが、...
FAQ  利用規約  お問い合わせ  管理人ブログ  Copyright (c) 2006-2010 brass.to