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」と並んでいます。いま、次のような作業を行うことにします。ア. 前から奇数番目のカー…

アイマスの服をどうぶつの森PROデザインで作ってみた 真私服篇

早速の第二段です。 スカート状にしないといけないので、キュロットみたいにできないかと思ったけど難しいですね。 上着だけにして男の子向けにしたほうが自然かもしれません。 デザイン ※拡大してご利用ください。 試着イメージ パレット 4番 ライン部分が…

アイマスの服をどうぶつの森PROデザインで作ってみた やよい私服篇

街へいこうよ どうぶつの森を買ったので、折角だからPROデザインで何か作ってみたいなと思った第一弾。 自分的No.1は真なんですが、森の服のデザイン上スカートじゃないと難しいのでまずは練習がてら自分的No.2のやよいの私服を行ってみました。 デザイン ※…

アイマスの服をどうぶつの森PROデザインで作ってみた ラフタイムスクール篇

今度は私服ではなく衣装から。 チェックはやはり大変ですね。いい感じを見つけるまでも時間がかかるし、なってからも人力コピーで時間と体力が奪われる。 デザイン公開するのはいいけどこれ誰が手打ちするんだよという感じ。 デザイン ※拡大してご利用くださ…

ゴルフってみた

いまさらながらるびまゴルフ 【第 4 回】に挑戦してみた。 [1][n] とかしちゃうと、1 or nilしか取れないのに文字数減らないしなぁとかいろいろいじってるうちに、Integer#[nth]なんてメソッド見つけた! nth 番目のビット(最下位ビット(LSB)が 0 番目)が立…

最大値で値を制限できる数値クラスの作成

久々の日記です。最大値を制限できる数値クラスが作りたいなと思ってたらものっそいキモイのが出来上がったので公開。 値を直接変更できないのでvalue=というメソッドを使用することにしましたが、それ以外は普通の数値として扱えるはず。 require "delegate…

自分のつけたはてなスターを簡単に識別するためのuserContent.css

span.hatena-star-star-container > a > img.hatena-star-star[alt="ユーザID"] { background-color: red !important; } ハイクで悩むことが多かったので作ってみた。Fxすげえ、ちょうかんたん。

雨ニモマケズ

2ch

改変だけどちょっと感動したのでメモっておく 258 :以下、名無しにかわりましてVIPがお送りします:2008/08/19(火) 19:43:25.21 id:oNTeJfZy0 雨にも負けず 風にも負けず 雪にも夏の暑さにも負けぬ丈夫な体を持ち 情欲はなく 決して手を出さず いつも静かに…

トレーディングカードゲームのお話

まさかはてなハイク上でTCGの議論ができるなんて思いもよらなかったので、ここでちょっと紹介してみる。 http://blogs.yahoo.co.jp/tonnura392000/35098733.html まさか長期旅行に行ってる間にこんな風にまとめてもらってるなんて思いもよらなかったので、ち…

Rubyのsetterの戻り値がキモい件

※正確には、setterじゃなくて、代入でsetterが使用される場合の戻り値がキモい。というお話。 class Test def value= value "value" end end t = Test.new p (t.value = 10) #=> 10 p (t.value=(10)) #=> 10 p (t.__send__ :value=, 10) #=> "value" うん、…

to_iとInteger

こうすれば、 "foo".to_i2 => [0,false] "0".to_i2 => [0,true] となってくれます。 http://d.hatena.ne.jp/ytakenaka/20080802/p1 何か微妙に違和感が。 多値とは関係ない話で恐縮ですが、数値に変換できるかどうかで処理を分けたいならキャストして例外を…

なんでretryがブロックかrescue節の中でしか使えないんだろう。

RPG*1でよくありそうな「2D6を振る。ただし12の場合は振りなおし」という行動をメソッド化する場合、だいたい以下のようになると思います。 def roll begin dice = (1+rand(6))+(1+rand(6)) raise if dice == 12 rescue retry end return dice end ですが、…

引数にメソッド追加してリテラル風にするんだったら(追記)

id:takkawさんから返信を頂きました。 コメントしようかと思ったんですが長くなってしまったので、追記にしようと思ったらさらに長くなったので独立したエントリで。 特に実装側がinstance_variable_set だけで良いし。 http://d.hatena.ne.jp/takkaw/200807…

引数にメソッド追加してリテラル風にするんだったら

その後、色々考えていたらわざわざ専用クラスを作るような小難しいことは考えずにハッシュを作るようにしてそれを渡せば良いじゃん。って事に気づきました。 http://d.hatena.ne.jp/takkaw/20080721/p1 そこまでするなら、もういっその事インスタンス変数名…

要素がある場合はその値。ない場合はデフォルト値を使用

WebAPIでリクエストを取ってきてXMLから要素を取り出すときに、要素があったら〜と書くのがメンドクサイ。 doc = REXML::Document.new(xml) title = doc.elements["title"].text とかやってしまうと、〜がなかったときに nil に対して .text を行ってしまい…

マクスウェルの勝山

△<右から〜右から〜何かが来て〜る〜 ┌───┬───┐ │ │ │ │ │○三 │ │ │ │ └───┴───┘ △<僕は〜それを〜左へ受け流す〜 ┌───┬───┐ │ ┘ │ │ ○三 │ │ ┐パカッ │ └───┴───┘ (中略) △<左から〜右へは受け流さな〜い〜 ┌───┬───┐ │ │ │ │ 三○│ │ │ │ │ └───┴───┘

メソッドの引数をわかりやすくする手法?

matrix.rb見てたら面白い表現があった。 def Vector.[](*array) new(:init_elements, array, copy = false) end 他の場所では使ってないから多分間違いなんだと思うけど、これは使えるんじゃないか? ローカル変数copyに代入した結果(=false)が返るから引…

Stack Stock Booksブログパーツ for はてな更新

なんでズレるのかと思ったら、表示させるiframeがtableで包まれてたせいでした。 じゃあ、枠を重ねる設定にすればmerginを変化させるなんて泥臭い真似しなくてもおkじゃんっつーことで直しました。 http://gmodules.com/ig/creator?synd=open&url=http://is…

Stack Stock Booksブログパーツ for はてなをIEに対応させました

Stack Stock Booksの公式のブログパーツのサイズが微妙に合わなかったために始めたGoogleガジェット製作ですがついにIE対応といういや〜な仕事に入りました。 http://gmodules.com/ig/creator?synd=open&url=http://isaisstillalive.googlepages.com/igoogle…

Stack Stock Booksブログパーツ for はてなをバージョンアップしたよ

http://www.gmodules.com/ig/creator?synd=open&url=http://isaisstillalive.googlepages.com/igoogle_ssb_v1_2.xml モジュールタイトルを入力できるようになりました。汎用性いらない! あとは、表示方法をランダムと新しい順、古い順から選べるようになり…