タグ

Rubyと発想に関するyuguiのブックマーク (5)

  • 木構造データの妥当性をinstace_evalの黒魔術で検証してみる - sshi.Continual

    タイトルはおおげさすぎ。きっかけは 新しいwhyプロダクト、ShoesはGUIツールキット。 サンプルはこんな感じ。 Shoes.app do button "Press Me" do alert "You pressed me" end end こういうAPIは好みだ。 http://www.rubyist.net/~matz/20070801.html#p02 を見たこと。 「あーinstance_evalはやっぱり便利ですよね」と思ってみてたんだけど*1、この構造って再帰的に使えるよなぁ、と思ったのでコードでメモ。 ポイントは、上のソース中のbuttonというメソッド。buttonメソッドはソースの字面をみると定義なしに突然使われているんだけど、instance_evalの黒魔術を使うとこういうことができる。obj.instance_eval do .. end という構文を使うとブ

    木構造データの妥当性をinstace_evalの黒魔術で検証してみる - sshi.Continual
  • String#succ - (new Hatena).blog()

    g:subtech:id:secondlife:20060530:1148996760 経由で p (1..n).inject(s) {|x,| x.succ}という表現を見てちょっと衝撃を受けました。 "n" は数値、"s" は文字列で、n 回分文字列を succ する (C 言語系の "++" みたいなもの) 方法を表したものです。 例えば n が 10 で s が "a" ならば "k" がプリントされるわけです。 この表現が生まれた経緯については上のリンク先を見ていただくとして、私個人的に驚いたのは、「オブジェクトに対してメソッドを繰り返し適用する」ことと、「その結果を得る」ことを、「範囲#inject」の一文だけで済ませている、という点です。 つまり、(私のように) まだあまり inject に慣れていない思考回路の人ならこうしていたと思うんですね (in JavaScript)

    String#succ - (new Hatena).blog()
  • OBB vs AABB - Radium Software Development

    iPhoneの一般修理店は予約なしでも来店できる? 基的には飛び込みで修理に行ってもOK iPhoneを置いていたソファにうっかりと腰かけてしまい、パネルを割ってしまった、こんな時はスマホの一般修理店へ行きましょう。画面割れは、スマホやタブレットの故障原因として非常に多いものです。予約なしで突然お店に行っても平気かしらと、不安に思う方々もいらっしゃるかもしれません。結論としては特に問題はなく、予約なしで訪問しても画面割れの修理はお願いできます。 ただし他のサービス業のお店同様、予約なしの場合、お店が混雑していると順番待ちをしなければいけないです。特に繁盛しているスマホ修理のお店だと、行列が店内で出来ており、予約なしだと、自分の順番が巡ってくるまで長時間待たされる可能性があります。平日の朝、昼なら利用客が少ない場合が多く、飛び込みでも比較スムーズに修理が頼めます。 予約は入れた方が時短に、

  • フィボナッチ数列、もっと - rubyco(るびこ)の日記

    おとといのフィボナッチ数列の続きです。id:sumimさんが、call/cc を使ったコルーチンもどきでフィボナッチ数列という楽しいプログラムを書いていらしたので、便乗させていただきました。 違うところは、callccで保存する環境を直接ローカル変数にしたのと、あちこちリネームしたのと、元のresumeというprocをインライン展開したのと、unlessを修飾子にした点です。 fib_loopのほうはフィボナッチ数列を作り出す無限ループになっていて、fib_nextを呼び出す20.timesのループと協調しながら(コルーチン的)動いています。 # Based on http://d.hatena.ne.jp/sumim/20060417/p1 continue = output = nil fib_loop = proc {|a, b| loop { callcc {|continue|

    フィボナッチ数列、もっと - rubyco(るびこ)の日記
  • FCGI, Ruby, 変更なしで | ruby | fcgi - 氾濫原

    以前CGI FastCGI, rubyとかいうセクションを書いたけど、ENV って普通に書き換えられることに気付いたのでもう一度やってみた。できたっぽい? #!/usr/bin/ruby require "fcgi" FCGI.each do |fcgi| $stdout = fcgi.out $stdin = fcgi.in ENV.replace(fcgi.env) load(fcgi.env["SCRIPT_FILENAME"], true) fcgi.finish end fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/fcgi-php.socket", "bin-path" => "/usr/bin/php-cgi" ) ), ".rb" => ( "localhost-rb" => ( "soc

  • 1