タグ

ブックマーク / nekogata.hatenablog.com (4)

  • 「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    オブジェクトの内部の値がイミュータブルであれば、今後もその値は変更されないことが保証されているので、新しい状態を持った新しいオブジェクトの内部の値のうち、変更のない部分(つまり値のうちのほとんど)は古いオブジェクトの値をそのまま参照すればよく、コピーする必要がないということを @takkkun が言っていて(正確には、イミュータブルなリストに新しい値を追加した新しいリストを作るときには、中身をコピーする必要ない。変更されないことが保証されてるから、という話だった)目から鱗が落ちたのでここに記して置こうとおもった。 で終わろうと思ったんだけど、もう少しちゃんと書く。 ミュータブルな世界では同一性の問題がある。 たとえば playerA と playerB の HP がたまたまおなじ 10 であったとしても playerA と playerB の HP 変数が同じ数値オブジェクトを参照していた

    「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    taka222
    taka222 2016/02/17
  • 要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとにはあたりまえのことしか書いてない。サンプルコードはわたしの趣味Scala で書いてあるが、Java が読めればなんとなく読めると思います。 DI ってなに Dependency Injection、日語で言えば依存性の注入です。おしまい。 で記事を終えてもいいんだけど、そもそも依存性とはなんなのか、それを注入するとはどういうことなのか、なぜ DI が必要となるのかみたいな話をこれからします。 そもそも依存性ってなあに 例を出します。入力された文字列をもとにおみくじをひいて、その結果を twitter に投稿するプログラムにしましょう。 まずは普通

    要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    taka222
    taka222 2014/02/13
  • APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    APNsGatewayServer を書こうの巻 えー。APNsとのやりとり部分を書くのはなにげにとても面倒です。面倒な理由として プロトコルがアップルのオレオレプロトコルであり、なおかつバイナリでやりとりしている APNsサーバーに対してリクエストを送っても、基的にレスポンスは帰ってこない でもなんかエラーがあった場合はレスポンスが帰ってくる 基的にコネクションをつなぎっぱなしにしておかなければならない でもときどき何も言わずに向こうからブチっと接続を切ってくる というあたりが挙げられますね。 1番の理由については単にめんどくさいだけで何も問題はありません。自分で書かなくてもライブラリとか結構あるし、そもそもこれくらいは書けよ感もある。 でもその他の問題がなかなかくせ者なのです。 まず、エラーの時だけレスポンスが帰ってくるということで、リクエストを投げたらレスポンスが来るまでブロック

    APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    taka222
    taka222 2013/08/15
    ”APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい - life.should be_happy # => 1 examples, ? failures”
  • レールルで Controller から ActiveRecord を生で触るのをやめたい話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    単純な操作ならいいんだけど、複数テーブルに対してごにょっと操作をして、それがアトミックでなくてはならなくて、みたいなときの話。 単純な複数テーブルに対する操作なら多分主従の関係みたいなのあると思うしそういうときには主のほうを表すARを継承したモデルクラスにメソッド生やせばいいかなって思う(commentable なやつに comment 書くとかそういうの)んだけど、これがもっと複雑な要件になってきて、しかもトランザクション制御が必要となったとき、テーブルそのもの(あるいはインスタンスならばその中の一行)を表すARクラスにトランザクションあるのめっっっっっっちゃ気持悪い。 なので、小規模なやつではトランザクションとかをコントローラーに書いてるんだけど、複雑になってきたときに破綻するのが目に見えてる。し、トランザクション制御ってビジネスロジックだよね〜〜〜。ほんらいそれはコントローラーにある

    レールルで Controller から ActiveRecord を生で触るのをやめたい話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    taka222
    taka222 2013/07/19
  • 1