ruby

ファイルを監視するやつ

http://subtech.g.hatena.ne.jp/secondlife/20070228/1172625779もう素晴らしい回答が出てきてるような気もしますがとりあえず勉強がてらやってみました。Observable初めて使った。 # lib/file/stat/observable.rb require 'observer' require 'thread' $LOA…

inject

http://d.hatena.ne.jp/nazoking/20070217#1171687914 [1,2,3,4,5].inject({}){|hash,item| hash.merge!({item => item}) } #=> {5=>5, 1=>1, 2=>2, 3=>3, 4=>4} [1,2,3,4,5].inject({}){|hash,item| hash[item] = item; hash } #=> {5=>5, 1=>1, 2=>2, 3=>3…

海外で入れてるgemを曝すのが流行ってるらしいですよ

http://smartic.us/2007/2/11/show-us-your-gems http://www.robbyonrails.com/articles/2007/02/12/gems-gone-wild http://www.clarkware.com/cgi/blosxom/2007/02/10#GemSurvey http://www.chadfowler.com/2007/2/11/show-us-your-gemsってそんなに多くは…

Cerberus

http://cerberus.rubyforge.org/index.htmlsvnとかで管理されてるプロジェクトのソースコードを取ってきて,ビルドやテストなどを実行し,エラーがあるとメールだとかRSSだとかにして発信できるツールのようです。設定ファイルがYAMLなところとかPlaggerを思…

はてなブックマークをバックアップ

クローラーを書いてたら年末に今年一年のブックマークの分析をしようとして書いていたやつを思い出した。 require 'rubygems' require 'feed_tools' require 'pp' $KCODE = 'u' hatena_b_feed_uri = "http://b.hatena.ne.jp/walf443/atomfeed?date=20060101"…

WWW::Mechanizeで青空文庫の一覧を得る

[Ruby] 青空文庫の作品一覧のhtmlファイルを配列として得る http://rubyist.g.hatena.ne.jp/muscovyduck/20070205/p1をWWW::Mechanizeを使ってやりました。 require 'rubygems' require 'mechanize' $KCODE = 'utf-8' agent = WWW::Mechanize.new page = age…

CGI.unescapeの挙動

nazonoDiary - [Ruby]Hpricot からテキストを取り出す http://d.hatena.ne.jp/nazoking/20070202/1170428250をやってみて気づいた。ruby 1.8.5 (2006-08-25) [i686-darwin8.7.1]にて。 CGI.unescapeHTML('& &') #=> "& &" もちろん&単体が入っている…

