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

メソッドが見つからないならRubyに作ってもらえばいいよ! - If method_missing, define_method by Ruby -

メソッド定義 Rubyのオブジェクトはメッセージに反応する つまりオブジェクトがメッセージを受けると オブジェクトは対応するメソッドを見つけてその結果を返す Rubyではオブジェクト自身はメソッドを持っていない だからオブジェクトは自身が属するクラスに…

GraphvizでRubyのクラス階層を視覚化しよう!

Graphvizというオープンソースのグラフ描画ツールがある これはマウスを使ってグラフオブジェクトを配置していくような 一般的なグラフツールとは違って DOTという言語を用いてスクリプトを記述し そこで表現されたグラフを視覚化するものだ 各要素の配置を…

Rubyのクラスとメソッドを全部いっぺんに見たい! - 改訂版

前の投稿でRubyのメソッド群を 一覧表示するHTMLを生成するコード書いた これに修正を加えたものを公開したので 使ってくれる人がいたらうれしい Ruby Methods List 説明 1.8.6、1.8.7、1.9.0の各Rubyバージョン クラスタイトルおよび各メソッドは、Rubyリフ…

RubyのModuleクラスはすべてのモジュールの母であり同時にすべてのクラスの父である!

Moduleクラスはすべてのモジュールの生成クラスである だからModuleクラスに定義されたinstanceメソッドmは すべてのモジュールで定義されたモジュールメソッドself.mになる class Module def m 'm' end end Module.new.m # => "m" Kernel.m # => "m" Enumer…

RubyのObjectクラスは過去を再定義するタイムマシンだ!

Objectクラスはすべてのクラスのスーパークラスである だからObjectクラスに定義されたinstanceメソッドoは すべてのクラスで定義されたinstanceメソッドoになる class Object def o 'o' end end class MyClass end Object.new.o # => "o" Array.new.o # => …

RubyのSymbol#to_procを考えた人になってみる

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。RubyのSymbol#to_procを考えた人になってみる : melborne.github.com Rubyのメソッドはブロックを取れる ブロックはコ…

Rubyのクラスとメソッドを全部いっぺんに見たい!

Rubyの組み込みクラスとモジュールと それらのメソッド群を全部いっぺんに見たい そんな欲求があるかは知らないけれど いつもメソッド検索で右往左往している 自分にとっては助けになるはずだ だからそんなものを作ってみた スクリプトを実行すると その実行…

Rubyのオブジェクトは生物なんかじゃない、トップレベルこそが生物なんだ!

RubyのTopLevelは不思議だ Rubyはオブジェクト指向言語だから 普通まずクラスでオブジェクトを定義し これをインスタンス化し この生まれたオブジェクトにメッセージを送る という手続きを経てプログラムが組成される class Person def initialize(name) @na…

Rubyのクラスはソフトクリームコーン

みんな大好きソフトクリーム ソフトとコーンでできている みんなは最初教えてくれる コーンは容器と教えてくれる それに答えてしっかりと ぼくは正しく記憶する コーンは容器と記憶する ソフトの容器と記憶する でもぼくが そろそろソフトを食べ終わるとき …

Rubyのクラスはオブジェクトの母、モジュールはベビーシッター

Rubyのクラス、モジュール、オブジェクトの関係を 自分なりにまとめてみた 読みづらいかもしれないけど だれかの参考になればうれしい オブジェクトの種類 Rubyはオブジェクト指向言語であり Ruby空間に存在するオブジェクトをその操作対象とする Ruby空間に…

Rubyのyieldは羊の皮を被ったevalだ!

Yugui著「初めてのRuby」の9章に Rubyの黒魔術の一つとして eval族と称されるメソッド群が紹介されている 危険らしい 素人が安易に手を出すべきではなさそうだ でも魅力的らしい 暗黒の世界に引かれていく自分がいる… 勉学のために覗くだけならいいだろうし…

Rubyのブロックはメソッドに対するメソッドのMix-inだ!

Yugui著「初めてのRuby」を読んでいる 7章メソッドにはブロック付きメソッドのことが 丁寧に記述されていて大変参考になる Rubyのブロックは分かったようで分からない代物だ スーパーマリオブラザーズのように 間口が広くて奥が深い 少し真剣に向き合ってみ…

Rubyのシンボルは文字列の皮を被った整数だ!

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。Rubyのシンボルは文字列の皮を被った整数だ! : melborne.github.com - Yugui著「初めてのRuby」を読んでいる 自分はこ…

Ruby、同じことの繰り返しは君に任せるよ 〜 再帰でハノイの塔を解こう!〜

もし問題が同じパターンの繰り返しを含んでいて その極限の解が明らかならば その問題の解決には再帰が使えるかもしれない 再帰はある問題の答えの中にその問題自体を含む不思議な構造だ 「GNU」は「GNU's Not UNIX」の頭文字からなる略称だ ここで「GNU」は…

色付きコードでブログを投稿しよう!

TextMateには言語のシンタックスに従って ソースコードを自動で色付けするSyntax Highlighting機能がある 複数のThemeが用意されており そこから自分の好みのカラーセットを選べる 現在の僕のお気に入りはCobaltだ Syntax Highlightingはほんとうにソースコ…

