ポインタ渡しと参照渡し

openFrameworksで使用するC++言語の仕様に関して、

  • ポインタ渡しの場合は、呼び出し側が引数として、アドレスを渡す必要がある。
  • 参照渡しの場合は、呼び出し側が引数として、ままオブジェクトを渡す。
ポインタ渡しのコード

FuncA(int *p)
{
*p = 2;
}

参照渡しのコード

FuncB(int &p)
{
// 参照=エイリアスなので、中身(値)は変更出来るが、アドレスは変更できない
p = 10;
}

void main()
{
int a = 1;
int* pa = &a;

// アドレスを渡す
FuncA(pa);

// まま変数を渡す
FuncB(a);
}

以上で、問題なし。あえて言うなら、参照は単なるエイリアスなので、渡した引数のアドレスは変更できない事に注意する。

そして問題は次。ロベールのC++を読んでいて、下記のソースが出てくる。

1
2
3
4
funcB( int*& pa )
{
// pa は、ポインタの参照です。
}
ポインタの参照とはポインタのエイリアスにあたる。この関数を呼ぶ場合はfuncBの引数には、ポインタを与える。

で、結局

int *pa;
funcB(pa);
引数にポインタ    =ポインタを渡す
引数にポインタの参照 =ポインタを渡す
と、両パターンとも、ポインタを渡していることに代わりはない。
が、2のパターンでは、ポインタの参照(エイリアス)を渡しているので、

関数内で、渡したポインタの値(=アドレス)を変更する事が出来る。
でも関数内では、ポインタ(=アドレス)の変更は可能だが、関数処理が終了したら、呼び出す前のポインタ(アドレス)をさしたままとなる。

openFramewoksのオフィシャル記事は良記事。

撮影機材基本

外で撮影業務を行う際に、まず最初に気を付けた方が良い事がある。以下に列記する。

 

撮影

・ホワイトバランスは必ず取る。真っ白のカード。
・露光は多めに。できるだけ光を取る。
・視点の移動は遅いと感じるくらいで十分。再生速度はポスト処理で。
・オートフォーカスは使わない。
・大きめに撮影し、小さめの画角を使う。
・基本は定点固定、三脚必須。

 

編集

・エフェクトや最終処理は編集段階に。
・目の錯覚を使う。近くの物から遠くの背景にフォーカスが変われば意識もそちらに動く。

 

ハード

・カメラはレンズ次第である。考慮に入れたボディを選択すべき。例えば、Canon 5D Mark2 / LUMIX GH4 などが挙げられる。

Road to Botter

◆Anaconda経由のPython環境設定◆
Homebrew:「Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである」

pyenv:様々なバージョンのPythonを管理するツール。導入することで,Python v2系とv3系など,複数のバージョンの切り替えが容易になる。

Anaconda: Python本体に加え,科学計算やデータ分析などに使えるライブラリがセットで入っているパッケージ。

AnacondaはPythonの管理に適した開発環境。Homebrew経由ではなく、pyenv経由でインストールをして、Pythonのバージョン管理をすべき。MacデフォルトのPython2系ではなく、Anacondaでインストールをした3系を利用するためには、Terminalで
pyenv global anaconda3-2.5.0
を実行することで、python –version で3系が指定される。
参考)http://qiita.com/oct_itmt/items/2d066801a7464a676994

◆Hubotを利用したBotの構造と環境設定◆
構造は、”Slack”⇄”Hubot on Heroku”⇄”色々なAPI”を採用。

Hubotを利用するにあたっては、node.js、redisが必要。
さらに、(sudo) npm install -g yo generator-hubot
にてyoコマンドとgenerator-hubotもインストール。
設定の工程概要はコチラから
http://qiita.com/yuzushioh/items/ba5bfe0899f744b56860

Botデプロイ用のHerokuのインストール、設定はコチラから
http://qiita.com/Arashi/items/b2f2e01259238235e187