ソフトウェアの設計の5つの原則。
ときどき、それぞれの名前を忘れるのでメモ。
1. SRP : Single Responsibility Principle (単一責任の原則)
2. OCP : Open-Closed Principle (オープン・クローズドの原則)
3. LSP : Liskov Substitution Principle (リスコフの置換原則)
4. ISP : Interface Segregation Principle (インターフェイス分離の原則)
5. DIP : Dependency Inversion Principle (依存関係逆転の原則)
(参考:ISBN4-7973-2336-1, ISBN978-4-87311-614-3)
2014/12/11
SOLID 原則
投稿者 bluewidz 0 コメント
2014/08/03
ask のイメージ
askの日本語訳を調べると、
1. 尋ねる
2. 依頼する
3. 請求する
4. 招待する
5. 必要とする
が書かれているが、いずれも日本語の観点では類似性が乏しい。
askが表す意味の範囲と、日本語訳の個々の単語が表す意味の範囲が
うまい具合にずれているためであろう。
日本語訳から想起すると、ask x は、
「相手または何かからxに関する何かを引き出すようなイメージ」
に近いのではないだろうか。
さらに、引き出す行為に対して「お願いする」という雰囲気がくっついている。
こう考えると、
1. 尋ねる ← 相手からxに関する情報を引き出す。
2. 依頼する ← 相手からxに関する行動を引き出す。
3. 請求する← 相手から代金(=x)を引き出す。
4. 招待する ← xを自分のところに引き出す。
5. 必要とする ← xを自分のところに引っ張ってくる。
のようになり、範囲は広いが1つの単語で表せてもおかしくはない。
例えば、
I ask a job of you
は、
あなたに属する、仕事に対する行動を引き出す。→ あなたに仕事を依頼する。
となり、
I ask a question of him
は、
彼に属する、質問に関する情報を引き出す。→ 彼に質問する。
となる。
ところで、「〜に」を表すためにtoではなくてofを使うが、
これは、上の例にあるように「〜に属している何か」を引き出すので、
ofになるのだと理解することができる。
仮にtoを用いると、引っ張り出した「何か」の行き先がわからなくなり、
意味不明な文章となる。
………
ほんとかな!?
投稿者 bluewidz 0 コメント
2014/07/21
電磁波が渡り鳥の磁気コンパスに影響を与えているかも?
メモ。
doi:10.1038/nature.2014.15176
doi:10.1038/nature13334
人間の脳にも磁鉄鉱(Fe3O4)があるそうだ。
Joseph L. Kirschvink et al. "Magnetite biomineralization in the human brain," 1992
(http://www.pnas.org/content/89/16/7683.full.pdf)
投稿者 bluewidz 0 コメント
2014/01/26
buildbot + mercurial の使い方
次のような設定を行うと、リポジトリ変更時に自動的にビルドされるようになる。
buildbotはver.0.8.6を使用した。
buildbot関連のファイルを置くディレクトリを$workとする。
1. マスター用の設定ファイルを作る
cd $work buildbot create-master master cd master cp master.cfg.sample master.cfg
2. master.cfg を変更する
2.1. CHANGESOURCES を変更する
もともとあったGitPollerを削除し、次の2行を追加する。from buildbot.changes import pb c['change_source'] = pb.PBChangeSource(port=9988, user='changeuser', passwd='password_xxx')ただし、port, user, passwdは適切な値に変更する。
2.2. SCHEDULERS を変更する
SingleBranchScheduler の引数を変更する。c['schedulers'].append(SingleBranchScheduler( name="all", branch="default", builderNames=["runtests"]))ブランチを使っていないなら、branchにはdefaultと指定する。
branch名の指定を誤ると、mercurialからアップデートが 通知されるだけになり、ビルドは実行されなくなる。
2.3. BUILDERS を変更する
git関連を削除して、次の行を追加する。from buildbot.steps.source.mercurial import Mercurial factory.addStep(Mercurial(repourl='/xxx/yyy/bb-test', mode='full', method='fresh', branchType='inrepo')) factory.addStep(ShellCommand(command=["./make.sh"]))repourl はリポジトリのパス。
make.sh はビルドするためのスクリプト。
Makefileを使用しているなら、単にmakeでもよい。
2.4. リポジトリの設定をする
.hg/hgrc に次の内容を追加する。[hooks] changegroup.buildbot = python:buildbot.changes.hgbuildbot.hook [hgbuildbot] master = localhost:9988 auth = changeuser:password_xxx
3. slave を作る
cd $work buildslave create-slave slave master example-slave pass
4. 動作させる
cd $work buildbot start master buildslave start slaveこれで、リポジトリに変更をpushするだけで、変更が反映されたソースコードで 自動的にビルドされるようになる。
投稿者 bluewidz 0 コメント