ブログほったらかしですみません(´・ω・`) 仕事落ち着いたらデザパタ再開します。
久々にVMwareでUbuntuを起動したら「10.04にアップグレードできます」と出てたので、アップグレードしました。
アップグレード自体はすんなりはいったものの、再起動後ログインしようとしたらキーボード入力が全くできない((((;゚Д゚))))
「Ubuntu 10.04 アップグレード キーボード」でググると、どうやらバグで受け付けないらしい。
※ちなみに使っているキーボードはDELLのワイヤレスキーボードです。
対処法は
1. ログイン画面の右下にある「ユニバーサル・アクセスの設定」ボタンをクリックする。
2. 「オンスクリーン・キーボードを使う」にチェックを入れる。
3. オンスクリーン・キーボードでパスワードを入力する。ちなみに大文字は上矢印キーをクリックすればおk
4. ログイン後、端末を立ち上げる。
5. 「sudo dpkg-reconfigure console-setup」を実行して設定し直す。ただし、キーボード入力ができないので、あらかじめホスト側のマシンで上の文字列をコピーしておき、ゲスト側(Ubuntu)で右クリックして「貼り付け」する。
6. 「sudo rm /etc/X11/xorg.conf」を実行する。ただし、キーボード入力ができないので(ry
7. 再起動する。
これでようやく入力できるようになりました。
参考URL:
http://blog.livedoor.jp/moonlight_aska/archives/50479993.html
http://nicenature.air-nifty.com/kurohige/2010/05/linux-vmwareubu.html
http://gihyo.jp/admin/clip/01/ubuntu-topics/201005/07
2010年10月3日日曜日
SunのJava認定資格が
9月2日から、Oracle認定資格制度の一つになりました。OracleがSunを買収したから、まあ当たり前のことが行われたということですが。
はたして、試験の中身はSunのときと同じなのかなぁ(´・ω・`)
よく調べると、試験コードがSunとOracleで同じ(例えば、JavaプログラマならCX-310-065)だから中身も同じだ!と期待。
ちなみに、Oracle認定のMySQL資格もあるw
よく調べると、試験コードがSunとOracleで同じ(例えば、JavaプログラマならCX-310-065)だから中身も同じだ!と期待。
ちなみに、Oracle認定のMySQL資格もあるw
2010年9月5日日曜日
Observerパターン
Observerとは、観察者のことです。Observerパターンとは、作業者の状態を監視する役のクラスがあるパターンです。
先に、監視されるクラス(作業をするクラス)を説明すると、コードとしては以下の通りです。
まず、監視する人をこの人は知っています。複数人いてもよいようにListになっています。作業をするメソッドはexecute()で実装しますが、何か状態が変わったときはexecute()内でnotifyObservers()を呼び、監視者に通知します(Observer#update()を呼びます)
監視するクラスについて説明します。監視者は誰も作業者の状態変更通知を受け取れるようにupdate()を実装します。そーいうことで、Observerインターフェースを用意しておきます。
Observerインターフェースの実装クラスは例えばこんな感じです。
この後は、Subjectクラスの子クラスを作り、mainクラスからその子クラスのインスタンスを作って、SampleObserverをaddし、execute()を呼べばいいでしょう。
監視をするパターン自体は難しくないと思います。ポイントとしては、どのクラスでも作業者、監視者になれるよう、親クラス(厳密に言うと、作業者はabstractクラスで、監視者はinterface)を定義してあげて、具体的な作業者、監視者はそれらを継承・実装することで、汎用性があがるということです。
ただし、注意しなければならないのは、SubjectからObserverへ通知をした後に、ObserverからSubjectへ何かしらの指示を行った場合です。このとき、Observerからの指示でSubjectの状態が変化すると、またそのタイミングでObserverへ通知を行ってしまうからです。フラグでも用意して、防ぐようにしましょう。
ちなみに、Observer#update()をSubjectが呼ぶ際は、Subject自身を引数に入れています。が、例えば値の更新を通知するだけならば、引数に値を入れて渡すでも良いと思います。ただし、この場合において、もし、Observerが複数のSubjectを監視しているならば、どのSubjectからの変更通知なのか分からないです。Observerにどの程度の情報を渡すかは実装する際に検討すべきでしょう。
しかし、このパターンは監視というより、通知ですよね・・・
関連パターン
「Mediatorパターン」Mediatorは、個々の作業者との調整役という位置づけであり、Observerでは、SubjectがObserverに通知をして同期を取ることに主眼を置いています。
先に、監視されるクラス(作業をするクラス)を説明すると、コードとしては以下の通りです。
public abstract class Subject {
private List<Observer> observerList = new ArrayList<Obsever>();
public void addObserver(Observer observer) {
observerList.add(observer);
}
protected void notifyObservers() {
// 参考本ではこのメソッドはpublicになっていたが、子クラスからしか呼ばれないので、protectedにした。
Iterator itr = observerList.iterator();
while (itr.hasNext()) {
Observer observer = (Observer) itr.next();
observer.update(this);
}
}
public abstract void execute();
// その他、observerから呼んで欲しいメソッドを定義
}
まず、監視する人をこの人は知っています。複数人いてもよいようにListになっています。作業をするメソッドはexecute()で実装しますが、何か状態が変わったときはexecute()内でnotifyObservers()を呼び、監視者に通知します(Observer#update()を呼びます)
監視するクラスについて説明します。監視者は誰も作業者の状態変更通知を受け取れるようにupdate()を実装します。そーいうことで、Observerインターフェースを用意しておきます。
public interface Observer {
void update(Subject subject);
}
Observerインターフェースの実装クラスは例えばこんな感じです。
public class SampleObserver implements Observer {
public void update(Subject subject) {
// Subjectクラスのメソッドを呼び、例えばコンソールに出力する、ログに残すなどの処理を行う。
}
}
この後は、Subjectクラスの子クラスを作り、mainクラスからその子クラスのインスタンスを作って、SampleObserverをaddし、execute()を呼べばいいでしょう。
監視をするパターン自体は難しくないと思います。ポイントとしては、どのクラスでも作業者、監視者になれるよう、親クラス(厳密に言うと、作業者はabstractクラスで、監視者はinterface)を定義してあげて、具体的な作業者、監視者はそれらを継承・実装することで、汎用性があがるということです。
ただし、注意しなければならないのは、SubjectからObserverへ通知をした後に、ObserverからSubjectへ何かしらの指示を行った場合です。このとき、Observerからの指示でSubjectの状態が変化すると、またそのタイミングでObserverへ通知を行ってしまうからです。フラグでも用意して、防ぐようにしましょう。
ちなみに、Observer#update()をSubjectが呼ぶ際は、Subject自身を引数に入れています。が、例えば値の更新を通知するだけならば、引数に値を入れて渡すでも良いと思います。ただし、この場合において、もし、Observerが複数のSubjectを監視しているならば、どのSubjectからの変更通知なのか分からないです。Observerにどの程度の情報を渡すかは実装する際に検討すべきでしょう。
しかし、このパターンは監視というより、通知ですよね・・・
関連パターン
「Mediatorパターン」Mediatorは、個々の作業者との調整役という位置づけであり、Observerでは、SubjectがObserverに通知をして同期を取ることに主眼を置いています。
Mediatorパターン
Mediatorとは仲介役とか相談役とかという意味です。個々人がバラバラに作業しているところをまとめてくれます。個々人同士であーだこーだ言い合ってもまとまらない場合には全体を俯瞰できて、適切に指示できる人が欲しいですよね。
Mediatorパターンは個々の担当者の状態を把握し、次になるべき状態を個々の担当者に指示する役目がいるパターンです。ここで言っている状態とは、例えば、あるログインフォームで言うと
ゲストユーザか正規ユーザか
ユーザ名が入力できる入力できない
パスワードが入力できる入力できない
OKボタンが押せる押せない
・・・
などなどです。Mediatorは例えば、「正規ユーザが選択されている状態」かつ「ユーザ名とパスワードを入力されている状態」というのを担当者から聞いたら、「OKボタンを押せるようにする」という風にOKボタン担当者に指示します。
サンプルソースは・・・考えておきます(´・ω・`)
関連パターン
「Facadeパターン」Mediatorは双方向だが、Facadeは一方向のみ。
「Observerパターン」(勉強中)
Mediatorパターンは個々の担当者の状態を把握し、次になるべき状態を個々の担当者に指示する役目がいるパターンです。ここで言っている状態とは、例えば、あるログインフォームで言うと
ゲストユーザか正規ユーザか
ユーザ名が入力できる入力できない
パスワードが入力できる入力できない
OKボタンが押せる押せない
・・・
などなどです。Mediatorは例えば、「正規ユーザが選択されている状態」かつ「ユーザ名とパスワードを入力されている状態」というのを担当者から聞いたら、「OKボタンを押せるようにする」という風にOKボタン担当者に指示します。
サンプルソースは・・・考えておきます(´・ω・`)
関連パターン
「Facadeパターン」Mediatorは双方向だが、Facadeは一方向のみ。
「Observerパターン」(勉強中)
登録:
投稿 (Atom)
