2008-12-01から1ヶ月間の記事一覧

テストの共通ロジックをわかりやすく呼び出す手法

巷ではOne assertion per testなどと言われてますが、流石にアサーションを1回にするのは難しいところ。ならば共通部分を抜き出してテストを分離し、なるべくアサーションを減らす方向を取るのが現実的だと考えられます。 その際、なるべくロジックを共通化…

Ruby,Python,PHP,Perl,JavaのCodeReposコミット回数を比較してみた。

突発的に思いついたので実装してみようと思ったらRuby/SVNがバインディングだったのでPure Rubyで書いて、はてなグラフで視覚化してみた。 Perlすげえ! 説明不要ッ!ちなみにPerlを抜いたらこんな感じ。 どっこいどっこいかなー。ついでにそのsvn部分だけ抜…

StarRuby用フレームワークStarFrameをCodeReposに移動

こっそり(というか外部でも開発できるように)Google Codeに入れてたStarRuby用フレームワークStarFrameを、CodeReposに移しました。 http://svn.coderepos.org/share/lang/ruby/starframe ついでに必要性を突っ込まれてた部分をザックリ削除。サンプルはそ…

はてブのタグにスラッシュ入れたらアクセスできなくなった。

「klass」というタグだったのを、「Ruby/klass」にしてみたら http://b.hatena.ne.jp/isaisstillalive/Ruby%2Fklass/ となりアクセス不能に。スラッシュのURLエンコードをはずしてみると http://b.hatena.ne.jp/isaisstillalive/Ruby/klass/ なんとパンくず…

プレゼントの抽選をするスクリプトを添削してみた

F's Garage:プレゼントの抽選をするプログラムをrubyで書いてみた。で書かれているコードが面白そうだったので添削してみました。 配列のシャッフル class Array def shuffle arr = dup collect{arr.slice!(rand(arr.length))} end end F's Garage:プレゼ…

Java標準クラスライブラリの設計者はセンスが悪いという話

Java が使いにくいのは単に Java の設計者のセンスが悪かっただけであり、静的言語のせいではない。 Java が使いにくいのは静的だからではない そう思います。 最近仕事でJavaを使うようになって「Javaって想像してたほど悪くないね」という結論に達しつつあ…

SMToolsをCodeReposにコミットしてみた

StepManiaの譜面データを操作するライブラリ、SMToolsをコミットしてみました。 「RipSynchronizer更新+「えれくとりっく・えんじぇぅ」歌詞・リップデータ公開 - こげこげ堂はてな支舗」等で公開したRipSynchronizer、「ビートで記述された歌詞ファイルを…

MemoizeモジュールをCodeReposにコミットしてみた

CodeReposへのコミッタ登録が完了しました! Yappoさん、お忙しい中ありがとうございます。 そこで、折角なので「http://d.hatena.ne.jp/isaisstillalive/20081211/1229014509」で作成したモジュールをコミットしてみました。 http://svn.coderepos.org/shar…

流れるようなインターフェースって結局ビルダなのね

今更感溢れる話題だけど、Ruby でキーワード引数的な Fluent Interface の実装 - 8時40分が超えられない - subtechの違和感が非常に気になったのでちょっと考えてみた。 まず、違和感のないものを考える TimeInterval meetingTime = fiveOClock.until(sixOCl…

基数を保持した数値クラスとかどうだろう

発想元:http://d.hatena.ne.jp/tilfin/20081215/1229310421 Ruby M17Nのencodeを保持したStringみたいに、基数を保持したNumericがあれば面白いかなと思いついてやってみた。 class Integer attr_accessor :base def self.[] n, base = 10 n ensure n.insta…

Primeクラスの動作を調べてみた

Ruby1.9のPrimeクラス(素数列クラス)は以下のような面白い特徴を持っています。 「素数列」は複数存在しないのでSingletonである。 クラス自体が唯一のインスタンスと同じように振舞う。 旧Prime互換クラスのインスタンスを作成できる。 以下で個別に解説…

Memoize(メモ化)モジュールを作ってみた

素数列とかフィボナッチ数列、ルーカス数列をクラス化して遊んでたら、「メモ化部分ってモジュール化できね?」と思いついた。 色々調べてみると、(Rubyで既に実装されたものも見つかったが、)PythonのMemoizeデコレータが便利そうなのでそれを意識してみ…

Float#integer?とRational#integer?って変じゃね?

self が整数の時、真を返します。そうでない場合に false を返します。 Numeric のサブクラスは、このメソッドを適切に再定義しなければなりません。 Numeric#integer? 「クラスが整数の時」ではなく「整数の時」に真を返すなら、 require "rational" p 1.0.…

LazyArray作ってみた

ヽ( ・∀・)ノくまくまー(2008-12-02) 優しいMerbの育て方にて紹介されているLazyArrayクラス。 ソースを見たところ何故かArrayのサブクラスじゃないで、もしArrayのサブクラスとして実装してみたらどうなるかというのをやってみた。 まず初期値はブロックで…

メソッド定義でのensureは値を返せるのか!

以下のように、ensure内でreturnされた2が帰ります。 Rubyのensureはreturnを撤回できる なんと。ensureの結果が無視されるのは知ってたけど、明示的にreturnを返した場合はその値が返るんですね。これは便利! メソッドの戻り値は return に渡した値です。r…

Rubyにgotoがない理由

大域脱出としてのgotoはcatch+throwで置き換えるようになっているから。 maxnum = 9 for x in 3..maxnum do catch :not_prime do for y in 2..x - 1 handan = x.modulo(y) if handan == 0 print x puts ":素数ではありません" throw :not_prime end end pr…

どうぶつの森PROデザインで色々作ってみた ひだまりスケッチ制服篇

ひだまりスケッチの制服を作ってみました。原作カラーです。 デザイン ※拡大してご利用ください。 試着イメージ パレット 13番 ベースが紫列下。縦線などが紫列中で、ボタンなどの一番濃いところが紫列上。 肩紐のアンチエイリアスに使ってるのが三列目上。

算数にチャレンジしてみた

算数にチャレンジ! 第624回問題(11月20日〜 11月26日) 1〜512の数の書かれたカードが1枚ずつ、左から小さい順に、「1,2,3,4,・・・,511,512」と並んでいます。いま、次のような作業を行うことにします。ア. 前から奇数番目のカー…