2008年12月10日 項目3 private のコンストラクタか enum 型でシングルトン特性を強制する 1 Effective Java 第2版 項目3は、 シングルトン(Singleton)を実装する最善のコードは? シングルトンはそのインスタンスが、 どうあれたった一つしか存在しない世界を表現するわけですが、 具体的なコードも難しいものではありません。 ●案1 // public final のフィールドによるシングルトン public static final Elvis INSTANCE = new Elvis(); private Elvis(){} コンストラクタを private にして public final のフィールドとして書いてあげる事で、 クラスのロード時に一つだけインスタンスは生成されます。 ●案2 // static ファクトリー
「iPhoneのフリック入力を活用せずにケイタイ打ちしている人ってけっこういるよね」と一言つぶやいたら、「そもそもフリック入力の存在を知らない人がけっこういる」という衝撃的な返信をたくさんもらったのでまとめました。
2008年12月06日 項目2 数多くのコンストラクタパラメータに直面した時にはビルダーを検討する 1 Effective Java 2版においてこの項目2は新たに追加されている項目です。 僕自身でもこの考え方というか感覚はきちんとまとめたいと思っていたものなので、この追加はうれしいものでした。 たとえば「流れるようなインタフェース」というものがあります。「チェーンコンストラクタ」や「チェーンメソッド」。ドメイン特化言語。テレスコーピング等々、同じような違うような言葉がここ2,3年に現れて、自分の思考を妨害しています。 その辺りも踏まえてこの項目2を理解していきたいな、と。 ●問題提起としては、数多くのオプションパラメータを持つオブジェクトをどう生成するか? ○最初にテレスコーピングコンストラクタの例が紹介されています。 これはチェーンコンストラクタと呼んでいたものの事のようで
2008年12月03日 項目1 コンストラクタの代わりに static ファクトリーメソッドを検討する 2 長所の1. 名前を持つ、という事についてです。 インスタンスの生成について、 public のコンストラクタを使用する代わりに、 考慮すべきだ、という論点で書かれていきます。 public のコンストラクタはたった一つのシグニチャしか持つことが出来ません。 実際の開発において、 機能の追加における手直しの時、 追加したメンバに対して足りないコンストラクタを新たに増やす作業というのは、 よく出くわす場面です。 そんな時、いたずらに増えるコンストラクタに違和感を持ちながらも、 手を加えた経験を持っている人は多いんじゃないでしょうか。 クラスを壊していく大きな一つの原因と言えると思います。 悪しき習慣の一つですね。 これはひどい場合、クライアントから見ると違う
m README m install.sh GIANT BUG... causing /usr to be deleted... so sorry.... issue #123, issue #122, issue #121
localStorageのサンプルコード デモはこちら。 下記コードをHTMLファイルとしてローカルに保存し、Google Chromeで開いてみてください。 <script> console.log('=== 実験開始 ==='); console.log('> アイテム数をカウント'); console.log(localStorage.length); console.log('> ローカルストレージにキーと値を保存する。'); localStorage.mango = 'マンゴー'; localStorage.banana = 'バナナ'; console.log('> ローカルストレージの値を取り出す'); console.log(localStorage.mango); // マンゴー console.log(localStorage.banana); // バナナ conso
HTML5 の Drag and Drop API を使うことで、ブラウザにドロップされたファイルの情報を扱うことが出来ます。そして File API を組み合わせることで、ファイルの中身まで扱うことが出来るようになります。 そして FormData オブジェクトと XHR を組み合わせることでアップロード処理までを実装することが出来ます。完成図はこんな感じです。 今回は JavaScript の処理が中心です。jQuery を使っているので追加してくださいね。 $(function () { var uploadFiles = function (files) { // FormData オブジェクトを用意 var fd = new FormData(); // ファイル情報を追加する for (var i = 0; i < files.length; i++) { fd.append(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く