2008年5月29日木曜日

Squeak上でObserverパターンを適用する方法

Squeak上でObserverパターンを適用する方法を以下にメモしておきます.

Observerパターンは,あるオブジェクトの内容に関与するオブジェクトに,その内容の変化に応じて何らかの処理を行わせたいときに使われるデザインパターンです.

Observerパターンでは,Subjectという役割のクラス(あるオブジェクトが所属するクラス)とObserverという役割のクラス(あるオブジェクトの内容に関与するオブジェクトが所属するクラス)が登場します.Squeakでは,それら両方の役割を最上位のクラスであるObjectクラスに与えています.したがって,Objectクラスを継承したクラスは,その時点でどちらの役割も果たせる状態になっています.ただし,Objectクラスのメソッド名は,デザインパターンの資料[1],[2]で紹介されているメソッド名と異なっているので,その対応関係を以下に記しておきます.
  • Subject::attach <-> Object::addDependent:
    SubjectにObserverを追加
  • Subject::detach <-> Object::removeDependent:
    SubjectからObserverを削除
  • Subject::notify <-> Object::changed:
    SubjectがObserverに通知.
  • Observer::update <-> Object::update:
    SubjectがObserverに通知した際に呼び出されるメソッド.中身は空っぽ.
[1] Observer pattern
http://en.wikipedia.org/wiki/Observer_pattern

[2] オブジェクト指向における再利用のためのデザインパターン改訂版
Erick Gamma, Richard Helm, Ralph Johnson, John Vlissides: ソフトバンクパブリッシング, 1999

[3] 7. Squeak演習:Observerパターン
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak5/S5-7-1.html
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak5/S5-7-2.html

WebアプリケーションをJettyに配備する方法

WebアプリケーションをJettyに配備する方法を以下にメモしておきます.

import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;

public class Test {

    public static void main(String[] args) throws Exception {
        Server server = new Server(8080);

        WebAppContext context = new WebAppContext();
        context.setContextPath("/test");
        context.setResourceBase(".");
        server.setHandler(context);

        server.start();
    }

}


「.」に対応するディレクトリは以下のような構成になっています.

.
+- WEB-INF
   +- classes
   +- web.xml

2008年5月22日木曜日

SqueakMapパッケージローダーのトラブル

ある日,SqueakMapパッケージローダーを起動すると,下記のメッセージが表示されるようになり,パッケージローダーでパッケージをダウンロードできなくなりました.

Reading an instance of SMMaintainableObject.
Which modern class should it translate to.

少しググってみると,どうやらsmディレクトリを複数のイメージで共有した際に生じる問題だということが分かりました.

"Don't make me think"...
http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-April/102705.html

解決方法を以下にメモしておきます.

1. SMSqueakMap bootStrapを実行

2008年5月21日水曜日

JavaScriptでスライドショー

JavaScriptでスライドショーを作成するライブラリを探しています.
今のところ見つけているライブラリは以下の3つです.

1.Slideshow
2.FrogJS
3.JonDesign's Smooth SlideShow

今回必要なのは,ぱちぱちと瞬時に切り替わるものなので,3のライブラリを使おうかなとおもっています.

2008年5月11日日曜日

TeXのインストール

TeXのインストールを自動で行ってくれるツールがあるので,メモしておきます.

TeXインストーラ3
http://www.ms.u-tokyo.ac.jp/~abenori/mycreate/

今まで,各サイトを訪ねて,必要なファイルをダウンロードし,インストールしていたのですが,先のツールを使うと,それらを一発で行うことができます.