タグ

ブックマーク / paulownia.hatenablog.com (5)

  • GETメソッドで登録・更新・削除処理をしない - NullPointer's

    Twitterでは相互フォロー委員会という謎の組織が話題をさらっているようだが、彼らがイベント参加者の募集に利用しているTweetviteというサイトがアレな実装になっている。 このサイトでOAuth認証していると、 http://tweetvite.com/event/mfpcnight/rsvp/Y http://tweetvite.com/event/mfpcnight/rsvp/NこれらのURLにアクセスするだけでイベントへの参加、不参加の登録がされてしまうらしく、だまされてリンクを踏んで意図せず登録してしまった人がいるようだ。 Togetter - 「Tweetviteを利用したspamに使えそうな何か」 bit.ly等でURLを隠されると注意深い人でもリンクを踏んでしまうだろう。また、scriptタグやimgタグにこのURLを埋め込んでしまえば登録されたことすら気付かない。 H

    GETメソッドで登録・更新・削除処理をしない - NullPointer's
  • JettyとGoogle ChromeでWebSocketを試す - nullpo.printStackTrace();

    JavaのサーブレットコンテナであるJetty 7には WebSocketServlet があり、HTML5 WebSocket アプリケーションのサーバサイドを簡単に実装できるようだ。 試しにチャットの原型のようなプログラムを書いてみた。gitで公開しているのでcloneして試してみて。 git clone git://github.com/paulownia/websocket-sample.gitwebsocket.jar をダブルクリックすると Jetty が立ち上がる。次に Google Chrome で http://localhost:8080/ にアクセスする。connected. と表示されていれば WebSocket の接続成功だ。テキストフィールドに適当なメッセージを入力し、Shiftを押しながらEnterを入力するとサーバにメッセージが送信され、サーバは接続している

    JettyとGoogle ChromeでWebSocketを試す - nullpo.printStackTrace();
  • 二重チェックイディオム - NullPointer's

    以前、Javaではダブルチェックイディオムを使ってはいけないと言われていた。Effective Java第1版にもダメと書かれていたのだが、Effective Java 読書会 12 日目 「スレッド・セーフってなによ!!」 - IT戦記によると、第2版では遅延初期化の方法として掲載されているらしい。 ちょっと調べてみた。 JDK5 and later extends the semantics for volatile so that the system will not allow a write of a volatile to be reordered with respect to any previous read or write, and a read of a volatile cannot be reordered with respect to any follow

    二重チェックイディオム - NullPointer's
    tacroe
    tacroe 2010/03/27
  • オブジェクトとプリミティブ - NullPointer's

    前にJavaScriptのオブジェクトとプリミティブの話が出ていたので、もう1つ面白い話を。 JavaScriptはオブジェクト毎にメソッドを設定したり上書きできるので…、 var obj = {}; alert(obj.toString()); // "[object Object]" と表示される obj.toString = function() { return "じゃばすくりぷと"; } alert(obj.toString()); // "じゃばすくりぷと" と表示される オブジェクト単位でメソッドの挙動を変更できます。 しかしstringに対して行うと、 var str = "Java"; alert(str.toString()); // "Java"と表示される str.toString = function() { return this.valueOf() + "Sc

    オブジェクトとプリミティブ - NullPointer's
    tacroe
    tacroe 2010/02/20
    プリミティブとオブジェクトの違い。Stringプリミティブに対してメソッドを呼び出したりプロパティにアクセスすると、その処理中だけStringプリミティブはStringオブジェクトに変化し、完了するとプリミティブに戻る
  • SoftReferenceでキャッシュ - nullpo.printStackTrace();

    キャッシュを自作するときは、SoftReferenceを使うのが定番らしい。 public class SimpleCache<K, V> { private ConcurrentHashMap<K, SoftReference<V>> map = new ConcurrentHashMap<K, SoftReference<V>>(); public V get(K key) { SoftReference<V> ref = this.map.get(key); if (ref == null) { return null; } V value = ref.get(); if (value == null) { this.map.remove(key); return null; } return value; } public void put(K key, V value) { So

    SoftReferenceでキャッシュ - nullpo.printStackTrace();
  • 1