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

1から始めるRuby(その3)

1から始めるRuby(その2)の続きです クラスメソッド定義(続き) bonjourメソッド内でselfを使うことで このメソッドがそれぞれのクラスでの呼び出しに対し 適切に応答するようになった しかしできればbonjourメソッドは Fixnum専用のものにして 他のクラスで…

1から始めるRuby(その2)

1から始めるRubyの続きです クラス再び 「Rubyの1はFixnumというクラスに属している」 前回私はそう言った 疑い深いあなたは うさぎ本*1やキリン本*2を紐解いて その事実を確かめたかもしれない でもそれは回り道だ それも1に聞くのが確実で早い >> 1.class …

1から始めるRuby

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。1から始めるRuby : melborne.github.com - 数学の世界で1は数である 3歳の子供でもそれを知っている そして私やあなた…

RubyのメタプログラミングでInterpreterパターンを実装しよう!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。RubyのメタプログラミングでInterpreterパターンを実装しよう! : melborne.github.com - 「Rubyによるデザインパター…

Ruby1.9でもEND HELLを解消したい!

RubyKaigi2011において 現行Rubyの構文上の欠点である END HELLを解消するEnd Rubyが あんどうやすし氏(id:technohippy)により提唱されました parse.yの歩き方 END HELLとは要するに以下のような 醜いendの連なりのことです module MyModule class MyClass d…

HerokuでSinatraでmemcachedしようよ!

「NoSQL データベースファーストガイド」(著:佐々木達也) という本を読んでるよ 各種NoSQLのひと通りの説明と それぞれにRubyを使ったサンプルがあって 僕のようなNoSQL知識ゼロ(NoKnowledge) の人にとってはとてもためになるよ 特にサンプルは各NoSQLの利…

RubyでHaskellの数列リストを真似てみよう!

HaskellのリストはRubyの配列と同じように 要素をカンマ区切りのカッコで区切って生成できるんだ Hugs> [1, 2, 3] [1,2,3] Hugs> ['a', 'b', 'c'] "abc" Hugs> ["one", "two", "three"] ["one","two","three"] だけどHaskellのリストは Rubyの配列よりもその…

Rubyのrepeat関数でフィボナッチ、トリボナッチ、テトラナッチ!

1または複数の初期値に任意の関数を繰り返し適用して その結果のリストを返す汎用関数repeatを定義しよう def repeat(f, *args) Enumerator.new { |y| loop { y << (*args = f[*args]) } } end repeatは関数f*1とfの初期値となるargsを引数に取り Enuerator…

Enumerable#thread_withでRubyのスレッドを簡単に使おう!

前回の投稿ではsleep sortと それに対抗したrunning sortを紹介したよ sleep sortに対抗してrunning sortだ!(失敗に終わる編) それらのアルゴリズムではRubyのThreadを使ったけど Threadってなんか毎回書き方を忘れるよ 引数の受け渡し方とかjoinとか も…

sleep sortに対抗してrunning sortだ!(Ruby版|失敗に終わる編)

少し前にsleep sortという ソートアルゴリズムが発見されたよね 常識を覆すソートアルゴリズム!その名も"sleep sort"! これをRubyのThreadを使って実現すると だいたい次のようになるんだよ class Array def sleep_sort mem = [] map do |i| Thread.new(i)…

Rubyのpでメソッドチェーンを覗き見よう!

Rubyでメソッドチェーンの途中経過を覗き見るには Kernel#tapが便利だよね (1..10).tap{ |x| puts x.inspect } .to_a.tap{ |x| puts x.inspect } .select { |x| x % 2 == 0 }.tap{ |x| puts x.inspect } .map { |x| x * x }.tap{ |x| puts x.inspect } # >> …

知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。知って得する21のRubyのトリビアな記法: melborne.github.com - ちょっとトリビアだけど 知っていると意外と便利なRuby…

内部DSLを使って、RubyのWebフレームワークを書こう!

