タグ

ブックマーク / kwatch.hatenadiary.org (29)

  • Re: 典型的なRails屋はERBを使うことに何の疑問を持っていない - kなんとかの日記

    ひがやすを blog - 典型的なRails屋はERBを使うことに何の疑問を持っていない なんか消されてるけど、何で消したんだろう。もったいない。 『典型的なRails屋はERBを使うことに何の疑問も持っていない』というのはほんとその通り。eRuby は大変シンプル(50行もあれば実装可能)なわりにすごく便利だから、ビュー層にeRubyを採用すること自体は悪いことではない。しかし、HTMLテンプレートのデザインが崩れるeRubyは、ビュー層としては最善手ではなくあくまで次善策にしか過ぎない。それなのに、eRubyが最高だという考え方をしている連中がときどきいるので困る。 これの一番の元凶は、Rails作者であるDHHだと思う。彼はどうやらeRubyこそが最高だと思い込んでいるふしがある。eRubyは、テンプレート独自の言語を使っていないという点ではいいんだけど、テンプレートのHTMLデザイ

    Re: 典型的なRails屋はERBを使うことに何の疑問を持っていない - kなんとかの日記
    yuiseki
    yuiseki 2010/09/27
  • なぜ File.read() でなくて IO.read() なのか? なぜ File.read() はあって File.write() はないのか? - kなんとかの日記

    Ruby 1.9.1 仕様変更締め切りを記念して、Ruby で前々から疑問に思ってたことを書いてみる。 (1) IO.read() は、なぜ IO.read() であって File.read() でないのか。引数に filename を取るんだから、filename に関係ない IO より、関係のある File のほうに定義すべきだったのではないか。 (2) IO.read() はあるのに、なぜ IO.write() がないのか。PHP にだって file_get_contents() と file_put_contents() があるというのに、Ruby で IO.write() がないというのは対称性に欠ける。 comp.lang.rubyで聞いてみたけど、あんまり納得のいく回答がなかった。 IO.read() じゃなくて File.read() と書けるよ → そんなことはわかってる

    なぜ File.read() でなくて IO.read() なのか? なぜ File.read() はあって File.write() はないのか? - kなんとかの日記
    yuiseki
    yuiseki 2010/07/18
  • @ITの炎上していたブログ主がクビになってた - kなんとかの日記

    昨日紹介した、SQLとオブジェクト指向の話題で炎上していた『ベンチャー社長で技術者で』というブログの主が、なんとクビになってた。 【お知らせ】 @IT自分戦略研究所 編集部です。 2010年5月28日、『ベンチャー社長で技術者で』を執筆する生島勘富氏を、エンジニアライフ コラムニストより除名いたしました。 今回の件について、多くの読者から問い合わせをいただきました。今回の処置について、生島氏には了承いただきましたが、「これまで行ってきた議論のまとめはしっかり行いたい」と、最終原稿掲載の依頼を受けました。 編集部で協議した結果、掲載すべきであると判断し、下記に生島氏より受領した最終原稿を掲載します。なお、この内容は@IT自分戦略研究所の見解・意向を示すものではありません。 生島勘富氏の最終コラム:エンジニアライフ運営日誌:エンジニアライフ アンチのせいでクビか。アンチ大喜びだろうな。 思うに

    @ITの炎上していたブログ主がクビになってた - kなんとかの日記
    yuiseki
    yuiseki 2010/06/06
  • プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記

    まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。 これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった静的な言語は軒並み上位に登場する。これに対し、RubyPythonPHP といったスクリプトは全部下のほう (つまり遅い)。その速度差は非常に大きく、このベンチマークで見ると Python3 や Ruby1.9 は C/C++ の約50倍から60倍遅く、Perl は約90倍、PHP にいたっては約130倍遅いことになる。 (ちなみに JIT つきの Lua が驚異的に高速なのが目をひく。この結果が当だとしたら、言語の速度に大きく関係するのは動的か静的かではなく、どれ

    プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記
    yuiseki
    yuiseki 2010/04/30
  • SSD の風が吹けば Intel が儲かる - kなんとかの日記

    話は変わって: とはいえ、HDDとSSDそのもののアクセス性能を比較した場合は10倍から20倍性能が違うのに対し、実際の業務を想定したOLTP処理性能の比較ではそれが2倍〜3倍程度に収まりそうであるのにはやや肩すかしをらった感じもします。 HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験 - Publickey これはそんなもんじゃないかなあ。データベースではディスクアクセスがボトルネックとはいえ、性能の 90% を占めているわけじゃないからね。 たとえば処理にかかる時間全体のうち、ディスクアクセスにかかる時間が 60% を占めていたとする。ここで SSD によってディスクアクセスが 10 倍高速化したとすると、全体の処理時間は: 40% + 60% * 1/10 = 46% もとの処理時間の 46% になる。SSD でディスクアクセスが 10 倍高速化し

    SSD の風が吹けば Intel が儲かる - kなんとかの日記
    yuiseki
    yuiseki 2010/04/27
  • スクリプト言語の息の根を止めるのは案外 SSD かもな - kwatchの日記

    大変たいへん興味深い記事。全プログラマーにとって。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました ...(snip)... HDDは200スレッドで性能が頭打ちなのに対し、SSDは200スレッドから300スレッドになってもまだ性能は上昇。ただし、300スレッド時にはCPU利用率が100%に近づいており、先にCPU性能の方がボトルネックとなってしまったようです。 HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験 - Publickey 動的なスクリプト言語 (RubyPython など) と静的なコンパイル型言語 (C++Java など) では、だいたい 5 倍から 10 倍ぐらいの速度差がある。それでもスクリ

    スクリプト言語の息の根を止めるのは案外 SSD かもな - kwatchの日記
    yuiseki
    yuiseki 2010/04/27
  • はじめての Kay Framework 体験記 - kなんとかの日記

    Google App Engine 専用フレームワークというふれこみの『Kay』を試してみる。 なお環境は Mac OS X 10.6、Python 2.6.2 (自前コンパイル)、GAE SDK 1.3.2。 ダウンロードと解凍 プロジェクトの Web サイトからダウンロードして解凍。 $ cd /tmp $ wget http://kay-framework.googlecode.com/files/kay-0.8.0.tar.gz $ tar xzf kay-0.8.0.tar.gz $ ls -F Kay-0.8.0 .hg_archival.txt RELEASE_NOTES kay/ .hgignore TODO manage.py .hgtags app.yaml settings.py AUTHORS cron.yaml.sample urls.py LICENSE doc

    はじめての Kay Framework 体験記 - kなんとかの日記
    yuiseki
    yuiseki 2010/04/16
  • Ruby の落とし穴: 実は and と or の優先順位が一緒 - kなんとかの日記

    こんなん今の今まで知らんかったわ。 irb> true || true && false #=> true irb> true or true and false #=> false irb> true || false && false #=> true irb> true or false and false #=> falseまじですかー! 何やねん、これ。 マニュアル見ると、and と or の優先順位が一緒だった。つまり '&&' > '||' なのに 'and' == 'or' ですよ。 これに基づくと、上のはこう解釈されていることになる。 irb> true || (true && false) #=> true irb> (true or true) and false #=> false irb> true || (false && false) #=> true irb

    Ruby の落とし穴: 実は and と or の優先順位が一緒 - kなんとかの日記
    yuiseki
    yuiseki 2010/04/12
  • RubyがPHPに勝つにはメソッド呼び出しのための新しい演算子が必要 - kなんとかの日記

    PHPerがRubyを触り始めて最初に不機嫌になるのは、空文字列が偽ではないことだ。つまり、PHPなら「if ($var)」で済むのが、Rubyだと「if !var.empty?」と書かなければならない。これでPHPerは不機嫌になる (まあ気持ちは分かる)。 if ($var) ... # PHP if !var.empty? ... # Rubyそれだけならいい。もし値がnilである可能性があるなら、Rubyでは「if var && !var.empty?」と書かなければいけない。この時点でPHPerは不機嫌どころかブチ切れる。なんでこんなに書かなきゃいけないんだ!? PHPなら「if ($var)」で済むのに!! SHIIIIT!! if ($var) ... # PHP if var && !var.empty? ... # Rubyここで、「空文字列が偽になるような言語仕様こそク

    RubyがPHPに勝つにはメソッド呼び出しのための新しい演算子が必要 - kなんとかの日記
    yuiseki
    yuiseki 2010/02/02
  • pure Ruby な C コンパイラがあったらいいな - kなんとかの日記

    自作の拡張ライブラリを作ったのはいいけど、Windows 用バイナリを作ろうとして行き詰まる。Windows ではどうやってコンパイルすればいいのかわかんないし、そもそも WindowsRuby からして種類がいくつかあって、どれをターゲットにしたらいいのかもわかんない。 で思ったのだが、どうせなら pure Ruby な C コンパイラがあれば、こんなことで悩まなくて済むんじゃなかろうか。そいつで Windows 用の拡張ライブラリどころか、Ruby 体もコンパイルできれば、なんだかすごい世界が広がるように思う。ちょうど、C をなるべく排除しようとしてる Rubinius とまったく逆のアプローチ。 C のコンパイラを Ruby で作る場合、フロントエンドはまだいいとして、バックエンドが問題だよな。Pure Ruby なアセンブラを作らなきゃいけないけど、アセンブラよく知らんし。

    pure Ruby な C コンパイラがあったらいいな - kなんとかの日記
    yuiseki
    yuiseki 2010/01/17
  • PHPをDisってるブログエントリを集めてみた - kなんとかの日記

    スクリプト言語の範疇に入らないかもしれない言語を使っているPHPerのみなさん、こんにちは。 PHP歴史は、Disられ罵られバカにされ続けた歴史です。 日は、その歴史を紐解いてみたいと思います(一部、PHP擁護派のエントリも含んでいます)。 なおここで紹介していない記事で、ほかに紹介してほしいものがあれば、教えてください。 あと引用は一部のみなので、元記事の全文を読むことを強くお勧めします。 2006年 PHPプログラマ in YAPC::Asia 2006 Tokyo - 0330 (twk @ ふらっと) では、PHPの世界に帰ります。Perlの人はRubyをうらやみHaskellにおどろきPHPを軽蔑すると言う文化になっているようです。 このころには、すでにPHPは軽蔑される存在だったようです。 昔、2ちゃんとかでよくあった、Perl = C++ , PHP = VBってな感じ?

    PHPをDisってるブログエントリを集めてみた - kなんとかの日記
    yuiseki
    yuiseki 2009/11/28
  • 続: クラスに対して動的にメソッドを追加する - kなんとかの日記

    そもそも、クラスの名前空間に関数ぶち込めば そんだけで、済むシンプルで他の言語からしたら変態な 名前空間の持ち主のpythonでは、特別に何のモジュールを 使わなくても出来る。 pythonの名前空間は変態だから - aileron.cc 違うよ、できないよ。昔試してみて失敗したから、間違いない。 ・・・と思ってもう一度試してみたら、できちゃった! 間違ってたのは自分のほうだったorz class Foo(object): pass def f1(self, arg): print repr(arg) obj = Foo() obj.f1("abc") #=> AttributeError: 'Foo' object has no attribute 'f1' Foo.f1 = f1 obj.f1("abc") #=> 'abc' 最近のPythonだとできるようになったのかなと思って、P

    続: クラスに対して動的にメソッドを追加する - kなんとかの日記
    yuiseki
    yuiseki 2009/10/12
  • Re: 大量のハッシュデータを簡潔に作成する - kなんとかの日記

    これもどこまでマジなのかよくわからんのだけど…… つ injectとだけ言わせていただく。 jijixi's diary - Re: Python での組み込み型をより自然な名前にする - kwatchの日記 , Re: 大量のハッシュデータを簡潔に作成する - kwatchの日記 inject()があればHash.create_with()はいらないというご指摘をいただきました。 検証してみましょう。 ## Hash.create_with()を使う方法 data = Hash.create_with(:name, :gender, :role) {[ ["Haruhi", 1, "Leader of SOS Brigade"], ["Mikuru", 1, "Time Traveler"], ["Yuki", 1, "Humanoid Interface"], ["Itsuki", 0

    Re: 大量のハッシュデータを簡潔に作成する - kなんとかの日記
    yuiseki
    yuiseki 2009/07/15
  • 大量のハッシュデータを簡潔に作成する - kなんとかの日記

    スクリプト言語では Hash や dict のリテラルが用意されているので、書きやすい。しかしテストデータなどで大量の記述が必要になると、さすがにちょっと面倒である。 data = [ {:name=>"Haruhi", :gender=>1, :role=>"Leader of SOS Brigade"}, {:name=>"Mikuru", :gender=>1, :role=>"Time Traveler"}, {:name=>"Yuki", :gender=>1, :role=>"Humanoid Interface"}, {:name=>"Itsuki", :gender=>0, :role=>"ESPer Boy"}, {:name=>"Kyon", :gender=>0, :role=>"Story Teller"}, ] 同じキーが繰り返し出てくるのがいやだよね。これなら

    大量のハッシュデータを簡潔に作成する - kなんとかの日記
    yuiseki
    yuiseki 2009/07/14
  • コンピュータ業界の歴史は「おもちゃ」による勝利の積み重ね - kなんとかの日記

    (追記(2008-07-09): このエントリはタイトルにあるように「歴史ではおもちゃこそが勝ってきた」ことを再認識することが焦点であり、JavaRubyHSPは話の質ではありません。誤解を避けるため、当初つけていたカテゴリ[java]は外しました。) これはJava屋さんのホンネがよく出てる。 いっても良いですか?PerlとかRubyとかツールであって言語じゃないんです。Javaは言語にふく組まれています。PerlRubyは遊びお道具なんです。まあ、まじめにやれば、言語になるけど、エラー処理とか書きにくそうなんですね>Perl。PrelはC言語のにおいがします。RubyはPascalのにおいがします。大体、変数宣言・型宣言しなくても変数がつかえるって、昔のBASICと同じじゃないですか? http://d.hatena.ne.jp/oredoco/20080626/1214416

    コンピュータ業界の歴史は「おもちゃ」による勝利の積み重ね - kなんとかの日記
  • GitHub で gem を自動作成させるときの注意 - kなんとかの日記

    GitHub では、gem パッケージを作成してくれる機能がある。 やり方: GitHubプロジェクト管理ページから「edit」をクリックし、「RubyGem」のチェックボックスにチェックを入れる。 自分のプロジェクト用の *.gemspec ファイルを commit & push する。このとき、バージョン番号をあえて 0.0.0 にしておくことをお勧めする。 *.gemspec ファイルでバージョン番号を更新して commit & push する。← 重要! 成功すると、しばらくしたあとに http://gems.github.com/list.html に Gem 名が現れる。失敗した場合は自分宛にメッセージが届いているはずなので、それを読む。 それ以外にも GitHub での gem 作成はけっこうハマるポイントがある。ローカルでの gem 作成はまったく問題がなくても、Git

    GitHub で gem を自動作成させるときの注意 - kなんとかの日記
    yuiseki
    yuiseki 2009/02/14
  • 名もないベンチャーが億単位の案件を獲るには (Re: 真のソフトウェア工学はもう存在している) - kなんとかの日記

    手でコードを書くプログラマと、コードにコードを書かせるメタプログラマでは、 規模が大きな仕事になるほど差が開いていくと思う。 真のソフトウェア工学はもう存在している - Hello, world! - s21g うむ、その通りです。最近ようやく Ruby でのメタプログラミングを使った DSL の作り方・使い方が分かってきたところなんですけど、これが分かってくると「今までの自分は何をやってたんだろう」と思うことがしょっちゅうです。何というか、今までの自分は Ruby の力を全然引き出せてなかったなーと反省しきりでした。 ただまあ、実際のプロジェクトで問題になるのはお客様に原因があったりするので、技術だけで解決するような問題ばかりではないのが頭の痛いところです。 真のソフトウェア工学は、もう存在している。それは、 タワークレーンを使った高層ビル建築 に似ている。 メタプログラマー仕事は、タ

    名もないベンチャーが億単位の案件を獲るには (Re: 真のソフトウェア工学はもう存在している) - kなんとかの日記
    yuiseki
    yuiseki 2009/02/09
  • 従来のソフトウェア工学が決定的に間違っている点 - kなんとかの日記

    従来のソフトウェア工学は、属人性を排除して開発者の能力を均一化しようとしている。この点に置いて、従来のソフトウェア工学は決定的に間違っている。 ソフトウェア開発では、個人の生産性は上と下とで 30 倍違うと言われる。これが当だと仮定したら、これだけ差がでるものを均一化なんてできるわけない (したところで間違った結論しかでない) んだから、属人性を排除することは大きな誤りである。 仕事が高度になればなるほど、属人性は排除できないし、人材の替えはきかない。問題を解決できない人間を100人集めても、問題は解決できない。問題を解決できるのは、問題を解決できる能力を持った人間だけ。頭の悪い大人100人より、すごく頭のいい小学生1人のほうが、成果物が出る。ソフトウェア開発はそういう類いの仕事。 よく、ソフトウェア開発を工場での作業に例える人がいるけど、これも「属人性を排除できる」という勘違いからもた

    従来のソフトウェア工学が決定的に間違っている点 - kなんとかの日記
    yuiseki
    yuiseki 2009/02/07
  • DRY (Don't Repeat Yoursel) の意味を勘違いしてたかも - kなんとかの日記

    なんか、DRY の原則をすっげー勘違いしてたかも。 The DRY (Don't Repeat Yourself) Principle states: Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. http://c2.com/cgi/wiki?DontRepeatYourself DRY (Don't Repeat Yourself) っていうから、単に「同じことを繰り返さない」という意味だと思っていた。だから、たとえば class Node end class Element < Node def accept(visitor) visitor.visit_element(self) end end class Text < N

    DRY (Don't Repeat Yoursel) の意味を勘違いしてたかも - kなんとかの日記
    yuiseki
    yuiseki 2009/01/06
  • 速報: Merb と Rails が統合 - kなんとかの日記

    悪い冗談としか思えないんだけど、Merb と Rails が統合されるらしい。 Merb gets merged into Rails 3! by DHH (Rails 作者) Rails And Merb Merge by Yehuda Katz (Merb 主任開発者) Rails and Merb core team working together on their next release by Matt Aimonetti (Merb コアチームメンバー & merb-book リーダー) Merb *is* Rails by Ezra Zygmuntowicz (Merb project 創始者 & EngineYard 共同設立者) Rails and Merb Bury the Hatchet (Rails の有名ブログ) 実は 1 週間前に、DHH が Merb の信者

    速報: Merb と Rails が統合 - kなんとかの日記
    yuiseki
    yuiseki 2008/12/25