タグ

ブックマーク / mickey24.hatenablog.com (7)

  • Rubyによるワンライナーのまとめ - ぬいぐるみライフ?

    Rubyでワンライナーを書く際によく使うコマンドライン引数と具体例をまとめてみた. 基 -e : コマンドラインからスクリプトを指定 コマンドラインからスクリプトを指定する場合に使う.ワンライナーでは必須. $ ruby -e 'puts "Hello, world!"' 行単位の処理 -n : 各行ごとに処理 プログラム全体が以下のwhileで囲まれているように動作する. while gets ... end 標準入力やファイルの各行に対して処理を行いたい場合に便利.getsの結果は$_に格納される. $ ruby -ne 'puts $_ if $_.include?("mickey24")' foo.txt -p : 各行ごとに処理&出力 -nとほぼ同様だが,各ループの最後で print $_ が実行されるようになる.標準入力の各行に対して処理を行いつつ出力していく場合に便利. $

    Rubyによるワンライナーのまとめ - ぬいぐるみライフ?
    taka222
    taka222 2011/03/10
  • Rubyの難読化へのさらなる一歩 - ぬいぐるみライフ?

    RubyではUTF-8文字の変数名を使うことができるということを@fusuianさんとの会話で思い出した. このことを利用すると,以下のように変数名を全角スペースにしてしまうこともできる. # -*- coding: utf-8 -*- = "Hello, world!" puts 読めない. また,どうやらRLO(文字列の順番を右→左の向きにするための特殊文字)も変数名として使うことができるらしく,このようなプログラムも書けてしまう.リンク先のソースではxの直後にRLO文字が入っている.そのせいで当は12345と書いてあるのに54321と書いてあるように見える.これはひどい. これらを使うことでもっと面白い難読プログラムが書けそうだ.

    Rubyの難読化へのさらなる一歩 - ぬいぐるみライフ?
    taka222
    taka222 2011/01/10
  • Hashみたいだけどちょっと違うHashie::Mash - ぬいぐるみライフ?

    Hashie::MashはRubygemsのパッケージで公開されているclassのひとつで,m.key = valueのような書き方でkeyにアクセスできるHashのようなもの.twitterパッケージの内部でも使われている. GitHub - intridea/hashie: Hashie is a collection of classes and mixins that make hashes more powerful. 使い方 gemコマンドでインストールできる. $ sudo gem install hashie利用するにはhashieをrequireする必要がある(Ruby1.8以前の場合は先にrequire "rubygems"しておく). require "hashie" 以下,コード例.これだけでなんとなく雰囲気は分かると思う. m = Hashie::Mash.new

    Hashみたいだけどちょっと違うHashie::Mash - ぬいぐるみライフ?
    taka222
    taka222 2010/11/02
  • RubyでうどんげQuine(とAA型Quineの作り方講座) - ぬいぐるみライフ?

    山手Quineのid:ku-ma-meさんに敬意を表しつつ. Quineって何なの Quineとは実行すると自身のソースコードを出力するプログラムのこと. クワイン (プログラミング) - Wikipedia うどんげQuine ソースコードがうどんげのAAになっているQuineコードを作ってみた.Gistはこちら. udonge_quine.rb eval$s =%w' b= " BAhsKwG vfg A AAAAA PAAA AIw AA AAA gD8AAAA4 AQA AA Ph 4AAAAcAMAA ICDf wA A AOAGAADA8D8 AAAD wB g AAQPwfAAAA eAY AA E D/AwAAA DgGA AB A fwAAAAA 8DAAA QH 8 AAA AAf BgAABB 3A AAA A PhhAAC OfgAAA A D wgwCA4G 8A

    RubyでうどんげQuine(とAA型Quineの作り方講座) - ぬいぐるみライフ?
    taka222
    taka222 2010/09/16
  • Rubyにおける==,===,eql?,equal?の違い - ぬいぐるみライフ?

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

    Rubyにおける==,===,eql?,equal?の違い - ぬいぐるみライフ?
    taka222
    taka222 2010/09/14
  • Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?

    Rubyベストプラクティスの5-4より.メタプログラミングの例として面白かったのでまとめてみる. メモ化とは メモ化とは,引数に対するメソッドの戻り値を保存しておき,再び同じ引数でメソッドが呼び出された時にその値を再利用することにより,同じ計算を何度もすることを防ぐ最適化手法のひとつ.全ての引数に対しメソッドの結果が不変の場合(同じ引数で何度呼び出しても毎回同じ戻り値を返す場合),メソッドをメモ化することができる. 以下はフィボナッチ数を再帰で計算するメソッドfibの例. def fib(n) (0..1).include?(n) ? n : fib(n-2) + fib(n-1); end この実装の場合,例えばfib(n)はn = 3で5回,n = 4で9回というように,nの値が大きくなるにつれて再帰呼び出し回数がどんどん増え,実行時間が爆発的に増大してしまう.私の環境だとfib(30

    Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?
    taka222
    taka222 2010/09/07
  • 読んでおきたいRuby本 - ぬいぐるみライフ?

    C++のついでに読んでおきたいRubyも列挙してみる(既読含む). 既読 初めてのRuby 他のプログラミング言語の学習経験がある人向けのRuby入門書.224ページと非常にコンパクトで読みやすく,なおかつ要点が分かりやすくまとめられている.また,ブロック構文におけるdo endと{}の使い分けなどへの言及もあり,Rubyらしいコードを書く上で非常に参考になる. 初めてのRuby 作者: Yugui出版社/メーカー: オライリージャパン発売日: 2008/06/26メディア: 大型購入: 27人 クリック: 644回この商品を含むブログ (251件) を見る プログラミング言語 Ruby バイブル.格的にRubyという言語を学びたい人は読むべし. プログラミング言語 Ruby 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘出版社/メーカー: オラ

    読んでおきたいRuby本 - ぬいぐるみライフ?
    taka222
    taka222 2010/09/03
  • 1