Sinatraのようなベース言語の構文を使って実現するDSLを 内部DSLといいます 前回僕が書いたChinatraは一見内部DSLにみえるけど ベース言語とは異なる構文を使った外部DSLです でも時代の風は内部DSLに向いています the 0.8 true language 言語ワークベンチ …

Sinatraに別構文があってもいいじゃないか!

前の投稿でSinatraはRubyそのものでDSLじゃないと言いました SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! 確かに内部DSLというのはそういうものなのかもしれません でも言語といったら独自の構文くらいはもっていたい それで コ…

SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! : melborne.github.com - Sinatraのサイトを…

HTML5+CSS3でWebの未来を開こうよ!

GoogleがHTML5+CSS3に本気のようです Chrome ウェブストア日本版スタート! はてブディレクターがGoogleに聞いてみた - はてなブックマークニュース Googleが本気ならWebの未来はそちらにあるのでしょう ここはひとつ バスに乗り遅れないようにしたいですね…

ABCでもマリオを奏でたいよ!

一年ほど前に_whyのbloopsaphoneを使って マリオを再生できるBloopSongというRubyのDSLを書きました bloopsaphoneでは RTTTL(Ring Tone Text Transfer Language)という 携帯電話の電子音に使われる記譜法で書かれた音符を再生します Rubyでマリオを奏でよう…

jQuery UIでCanvasアニメーションを操作しようよ

HTML5 Canvasがマイブームです でも慣れないJavaScriptに悪戦苦闘しています なかなかキレイにコードが書けません... http://crayovas.heroku.com/ http://aclock.heroku.com/に続き デモを作ったので公開します jQuery UIのスライダーを使って ボールの速度…

CanvasアニメーションをHerokuで公開しようよ!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。CanvasアニメーションをHerokuで公開しようよ! : melborne.github.com - もしあなたが暇で暇でしようがなくて 一日中…

Crayovasで塗り絵しようよ!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Crayovasで塗り絵しようよ! : melborne.github.com - 前の投稿でHTML5のCanvasを使った Crayovasというデモサイト作っ…

Ruby製クレヨンでお絵描きしようよ!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Ruby製クレヨンでお絵描きしようよ! : melborne.github.com - 米国にCrayolaというクレヨンの老舗メーカーがあります*…

Processingアプレットをはてダに貼り付けよう!

ProcessingはJavaをベースにした オープンソースのグラフィック専用言語です マルチプラットフォームの統合開発環境(IDE)が用意されており それをインストールするだけで誰でも簡単に グラフィカルなプログラミングを始めることができます IDEにはエクスポー…

Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その3)

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その3) : melborne.github.com - 引き続き「なぜ関数…

fun of Processing

前の記事のパラメータを少し変えて 今度はひらがなバージョン こうして見ると ひらがなって味があるよね

fun of Processing!

Processingは楽しいな キレイな色玉を飛ばして しばらくじっと眺めてみよう 色玉が静かに底に沈んだら 今度はマウスでクリックね メッセージを押してもう一度 Processingは楽しいな (追記:2011-1-31)メッセージのクリックでリスタートできるようにしました。

Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その2)

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その2) : melborne.github.com - 前回に引き続き「な…

Rubyではてダの記事一覧を取得してまとめ頁を作ろう!

継続的にブログを続けていると 投稿はそれなりの数になります そうするとそれをまとめたくなるのが人情です まとめによって記事の一覧性が高まります 運が良ければ 古い投稿にブクマやスターがもらえるかもしれません そんなわけで.. はてダのユーザ単位で記…

Rubyの目次

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Rubyの目次 : melborne.github.com - 前の記事で作ったツールで早々 自分が投稿したRuby関連の記事を取得・整理して目…

Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう! : melborne.github.com - 「Why Functional Programmi…

Rubyの末尾再帰最適化を理解する

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyの末尾再帰最適化を理解する : melborne.github.com - RubyではSchemeなどとは異なって 末尾再帰の最適化を勝手に…