タグ

2010年10月25日のブックマーク (14件)

  • Google Developer Day 2010 Japan 基調講演ビデオ - Nothing ventured, nothing gained.

    Google Developer Day 2010 Japan 基調講演のビデオがYouTubeにアップロードされた。1時間45分を超える長尺ものなので、見出しを作ってみた。各パートの開始時間のリンクをクリックすると、YouTubeがそこから再生するようにしている*1。 アタックビデオ The Wilderness Downtown(Arcade FireとのコラボのHTML5プロモーションビデオ)- 00:00:00〜 オープニングの挨拶(Google東京エンジニアリングセンターディレクター Joe Ternasky - 00:05:05〜 HTML5(Googleシニアエンジニアリングマネージャ 及川卓也、慶応義塾大学&W3C/Keio 一色正男教授、Googleデベロッパーアドボケイト 北村英志)- 00:07:30〜 W3Cの役割(慶応義塾大学 一色正男教授)- 00:11:00〜

    Google Developer Day 2010 Japan 基調講演ビデオ - Nothing ventured, nothing gained.
  • 5分でわかる Instagram の始め方

    今年の10月に一般公開されてから、ものすごい勢いで利用者が増えている写真共有サービス (というかアプリ)、「Instagram」。最初は写真とか特に趣味でもないし、別にいいかと思ってスルーしてたんですが、Twitter のタイムラインでもちょくちょく見かけるようになって気になってきたので使ってみました。そしたらこれ、面白いですね。ハマりますわ。 私も写真は撮りますし、興味はあるんですが、格的に写真にのめり込んでいるわけでもないし、「私、写真が趣味です」 って人にいう程ではないわけですが、それでもこの 「Instagram」 にはハマりました。なんていうか、写真を撮って人に見せるっていうことの敷居を下げてくれるというか、写真を撮ることが楽しくなるアプリですよこれ。 私が面白いと思ったポイントは2つ。 アプリに搭載されたフィルターのマジックで普通に考えれば何でもない写真が、なんかいい感じにな

    5分でわかる Instagram の始め方
  • The Dependency Inversion Principle この記事は The C++ Report に寄稿した私の Engineering Notebook の 3 つ目のコラムです。 このコラムでは C++と OOD の利用法に焦点を絞り、ソフトウェアエンジニアリングに

    The Dependency Inversion Principle この記事は The C++ Report に寄稿した私の Engineering Notebook の 3 つ目のコラムです。 このコラムでは C++と OOD の利用法に焦点を絞り、ソフトウェアエンジニアリングにつ いて取り組んでいきます。記事は、できるだけ実用的で、すぐ役立つものになるよう努力 しようと思います。これらの記事の中では、 Booch と Rumbaugh の統一記法 (unified notation version 0.8)を使用します。下図はこの記法の簡単な例です。 導入 前回の記事では、Liskov Substitution Principle について紹介しました。この原則は C++ に適用したとき、 public な継承の使用方法の規範を与えるものでした。 この原則に従えば、 基クラスの

  • 依存関係逆転の原則(DIP) - Strategic Choice

    依存関係逆転の原則(DIP:the Dependency Inversion Principle)上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである。「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきである。どういうこと?手続き型は「方針」が実装の「詳細」に依存する構造になってしまう。 方針が詳細の変更に影響されてしまう好ましくない構造。 OOプログラミングでは「方針」「詳細」とも抽象に依存させることで、悪しき依存関係を逆転できる。 なんで?アプリケーションの方針を決めていて、他に対して影響を与えるモジュール(=言うなれば「偉い」ヒト)は上位。 上位が下位に依存してしまうと、上位が、下位の影響を受けてしまう。手続き型でよく見られた悪い依存関係。 筋的にはアプリケーションの存在理由である上位が下位に対して影響力を持つ

  • Hook Operation - Strategic Choice

  • Template Method - Strategic Choice

  • Form Template Method - Strategic Choice

  • Value Object は不変にする | システム設計日記

    ドメイン駆動設計(DDD)の Value Objects パターンでは、オブジェクトを不変(immutable)にすることを強く推奨している。 なんとなく、そんなもんか、と思っていたけど、ある日、なるほど、というケースに出くわした話し。 変数名にこだわる 前提として、変数名にこだわるようになったことがある。 DDD のユビキタス言語パターンの実践として、 ・パッケージ名 ・クラス名 ・メソッド名 ・変数名 は、業務上の意味のある名前にこだわることを、徹底しはじめた。 Java Calendar クラスの日付計算 当日から、2週間後に、期限切れになる、というビジネスルルールを実装していた。 Calendar getExpireDate() { Calendar now = Calendar.getInstance(); now.add( Calendar.DATE, 7*2 ); retur

    kitokitoki
    kitokitoki 2010/10/25
    バリューオブジェクトはイミュタブルで。
  • Value Object : シンプルで小型のオブジェクトに目覚めた経緯 | システム設計日記

    Value Objects パターンが出てくる。 ・ドメイン駆動設計(DDD) by エバンス ・PoEAA by ファウラー ・実装パターン by ベック。 三人とも、Value Object 、つまり、シンプルで小型で不変型の値オブジェクトを使うのが、設計・実装の良い習慣だといっている。 自分たちのプロジェクトでも、だいぶ Value Object パターンを普通に実践するようになった。 良い習慣になってきている感じ。 そこにいたるまでの経緯を簡単にまとめてみます。 出発点 こんな感じだった。 class Cstmr { private int id; private String nm1 ; private String nm2 ; private String zcd ; private String tdfk ; private String cty ; // こんな感じで、フ

  • Value Object(バリューオブジェクト) - Strategic Choice

    師曰く数学的な値のように振る舞うオブジェクトを作成しなさい。どういうこと?変化する状態の入れ物ではなく、整数のように振る舞うオブジェクトのことです。数学の世界では、「1」に「1」を足しても、「1」自身が変更される訳ではなく、新たに「2」という数字が作成されます。プログラミングでこれを表現するのが「Value Object」になります。よって、「Value Object」は不変オブジェクト(Immutable)です。Javaのプリミティブはこの数学世界の住人で、そのラッパー(やStringは)はまさに「Value Object」と言えます。どうして?オブジェクトには大きく2種類、状態が変化する「状態型」と、変化しない「値型 *1」があります。値型を実現するのが「Value Object」パターンです。状態型の方が一般的ですが、状態を持つが故に「呼び出し順序」が重要になってしまっています。そし

    kitokitoki
    kitokitoki 2010/10/25
    「値はコンストラクタのみで設定可能とします。setterは作成しません。」
  • 『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』

    書は、マルチスレッドと並行処理を学ぶ入門書です。 書では、Javaのスレッドの基から書き起こし、 マルチスレッドプログラミングによく登場するパターンを解説します。 書を通して、マルチスレッドと並行処理に関する理解を深め、 よく使われる技法を身につけましょう。 Amazon 目次 想定読者 書の目次 サンプルプログラムのダウンロード 誤りと訂正 フィードバック 想定読者 書は、こんな方へおすすめです。 Javaのマルチスレッドプログラミングに興味を持っている人 Javaのスレッドについて、きちんと学びたい synchronizedって、どういうときに、なぜ書くのか、ちゃんと理解したい マルチスレッドプログラミングで何が問題になるのか、なぜ難しいかを把握したい スレッドの間で情報をやりとりする方法について学びたい スレッドを使ってパフォーマンスアップする方法について学びたい Swi

  • Ubuntu+nginxでnode.js+npmのインストールからデプロイまで - mizchi log

    作業ログ。あんまり日語でまとまってなかったので。 Apacheが稼働しているサーバーで何度も試行錯誤したくなかったのでnginxを入れた。nodejsとnginxは相性がいいらしい。 Heroku等でもホスティングしてるようだが、あえて自鯖で動かしてみる。 # githubからnodejs のインストール $ git clone git://github.com/ry/node.git $ cd node $ ./configure $ make $ make test $ sudo make install # npm(nodejs用のパッケージライブラリ)のインストール $ sudo chown -R $USER /usr/local # インストールスクリプトの実行のためにownerに $ curl http://npmjs.org/install.sh | sh $ sudo c

    Ubuntu+nginxでnode.js+npmのインストールからデプロイまで - mizchi log
  • Titaniumが楽しすぎてやばい - kurainの壺

    id:naoya さんの記事で気づいた Titanium ですがあまりに楽しいのでここ1週間ほど暇があればコードを書いています。そろそろ、プロダクトレベルのモノが仕上がりそうなので AppStore に提出したいところ。 ただし、iPhoneとAndoridアプリが一気に作れる、とか思ってさわると結構機種依存のコードを書く必要に迫られるので期待を裏切られます。ロジックのコードが共通化できるぐらいに考えていたほうが気楽だと思います。それでも、Cで書いてiPhone,Androidで共通化するよりはよっぽどらくだと思いますが。 最近は iPhone で動くことだけを考えて、実装しているので、今回は Objective-C で実装している時との比較 はまりどころ PhoneGap との違い をメモしておきます。 Objective-Cと比べて良い メモリ管理不要 もうこれだけで、僕は移行したくな

    Titaniumが楽しすぎてやばい - kurainの壺
  • WEB上からrsyncを実行する方法 - sanonosa システム管理コラム集

    各サーバ群にソースコードを配信するためにrsyncを使っているところも多いと思います。この操作をWEB上から行えるようになれば、例えばデザイナーがちょっとした画像データを配信するといった場面などで便利そうです。そこで今回はrsyncをWEB上から実行する方法について記してみたいと思います。 【ハマりどころ確認】 WEB上からrsyncを実行するのって、簡単に見えて実はちょっと難しいのです。ハマりどころは2つあります。それは (1) rsyncを実行するユーザがパスワードなしで配信先サーバにSSH接続できるようにしておかなければならない。 (2) 配信先サーバでは、rsyncを実行するユーザと同じ名前のユーザで、該当ファイルやディレクトリの書き込み/編集権限を持っていなければならない。 というものです。 (1)については、こちらでも記したような方法で、パスワードなしで他のサーバにSSH接続で

    WEB上からrsyncを実行する方法 - sanonosa システム管理コラム集