2012-01-01から1年間の記事一覧

enchant.jsで遊ぶ その2

前回に引き続きenchant.jsで遊ぶ。 今回はもう少しゲームっぽいものってことで簡単なブロック崩しを組んでみた。main.jsは以下の通り。 /** * enchant.js を使う前に必要な処理。 */ enchant(); GAME_WIDTH = 320; GAME_HEIGHT = 320; GAME_FPS = 15; BALL_P…

enchant.jsで遊ぶ

ゲームをサクッと作る場合にどういう選択がいいのか最近考えてた。個人的にはiOSとかAndroidとかスマフォとかでも動くように作れると幸せ。調べてみると、enchant.jsを使ってHTML5+javascriptなゲームを気軽に作れるみたいなので試してみた。 javascriptは書…

pythonのテンプレートエンジンmakoを使ってみる

公式サイトは以下の通り。 http://www.makotemplates.org/ インストール とりあえず手元の環境にインストールしてみる。 rubyのgemとかにあたるpythonのpipでインストールできるらしいので、とりあえずpipを導入することからはじめる。まずはeasy_installを…

pythonで簡易コンソールを作る

pythonで簡易コンソールを作る機会があったのでメモしておく。コンソールを作る場合、以下のように標準入力でループさせて処理させる方法がある。 参考:http://python.g.hatena.ne.jp/mhrs/20060522/p2 #!/usr/bin/env python # -*- coding:utf-8 -*- # # e…

boostメモ (format)

boost/format.hppは指定したフォーマットに従って文字列を生成するときに使える。 sprintfに近い印象だけど、char*とか出てこないから安全? http://boost.cppll.jp/HEAD/libs/format/doc/format.htmlなお、実行時に変な変換をすると例外を投げるので、死ん…

boostメモ (foreach)

boost/foreach.hppはイテレータを用いたコンテナの順次参照をより直感的に記述できるようにするもの。 http://www.kmonos.net/alang/boost/classes/foreach.htmlJavaとかである for(Hoge hoge : HogeList) {} のような記法を可能にする。C++0xだとfor文の記…

emacsでauto-insert

emacsでC++のコードを書いてるとき、 行頭にエンコーディングの指定を書く headerでインクルードガードを書く という定形作業が毎回発生してうっとおしいのでどうにかしたい。下記のサイトを参考にemacsにテンプレを導入してみる。(ほぼそのままですが) http…

デザインパターンを覚えたい (Interpreter)

Interpreterパターン 構文解析を行うパターン。各文規則に対してクラスを割り当て、逐次でパースすることで実行に持っていく。 ポイントは 文規則のクラスを再帰的に呼び出すことで、構文木を生成する 独自表現が使えるため、プログラムの柔軟性が高まる と…

デザインパターンを覚えたい (Command)

Commandパターン 種々のコマンドをクラスとして表現するパターン。ポイントは、 各コマンドに対してクラスを割り当てることでコマンドの追加・管理が容易になる 共通の実行形式にすることで、タスクリストによる逐次処理とかが実装しやすい とかかなぁ。うー…

デザインパターンを覚えたい (Proxy)

Proxyパターン 必要になってから作るパターン。実際の処理との間に一段クラスをかませることで、必要になるまで実処理の実行を抑止させる。 ポイントは ワンクッション挟むことで途中までの処理を肩代わりさせる 使う側からはProxyも実処理も透過的に見せる …

デザインパターンを覚えたい (Flyweight)

Flyweightパターン 共有で用いるインスタンスをプールし、使いまわすパターン。ポイントは 無駄なnewが減る メモリが節約できる GCがない言語とかだとnewそのものが減るのは安全性の観点でも効果がありそう。個人的にはSingletonとあんま違わないように見え…

デザインパターンを覚えたい (State)

Stateパターン 各状態に対して固有のクラスとして表現するパターン。特徴は 状態変化を単純なインスタンスの差し替えで表現できる 新しい状態の追加が用意 といったところ。クラス図だけ見るとStrategyパターンと同じだけど、違いは何だろ。 Strategyパター…

デザインパターンを覚えたい (Memento)

Mementoパターン 状態の履歴を保存するパターン。対象のインスタンスの情報を保持するMementoクラスを作成する。 ポイントは 保存・復元を行うクラスのインスタンス状態を保持するクラスを用意することで、内部状態操作を閉じた範囲で行える こと。インスタ…

デザインパターンを覚えたい (Observer)

Observerパターン 状態変化を他のオブジェクトに通知するパターン。 ポイントは 通知によって複数オブジェクト間で同期を取れる ことかな。前回のMediatorパターンと似てるけど、こっちは通知することが主目的。実装。いい例が思い浮かばなかったので今回は…

デザインパターンを覚えたい (Mediator)

Mediatorパターン 相談役は一人、なパターン。クラス間のやり取りをMediatorとなるクラスを介して行うことで、処理のパスを一箇所に集約する。 ポイントは クラス間の通信パスをスター型でまとめることでプログラムの見通しが良くなる Mediatorに相談するCol…

