タグ

Rubyとtipsに関するtyabeのブックマーク (33)

  • 知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 知って得する21のRubyのトリビアな記法: melborne.github.com - ちょっとトリビアだけど 知っていると意外と便利な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

    知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby - hp12c
  • スクリプト言語:Rubyでどう書く? - builder by ZDNet Japan

    builder by ZDNet Japanをご愛読頂きありがとうございます。 builder by ZDNet Japanは2022年1月31日にサービスを終了いたします。 長らくのご愛読ありがとうございました。

  • 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によるワンライナーのまとめ - ぬいぐるみライフ?
    tyabe
    tyabe 2011/03/11
    コマンドライン引数のまとめ
  • RubyGemsのバージョンをダウンしたりアップしたり - アインシュタインの電話番号

    ちょっとBundlerがらみでハマったときに「RubyGemsのバージョンが原因かな?」と思ったので、RubyGemsのバージョンを最新版から特定のバージョンに下げる方法と、また元に戻す方法について調べた。 バージョンダウン RubyGems 1.4系が出たときに、Ruby 1.9系で動かないという問題があって結構話題となり、それが解消されたRubyGems 1.5系が出たときにはRailsの特定のバージョンで動かないという問題が出た。その時にRubyGemsをバージョンダウンする方法を載せた記事を見ていたので、それを参考にやってみた。RubyGemsをバージョンダウンするには、rubygems-updateというgemをインストールして行う。 $ gem -v 1.5.2 $ gem list rubygems-update ### LOCAL GEMS *** rubygems-upd

    RubyGemsのバージョンをダウンしたりアップしたり - アインシュタインの電話番号
  • Rubyの末尾再帰最適化を理解する - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyの末尾再帰最適化を理解する : melborne.github.com - RubyではSchemeなどとは異なって 末尾再帰の最適化を勝手にしてはくれません 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! でもid:athosさんが Rubyで末尾再帰最適化を実現するコードを書いてくれました Rubyで末尾再帰最適化をする。 - Homoiconic Days 自分の実力だと一見しただけでは何をしているか理解できなかったので 少し自分用にコードを整理してその処理を追ってみます class Module def tco(meth) called = false tmp = nil orig_meth = "orig_#{meth}" alias

    Rubyの末尾再帰最適化を理解する - hp12c
  • 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! : melborne.github.com - 「計算機プログラムの構造と解釈」で 末尾再帰というものを知ったので勉強しました 自分の理解を書いてみます 再帰 再帰呼び出しとはある手続きの中で 再びその手続き自身を呼び出すことと定義される*1 でもこの定義は正確じゃない なぜなら再帰呼び出しは自分自身を呼んでいないからだ 階乗を考えてみよう 階乗は数学的にこう定義できる 但し、自然数n=1のときは1 ふつうRubyで階乗メソッドはこう書く def fact(n) if n == 1 1 else n * fact(n-1) end end fact 5 #> 120 factメソッドの中でfactメソッド

    再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! - hp12c
  • Ruby-1.9でutility_belt - suzumura_ssのブログ

    かなり便利な gem utility_belt ですが、Ruby1.9系で使えません。(utility_belt-1.1.0) $ irb -r utility_belt /usr/local/lib/ruby/gems/1.9.1/gems/utility_belt-1.1.0/lib/utility_belt.rb:16: in `block in <top (required)>': wrong number of arguments (1 for 0) (ArgumentError) from /usr/local/lib/ruby/1.9.1/irb.rb:61:in `call' from /usr/local/lib/ruby/1.9.1/irb.rb:61:in `start' from /usr/local/bin/irb:12:in `<main>'gems/utili

    Ruby-1.9でutility_belt - suzumura_ssのブログ
  • Rubyで末尾再帰最適化をする。 - Homoiconic Days

    元ネタはPythonで末尾再帰最適化をする。 - wasabizの日記。Pythonのデコレータを使って、末尾再帰で書かれた関数に対して末尾呼び出し最適化(TCO)を行う、というものです(どうやってTCOを実現しているかの詳細についての説明はここでは割愛します)。 さて、元エントリでは「Pythonがすごいからこんなことができるんだ」という感じで書かれていますが、タネさえ分かればいろんな言語でできそうだということが分かったので、他の言語でも試してみることにしました。 まずはじめに、試しにScheme版を書いてみたものの、そもそもSchemeはTCOを勝手にやってくれるのであまり意味のない例になってしまいました。 その後、Scheme版をだいたいそのままRubyに書き直したのが以下のRuby版です。 class Module def tco(name) continue = [] first

    Rubyで末尾再帰最適化をする。 - Homoiconic Days
    tyabe
    tyabe 2011/01/20
    なんでtcoをModuleクラスに入れたんだろう?
  • 未経験で初めてgemを作ってみたので晒してみる - (゚∀゚)o彡 sasata299's blog

    2010年12月22日23:12 Ruby 未経験で初めてgemを作ってみたので晒してみる (この記事は Ruby Advent Calendar jp:2010 の 22 日目。前日は yuunachan さんでした) # gem を一度も作ったことない人が gem を初めて作ってみる話です # この記事を読んで、「gem って意外と簡単に作れるんだ〜」と思ってもらえれば幸いです ということで、gem 作ってみましょー まず、gem の生成に必要なファイルを全部一から書くとか気が遠くなる作業なので、ライブラリを使ってひな形をどかどか〜っと作ってしまいます。今だと jeweler っていうライブラリが良いようなのでさくっとインストール。 gem install jeweler んで、さっそくひな形を作ってみます。--rspec って付けると、付属するテストを RSpec 仕様にしてくれます

  • Vim で快適デバッギング。もちろん Ruby スクリプトの。

    (この記事は Ruby Advent Calendar jp:2010の 14 日目です。前日は ujihisa さんでした。) こんにちは。時が経つのは早いもので、もう 14 日ですね。 Ruby の話題ばかりで皆さん飽きてらっしゃると思うので、今日は便利な Vim Script vim-ruby-debugger を紹介します。 vim-ruby-debugger は、名前から想像出来るように、Vim から ruby-debug を使うためのものです。 この Script をインストールして、 :Rdebugger のように起動すると、デバッグモードに入ります。 止めたい場所で、 <leader>b とタイプすると、ブレークポイントを設定することが出来ます。 コードを実行して、BP を設定した場所までくると、自動的に実行が一時停止して、Vim は該当にカーソルを移動します。 vim-r

  • Rubyでメタプログラミング 〜暗黙的に呼ばれるto_procメソッド - (゚∀゚)o彡 sasata299's blog

    2011年01月08日23:09 Ruby Rubyでメタプログラミング 〜暗黙的に呼ばれるto_procメソッド 先日、こんな感じの処理に遭遇しました。はて、、何じゃこりゃ・・(´・ω・`) ポカーン (1..5).each(&method(:puts)) と思って調べたのでまとめておきます。この処理が理解できれば一人前です。きっと。 ブロックはオブジェクトではない Ruby では大抵のものがオブジェクトですが、オブジェクトではないものも一部あります。ブロックがその一つです。 例えばこんな風にブロックを定義することは出来ません。 block = { "test" } # in:1: odd number list for Hash そもそも Ruby の構文ではハッシュとして扱われるためブロックを直接生成することは出来ません。Block.new みたいな構文も無いので、ブロックは ti

  • hirbでActiveRecordの検索結果を見やすく表示する方法 - YomuKaku Memo

    Railsのscript/console、つまりirbの上でActiveRecordの検索結果を出力した場合、例えばUser.allなどの結果を出力すると、 のようにとても見づらい出力を得ます。 これを、hirb というgemをインストールすることにより、次のようにとても見易い出力に変えることができます。 hirbをインストールするには gem install hirb とし、hirbを使用するために、~/.irbrcを以下のように設定します。 require 'rubygems' require 'irb/completion' require 'hirb' Hirb.enable hirbに関するより詳しい説明は、Tagaholic の Hirb – Irb On The Good Stuff にあります。

  • Java で暗号化したデータを Ruby で復号しようとしたら大変だった件 - Candy

    blowfish で暗号化するからキーはこれね、と適当なことを言われてデータを渡された。 経緯はこれ http://d.hatena.ne.jp/download_takeshi/20100819/1282173492 と殆ど一緒。 padding 方式とか暗号化方式とか一切聞かなかったのも元記事と同様。全然 Ruby で正しく復号も手元で暗号化することも出来ない。 Q. そこで私はどうしたか。 A. Rjb を使いました。 Rjb を使うことで Ruby プログラマーJava のクラスを Ruby のクラスのように使うことが出来ます。とても便利。 Ruby でどうこうするというのは早晩諦めて(いろいろ調べるのめんどくさいし時間もなかったし Java の場合のリファレンス的なものは先方から貰えたので)、 Java のクラスを Rjb 経由で Ruby から使用することにしました。 Ru

    Java で暗号化したデータを Ruby で復号しようとしたら大変だった件 - Candy
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 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で任意のメソッドをメモ化する - ぬいぐるみライフ?
  • rvmのirbで日本語入力できない - rochefort's blog

    readlineが読み込めてないのが原因。 解決方法 readlineを指定してinstall。 macportsで入れた場合は下記でOK。 rvm install 1.9.2 -C --with-readline-dir=/opt/local/ 最近、homebrew入れたので readlineの場所が/usr/local なんだろうなと思い rvm install 1.9.2 -C --with-readline-dir=/usr/local/でやってみるがNG。 Accented chars in IRB with RVM and ruby 1.8.7 | Plataforma Tecnologia Blogにも書かれてる。 調べてみると、rvmでその辺のモジュールをパッケージとして管理しているらしい。 RVM: Ruby Version Manager - 'rvm package

    rvmのirbで日本語入力できない - rochefort's blog
  • Rubyでブロックを使ったアサーション。 - このブログは証明できない。

    Rubyでassertをブロックで書けるようにします。コードを見れば、一目瞭然です。Evernoteを整理してたら出てきました。このネタ、どこで知ったんだっけ。。 準備です。 module Assertions class AssertionError < StandardError end def assert(&block) yield or raise AssertionError end end blockの実行結果がfalseだと、AssertionErrorが発生するようになっていますね。 コード中でassertを書きます。 class Person include Assertions def initialize(name) assert { name != nil } @name = name end end Person.new(nil) #=> AssertionEr

  • irb_rocketでirbをハッシュロケット化する - Hello, world! - s21g

    irbはインタラクティブにrubyのコードを実行出来る 非常に便利なユーティリティですが、 脳内にある「irbのあるべき姿」と比べると、 ちょっとだけ足りないところがあると思っていました。 そこで、思い通りの動きをするようにirbをカスタマイズする irbプラグイン irb_rocket を作ってみました。 これを使うと、いつも見慣れたirbが、こんな風になります。 inputの末尾に#=>に続いて結果が表示されます 結果はWirbleを使って色づけしています 標準エラー出力への出力は赤で表示します インストール方法 irb_rocketは wirble と ruby-terminfo に依存しているので、 それらをインストールします。 続いて、以下のようにhttp://merbi.stからgemをインストールします。

  • Rubyで簡単にエスケープシーケンスによる色付け→timestampスクリプト改良 - http://rubikitch.com/に移転しました

    エスケープシーケンスで色をつけるのは端末アプリケーションだと定番だ。 Rubyで色つき文字を出す場合、わざわざエスケープシーケンスを書く必要はない。Term::ANSIColorというライブラリを使えばいい。 インストールは「gem install term-ansicolor」で。 require 'term/ansicolor' class String include Term::ANSIColor end というコードを入れておけば、文字列に色名メソッドなどが定義されててわかりやすく記述できるぞ。こんなふうに。 print "red bold".red.bold, "\n" timestampコマンドを色付きにしてみる [update] <2010-03-30 火> シグナルで終了したときには、プロセスオブジェクトを表示してみた。 任意のプログラムを実行するとき開始/終了時のタイム

    Rubyで簡単にエスケープシーケンスによる色付け→timestampスクリプト改良 - http://rubikitch.com/に移転しました
  • はてなブログ | 無料ブログを作成しよう

    台北市立動物園と迪化街めぐり 子連れ台湾#5 年越し台湾旅行5日目、レジャーや友人との事を楽しむ日です。前日の様子はこちら www.oukakreuz.com 台北市立動物園へ パンダ館 パンダが見られるレストラン 迪化街へ 林茂森茶行でお茶を購入 小花園で刺繍グッズを購入 黒武士特色老火鍋で夕 台北市立動物園へ 松…

    はてなブログ | 無料ブログを作成しよう