タグ

ブックマーク / rubikitch.hatenadiary.org (28)

  • Rubyのrequireにディレクトリ名が必要な理由 - http://rubikitch.com/に移転しました

    Rubyのrequireのパス - imHo Cだと、ソースがどこにあっても #include "hoge.h" とやればそのファイル自身のパスも含めて探してくれるので便利なんだけどRubyの場合含めて くれないので、あるライブラリ的なソースから別のライブラリを参照するときにその置き場所 に困る。例えばソースが ・ main.rb ・ lib/lib1.rb ・ lib/lib2.rb とあって main.rbからlib1.rbがrequireされてて、lib1.rbからlib2.rbがrequireされてるとし て、lib1.rb 中で require './lib2' としても読めなくてエラーになる。 これの仕様には理由がある。 たとえばrcodetoolsの場合、以下のような配置になっている。 lib/rcodetools/xmpfilter.rb lib/rcodetools/op

    Rubyのrequireにディレクトリ名が必要な理由 - http://rubikitch.com/に移転しました
  • Ruby初心者〜初中級者が読むべきコードについて - ’(rubikitch wanna be (a . lisper))

    Rubyの初心者にたいして「これは読むべき」だと思うコードを教え… - 人力検索はてな 今北産業ではないが超要約してみる。 Ruby初心者はまず文法や基的なクラスを習得せよ。 初級者ならばmailread.rbなどの簡単なライブラリを読んでみよう。 中級くらいからはWEBrickやBitChannelのソースがよい。 そして、なんといっても、力をつけたいならばソースを改造してみるのが一番だ。改造するんだからソースを理解しないといけないし、書く力も養われる。俺は「興味あるプログラム、気に入ったプログラム」をおすすめする。なぜなら、好奇心があるからモチベーションを保ちやすい。 やっぱり改造一番だよなぁ…書籍のサンプルコードはスペースの関係でミニチュア版になってるし、あくまで「作られた例(contrived example)」に過ぎないんだよね。生きたソースコードにはかなわない、うん。 俺はe

    Ruby初心者〜初中級者が読むべきコードについて - ’(rubikitch wanna be (a . lisper))
  • うーん - http://rubikitch.com/に移転しました

    Emacsを無料ソフト呼ばわりは失礼 - http://rubikitch.com/に移転しました http://digimaga.net/200805/best-text-editors.htmlでのEmacs無料ソフト呼ばわりについて言及しているはてブがひとつしかないというのは正直悲しい。多くの人にとって「フリーソフトウェア」はしょせん無料ソフトに過ぎないのだろうか… とにかくコスト削減コスト削減な世の中だから仕方ないんかもしれないな。

    うーん - http://rubikitch.com/に移転しました
  • Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))

    Ruby 1.8.7ではRuby 1.9からのbackportがとても多い。つまり、Ruby 1.9のあのメソッドがRuby 1.8でも使えるようになったということだ!! これがすごいという機能がもりだくさん、ちょっと大人になったRuby 1.8をお楽しみに。 Enumeratorは組み込みになり、eachなどのイテレータメソッドはブロックをつけないとEnumerable::Enumeratorを返すようになった。おかげでブロック付きメソッドの柔軟性が飛躍的にアップ! expectationsテスティングフレームワークによるテストで書いているので「gem install expectations」してから実行してみよう。手軽にユニットテストが書けるからおすすめ。書式は…見ればわかるよねw ChangeLogで現在からRuby 1.8.6リリースまでを読んだので、ほとんどカバーしていると思わ

    Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))
  • Emacsを無料ソフト呼ばわりは失礼 - http://rubikitch.com/に移転しました

    http://digimaga.net/200805/best-text-editors.html エディタ6選。Notepad++、Emacs、UltraEditTextMate、VimTextPad。なぜか秀丸はない。 Emacsの紹介の仕方がきわめて失礼だ。どこにも「自由」と書かれていなくて「お値段無料」と紹介するのはなぁ… EmacsをはじめとしたGNUソフトウェアはあくまで「フリーソフトウェア」であり、無料で公開されている独占的ソフトウェア(フリーウェア)とは違う。まず自由ありきだ。多くの人が誤解しているようだけど、再配布の経費は取ってもいいとされている。 Emacsをただの無料ソフト呼ばわりするのは、rmsが聞いたらいきり立つのは必定。

    Emacsを無料ソフト呼ばわりは失礼 - http://rubikitch.com/に移転しました
  • 振舞いベースのテストを明確に書く方法 - http://rubikitch.com/に移転しました

    Jay Fields' Thoughts: Testing: One expectation per test テストメソッドにて assertionがあるときはmockを使うな。そのかわりstubを使え。 mockを加えるときは、意味のある値を返す必要はない。返り値を確かめないだろうから。 すでにmockがある場合はstubsメソッドを使え。 stubにwithを使うな。stubでは引数のチェックをする必要がないから。 stubを返すときはstub_everythingを使ったほうがいい。 こうすることで、ひとつのテストメソッドはひとつのassertionかひとつのexpectationをチェックすることになる。おかげで、何をテストしているのかが明確になる。この信念があるからexpectationsというすばらしいunit testing frameworkができたのだ。

    振舞いベースのテストを明確に書く方法 - http://rubikitch.com/に移転しました
  • 「なぜ」を問うのがソフトウェア技術者にとって一番大切なこと - http://rubikitch.com/に移転しました

    Jay Fields' Thoughts: Understanding Why ソフトウェア開発において常に「なぜ○○なのか?」と問い掛けることが大切だ、というお話。 best practiceだっていつも特効薬ではない。状況によって変わる。多くの人は、なぜそれがbest practiceなのか疑問に感じずに、盲目的にそれを適用しているのが問題だ。 開発あは「なぜテストを書くのか」という疑問を持っていないのは問題だ。私(Jay Fields)はよりよいソフトウェアを書くためにテストを書いている。テストは読みやすく、信頼できて、効率的でなければならない。私はひとつの事柄に焦点を絞ってテストを書く。そのテストはテスト対象がおかしいときのみにコケるテストが欲しいんだ。この信念がexpectationsというツールにあらわれている。 「なぜ」を問うことはほぼ常によいことだ。そして、そうすることはプ

    「なぜ」を問うのがソフトウェア技術者にとって一番大切なこと - http://rubikitch.com/に移転しました
  • プログラミング言語はLispに回帰しているんだろう - http://rubikitch.com/に移転しました

    Lispはいまだ一騎当千の最強言語の地位を不動のものにしている(と思う)が、考案されたのが50年も昔というのには驚かされる。古代の神秘という感じ。 歴史には詳しくないけど、初期のLispからlambda式やGCってあったよな?あと、Schemeも30年以上前に生まれたんだっけ。あのころからレキシカルクロージャーがあったんだよね。すごいよなあ。 RubyはLispの長所をたくさんとりいれた。Javaも最近になってクロージャーが導入されたっけ。GCは今な言語にはほぼ必ずといっていいほど備わっている。いろいろな言語がLispに近づこうとしているような。Lispの考え方からいろいろな言語が生まれて、進化の先はLispに回帰するということか… せっかく最強言語のLispがありながら、おれおれ言語がどんどん登場していくさまはおもしろい。括弧が嫌いなのかな。Lispの表現力の源はS式だというのに括弧を拒

    プログラミング言語はLispに回帰しているんだろう - http://rubikitch.com/に移転しました
  • 趣味でRubyしててもいいじゃないか - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/scinfaxi/20080425/1209108271 趣味RubyPythonPHPPerl なんかをやる 奴の気がしれない。それ、趣味じゃなくて仕事じゃん。給料もでないのに Ruby を書く奴の気 がしれない(作者でさえ、それで生活しているのに)。 Ruby仕事という時代がとうとう来たんだなと実感した。 Rubyはまつもとさんが趣味で作った言語だ。Perlのようなテキスト処理ができて純粋オブジェクト指向なスクリプト言語ってないかな〜って話がきっかけで開発に至った。もともと金儲けは考えていなかったし、細々とやっていこうと思ってたんじゃないかな。まさかここまでブレイクしてRubyで生活できるなんて思ってもみなかった…というのが正直なところだろう。 俺ははるか昔、趣味でC言語やPerlをかじっていた。当時はPerl3だか4

    趣味でRubyしててもいいじゃないか - http://rubikitch.com/に移転しました
    isseimiura
    isseimiura 2008/04/25
    ruby愛、というかprogramming愛
  • yasnippetと複文は相性が悪い - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/mssh/20080424#1209018751 yasnippetの話題が絶えない今日このごろ。 #name : if ... else ... end # -- if ${1:condition} $2 else $3 end snippet発動中にsnippetを発動することができないっぽいので、現状ではこっちの方がいいのでは? #name : if ... else ... end # -- if ${1:condition} $0 else end

    yasnippetと複文は相性が悪い - http://rubikitch.com/に移転しました
  • pacoはmake installでinstallされるファイルを管理するツール - http://rubikitch.com/に移転しました

    http://www.oddwit.com/blog/2008/paco pacoを使うと、make installした際にどこにどんなファイルが入ったのかを一つ残らずログし てくれます。ログはGUIで確認することができ、さらには一発でキレイにアンインストールする ことも可能です。 とのこと。便利そうなのでインストール。なんでもシステムコールをモニタしているから出力とは関係なく確実にファイルのインストールを検知してくれるらしい。 ライブラリが不足していたので、 sudo apt-get install libgtkmm-2.4-dev でlibgtkmmを入れた。 あとは通常通り展開して ./configure && make && sudo make install 今になってこんなツールがでてくるのだからおもしろい。10年前に存在してもおかしくないと思う。 sudo make inst

    pacoはmake installでinstallされるファイルを管理するツール - http://rubikitch.com/に移転しました
  • キーボードマクロは押しやすいように - http://rubikitch.com/に移転しました

    キーボードマクロ - 西尾泰和のはてなダイアリー Emacsのキーボードマクロのデフォルトのキーアサインがやばいので俺はf6/S-f6に割り当てている。 (defun start-or-end-macro (arg) (interactive "P") (if defining-kbd-macro (if arg (end-kbd-macro arg) (end-kbd-macro)) (start-kbd-macro arg))) (define-key global-map [f6] 'call-last-kbd-macro) (define-key global-map [S-f6] 'start-or-end-macro) こうすると、S-f6→キーボードマクロ登録→S-f6で登録完了→f6で実行(連打可能)。

    キーボードマクロは押しやすいように - http://rubikitch.com/に移転しました
  • この程度のものは探せばあるわけで - http://rubikitch.com/に移転しました

    Emacsは忘れた方がいい(Gosling):2008年の名言 - kなんとかの日記 さて、Emacs使いとして反論しとくか。Emacsは生き続けるさ - http://rubikitch.com/に移転しましたにも書いたけど、エディタは長年使うことで手の延長線になる。長年にわたってきて使ってきたものを乗り換えるのはとても困難だ。新しいものに乗り換えても、Emacsにあるものがすべてあるわけではない。このあたりは歴史の重みがモノをいう。 またエディタとしての Emacs も、もはや時代遅れと思う。Emacs では簡単な設定をするにも .emacs を書かなくてはいけない。xyzzy は Emacs の亜種だけど、基的なカスタマイズは GUI でできて、それ以上のことをしたい場合は .xyzzy をごりごり書くこともできるという、2 way solution を提供している。どう考えても

    この程度のものは探せばあるわけで - http://rubikitch.com/に移転しました
  • Emacsは生き続けるさ - http://rubikitch.com/に移転しました

    サンがJava FXの実例をデモ − @IT あえて釣られてみる。 Emacsは消滅すべきとは思わないな。すべての面でEmacsより優れた次世代テキストエディタはでてないんじゃないか。統合開発環境は好きな人は好きだろうけど、統合開発環境で通常のテキストファイルの編集は快適にできるのか?よくわからんけど。 Emacsはたしかに古い。だが慣れ親しんだ環境は捨てられない。Emacsを12年も使っていたらもう手の延長線上にある。膨大なelispと.emacsの蓄積がある。今更他のエディタには乗り換えられない。新しいものは歴史がないからノウハウがたまっていない。Emacsでできたことができないなんてことはザラだろ。だいたい乗り換えるとしたら、エディタの習得コスト、設定言語の習得コスト、設定の手間とかで何ヶ月かかると思ってんの。 ムーアの法則が15回も適用できる今だからこそ亀のように遅いelispでも

    Emacsは生き続けるさ - http://rubikitch.com/に移転しました
    isseimiura
    isseimiura 2008/04/08
    シビれる『いいものは時がたっても残るんだよ、愛されつづけるんだよ。』
  • オブジェクト指向プログラミング言語の「オブジェクト.メソッド」のドットは「の」や「が」と読んでみるとよい - http://rubikitch.com/に移転しました

    http://d.hatena.ne.jp/piyo2-moko/20080403#1207213499 p name.までかいたら、なんかでてきて、sをおしたらまたなんかでてきた。arrayってでてきた 。 これはメソッド名の入力補完だよ。メソッド名の最初の文字を打ったらその文字から始まるメソッドがリストされるやつ。便利でしょ? name = ["もー","こー","ぴー"] name.size # => 3 sizeはメソッドなんだね、いままでは、いつも一番出だし(左端)にメソッドを書いていたけ ど、 pもメソッドで、そうだ、この.ドットはなんか意味あるのかな? 大あり。ドットの左はレシーバといって、操作の主体を表す。レシーバをつけたメソッド呼び出しは「レシーバ.メソッド(引数)」という書式になる。この場合は引数はないけど。「name.size」はsizeメソッドで長さを求めるのだが、

    オブジェクト指向プログラミング言語の「オブジェクト.メソッド」のドットは「の」や「が」と読んでみるとよい - http://rubikitch.com/に移転しました
  • インターネットの暗黒面を見た - http://rubikitch.com/に移転しました

    はてなブックマーク - C/C++のポインタの機能--変数の場所(アドレス) - builder by ZDNet Japan 件の記事の内容がめちゃくちゃなのは明らかだし、炎上しているから俺が追い討ちをかけるようなことはしたくないのだが。この問題でよーくわかったのがインターネットの怖さだ。個人ブログならともかく、お金をもらって書く記事の内容には万全を期さないといけないことを痛感した。いい加減な気持ちで記事を書いてはいけない。 よく知られているサイトだけに影響力が大きい。閲覧者が多いので間違った内容の記事を書こうものなら一気に炎上してしまう。そして、著者名を検索されて、その著者のを「買わないものリスト」に入れられてしまう。たとえ過去にどれだけ名声を得たとしても、記事ひとつでライター生命の危機に陥ってしいかねないところがインターネットの怖さ。 記事を書くにはしっかり基礎をかためておく必要が

    インターネットの暗黒面を見た - http://rubikitch.com/に移転しました
    isseimiura
    isseimiura 2008/04/03
    software designのemacs記事は素晴しかったです。
  • anything-dabbrev-expand.elリリース - http://rubikitch.com/に移転しました

    複数候補を選択して補完できる動的略語展開 dabbrev-expand-multiple - とりあえず暇だったし何となくはじめたブログ に触発されてanything.elを使って動的略語展開するEmacs Lispをさくっと作ってみた。 これは、動的略語展開の候補をanything.elのインターフェースを使って補完できるようにするものだ。 dabbrev-expand-multiple に慣れている人ならば、違和感なく使えると思う。 dabbrev-expand-multipleだと目視で候補を探していかないといけないから、どうせだったら絞り込みできたらいいなと思ったのが動機。 みなさんはどっちの方が好みかな? anything-dabbrev-expand.el は例によってEmacsWikiに置いといた。 M-x install-elisp-from-emacswiki anyth

    anything-dabbrev-expand.elリリース - http://rubikitch.com/に移転しました
  • yasnippet.elがアツいらしい - http://rubikitch.com/に移転しました

    yasnippetがすごい!!!!1112345! - Kentaro Kuribayashi's blog yasnippetのスニペットをCodeReposで共有しよう! - Kentaro Kuribayashi's blog yasnippetのトリガをスペースキーにする - Kentaro Kuribayashi's blog どれもid:antipopさんのものだが、なかなかよさげ。インストールしてみた。 CUI野郎としてはanything.elのインターフェースで候補選択できたらいいな。まだ1000行弱だからあっさりできそうだが、今は忙しいから誰かに任せるよ。 あと、「略語を記憶するのが問題」とはどの略語展開elispでもいえることだが、これもanything.elで略語をリストしてくれればいいかも。 せっかくCodeReposにyasnippetのconfigを共有している

    yasnippet.elがアツいらしい - http://rubikitch.com/に移転しました
  • 10年間GNU/Linuxを使ってきたが、決してWindowsより劣っているわけではない - http://rubikitch.com/に移転しました

    2008-01-30 俺は10年間GNU/Linuxのみを使ってきたのだが、8年前でもそんなに劣等感は感じなかった。GNU/Linuxに入る前はWindows 95を使ってきたが、メモリを64MBもつけておきながら頻繁にフリーズするのでブチキレたものだった。いつフリーズするかおどおど使っていても精神衛生上まったくいいことないわけで。 「Unixはメモリを有効に使える。Unixは32bitマシンの真の力を引き出せる。Unixには物のperlがある。」とか書かれていたため、MS-DOS時代からUnixにはあこがれていた。そんなこともあっていつかPCでUnixが使いたかった。Windows95にブチキレた当時、FreeBSDとLinuxの選択肢があったけど、「名前がかっこいい」と感じたLinuxを選んだ。 GNU/Linuxを使うと、物のperl物のemacsに出会えて、それはそれは感動

    10年間GNU/Linuxを使ってきたが、決してWindowsより劣っているわけではない - http://rubikitch.com/に移転しました
  • Rubyは俺にオブジェクト指向プログラミングの作法を教えてくれた - http://rubikitch.com/に移転しました

    Matzにっき(2008-01-29)でかなりアツい議論がなされているが。 俺は大昔Perlのオブジェクト指向で何度も挫折した末にRubyに出会ったのだが、そのときに「オブジェクト指向とは何か」という何年もわからなかったものがものの数日でわかってしまったことは俺にとって一生忘れられない記憶だろう。継承、ポリモーフィズムなどのオブジェクト指向の概念がRubyを使えば驚くほどすんなりと頭に入った。そしてすぐに実践できるようになった。 Rubyは俺にオブジェクト指向プログラミングの基的な作法を教えてくれた。たとえば「Rubyのインスタンス変数はデフォルトでprivate」は、「アクセサでインスタンス変数にアクセスするほうが柔軟性が高まる」という定石を言語レベルで教えてくれている。「変数はデフォルトでローカル」は、「グローバル変数は極力使うな」ということだ。「数値も文字列もみんなオブジェクト」は

    Rubyは俺にオブジェクト指向プログラミングの作法を教えてくれた - http://rubikitch.com/に移転しました