タグ

ブックマーク / elm200.hatenadiary.org (23)

  • My Job Went to India - elm200 の日記(旧はてなダイアリー)

    My Job Went To India オフショア時代のソフトウェア開発者サバイバルガイド 作者: Chad Fowler,でびあんぐる出版社/メーカー: オーム社発売日: 2006/09/26メディア: 単行(ソフトカバー)購入: 11人 クリック: 100回この商品を含むブログ (161件) を見る著者の Chad Fowler は、rubygems を作った偉大なハッカーである。そんな彼がソフトウェアのオフショア開発チームを立ち上げるため、インドに向かう。そこで過ごした1年半に感じたことをまとめたのが書の内容になっている。アメリカはインドを始めとする、安価で優秀な海外の人材に IT 関係の仕事を奪われてきた。Chad は、そんなオフショア開発の流れの中で、高賃金=高コストの IT 人材としてアメリカで生き残るためには何をしなければならないか説く。内容はごく順当で「単純なコーディ

    My Job Went to India - elm200 の日記(旧はてなダイアリー)
  • なぜ私たちはこの21世紀に通勤なんてしているのだろう? - elm200 の日記(旧はてなダイアリー)

    未来学者アルビン・トフラーは著作「第三の波」で「未来では、高度化した通信機器を使うことによって、在宅勤務が一般化するだろう」と予言した。じつに1980年のことだ。あれから27年。世界は高度情報化という第三の波に洗われている。だが在宅勤務はいまだに一般化していない。どうしてだろうか? 1980年にあった通信手段は、郵便・電話・ファックスだった。それに対して、現在は電子メール・ボイスチャット等インターネットを利用した実に多様な通信手段が利用可能である。在宅勤務のインフラは整いつつあるはずだ。だが、一向に通勤が終わる気配はない。むしろ、この社会は通勤という、わずか100年ほど前に始まった奇妙な習慣がこの先、永遠に続くことを信じて疑わない。 たしかにいくらインターネットが発達しても、直接顔を合わせることには勝てない部分があるのだ。それは、円滑なコミュニケーションに必要なジェスチャーや表情といった非

    なぜ私たちはこの21世紀に通勤なんてしているのだろう? - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/06/16
    違う >わずか100年ほど前に始まった奇妙な習慣
  • 日本のソフトウェア技術者は多すぎる - elm200 の日記(旧はてなダイアリー)

    顧客とプログラマ以外の中間層を排除すると 経済産業省「特定サービス産業動態統計調査」の2007年3月分(確報)によれば、日の情報サービス業の売り上げは年間約11兆円、常用従業者数は約31万人(うち技術系23万人)だそうである。統計というものは常に掘り下げるとわけがわからなくなるのが常なので、あくまでも大体この程度だと捉えておくのがいいだろう。単純に割り算をすると、11兆円 / 31万人 = 3500万円が従業者一人あたりの売り上げとなる。従業者一人当たりの平均年間人件費が 500万円 だと仮定すると、3500 - 500 = 3000 万円は人件費以外のものに消えている勘定になる。それが何なのかよくはわからないが・・・。 私は、大学では経済学を学んだ。経済学というのは厳密に議論しだすときりがないので、ここでは大胆な単純化を行う。従業員一人当たりの平均人件費が 500万円 という仮定の下で

    日本のソフトウェア技術者は多すぎる - elm200 の日記(旧はてなダイアリー)
  • 革命的ソフトウェアエンジニア宣言 - elm200 の日記(旧はてなダイアリー)

    私は、もともと好き嫌いが多いほうである。物事を白黒付けたがるほうである。和の精神という美名のもとで行われるあいまいさが嫌いである。ブログで読者を獲得するにはネガティブなことは言わないほうがいい、という定石に従って、あまりネガティブなことは言わなかったが、嫌いなものについて述べるほうが舌が回るほうである。ならば言ってしまおう。 「ソフトウェアの仕様書は料理レシピに似ている」は当にすばらしいブログエントリである。しかし、もっとすばらしいと思えるのは、このブログエントリに対して 500 件以上のはてなブックマークがつき、その圧倒的多数がこのエントリに熱烈なエールを送っていること。日のソフトウェアエンジニアたちも捨てたものではない。 日のソフトウェアエンジニアの大多数が従事しているシステムインテグレータ(SIer)業界がどこか根的にまちがっているのは、良心をかけらほどでも持ち合わせたエン

    革命的ソフトウェアエンジニア宣言 - elm200 の日記(旧はてなダイアリー)
  • file_column の validation で日本語のメッセージを使えるようにする。 - elm200 の日記(旧はてなダイアリー)

    趣旨 ファイルアップロードを劇的に楽にするおなじみ file_column プラグイン。作者の Sebastian Kanthak さんは、現在 Google にお勤めの凄腕ハッカー。写真を見る限りは、なかなかのイケメンである。(日ハッカーで誰が一番イケメンかなあ) それはさておき、file_column の validation では、ファイル種別やファイルサイズによるチェックが可能である。しかし、英語でしかメッセージを表示してくれない。そこで、エラーメッセージを自分で設定できるようにハックしてみた。 使い方 モデルクラスで、 file_column :image include FileColumn::Validations validates_file_format_of :image, :in => ["gif", "png", "jpg"], :message => "のファ

    file_column の validation で日本語のメッセージを使えるようにする。 - elm200 の日記(旧はてなダイアリー)
  • I Have a Dream - elm200 の日記(旧はてなダイアリー)

    かつて Martin Luther King, Jr はそう言った。でも自分の夢を公にするのは、なんだか恥ずかしい。きっとその夢に対してツッコミを入れられることを恐れるからだろう。 私には夢がある。最近、それが何なのかおぼろげにわかってきた。私は、生産性の高いソフトウェア開発のチームを作りたい。XP で代表されるようなアジャイル開発の考え方はそれに近い。 私は、大学では経済を学んだが、紆余曲折の後、プログラマになることになった。1996年のことだ。3年後、日のソフトウェア業界に絶望して、カナダに渡る。しかし、外国でも自分の理想の職場は見つけられず、3年前に日に舞い戻った。 自分に理想があるなら、それを探し出すのではなく、作り出すべきなんだ。 日人は、世界的に見ても、非常に教育水準が高く優秀な労働者が多いと思う。これは、いろんな国を見てきた実感である。日にも優秀なハッカーたちは大勢い

    I Have a Dream - elm200 の日記(旧はてなダイアリー)
  • 日本の IT ビジネスを巡る素朴な疑問 - elm200 の日記(旧はてなダイアリー)

    今年に入ってから、私はウェブに関する基礎技術について、PHPRuby on Rails を通して学んできた。いくつかのプロジェクトを通じて、なまっていた技術者としての腕も再びよみがえってきた。頭は1999年に日を一度去ったときの技術レベルからようやく2005年くらいまでの水準まで、アップデートされてきた。(まだ1年半くらいのギャップは残っているとは思う) Ruby 界隈の技術を勉強する仮定で、ネットやリアルですばらしい技術者たちにおおぜい遭遇した。彼らはまだ若いが、技術に対する考え方が非常にしっかりしている。哲学があるのだ。私は、技術だけでなくその哲学をまた吸収させてもらった。 その一方で日IT ビジネスの現状のなんとお寒いことか。独立系のネットベンチャーを除けば、大企業のユーザーを頂点とする元請=下請関係のピラミッド型構造の中で、エンジニアを「人売り」する人月商売ばかり。そ

    日本の IT ビジネスを巡る素朴な疑問 - elm200 の日記(旧はてなダイアリー)
  • ログにタイムスタンプを追加する - elm200 の日記(旧はてなダイアリー)

    Rails のログ(development.log / test.log / production.log) は使いやすいが、なぜかログにタイムスタンプが吐き出されない。どうしてだろうと、つらつらと Rails のソースコードを眺めてみた。やはり ActiveSupport の clean_logger.rb でわざわざ時刻もなにも出力されないようにメソッドが上書きされていた。 そこで、タイムスタンプをログに出力するための hack。 # lib/logger_with_timestamp.rb class Logger private if method_defined?(:formatter=) def format_message_with_datetime(severity, timestamp, progname, msg) app_format_message(msg) end

    ログにタイムスタンプを追加する - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/05/06
    これはいい
  • SSL 上で WEBrick を動かす - elm200 の日記(旧はてなダイアリー)

    何がうれしいか Rails で WEBrick on SSL してみた。 基は、ここみたいにやればいいのだが、もうちょっと標準の script/server コマンドに近いノリにしてみた。デフォルトのポートはなんとなく 3500 番にしてあるが、 % ruby script/webrick_ssl --port=3600 とすれば、3600番になるし、--daemon と指定すれば、デーモンとして起動する。ここらへんは、普通の server コマンドと同じ。 試した環境 Rails 1.2.3 Linux 2.4.27 i686 GNU/Linux Ruby 1.8.6 (たぶん WindowsMac でも OK だろう) 動かし方 OpenSSL がなかったら入れる。(Debian なら % aptitude install openssl libssl0.9.7 libssl-

    SSL 上で WEBrick を動かす - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/04/30
    webrick/ssl
  • WEBrick で Basic 認証を行う - elm200 の日記(旧はてなダイアリー)

    趣旨 WEBrick で Basic 認証を行ってみる。 #!/usr/local/bin/ruby require 'webrick' include WEBrick mime_types = HTTPUtils::DefaultMimeTypes mime_types['rhtml'] = 'text/html' server = HTTPServer.new( :Port => 2000, :MimeTypes => mime_types, :DocumentRoot => File.expand_path(File.dirname(".")) + "/htdocs", :RequestCallback => lambda do |req, res| if req.path =~ %r(^/private/) HTTPAuth.basic_auth(req, res, "my rea

    WEBrick で Basic 認証を行う - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/04/30
    HTTPAuth.basic_auth
  • WEBRick を使ってプラグインを公開する方法 - elm200 の日記(旧はてなダイアリー)

    WEBRick の問題点 プラグインを自動的にインストールできる plugin コマンドにはいつもお世話になっている。このコマンドの実体は、(Rails gem home directory)/lib/commands/plugin.rb にある。ソースコードをつらつらと眺めていると、 % ruby script/plugin install http://www.example.com/plugins/foobar/ なとどした場合、普通に http でファイルを取ってくるだけのようだ。しかし、plugin コマンドはなかなか賢くて、ウェブサーバが返すディレクトリのファイルリストを元にサブフォルダもろともごっそりと、RAILS/vendor/plugin/foobar/ 以下にダウンロードしてくれる。 WEBRick を使ってプラグインを公開することもできるのだが、その場合、1つ問題点が

    WEBRick を使ってプラグインを公開する方法 - elm200 の日記(旧はてなダイアリー)
  • 現在のコンテキストで使用可能なメソッドの一覧 - elm200 の日記(旧はてなダイアリー)

    昨日も書いたけれども、Rails でコードを書いていてイヤになるのは、Ruby の動的な性格から、いま self が何で、使用可能なメソッド名は何かということがわかりずらいということである。 そんなときこんなふうにしてみるといいかもしれない。 logger.debug "self = " + self.inspect logger.debug "methods = \n" + self.methods.collect { |m| self.method(m).inspect }.sort.join("\n") (標準出力に出力するなら、logger.debug の代わりに puts でもよい) このコードをコントローラ・ビュー・テストなど、コンテキストを知りたい場所に挿入しておく。 いまテストでどんなアサーションが使えるか知りたかったので、テストコードのなかで実行してみた。すると、 sel

    現在のコンテキストで使用可能なメソッドの一覧 - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/04/22
    self.inspect
  • Rails のデメリット - elm200 の日記(旧はてなダイアリー)

    この2週間は Ruby on Rails の初仕事に没頭する日々だった。ある EC サイトを作っているのだが、とにかくはじめてのことだらけでなかなか先に進まない。Rails は理解してしまえば、あっという間に仕事をこなせることが多いが、その理解するまでが大変。いままで RailsRuby 界隈のハッカーたちに熱狂的な支持を受けてきたが、ハッカーではなく私のような普通の開発者に受け入れられるようになるまでにはいくつかの障害があるだろう。 Rails の学習コスト Rails のホスティングサービス 1. はとにかく高い。Rails は scaffold で雛形を作るまでは簡単だが、その先、何をどうしたらいいか飲み込むのに時間がかかる。それは Rails の Convention over Configuration (設定より規約)という一つの柱がマイナスに働いている面だろう。たとえば

    Rails のデメリット - elm200 の日記(旧はてなダイアリー)
  • ActiveRecord の歩き方 - Association 編(1) - elm200 の日記(旧はてなダイアリー)

    まえがき Rails に出会ってからというもの、私は ActiveRecord の洗練されたインターフェイスに惹かれてきた。特にアソシエーションがどういう風に実装されているのか自分で確かめてみたかった。以下のコード例を見てほしい。 class Entry < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base end これはあるブログシステムのモデルである。このコードではエントリ(Entry)とコメント(Comment)という2つのモデルがあり、Entry モデルの has_many :comments というメソッド呼び出しによって、コメントがエントリに関連付けられている。これがアソシエーションである。(エントリは、コメントを複数持つ。だから has_many アソシエーションが使われて

    ActiveRecord の歩き方 - Association 編(1) - elm200 の日記(旧はてなダイアリー)
  • Rubyの呼び出し可能オブジェクトの比較 - elm200 の日記(旧はてなダイアリー)

    Ruby 界隈では青木峰郎氏もすごいが、この Yugui 氏も当にすごい。数学・社会科学・コンピュータの知識を縦横無尽に駆使する博覧強記の人。 Yugui 氏による「Rubyの呼び出し可能オブジェクトの比較」3回シリーズがまた非常によい。 http://idm.s9.xrea.com/ratio/2006/11/14/000541.html http://idm.s9.xrea.com/ratio/2006/11/19/000547.html http://idm.s9.xrea.com/ratio/2006/11/29/000558.html Ruby はコンテキストによって暗黙のレシーバである self やメソッド・クラス変数・定数の登録先クラスが変わるのだが、その変わり方が非常に微妙なのである。これに、特異クラスが絡んでくると頭がウニ状態になる。 私は昔は能天気な Ruby ユーザ

    Rubyの呼び出し可能オブジェクトの比較 - elm200 の日記(旧はてなダイアリー)
  • ActiveRecord 更新系 - elm200 の日記(旧はてなダイアリー)

    Rails のバージョンは 1.2.3 を想定。 基的に断りがない場合は ActiveRecord::Base のインスタンスメソッドまたはクラスメソッドについての話である。 1. 基的に更新は save で行う save と save! の違い save : 失敗したら false を返す。 save!: 失敗したら RecordInvalid 例外を投げる。 Dave Thomas 「Rails によるアジャイル Web アプリケーション開発」によると、この2つの使い分けは、 save: コントローラのアクションメソッドとして呼び出されることを想定。エラーを画面に表示することを考えると、例外を投げるのはまずいので true/false を返す。 save!: バッチ的な処理で使うべき。 とのこと。 2. update_attribute メソッドとは? update_attribu

    ActiveRecord 更新系 - elm200 の日記(旧はてなダイアリー)
  • FastCGI インストール - elm200 の日記(旧はてなダイアリー)

    いろいろ文句を言いつつもやはりおしゃれな Rails。もうちょっとやってみようということで。 今日は FastCGI のインストールを試みた。 ネタは「ライド・オン・Rails」(吉田和弘他著)。 手順は、以下の通り 1. FastCGI 体のインストール 2. Apache の mod_fastcgi のインストール 3. Ruby の FastCGI アダプタのインストール 4. Rails アプリの public フォルダの .htaccess の編集 5. Apache 再起動 これだけで、public フォルダに URL 指定するとちゃんと Rails アプリが動くことを確認。 1., 2. に関しては、FastCGI 家から *.tar.gz をダウンロードして、make install する。 3. に関しては、gem install fcgi で OK。 4. は .

    FastCGI インストール - elm200 の日記(旧はてなダイアリー)
  • 仮想専用サーバに Rails インストール - elm200 の日記(旧はてなダイアリー)

    「使えるねっと」の仮想専用サーバと契約してみた。一番安いコースで、CentOS 4 の2,980円/月というもの。 (この CentOS というのは RedHat Enterprise Linux の「クローン」だそうで・・・) 契約をオンラインで済ませるとすぐに仮想専用サーバが使えるようになった。 ssh でログインすると、パッケージ管理ツール yum が入っていないことに気づいた。 yum の rpm もよくわからなかったので、とりあえず tar.zip からインストール。(途中結構苦労した) それから、yum install ruby として ruby を入れたのだが、このバージョンが 1.8.1 と古く(うーん、誰も rpm を作っていなかったのかな)結局、rubygems とうまく合わず、ソースを入手してコンパイル。 その後、rubygems の 0.9.2 を入れ、rubyge

    仮想専用サーバに Rails インストール - elm200 の日記(旧はてなダイアリー)
  • Smarty と Cake PHP - elm200 の日記(旧はてなダイアリー)

    この週末は、PHP の勉強にかまけている。 とりあえずソフトカルチャーのウェブサイトで告知したように、ウェブサイトの自動更新システムを PHP で作った。まあ、いわゆるブログみたいなプログラムだ。それをとりあえず、何のフレームワークも使わずに、このサイトを参考に、MVC(モデル・ビュー・コントローラ・アーキテクチャー)ぽく作ってみた。MVC でウェブアプリを作ると全体の構造がはっきり見えてきて、気分がよい。私は、なにせ21世紀に入って真面目にプログラミングを勉強していないので、とりあえず MVC 程度のことさえも最初はよくわからなかった。このプログラムを書いたのはとてもよい勉強になった。 その後、ずっと気になっていた Smarty に関して、このサイトを参考にして、ちょっと勉強してみた。View の部分からプログラムロジックを取り除こうという考え方で、まずは MVC の考え方が理解できてい

    Smarty と Cake PHP - elm200 の日記(旧はてなダイアリー)
  • PHP4 のオブジェクトコピー - elm200 の日記(旧はてなダイアリー)

    最近は、PHP にはまっている。(なかなか Ruby on Rails にたどり着かない) PHP4 のオブジェクトコピーは、トリッキーである。 ここに、$a というオブジェクトがあるとすると、 $b = $a; は、「$b が $a につながれているオブジェクトのアドレスを参照するのではなく、$a につながれているオブジェクトがコピーされて、$b につながれるようになる」のだと説明される。しかしそれは、片面の真実でしかない。 実際には、PHP4 では、$b = $a の瞬間には、オブジェクトのコピーは起こらない。そのかわり、$a または $b に対して、オブジェクトの変更操作が行われた瞬間に、コピーが行われる。そして、変わらなかったほうが元のオブジェクトを引き継ぐというわけだ。これをコピー・オン・ライトというらしい。 (私の説明が下手なのは、自覚している。これよりずっといい説明は、このペ

    PHP4 のオブジェクトコピー - elm200 の日記(旧はてなダイアリー)
    infohack
    infohack 2007/02/05