それHpricot(ry

あまりしっかり読んでなくてスルーしていたのですが,http://wota.jp/ac/?date=20070115#p01で使われているような特定のページにCSSセレクタをかけるようなケースならまさにHpricotが適任だと思います。ScrAPIの良いところはむしろ簡単にParser用のクラスを…

Hpricot 0.5

http://redhanded.hobix.com/inspect/andNowHpricot05IsYours.htmlCSSセレクタもさらに色々対応するようになったらしいです。http://code.whytheluckystiff.net/hpricot/wiki/HpricotChallengeに大きな変更点がまとまってるようです。 さっきインストールし…

HTMLページをRSSに変換するのに便利なFeedalizer

http://termos.vemod.net/feedalizerAPIはScrApiと結構似ている感じです。内部的にはHpricotを使っていてコードはファイル一つでそれほど行数もないのですぐ読めます。Feedを作成する部分は標準添付のrss/makerを使ってるようです。RubyでPlagger::CustomFee…

クリスマスパーティーのプレゼント交換プログラムのテストを書く

クリスマスパーティーでプレゼント交換を行う。 全員、誰かにプレゼントを一つあげ、誰かからプレゼントを一つもらう。 参加者は、自分と同じグループに属している人にはプレゼントをあげない。 どのグループにも属さない人や、複数のグループに属する人はい…

Ruby忘年会

Rails勉強会の後はRuby忘年会に参加。 一次会 50名参加ということで1テーブルあたり約10人とやや狭かった。自分たちのテーブルは一番奥ということもあってかやや広めだった。一次会は自分のテーブルはささださんとコーディングスタイルの話で少し盛り上…

Rails勉強会@東京第13回

忘年会で最近更新があまりないと言われてしまったのでちゃんとログぐらいは書くことにします。Rails勉強会@東京第13回に参加してきました。 AWDwR 2ndを読む 前半はかわむらさんのAgile Web Development with Rails 2nd Editionをみんなで読みながら具体的…

日本語のYAML#dump

ちょっと前まで1.8.2を使っていたので気づかなかったのですが、1.8.5だと日本語をYAML#dumpするとUTF8でもbinaliy扱いされてしまうのですね…。うーん。これはあまりうれしくない…。

RubyForgeにsvkが使えない?

Rubyforgeのリポジトリをsvkに入れるとNetwork closed unexpectedlyとなってsvk pullができないことが多いのは自分だけでしょうか。

ネストしたクラスの他のクラスへの参照の仕方について

もち ー [Ruby]内部クラスと外部クラスの解 http://d.hatena.ne.jp/omochist/20061102/1162475536 より で,ふと思ったのですがHoge.class_eval %{ … }じゃなくて,わざわざ Hoge.class_eval %{ … } って書いているのは,id:walf443さんの美学だったりするの…

Rote::Format::HTML#link_relを勝手にかけてくれるRote::Filters::AutoLinkRel

昨日に引き続き、roteを使ってみて不便だったところを拡張してみました。標準ではRote::Format::HTML#link_rel(or relative)というメソッドをつかうとROOTからの相対パスにして返してくれるというメソッドがあるのですが、ほとんどのURIを記述する場面でこれ…

内部クラスから外部クラスのクラス変数を参照する

もち - 内部クラスと外部クラス http://d.hatena.ne.jp/omochist/20061101/1162393034 より。class_eval使って::Hogeクラスのコンテキストにしてやれば参照することができます。元のサイトではインスタンス変数を使っていましたがやりたいこと的にはクラス変…

静的Webサイト生成に便利なrote

Rubygemsのroteが静的Webサイトの生成に便利です。まだまだ機能は少ないのですが、Railsのレイアウト機能を取ってきた感じなのでRailsやってる人は何となく使い方を把握するのは早いと思います。`rote create PROJECT_NAME`を実行すると、gem/rote-xxx/lib/r…

iTunesのプレイリストの再生順トップ5を表示するスクリプト

RubyOSAのgemができたようなので試してみた。 #!/usr/bin/env ruby require 'rubygems' require 'rbosa' require 'kconv' $KCODE = 'u' itunes = OSA.app 'iTunes' current_playlist_tracks = itunes.current_playlist.tracks current_playlist_tracks\ .sor…

Kernel#new

Javaとかやった後にRubyを触ってうっかりnewを先にタイプしてしまうときに… module Kernel def new(const, *args, &block) const.__send__ :new, *args, &block end end arr = new Array #=> [] arr = new Array, 3 #=> [nil, nil, nil] arr = new(Array, 3)…

gettext-scaffoldのパッチ

初期状態ではshow、confirm_create、confirm_update、confirm_deleteのページのカラムがローカル化するようにされてないのでそれをローカル化するパッチを書きました。(もしかするとローカル化するようにされていないのは何か罠があるからかもしれませんが…

正規表現にURLを書く際の.の扱い

URLの正規表現を使う際に.を毎回エスケープするのはめんどくさそうだなと思ってふと思いついたのが、 %r{#{"http://\w+.g.hatena.ne.jp".gsub('.', '\.')}とか。もちろん正規表現の.は使えなくなるし普通にやるより遅いはず。正規表現の.もちゃんと使えるよ…

irbでオブジェクトの中身を表示しない

irbは非常に便利なのですが、Hpricotなどをirbで使っていた際にHpricotのオブジェクトをinspectした結果は非常に長いため、オブジェクトを返したくない場合もあります。そんなときは、次のように出来ます。 doc = Hpricot(open('http://b.hatena.ne.jp/')); …

Module::Require

Rubygemsのライブラリのソースを眺めていると、 $:.unshift(File.dirname(__FILE__)) require "hoge"とか require File.dirname(__FILE__) + "hoge"とか書かれてたりするけど、見た目がなぁ…ということで、こんなの書いてみた。 walf443@colinux:module_requ…

rdefsをRails仕様に拡張してみる

最近はRubygemsのRSSを眺めて面白そうだなと思ったらインストールして軽く使い方とソースを眺めるというのがマイブームだったりするのですが、ソースを眺めるときに青木さんのrdefsは便利だなぁと思いました。ただRailsとかだとcattr_readerとか色々拡張され…

Rails Chatがいつの間にか進化してる

しばらくRails Chatに行ってなかったんだけど久々に行ってみたらめちゃくちゃ進化してる。コードの貼り付け機能がとてもナイスです。最近IRC使うようになったんでIRCの方が都合が良かったりもするのだけど、このコード貼り付け機能はIRCではうまくいかないん…

Debianのrubyだとmkmfとか標準で入ってないらしい

Hpricotを試してみようと思ってインストールしていたらmkmfがないと言われた。ruby1.8-devパッケージをインストールして解決できました。Cの拡張ライブラリを入れる際にはmkmfがないとインストールできないので注意されたし。

"_”続き

ということでやってみた。 class Object def _(i) end end #=> nil hoge._ 3 #=> nil何かに見えないこともないけど、今のところ良さそうな例はない。 うーん。やっぱり非推奨っぽい。なんか使えそうな例があればコメント&TBを。

暗黙の変数$_とブロックパラメータ

ラクダ本を読んでいてPerlの$_はややこしいといえばややこしいのでRubyではあまり推奨されるべきではないなとは思うのだけど、Rubyの高階関数を使うときに引数が一つの場合はせっかくあるのなら$_を使うことも出来たらよかったのにと思ってしまう。 # 例: […