タグ

ブックマーク / blog.yugui.jp (16)

  • 良い相続人であるために - 世界線航跡蔵

    翔泳社の「君のために選んだ1冊 ソフトウェア開発の名著」という企画に寄稿を依頼されて、以下のような文章を書いた。ブログ等で公開して良いとのことだったのでここに公開したいと思う。 この企画は他の人の分を読むのが楽しみだ。早くができあがらないかな。 ちなみに「 きっと何者にもなれないお前たちに告げる 一冊」というタイトルを最初に思いついたけれど、長く読み継がれるであってほしいという企画の趣旨を鑑みて流行のネタを使うのは避けた。 yuguiがレガシーコードに絶望した人に贈りたい一冊 - 『レガシーコード改善ガイド』 レガシーコード改善ガイド (Object Oriented SELECTION) 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義出版社/メーカー: 翔泳社発売日: 2009/07/14メディア: 大型購入: 45人 クリ

    良い相続人であるために - 世界線航跡蔵
  • はまちちゃんと脆弱性報告のあり方 - 世界線航跡蔵

    はまちちゃん がいつものごとく、AmebaなうにCSRF脆弱性を発見して いたずらを仕掛けた 。そして、何故か今回だけ「それは迷惑行為だ」とかなんか騒がしい。 私はそもそも、はまちちゃんのいたずらを「隙があったからカンチョー」に喩えるのが程度がおかしいんじゃないかと思う。それで非技術者には話が通じていないのでは? CSRFやSQL Injectionを許していたら、何よりも守るべきユーザーの情報が危険だ。そしてAmebaがそういう脆弱性を持っていると言うことは、生越さんが指摘するように首相官邸からの公式情報を操作できるという意味だ。これは「隙があった」んじゃないだろう。「開腹したまま内臓が露出している」んだ。 ところが、どうも現実の医師とは違ってこの世界の、特にAmebaみたいな大きな会社の開発者はその辺の意識が甘い。「手術したけど、まー、内臓が見えててもすぐに死ぬ訳じゃないし、適当に皮被

    はまちちゃんと脆弱性報告のあり方 - 世界線航跡蔵
  • Rubyの呼び出し可能オブジェクトの比較 (3) - なんかklassの話

    前回 はコンテキストの概念を眺めて、klassを理解することが必要だという話になったのであった。 klass class文の中では構築しようとしているクラスに対応するClassオブジェクトがselfとなっている。それに、class文の中でのクラスメソッド定義をみると、なんとなく、「デフォルトではselfに、指定すればそのオブジェクトに」というメソッド呼び出しにおけるレシーバー解決に似ている。 class Foo def self.class_method_hoge p :hoge end end class Bar def Foo.class_method_huga p :huga end def self.class_method_huga_of_bar p :huga end end このことを考えるとRubyでは、メソッドはselfに定義されると考えたくなるが、そうではない。実はこれ

    Rubyの呼び出し可能オブジェクトの比較 (3) - なんかklassの話
  • Three implicit contexts in Ruby - 世界線航跡蔵

    Yehuda Katz wrote an article about self and metaclass . In the article he said that Person.instance_eval assigns Person's metaclass to self for a class Person . But this is obviously wrong. class Person; end Person.instance_eval{ p self } #=> Person As I mentioned in an old article , though I'm sorry about it is written in Japanese, Ruby always has three implicit contexts: self), so called klass'

    Three implicit contexts in Ruby - 世界線航跡蔵
  • Rubyコミッタ一覧 - 世界線航跡蔵

    Rubyのコミッタ一覧を作りました。3種類のフォーマットがあります。 OPML (フィードリーダー用) RDF (FOAF) YAML (元データ) YAML版は手で書きました。その他の版は 整形器 で生成しました。HTML版を生成することもできます。 意義 Rubyコミュニティは些かhigh contextだったりします。mputって誰のことでしょう? zenspiderは? "why is why why"って何を言いたいの? 笹田さんが「パッチモンスターが……」という時、何を意味しているの? コミッタのうち誰が誰で何であるかをリストにしてみました。 Rubyは沢山の方の貢献によって成り立っています。その名誉はコミッタだけによるものではありません。けれども、Rubyコミッタたちが注目に値する人々であるのは確かでしょう。twitterでfollowしたりblogを購読したりしたらよいと思

    Rubyコミッタ一覧 - 世界線航跡蔵
  • passengerとmod_autoindex - 世界線航跡蔵

    Passenger を使っていて、ディレクトリのautoindexが効かなくて困った。 Passengerもいくらか枯れてきている感じなので先日試したところ、確かに管理が楽なので最近気に入っている。ちょっと前まではRailsアプリケーションのデプロイと言えばmongrel+mod_proxy_blancerだったのだけれども、最近はpassengerの人気が上がっている。 passenger人気の理由はいくつかある。 Rack という汎用の仕組みをサポートしていること。だから、passengerがあればrailsだけでなくmerbもsinatraも動く。 デプロイが楽なこと。SSHでサーバーに入ってアプリケーションサーバーを再起動、とかやらなくて良い。まーこれはcapistranoやvladでデプロイしている私にはあまり関係ないけど、PHPアプリケーションやJava EE warの「ディレ

    passengerとmod_autoindex - 世界線航跡蔵
  • Rubyのメタクラス階層 - 世界線航跡蔵

    この記事は、先日開催した 第3回 RHGの逆襲 のまとめみたいなものである。と、同時に『初めてのRuby(仮題)』の宣伝である。 クラス、その例外、そのトリック Rubyはクラスベースのオブジェクト指向だから、メソッドの情報はクラスに属している。インスタンスメソッドを呼び出すときには、そのオブジェクトの属するクラスを調べて、そのクラスの持っているインスタンスメソッドの中から探す。 でも、Rubyの場合は例外がある。1つはモジュール。モジュールはクラスではないのに、でもインスタンスメソッドを提供している。1つは特異メソッド。特異メソッドは特定のインスタンスに直接所属するメソッドだ。 でも、ここには実装上のトリックがある。Rubyにとってはモジュールのインスタンスメソッドも特異メソッドも、等しくクラスに属するインスタンスメソッドなんだな。 モジュール モジュールをクラスにincludeすると、

  • Mad web programmer宣言 - 世界線航跡蔵

    この文章を、あまりにも早く去ってしまった才能、 伊藤計劃 に捧げる。 さて、私の名刺には"mad web programmer"と刷ってある。「何が"mad"なのか」というのはFAQである。今まで幾人かに答えてきたその答えをここに書きたいと思う。 webの安全性について ネットが危険であると言ったのは誰だろう。いや、ネットは安全である。WWWの隣人は包丁であなたを刺さない。WWWの中傷者はログから追跡可能だ。 オフラインとは、認証を経ていない誰かがあなたの存在を抹消できる世界。証拠を残さずにひそひそと他人を中傷できる世界。顔が見えているというだけの実質のところ匿名で、他人を追い詰めることので きる世界。 オフラインは危険である。webはより安全なのだ。webが理想郷であるというつもりはないが、ことさらに「web炎上」などと言うな。 そこにある暴力性は、少数者がオフラインでは日々脅かされてい

    Mad web programmer宣言 - 世界線航跡蔵
  • Roleに基づくスタブライブラリ - 世界線航跡蔵

    オブジェクトが他のオブジェクトと相互作用するにあたり、そのオブジェクトの機能の全体が必要になることは少ない。むしろ、オブジェクトの提供する特定のRoleのみが見えるべきである。そのRoleを提供することのみを契約すべきである。 MVCアーキテクチャではControllerはModelに対してオブザーバとして振る舞うし、Viewに対しては何らかのメッセージソースとして振る舞う。MVC風webフレームワークではControllerはViewに対して、表示すべきデータを供給する役割だし、一方でHTTPリクエストの消費者として振る舞う。 さて、ある種の静的型付け言語ではこのRoleをinterfaceという言語要素で表すことができる。そして、契約違反はコンパイルエラーとして検出することが可能だ。その言語の上のフレームワークが、適切にinterfaceで契約を結んでいるかは別として。 これをRuby

    Roleに基づくスタブライブラリ - 世界線航跡蔵
  • 空セマンティクスのオーバーロード - 世界線航跡蔵

    Rubyには nil がある。Smalltalkから継承した知恵の1つである。 今更Rubyistには言うまでもないが、これはマクロに過ぎないCの NULL やオブジェクトではないJavaの null とは一線を画すものだ。C#の中の人が null を反省して「 nil いいなぁ」と言っていたらしいけれども、とにかく nil は良いものだ。 これはデフォルトのNull objectである。RubyにおいてもNull objectパターンは健在だが、「何らかの出力できるオブジェクト」でよい程度の軽量なケースにおいては、わざわざNull objectを定義しなくともデフォルトのNull objectとして nil を使うことができる。だから、その意味ではRubyではNull objectパターンは「当たり前」であると言ってもよいかもしれない。 空セマンティクス Null objectは何らかの

    空セマンティクスのオーバーロード - 世界線航跡蔵
    Sixeight
    Sixeight 2009/02/15
    nil=, {}=, |blank|=, 0= / 空であることが分かれば良いのでは
  • デブサミ2009で発表しました - 世界線航跡蔵

    デブサミ2009で「Ruby 1.9を使ってください。その時期です」と訴えてきました。発表資料はこんな感じです。会場にお越しくださった皆様は、当にありがとうございました。 Getting The Point Of Ruby 1.9.1 from Yuki Sonoda

    デブサミ2009で発表しました - 世界線航跡蔵
    Sixeight
    Sixeight 2009/02/13
    Railsで1.8系が必要な為にうまく共存ができる環境さえ見つかれば今すぐに1.9に移行したい
  • ThoughtWorksアンソロジー - 世界線航跡蔵

    ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション 作者: ThoughtWorks Inc.,株式会社オージス総研オブジェクトの広場編集部出版社/メーカー: オライリージャパン発売日: 2008/12/27メディア: 単行(ソフトカバー)購入: 14人 クリック: 323回この商品を含むブログ (81件) を見る 献いただいた。マーティン・ファウラーたちで有名なThoughtWorksのスタッフによるエッセイ集。このレベルの記事を書ける人がこれだけ集まってるというのは、改めてThoughtWorksってのはすごい会社なんだなぁ。で、Seleniumに象徴的なように、みんなが考えるけど実現可能性はどうだろうかと思うようなことを、実際に実現してしまう会社なんだよね。 冒頭の、"ビジネスソフトウェアの「ラストマイル」を解決する"では、ソフト

    ThoughtWorksアンソロジー - 世界線航跡蔵
  • タスク管理 - 世界線航跡蔵

    管理のためタスクを書き出してみたら鬼気迫る感じになった。個々のタスクは軽いので見た目ほど酷い状況ではないけど。

  • Rubyのメタクラス階層について再び - 世界線航跡蔵

    承前 。 3ヶ月ばかり時間が空いてしまったけれども、 sumimさんの記事 に答えたいと思います。 yugui さんの図は、たしかにクラスと特異クラス(メタクラス)が揃って並んでいて見た目にはきれいなのですが、これだとクラスが整然と並んでこそいるものの、肝心のメタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 いいえ、これで良いのです。なぜって? これが私の図(下記再掲)で一番言いたかったことで、ただ、一般のメタクラスと#<Class:Class>を並べているのはいただけないかな。これはsumimさんのSmalltalk版の図を意識しすぎて、まずかったかなと思います。 図1: うん、やっぱり メタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 これは当たってるかもしれません。 図の修

    Rubyのメタクラス階層について再び - 世界線航跡蔵
    Sixeight
    Sixeight 2008/12/14
    混乱するが、理解したい部分。
  • 身体性について - 世界線航跡蔵

    久しぶりに性別違和感が辛くて泣いた。普段だってそれが辛くないわけではないのだけれども、それを直視しないでいられるように訓練を積んでいる。そうでなければ生きていけないからだ。 離人感 一方でまた、私はもはや離人感を体験することは稀になった。かつてはそれが日常だったのに。私は私の外側にいて、私は私を常に批評し、私でない私の思考を聞いていた。世界は私から遠くにあって、私は私でない私を通じて間接的に世界に触れるのみであった。そして、客体である行動する私をもって私は性別規範に合致する像を世界に提供しようと試みた。 私を私の自己同一性に合致しないものに改変するのは辛すぎるから、だから、私は私と世界によって改変されようとしている私と、私の自己同一性に合致しない身体性を、私の外側に置いた。あるいは、私をそれらの外側に置いた。 けれども、私が、私にとっての客体である私を通じて私でないものの振りをするのは私の

    身体性について - 世界線航跡蔵
  • Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵

    Rubyにはコード片を表すオブジェクトが複数ある。 Method , UnboundMethod , Proc である。 Continuation は少し違うけど、実行コンテキストを記憶しているオブジェクトという意味では近いものがあるか。『 Ruby Way 』にはこういういろいろがあることについて「驚くほどのことではありません」と書いてあるけれども私は驚いた。で、これらが微妙に違うのだ。困ったもんだ。いや、便利なのかもしれないが。 それで今回はこれらの概要を眺めてみたいと思う。 普通のメソッド defでメソッドを定義するのが一番普通だやな。 class C def greeting(arg) puts "C#greeting reveived #{arg}" end def iterator yield 'iterator 1st' yield 'iterator 2nd' yield

    Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵
  • 1