Ruby

RubyKaigi 2013 三日目

二日目が終わって宿に戻り、晩飯を食べたらすぐに寝てしまった。夜中に起きてアニメ見たり日記を書いたり風呂に入ったりしていたりしたら朝になってしまい、そのまま出発。 早めに出たので時間に余裕はあったが、キャリーケースを置く場所を探すのに一苦労。…

RubyKaigi 2013 二日目

昨日変な時間に寝てしまい、夜中に起きてそのまま変なテンションで日記を書いた。その後一旦寝て起きたら時間ギリギリで、ゆりかもめに乗るつもりがTWRの駅の改札くぐったり、青梅駅通過後に大きく曲がって会場から離れていくんじゃないかとハラハラしたりし…

RubyKaigi 2013 一日目

RubyKaigi 2006以来7年ぶり2回目の参加。初めてのPassbookの利用にビビりながらも受付を済ませ、バッグやらTシャツやらをいただく。ちなみにTwitterでやたらとこのバッグの匂いについての言及を見かけた。 鍵のかかっていないアクセスポイント(dena_use_ruby…

ODSファイル同士の比較表示

TortoiseSVN向けにWinMergeを使ったODSファイルの差分を表示するスクリプトをRubyで書いた。普段TortoiseSVNの「差分ビューアー」に登録する場合はexerbを使って実行ファイル化するんだけど、exerbを使えるRuby 1.8環境にはNokogiriをインストールしてなくて…

x64-mswin64版Ruby 2.0.0-preview1をVisual Studio 2012 for Desktopでビルドした

前回 x64-mswin64版Ruby 1.9.3をビルドした - 単なる日記@はてな に懲りず、今回もx64-mswin64版Rubyをビルドしましたのでメモします。記事の内容も前回に沿った形にします。今回はわりと楽でした。 環境はこんな感じ: Windows 7 SP1 Visual Studio 2012 Ex…

x64-mswin64版Ruby 1.9.3をビルドした

2012-07-03追記: NokogiriのGitHubのURLが変更されたことへの追従。https://github.com/tenderlove/nokogiri → https://github.com/sparklemotion/nokogiri 以前から何度も玉砕している、x64-mswin64版Ruby 1.9.x(今回は1.9.3-p125)のビルドに成功したので、…

ruby-buildにconfigureのオプションを渡す

FreeBSD上でrbenv install 1.9.3-p0としたらiconvが無効になってたので、いつものconfigureのオプション--with-opt-dir=/usr/localを渡した。やりかたはgoogle:rbenv configure オプションとかなんとかでググった結果から類推した。その覚書。 % env CONFIGU…

トップレベルでのメソッド定義とSimpleDelegator

たまたまRuby 1.9.2でportupgradeを動かした時に気付いたのですが、以下のコードがRuby 1.8.7とRuby 1.9.2とで挙動が異なります。 require 'delegate' def foo :foo end class A < SimpleDelegator def initialize @obj = [] super(@obj) end def bar foo en…

MacRuby 0.7.1同梱のmacirbがうまくうごかない (追記あり)

たまたまmacirbを触ってみたら以下のようになった。macgemでインストールしたdietrbも同じ結果。 % macirb irb(main):001:0> RUBY_DESCRIPTION => "MacRuby 0.7.1 (ruby 1.9.2) [universal-darwin10.0, x86_64]" irb(main):002:0> $: TypeError: can't conve…

MacRuby

RubyKaigi2009で発表してきました - @takuma104 log 上記発表のスライドやUstreamでの動画を見ていると、またMacRubyを使いたくなってきた。以前MacRuby 0.1か0.2の頃にインストールしたら上手く動かせなかったのでその時はメゲてしまったんだよなあ。iPhone…

Ruby版Text::HatenaのAWS対応

Amazonからデータをもらう為のライブラリをruby-amazonからruby-awsに変更したが、その際AWSアクセスキーIDが必要になった。従来はサブスクリプションIDを使うようになってて、Perl版Text::Hatenaで使われていたものをそのまま使っていた。で、今回はてなのA…

Ruby版Text::Hatena

ついでに書くけど、先日、Text::Hatena 0.12の仕様のほとんどを実装したような気がする。ただそれをどうやって確かめようかな。足りないテストがあるかどうか確認しないとなあ。

Text::Hatenaとhtmlsplit.rb

rails で Comment クラスが作れなかった件 - #生存戦略 、それは - subtechを読んで、久しぶりにText::Hatenaクラスを触りました。最初htmlsplit.rbを変更しないようにと思いましたが、trunkでは既に別件で手を加えているので、結局trunkとtags/text-hatena-…

question:1159850302へのフォロー

ありがとうございます。key=[URL]で指定されるURLにGetパラメータが含まれていた場合には、[URL]が分解されるので正しくリクエストできませんね。[URL]を丸ごと取得する方法をご存知であれば教えていただけますか。ポイントを差し上げます。 もしも、対象と…

BetaBrite

g:subtech:id:secondlife:20061002:1159777329経由、http://tenderlovemaking.com/2006/09/28/new-ruby-betabrite-002/。わはは、すげー。ということで記念に私も一つ(jpが妙にかわいい)。

Rubyist Magazine 0016号

るびま 帰宅してから読む。

enumerator

enumerator - #生存戦略 、それは - subtechを読んで、たしかRuby 1.9では以下のように書けるとどこかで読んだ気がしたので実際に試したらちゃんと動いた。これはかっこいい。 [1, 1, 1].map.with_index {|e, i| e + i} # => [1, 2, 3] なんとなくeach_with_…

可変長引数とデフォルト式

ちなみに、可変長引数に対してデフォルトの値(配列)を設定してみると、def foo(a=1,*b=[1,2,3]) puts "#{a}:#{b.inspect}" end ./method3.rb:1: syntax error def foo(a=1,*b=[1,2,3]) ^怒られた。デフォルト値に配列を使用してはいけない(というかどんな値…

Log4rのローテート条件をカスタマイズする

http://www.eto.to/nikki/?date=20060528#p03より。LoggerではLogger::LogDevice#check_shift_logがローテートするタイミングを計る箇所、Log4rはOutputterとしてLog4r::RollingFileOutputterが用意されている。しかしいずれもファイルサイズまたは経過時間…

逆算

a - Swing 42 (+C) - Rubyistより。文字列で26進数ネタ。勉強のために逆算してみた。 n = 0 "unko".each_byte do |c| n = n * (?z - ?a + 1) + c - (?a - 1) end n -= 1 # => 378860 最後に1引くのは文字列末尾の a が26進数での0として扱うが、他の桁では a…

バイナリサーチ

RubyでSuffixArray - 趣味的にっきにおいて「今回は自分でバイナリサーチのアルゴリズムを実装しています。Ruby標準では提供されていないのかな。」と書かれているのを見てbsearchという単語を思い出した。おそらくWe retire raa.ruby-lang.orgのこと。Ruby/…

スレッドに対してSIGALRMを送る方法は?

SIGALRM - rubyco(るびこ)の日記より。プログラミング言語 Ruby リファレンスマニュアルを読んだ感じでは、シグナルを送る先はRuby自身のプロセスであり、一スレッドにのみSIGALRMを送ることは出来なさそう。Thread.killの例にもProcess.kill :QUIT, $$ # …

WEBrickには%uとか使えないの?

WEBrickには%uとか使えないの? - ma2の日記より。WEBrick::HTTPUtils::_unescapeで対応してみた。以下のコードを使うかどうかはともかくこれくらいの変更で済むなら、要望すれば正式に対応してくれそうな気がする。 # -*- mode: ruby; coding: utf-8 -*- re…

newを書かずにインスタンス生成

newを書かずにインスタンス生成 - rubyco(るびこ)の日記より。id:rubycoさんはClass#inheritedにてグローバル変数を設定してからトップレベルでeval、コメントのid:sumimさんはevalの引数にトップレベルのBindingを明示的に指定している。そのほかの方法と…

Feature Base Object Management & Task Oriented Programming

2005-12-13を読んで、元コードを実行せずに妄想で書いてみるテスト(すいません)。 module ManagedObject @@classes = [] @@features = {} @@all_objects = [] @@objects = {} def self.extended(mod) @@classes << mod super end def features(*args) @@feat…

サブクラスにだけメソッドのオーバーライドを禁止させるには

2005-11-17のコメント欄にも書いたんだけど、こちらにも書いておきます。 class C def self.method_added(name) if instance_methods(true).member?(name.to_s) and self != C raise "Can not override the method `#{name}''." end end def foo end end cla…

キーワード引数

id:kusigahama:20051021#p1につけたコメントへの追記。 名前さえわかれば、その順番にHashの値をArray化して、*で引数に展開することはできますよね。というのは多分以下のようなものを想定しているのだと想像しました。 def calc(foo, bar, baz) foo + bar …

アルファベットと数字の連結

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789という出力を得る簡潔な方法について。 Perlならprint "a".."z","A".."Z",0..9だけで済むが、Pythonだとordやchrが必要になるので、長ったらしくなってしまうま。 Rubyだとどうですか。 prin…