アロマポッドだってきれいになりたい ~LampshadeのDIY~

リビングのペンダントライトがりっぱになると IQ lightは魔法のライト - hp12c 相対的に棚上のアロマポッドが淋しく見える*1 天気のさえない日曜日の午後に こんな記事と 余ったポリプロピレンと 僅かばかりの暇とがあれば やるべきことはこれしかない 適当…

可哀想な人

その人が「可哀想な人」と 心の底から思うのなら その人に「可哀想な人」と 言うのは止めた方がいい その人を「可哀想な人」にするのは あなたに他ならないのだから

小売企業の競争力は最終的には価格競争力で決まる

Aの店とBの店で同じ商品が売られている Aの店はサービスが良質で店舗もきれいである しかし商品の価格が高い Bの店はサービスは最低で店舗も汚れている しかし商品の価格はAの店の半値である どちらの店舗で買おうか悩む しかし商品には差がない Aの店では確…

Googleはネット上の小売企業である

消費者が求めているものは結局は消費財である ネット空間における消費財とは 情報コンテンツである 消費者は情報コンテンツを求めて ネット上でウィンドウショッピングする つまりGoogleにキーワードを打ち込む Googlebotはそれに答えて 消費者に情報コンテ…

Attentionが人生を規定する

社会は人間を 独立した人という存在から その関係性を主体とした人間という存在に変えた 人間の関係性とはAttentionの問題である 人は他の人からのAttentionを支えとして はじめて人として生きてゆけるのだ もちろんAttentionにも質があり その最高のものは…

理解のための正道

通常新しい物事を理解するときに取る手法は その道の先人(エキスパート)に聞くことだ 先人はその全体像を知っており 巧みな言葉を使って 初学者を理解の先に導こうとする 印刷および流通技術が発達した現代では 初学者は書籍という形でその恩恵にあずかれる …

The Pragmatic Bookshelfは出版の近未来だ!

The Pragmatic Bookshelfで Programming Rubyの3rd editionが売られていたので そのPDF版を買った 例によってベータ版ということで 現在はPartIIまで改定されたものが入手できる 2nd editionのPDF版を買ったユーザということで 本来$25のPDF版が$12.5およそ1…

Ruby、君はオブジェクト指向なんかじゃない、謎の生命体試行錯誤だ!

昨日の調査では謎の生命体「Fixnum:1」ー固定番号:1と呼ぶのは止めたこっちのほうが謎めいた名前でいいだろ?ーに関する いくつかの貴重な発見があった その中でも特に重要と思われるものは次の2点だ 「Fixnum:1」が他のFixnumら ーつまりFixnum:2から少な…

Ruby、君はオブジェクト指向なんかじゃない、謎の生命体試行錯誤だ!

やはり僕が話しかけない限り 謎の生命体「固定番号:1」はなにもしない 昨日一日彼を観察してわかったことだ 僕が寝ている間に動き出して 僕を拘束し 遠い彼らの惑星に連れ出す そんなことは起こらなかった とはいっても僕には そのような恐怖心すら正直起き…

Ruby、君はオブジェクト指向なんかじゃない、謎の生命体試行錯誤だ!

いつものようにベッドの中で体がまだ寝ている間に 僕の意識は目覚めた 昨日寝がけに聴いたMr.ChildrenのHEROの歌詞が まだ頭の中を回っていた 例えば誰か一人の命と 引き換えに世界を救えるとして 僕は誰かが名乗り出るのを待っているだけの男だ… 「いったい…

日割りよりも時間割りだ!

ものごとを継続させたいと思うなら 日割りでやってはいけない 日割りでやるとリズムが取れない リズムが取れなければ 継続ができない だからものごとを継続させたいと思うなら 時間割でやるべきだ 毎日歯を磨くように 毎日同じ時間に同じことをする その習慣…

ThinkというのもThinkしてみよう!

10倍集中できる作業環境をMacに構築する方法 - 矢野勉のはてな日記で紹介されていた WriteRoomというエディタは以前に試したことがあった でも自分の気に入っているTextMateやCotEditorを やはり使いたいという欲求がある そこでもう一つ紹介されていたSprit…

あとから一行追加したいときもある

TextMateやCotEditorでテキストを打っていて カーソル行の一行前にテキストを追加したい という状況がよくある OSXのショートカット表をよく見たら ⌃o(ctrl + o) : split the current line というのがあるのを知った これはカーソル位置で文を分割するもので…

人生力を判断する6つのファクターを考えてみた

ググってみたら「人生力」なる言葉があるらしい ここではこれを「人生を生き抜く力」と定義して 以下の等式を考えてみたよ 人生力 =資産×スキル×学ぶ意欲×健康×生活の規律×1/年齢 各ファクターの重みづけはできないので 客観的評価はできないけれど 主観的…

Cocoaアプリ用Rubyのロードパスを設定しよう

requireでロードされるライブラリファイルは Rubyのロードパスに置かれる必要がある 現在のロードパスは以下で調べられる ruby -e 'puts $:' 独自のパスを追加したいときは 環境変数RUBYLIBに設定する 例えば、.zshrcに以下を記述する export RUBYLIB="$HOME…