つれづれ日記

ただの日記です。 特別なことを意識して書く気はありません。

雑記

今日もひたすら実装。動的にロボットを動かすことには成功。問題はセキュリティ上の問題。これが一番の大問題かもしれない。ここまでできているのでもうそろそろ教授に見せてもいいかもしれない。

独裁者

チャップリンの「独裁者」を見た。チャップリンの映画を好きになったきっかけは大学の授業で「街の灯」の一部を解説つきで見たこと。声を使わずに表情やしぐさだけでこんな風に演技ができるのかと感動した覚えがある。
「独裁者」は声を使った映画だが、表情と声をとても上手く使っている。有名なのはチャップリン演じるヒンケルが風船の地球儀と戯れるシーンと最後の床屋の演説シーンだ。
個人的には最後の演説シーンがとても印象に残っている。

独裁者 コレクターズ・エディション 独裁者 コレクターズ・エディション
チャールズ・チャップリン (2004/03/21)
ジェネオン エンタテインメント

この商品の詳細を見る

タイトルのつけづらい日記

明け方まで起きていたので今日はお昼まで寝た。お盆なので親戚が来て一同で寿司を食べた。食べる機会があまりないので全種類つまむ。寿司のネタで嫌いなものは無い。光物も気にならない。
食べて少ししてから帰ることに。駅まで送ってもらってそこからバスに乗って帰る。そのまま大学へ。一気に実装モード。あれこれ考えながら自分のプログラムを見直すとあまりにも意味の無い部分があるのでそこを重点的にリファクタリング。プログラム書いている間は時間を忘れるようにしている。

XOR回路

徹夜明け。
東京は大停電で大変だったようだ。この中でなにも事件の報道がされないのは日本が平和だということか。防犯カメラなどのシステムも一部は止まっていただろうに。自家発電もあるだろうけど。都会の脆さというよりは、どうやったら東京を攻略できるかということを内外に知らしめたのではとも思える。
朝7時から午後3時までは大学で作業。デザインパターンのCommandパターンを用いてクラスを20個ぐらい書き上げる。
Commandパターンについては別に記述する。

祖父母の家に行くために高速バスに乗る。なんと冷房が点いていない。灼熱地獄。1時間かけて到着。
祖父母の家は2階建てで、階段がある。その階段には照明があってこれは1階でも2階でも点けたり消したりできる。小学生のころなんでだろうと思った記憶がある。これは論理回路で言えばXOR(Exclusive OR)回路を用いて説明される。XORは簡単に言えば2つの入力がオン、オフの組み合わせのとき出力がオンになる回路である。階段の例で言えば、
1階、2階のスイッチが共にオフの状態を初期状態として、
利用者は
1階で照明のスイッチをオンにする。(照明が点く)
2階に上がって照明のスイッチをオンにする。(照明は消える)
2階から降りるときに、
2階の照明のスイッチをオフにする。(照明が点く)
1階へ降りて照明のスイッチをオフにする。(照明は消える)
という具合になる。経験則で知っていることだろうけどこの回路を図面に起こせるだろうか?

Singletonパターン

研究で悩んでいた部分を解決するためにデザインパターンの本を読んでみる。知識が単純に不足していただけだったので思考よりも用意された解決策で十分。個人的にデザインパターンの勉強はあまりしたくはなかった。理由は入門には向かない領域だと考えていたからだ。しかし、もはや人に教える立場でもあるのでえり好みはしていられない。デザインパターンは一般的な解決策を集めたもので、それ自体はただのテクニック集みたいなもの。GoFの23パターンが有名かだ。Singletonパターンも23パターンのひとつである。で、どんなテクニックかというと。プログラムの中でオブジェクトが唯一のものであるようにしたい場合に用いるテクニックである。

注意)ここに書いてあることは自分の理解のためのものです。ですので参考にはならないと思われます。
Javaで例をあげると一般にクラスのコンストラクタは

public Singleton(引数){
・・・
}

の形をとることが多いけれど、これだとこのコンストラクタはpublic(公開)されたものなのでどこからでも呼び出されてしまう。これではいろいろなオブジェクトでこのクラスのインスタンスが作成されてしまうのでそれを防ぐためにコンストラクタを非公開にする。すると、

private Singleton(引数){
・・・
}

という形になる。これだと外部に対して非公開なので外部からは自由に呼び出すことができなくなる。
次に、このコンストラクタを呼び出すためにグローバルなアクセスポイントを作る。
//フィールド宣言
private static Singleton obj

public static クラス名 getInstance(){
obje = new Singleton(引数);
 return obj;
}

しかし、これだとこのstaticメソッドが呼ばれるたびに新しいオブジェクトが作られることになるので、

public static クラス名 getInstance(){
if(obj == null){
obj = new Singleton(引数);
}
 return obj;
}

とする。これで、唯一無二のオブジェクトを作ることができる。
次のページ

ホームページ アフィリエイト レンタルサーバー FC2ブログ