2008-01-01から1年間の記事一覧

1.9系での標準添付ライブラリ

RakeとかRubyGemsとか入っちゃうってのは小耳に挟んだりしてたけど、きちんとは調べていない。 たぶん1.9系とそれまでとの違いとかを纏めてるとこは探せばそれなりにあるんだろうけど、めんどいので自分で調べた。 るりまのスナップショット http://doc.okke…

minitest - TestCase's instance's condition

[#22944] TestCase uses common @name ivar http://rubyforge.org/tracker/index.php?func=detail&aid=22944&group_id=1040&atid=4097 最もな意見だ。ただ、@nameのみならず@passedもアレだなぁ。 @passedはテスト結果がおかしくなる(十分うっとおしい問題だ…

minitest - assert_instance_of と assert_kind_of について(2)

もう指摘がありましたね。 [ruby-core:20605] [Bug #895] MiniTest::Assertions#refute_instance_of should use Object#instance_of? http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/20605

minitest - assert_instance_of と assert_kind_of について

def assert_instance_of cls, obj, msg = nil msg = message(msg) { "Expected #{mu_pp(obj)} to be an instance of #{cls}, not #{obj.class}" } flip = (Module === obj) && ! (Module === cls) # HACK for specs obj, cls = cls, obj if flip assert cls …

はてな記法:スーパーpre記法について

前のエントリを眺めてると載せたソースコードが変に切れているところがある。 どうやらスーパーpre記法の中に「」があるとそこが記法の終りにされてしまっているらしい。 改悪じゃね?

CSVライブラリを久々に使う

というのは、自分がCSVを扱うときはcsvscanを使ってたからです。 http://raa.ruby-lang.org/project/csvscan/ Rubyで配列から特定の添字だけ削除する - rubyneko http://ujihisa.nowa.jp/entry/91c50b5a16 より。やってみる。 require 'csv' src = './flag.d…

Rubinius インストール

andLinux上で。メモ。 必要なもの git(ソースコード管理 / apt-get install git-core) Rake(ビルドツール) ってことになるんですが、Rakefileがさらに Ruby1.8.x(あたりまえ) ParseTreeライブラリ に依存しているので、 zlib (apt-get install zlib1g-dev / …

WWW::Mechanize on Nokogiri (2)

/lib/nokogiri/hpricot.rbというそのものズバリなライブラリを見逃してました。orz # prevent to load real hpricot library $LOADED_FEATURES.push 'hpricot.rb' module WWW class Mechanize Hpricot = nil end end require 'nokogiri/hpricot' require 'ww…

クロノ・トリガー(1)

原始探訪いっかいめ。 物々交換で武具を手に入れるので、その際に必要な素材アイテムの個数を計算する。 chrono-primeval-exchange.rb #!ruby -Ks def main p exchange_contents( "ルビーガン" => 1, #ルッカ "ひじりのゆみ" => 1, #マール "ストーンアーム"…

hatena/diary/client.rb

待望の投稿API! これはありダラ(仮)をいじくるしかない!!とりあえずRuby用のサンプルもあったので、見よう見まねでやってみる。 投稿成功。 この例では日本語書いてないんですけど、はてなダイアリーAtomPubの 文字コードはUTF-8だそうです。 #!ruby -Ku req…

WWW::Mechanize on Nokogiri

Hpricot互換ということで思いつく。 が、やってみたらテストが結構な結果に。 242 tests, 1239 assertions, 20 failures, 4 errorsひょっとしてMechanizeってインタフェース越しだけじゃなく Hpricotの中身にも手を出してる?ちなみにwww/mechanize/nokogiri.…

Nokogiri - Hpricot互換HTMLパーサ

だそうです。他にもXMLとかSAXとかXSLTとか?

MinGWでw3mビルド (2.1)

寝るって言ったけど。 $ make 2>&1 | ruby parse_make_out.rb warning error func.c 432 83 funcname.c 340 277 functable.c 1545 5parse_make_outはこんなん。 marks = ['warning', 'error'] counts = Hash.new{|h, k| h[k] = Hash.new(0) } ARGF.each do |…

MinGWでw3mビルド (1)

w3m-0.5.2 GCC 3.4.5 makeの途中でmktable.exeがSEGVって(Windowsだけど)死んでしまう。 Windowsにw3mを導入する http://d.hatena.ne.jp/muttyu/20070831/1188516923 同様の症状の方を発見。 どうやらBoehm GCが悪いらしい。

MinGWでw3mビルド (2)

でもってさっそくリトライ。 gcc -I. -I. -g -O2 -I./libwc -I/usr/local/include/gc -I/usr/local/include/gc -DHAVE_CONFIG_H -DAUXBIN_DIR=\"/usr/local/libexec/w3m\" -DCGIBIN_DIR=\"/usr/local/libexec/w3m/cgi-bin\" -DHELP_DIR=\"/usr/local/share/w…

MinGWでBoehm GCビルド

gc-7.0 無事ビルドからインストールまで成功。 が、しかし、こんなしょぼいプログラムで落ちる。 #include <stdio.h> #define GC_NOT_DLL #include "gc.h" int main(void){ char *s; s = GC_MALLOC(sizeof(char) * 10); return 0; } doc/README.changesによるとスレッ</stdio.h>…

TinyCSS

http://d.hatena.ne.jp/milk1000cc/20080703を読んで、自分なりに いじってみた。 class TinyCSS class ParseError < ::RuntimeError ; end def self.read(filename) new().parse(File.read(filename)) end def self.parse(str) new().parse(str) end def in…

Obook Plugin 1.0 + avast! Anti Virus

ObookのOBHook.dllとやらがトロイ認定されてObookが(avastシールド有効だと) 使えなくなった。死ねばいいのに。

急にFizzBuzz

モジュールによるMonkey Patch。 module FizzBuzz Divisor = [ 3, 5 ] Strings = [ 'Fizz', 'Buzz' ] def fizzbuzz (rests = Divisor.map{|d| self % d == 0}).inject{|r, i| r || i } ? rests.zip(Strings).map{|r, s| r && s }.select{|x| x }.join : self…

インタプリタのスタックトレースの真似

例外が補足されずに終わったときのやつのこと。 def print_stack_trace(ex) $stderr.puts "#{ex.backtrace.shift}: #{ex.message} (#{ex.class.name})" $stderr.puts ex.backtrace.map{|b| "\tfrom #{b}" } end

RDocのささやかなカスタマイズ

自分でhtml_generatorみたいなのを書くのは大変なので、 if __FILE__ == $0 # RDocを走らせるアプリケーション else # テンプレートの定義 end こんなん書いて'-T'オプションで指定することにした。 アプリ部分は具体的に言うとこんなの。 full_path = File.…

どれくらい日記をつけてんだろうか

$ ls -1 ~/diary/*.txt | cat -n | tail -1 | awk "{print $1}" 96今日のエントリも含めて96日分つけているらしい。 $ wc.exe --bytes ~/diary/*.txt | tail -1 209383 totalついでに。約200KBか。 青空文庫の夏目漱石「こころ」が約360KBだ。(370,958 bytes…

rdv.rb

自作のYARF + VisualuRubyで。 RDをパースしてHTMLに変換した結果をIEコンポーネントで見ます。 立ち上がるのはHTMLをレンダリングして自らに表示するだけの窓です。プルダウンメニューもなにもあったもんじゃありません。見終わったら閉じてください。 requ…

wc.rb

情けないことにいっつもいっつもwcの出力の見方を忘れてhelpを見てるので(つまりそんなに頻繁に使わない)、 require 'optparse' require 'shellwords' echo = true targets = [] add_target = lambda{|ident| lambda{ targets << ident } } no_echo = lambda…

expectrb

標準添付のtestrbみたいなののexpectations用をでっち上げる。 Test::Unit::AutoRunnerに相当するものはないのでそのへんを書いて、自分用に合せる。 pwdがhoge/のときに expectrb -dtest でhoge/test/test_*.rbを実行してくれる辺りは気に入ったかも。ちょ…

いろいろと書いた小物が増えてた

気まぐれに晒してみる。

Float#ceil vs Integer#divmod

とあるアプリを書いているときに、 「ある個数の要素の集まりを、一定の数単位で分ける。 その単位に足りない余りも、分けられた一つとして数える。 するといくつに分けられるか」という処理を書くことになりました。 我ながら日本語が実にヘタだ。つまり例…

alist to hash

何かそれっぽいことはHash.[]で出来るらしいっす。 h = Hash[*alist.flatten] ちゃんとしたalistならこれで十分。 引数の数が合わないと例外になってくれるからいいのかね。いちおう、[...[key, value]...]でないalistでも変換できるようにするには、 h = Ha…

Swiby もどき

まるごとRuby! vol.1(isbn:9784844325796) の JRuby の紹介を呼んでいて、Swiby という Swing を扱うためのライブラリを知る。その DSL になんかちょっとくすぐられたので、VisualuRuby をラップしてそれっぽいものをでっちあげて見た。

expectations on Windows

これはバクに入るのかな?expectations は expect のファイル名と行番号を得るのに caller を呼んで split(':') で取り出している。 だもんで、Winでドライブレター含むフルパスを渡すと(C:/test_hoge.rb とか)、Failure のときとかに表示される行番号が変に…