デザインパターンを覚えたい (Facade)

facadeパターン 複雑な処理の窓口となるクラスを用意し、複雑なAPIの操作を隠蔽するパターン。ポイントは、 相互に関係しあるAPIの処理フローをひとつのメソッドにまとめることにより、使う側から見てわかりやすいAPIにする といったところ?これだけだとあ…

デザインパターンを覚えたい (Visitor)

Visitorパターン データ構造上を探索しながら処理をしていくパターン。データとなるElementクラスとそれに処理を行うVisitorクラスを用意し、相互にメソッドを呼び合うことでデータの網羅的な処理を行う。 ポイントは データ構造とそれに対する処理を分離す…

デザインパターンを覚えたい (Chain of Responsibility)

Chain of Responsibilityパターン 処理をチェインさせて順次実行していき、目的の処理を決めるパターン。ポイントは、 処理と要求を結びつきを弱めることができる 状況に応じた処理の切り替えがしやすくなる といったところですかね。実装します。Javaの勉強…

デザインパターンを覚えたい (Decorator)

Decoratorパターン クラスをかぶせていって機能追加を行うパターン。共通の親元を持つ中身と飾りのクラスを用意し、共通メソッドを再帰的に呼び出していくことで機能拡張をする。 Decoratorパターンの特徴は、 共通の親クラスを持つサブクラスで包んでいくた…

デザインパターンを覚えたい (Composite)

Compositeパターン 共通メソッドによる再帰処理を行うパターン。 例えばファイルシステムの検索とかを実装する際に、FileクラスとDirectoryクラスを同一の親クラスを継承して作成することによって、クラスを同一視して扱うみたいな感じ。 Compositeパターン…

デザインパターンを覚えたい (Strategy)

Strategyパターン 具体的な実装クラスを差し替えることで戦略、つまり動作の切り替えを行うパターン。 クラスの構成的にはBridgeとすごく似てて、 切り替える動作のメソッド定義をしたStrategyインターフェース 実際の動作を定義したConcreteStrategyクラス …

デザインパターンを覚えたい (Bridge)

Bridgeパターン 機能と実装を分離させるパターン。機能追加はサブクラスを作成してメソッド追加するとかのことで、実装追加は具象クラスを追加するとかのこと。 この2つの拡張を別々に行えるようにするために、具象クラスの分を公開クラスに集約して扱う。と…

デザインパターンを覚えたい (Abstract Factory)

Abstract Factoryパターン 決められた部品や製品を作成する抽象的な工場のパターン。作成を担当するFactoryクラス、そのFactoryで生成されるProductクラス群から構成される。 実装では外部に公開するメソッドを定義した「抽象的な工場と製品」を用意し、外部…

デザインパターンを覚えたい (Builder)

Builderパターン 作成に必要なメソッドまとめたBuilderクラスを用いて決められたものをDirectorクラスのメソッドとして作成するパターン。 Template Methodパターンとよく似ているが、 Teplate Method スーパークラスで呼び出し元メソッドを定義 Builder Dir…

デザインパターンを覚えたい (Prototype)

Prototypeパターン Protorypeパターンの特徴はclassをnewするのではなく予め作成したインスタンスをコピーするところ。 メリットとしては、 クラス名を明示的に指定しないため、プログラム間の依存性を小さくできる たくさんのクラスを扱うときに予めまとめ…

omakeメモ

c++

OMakefileの中身考察 Singletonのサンプルで使ってるOMakefileについてテキトーなメモ書いとく。(あくまで主観で裏付けあまりしてませんので注意) 中身はこんな感じ。 CXX = g++ CFILES[] = main MAIN = singleton_test CXXProgram($(MAIN), $(CFILES)) .PHO…

デザインパターンを覚えたい (Singleton)

Singletonパターン 常に存在するインスタンスを一つに絞るためのパターン。個人的に思いつく特徴は。 存在するインスタンス数をせい制限することでメモリにやさしい インスタンス作成コストの削減 クラスの提供側でインスタンスを管理できる とかかな。なん…

デザインパターンを覚えたい (Factory Method)

Factory Methodパターン 作成のためのメソッドだけフレームワーク側で提供して、実際の作成をサブクラスに任せるというパターン。 Factory、つまり工場なわけですが、工場で製造工程だけは先に決めといて、実際になに作るかは後で決めるみたいなイメージかな…

デザインパターンを覚えたい (Template Method)

Template Methodパターン 共通APIで動作の異なるクラスを作成するためのパターン。 ポイントは 呼び出し元となるテンプレートメソッドは親クラスに実装 テンプレートメソッドを構成するメソッドの具体的な定義は子クラスで実装 というところですかね。なには…

デザインパターンを覚えたい (Adapter)

Adaptorパターン 異なる形式のAPI間をつなぐためのパターン。古いバージョンとの互換性の確保や、仕様の異なる外部プログラムの利用とかで使われる。 要するに仲介役となるクラスを対象のプログラムの間に挟む訳だが、方法は2つある。 繋ぐ口のインターフェ…