Rubyに関するcrist18のブックマーク (40)

  • module SecureRandom (Ruby 1.8.7)

    クラスの継承リスト: SecureRandom 要約 安全な乱数発生器のためのインターフェースを提供するモジュールです。 HTTP のセッションキーなどに適しています。 以下の乱数発生器をサポートしています。 openssl /dev/urandom 上の安全な乱数発生器が使用できない場合、各メソッドは NotImplementedError を発生します。 # random hexadecimal string. p SecureRandom.hex(10) #=> "52750b30ffbc7de3b362" p SecureRandom.hex(10) #=> "92b15d6c8dc4beb5f559" p SecureRandom.hex(11) #=> "6aca1b5c58e4863e6b81b8" p SecureRandom.hex(12) #=> "94b2fff3e7

    crist18
    crist18 2014/07/01
    “安全な乱数発生器のためのインターフェースを提供するモジュールです”
  • Array#sample (Ruby 3.3 リファレンスマニュアル)

    sample -> object | nil[permalink][rdoc][edit] sample(n) -> Array sample(random: Random) -> object | nil sample(n, random: Random) -> Array 配列の要素を1個(引数を指定した場合は自身の要素数を越えない範囲で n 個) ランダムに選んで返します。 重複したインデックスは選択されません。そのため、自身がユニークな配列の場合は返り値もユニークな配列になります。 配列が空の場合、無引数の場合は nil を、個数を指定した場合は空配列を返します。 srand()が有効です。 [PARAM] n: 取得する要素の数を指定します。自身の要素数(self.length)以上の値を指定した場合は要素数と同じ数の配列を返します。整数以外のオブジェクトを指定した場合は to_

    crist18
    crist18 2014/07/01
    “array.sample sampleメソッドは、配列の要素を1つランダムに返します。配列が空の場合はnilを返します。”
  • Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号

    Rubyの定数が、他の言語の定数とはちょっと違う意外な仕様なのは理解していたが、もうひとつ意外な仕様があることを最近知った。なんかちょっと釣りっぽいタイトルになっちゃったけど。 再代入可能な定数 Rubyの定数は、他の言語のように変更を許さない(再代入させない)定数ではないことは有名。少なくとも自分は、Rubyを始めてから結構早い段階でこの仕様について知った。そして、最初にこれを知ったとき「これって定数じゃなくね?」って思った覚えがある。 HOGE = "hoge" HOGE = "fuga" puts HOGE このように再代入しても、警告は出るものの、実際の値は変わってしまう。 2: warning: already initialized constant HOGE fuga Rubyのこういった仕様に対して、良い意味での“ゆるふわ感”を感じる。こんなにゆるくて大丈夫?と思うくらい。

    Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号
    crist18
    crist18 2014/06/30
    このサイトかっこいい!
  • 知って得する21のRubyのトリビアな記法

    (追記:2013-08-16) 記事のトリビアを含む55のトリビアを以下の記事にまとめました。 知って得する!55のRubyのトリビアな記法 ちょっとトリビアだけど、知っていると意外と便利なRubyの記法を21個拾ってみたよ(Ruby1.9限定)。 君なら全部知ってるかもしれないけど.. 1. 動的継承 Rubyのクラス継承では < 記号の右辺にクラス定数だけでなくクラスを返す式が書けるよ。 class Male def laugh; 'Ha ha ha!' end end class Female def laugh; 'Fu fu fu..' end end class Me < [Male, Female][rand 2] end Me.superclass # => Female Me.new.laugh # => 'Fu fu fu..' def io(env=:develop

    crist18
    crist18 2014/06/30
    参考になります。
  • Object#freeze (Ruby 3.4 リファレンスマニュアル)

    freeze -> self[permalink][rdoc][edit] オブジェクトを凍結(内容の変更を禁止)します。 凍結されたオブジェクトの変更は例外 FrozenError を発生させます。いったん凍結されたオブジェクトを元に戻す方法はありません。 凍結されるのはオブジェクトであり、変数ではありません。代入などで変数の指すオブジェクトが変化してしまうことは freeze では防げません。 freeze が防ぐのは、 `破壊的な操作' と呼ばれるもの一般です。変数への参照自体を凍結したい場合は、グローバル変数なら Kernel.#trace_var が使えます。 [RETURN] self を返します。 a1 = "foo".freeze a1 = "bar" p a1 #=> "bar" a2 = "foo".freeze a2.replace("bar") # can't mo

    crist18
    crist18 2014/06/30
    “freezeメソッドは、オブジェクトを凍結、つまり変更不可にします。”
  • RubyのModuleについて - mirichiの日記

    Rubyを勉強し始めてマニュアルを眺めていたとき、どうしても理解できなかったことがある。 それはModuleで、クラスにincludeした場合にいったいどういう理屈で何が起こっているのかがわからなかった。別に内部的な話ではなく、たとえばincludeとextendの違いとか、そういう感じのことだ。 今回はこの間の記事では前置きでさらっと流してしまった部分、Moduleについて。 あ、そうそう。俺は別にRubyに詳しい人でもなくて、完全に理解できているわけではないから、間違っている可能性がおおいにある。なんとなく理解できた気がしたなら、実際に自分でコードを書いて検証するのがいいと思う。 俺の記事ではせいぜい、理解の壁になっている部分に小さなヒビを入れる程度にしかならないはずだ。 1. まず整理しよう。 Rubyはすべてがオブジェクトとなっていて、オブジェクトはそれぞれ自分自身をselfに切り

    RubyのModuleについて - mirichiの日記
    crist18
    crist18 2014/06/26
    includeの挙動など
  • Railsエンジニアならこれだけは知っておけっていう便利メソッド - (゚∀゚)o彡 sasata299's blog

    2011年07月26日13:29 Ruby Railsエンジニアならこれだけは知っておけっていう便利メソッド Object#presence と Object#try という便利なメソッドがあることをご存知ですか?この2つのメソッドはとっても便利なのでちょっと紹介してみます。 Object#presence メソッド これは以下のような定義となっています。 def presence self if present? end present? メソッドというのはみんな大好き blank? の反対のメソッド (!blank?) です。 つまり、nil, false, [](空配列), {}(空ハッシュ), ""(空文字列), " "(半角スペースだけの文字列)であれば false、それ以外であれば true になります(blank? って半角スペースだけの文字列を true と判定するの知って

    crist18
    crist18 2014/06/25
    “user.try(:name) || '名無し'”
  • Object#tap (Ruby 3.4 リファレンスマニュアル)

    tap {|x| ... } -> self[permalink][rdoc][edit] self を引数としてブロックを評価し、self を返します。 メソッドチェインの途中で直ちに操作結果を表示するためにメソッドチェインに "入り込む" ことが、このメソッドの主目的です。 (1..10) .tap {|x| puts "original: #{x}" } .to_a .tap {|x| puts "array: #{x}" } .select {|x| x.even? } .tap {|x| puts "evens: #{x}" } .map {|x| x*x } .tap {|x| puts "squares: #{x}" } [SEE_ALSO] Object#yield_self

    crist18
    crist18 2014/06/25
    “tapメソッドは、ブロック変数にレシーバ自身を入れてブロックを実行します”
  • Object#respond_to? (Ruby 3.3 リファレンスマニュアル)

    respond_to?(name, include_all = false) -> bool[permalink][rdoc][edit] オブジェクトがメソッド name を持つとき真を返します。 オブジェクトが メソッド name を持つというのは、オブジェクトが メソッド name に応答できることをいいます。 Windows での Process.fork や GNU/Linux での File.lchmod のような NotImplementedError が発生する場合は false を返します。 ※ NotImplementedError が発生する場合に false を返すのは Rubyの組み込みライブラリや標準ライブラリなど、C言語で実装されているメソッドのみです。 Rubyで実装されたメソッドで NotImplementedError が発生する場合は true を返し

    crist18
    crist18 2014/06/25
    “respond_to?メソッドは、レシーバのオブジェクトに対してメソッドを呼び出せるかどうかを調べます”
  • Ruby (ファイルに書き出す。)

    ●ファイルを新規に作成する場合には、File.openの第2引数に"w"を指定します。 File.open("foo.txt","w"){|file| file.puts("lien1") file.puts("line2") } ●File.openの第2引数を以下のように細かく指定することもできます。また、第3引数にモードを指定できます。 flags = File::CREAT | File::TRUNC | File::WRONLY mode = 0600 File.open("foo.txt", flags, mode){|file| file.write("data0") file.write("data1") } ●ファイルの末尾に、データを追記するには以下の例のようにします。 File.open("foo.txt","a"){|file| file.puts "2 line"

    crist18
    crist18 2014/06/16
    Rubyファイルの書き込み。
  • Rubyで "&" を使うと幸せになれるらしいよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog

    2010年02月03日21:31 Ruby Rubyで "&" を使うと幸せになれるらしいよ (*´Д`)ノ なんか似たようなタイトルを見たことあるな…まぁいいか。 Perlで+を使うと幸せになれるよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog ブロック処理 ( do...end もしくは {...} ) の例としてはこのような3種類があります。 #1 ブロックの中に直接処理を書く方法 #2 ブロックの中でやらせたい処理の Proc オブジェクトを呼び出す方法 #3 ブロックを使わずに Proc オブジェクトに & を付けて渡してあげる方法 3つとも全く同じ処理です。#3 みたいに書く事も出来るんですね〜。& が Proc オブジェクトをブロックに変換してくれます。 #1 3.times do puts 'hogehoge' end proc = Proc.new

    crist18
    crist18 2014/06/13
    .map(&:length)
  • 逆引きRuby – www.namaraii.com – Index of TAKEUCHI, Hitoshi

    逆引きRubyRubyを使ってやりたい事から、その方法を調べられる逆引きのリファレンスです。 逆引きRubyはもともとWikiで運用していました。このため、サイトのコンテンツは私以外の多くの方によって作成・編集されたものです。 2017年に静的HTML(jekyll)の管理へ移行しましたが、2018年10月からScrapboxへ移行しました。どなたでも編集いただけますので、ご協力いただける方はよろしくお願いします。 逆引きRuby (https://scrapbox.io/rubytips/逆引きRuby)

    crist18
    crist18 2014/06/13
    ruby tips 数値計算。
  • How to check if a Ruby object is a Boolean

    I can't seem to check if an object is a boolean easily. Is there something like this in Ruby? true.is_a?(Boolean) false.is_a?(Boolean) Right now I'm doing this and would like to shorten it: some_var = rand(1) == 1 ? true : false (some_var.is_a?(TrueClass) || some_var.is_a?(FalseClass))

    How to check if a Ruby object is a Boolean
    crist18
    crist18 2014/06/11
    ruby booleanの型チェック。
  • Array#sort (Ruby 3.4 リファレンスマニュアル)

    sort -> Array[permalink][rdoc][edit] sort! -> self sort {|a, b| ... } -> Array sort! {|a, b| ... } -> self 配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。 ブロックとともに呼び出された時には、要素同士の比較をブロックを用いて行います。ブロックに2つの要素を引数として与えて評価し、その結果で比較します。ブロックは <=> 演算子と同様に整数を返すことが期待されています。つまり、ブロックは第1引数が大きいなら正の整数、両者が等しいなら0、そして第1引数の方が小さいなら負の整数を返さなければいけません。両者を比較できない時は nil を返します。

    crist18
    crist18 2014/06/09
    sortメソッドでブロックにパラメータを渡して処理する。
  • 配列から要素が「nil」のものを取り除く(compact)

    Array クラスの compact メソッドを使用すると、配列に格納されている要素の中で nil のものを除外します。ここでは Ruby で要素が nil のものを取り除く方法について解説します。

    配列から要素が「nil」のものを取り除く(compact)
    crist18
    crist18 2014/06/04
    配列の要素がnilのものを取り除く。Array.compact
  • rubyのnextに引数与えるとnil返さずにすむのしらなんだ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    rubyのnextに引数与えるとnil返さずにすむのしらなんだ - Qiita
    crist18
    crist18 2014/06/04
    nextの挙動。引数無しだとnil, 指定すれば引数が返る。
  • Array#flatten (Ruby 3.4 リファレンスマニュアル)

    flatten(lv = nil) -> Array[permalink][rdoc][edit] flatten!(lv = nil) -> self | nil flatten は自身を再帰的に平坦化した配列を生成して返します。flatten! は自身を再帰的かつ破壊的に平坦化し、平坦化が行われた場合は self をそうでない場合は nil を返します。 lv が指定された場合、lv の深さまで再帰的に平坦化します。 [PARAM] lv: 平坦化の再帰の深さを整数で指定します。nil を指定した場合、再帰の深さの制限無しに平坦化します。整数以外のオブジェクトを指定した場合は to_int メソッドによる暗黙の型変換を試みます。 [EXCEPTION] TypeError: 引数に整数以外の(暗黙の型変換が行えない)オブジェクトを指定した場合に発生します。 [EXCEPTION] Ar

    crist18
    crist18 2014/06/04
    Array.flattenメソッド。配列中に含まれる配列からすべて要素を取り出して親の配列の中に並べる。
  • Enumerable#collect (Ruby 3.3 リファレンスマニュアル)

    collect -> Enumerator[permalink][rdoc][edit] map -> Enumerator collect {|item| ... } -> [object] map {|item| ... } -> [object] 各要素に対してブロックを評価した結果を全て含む配列を返します。 ブロックを省略した場合は Enumerator を返します。 例 # すべて 3 倍にした配列を返す p (1..3).map {|n| n * 3 } # => [3, 6, 9] p (1..3).collect { "cat" } # => ["cat", "cat", "cat"] [SEE_ALSO] Hash#to_h, Array#collect, Array#map

    crist18
    crist18 2014/06/04
    Array.mapメソッド。要素の数だけ繰り返し、ブロックの戻り値を集めた配列を返す。
  • Rubyにおける==,===,eql?,equal?の違い - ぬいぐるみライフ?

    どれが何なのかたまに混乱するのでメモ. == オブジェクトの同値性のチェック クラスやオブジェクトの性質に合わせて再定義できる === オブジェクトの同値性のチェック(所属性を加味) case式で使われる クラスやオブジェクトの性質に合わせて再定義できる eql? オブジェクトの同値性のチェック(==より厳密) Hashで二つのキーが等しいかどうかを判定するのに使われる クラスやオブジェクトの性質に合わせて再定義できる 再定義した場合はhashメソッドも再定義しなければならない equal? オブジェクトの同一性のチェック object_idが一致するかどうかを調べる 再定義してはならない 比較表 効果使用場面再定義 ==同値性のチェック同値性のチェック○ ===同値性のチェック(所属性)case式○ eql?同値性のチェック(厳密)Hashキーの比較○(※) equal?同一性のチェック

    Rubyにおける==,===,eql?,equal?の違い - ぬいぐるみライフ?
    crist18
    crist18 2014/06/04
    同値チェックと同一性チェック。
  • Rubyのハッシュと配列の検索速度の違い - 久保清隆のブログ

    Ruby(1.8.6)で大量のデータを検索することがあったので、ハッシュと配列の検索速度はどのくらい違うのかを検証してみた。 検証用コード ※面倒なので変数名とか超適当にした。 # compare_hash_speed_with_array.rb 1 #!/usr/local/bin/ruby 2 n = 120000 3 4 a = {} 5 t1 = Time.now 6 n.times do |t| 7 a.update(t * 10000 + t => t + 123456) 8 end 9 t2 = Time.now 10 p "#{t2 - t1} sec for making hash sample" 11 12 b = [] 13 t3 = Time.now 14 n.times do |t| 15 b << [t * 10000 + t, t + 123456] 16 e

    Rubyのハッシュと配列の検索速度の違い - 久保清隆のブログ
    crist18
    crist18 2014/06/03
    Rubyはハッシュ検索のほうが速い。