2011.05.20 | 

後で読むものをメモっときます。

あっ、どうもkaminalyです。

基礎文法最速マスターランキング
Perl基礎文法最速マスター - Perl入門~サンプルコードによるPerl入門~
という2009年12月26日に書かれたブログ記事が発端となって、
今ではかなりの量の基礎文法最速マスターが存在しているようです。
このリンク先では、その基礎文法最速マスターを集めて、はてぶ数やツイートなんかを元にランキングにしています。

個人で作ったWebサービスの仕様書(Evernoteのメモ)を2つ公開してみるCommentsAdd Star
ウェブサービス仕様書(というよりアイデアメモ)の残し方。

2011.05.14 | 

どやさ!kaminalyです。
android携帯買い換えたいkaminalyです。
iphoneよりもandroid派のkaminalyです。

はてさて、atan2の引数って言語によってy,xだったりx,yだったりします。
数学者にとってはy,xの方が直感的なのかもしれないけど、
数学に明るくない人にとっては、x,yの順番の方が直感的なので、
しばしば順番を間違えて、挙動不振になったりすることも多いんじゃないでしょうか?

Cinderはというと、ヘッダをみると、x,yの順番だった。(変数名的に)

が、これは罠で、y,xで渡さないと正しい値を得られない。

くそ!

2011.04.19 | 

どやさ、kaminalyです。

Cinderではデバッグや実験用に結果画面を見ながら
パラメータの変更ができるパネルを簡単に設置できる。
※AntTweakBarというライブラリをラップしている。

わたくしは、パラメータ以外に、
fpsとかベンチマークの結果とか簡単なトレースを常に表示するようにしています。



ヘッダファイルをインクルード
#include "cinder/params/Params.h"

ヘッダにパネルの変数定義
ci::params::InterfaceGl mParams;

セットアップなどで
void PracticeApp::setup()
{
	//パネル生成(引数:パネル名、サイズ)
	mParams = params::InterfaceGl( "Paramaters", Vec2i( 200, 200 ) );
	//変更したいパラメータ追加(引数:パラメータ名、変数、オプション、readonly)
	mParams.addParam( "param name", &var[, "option", false] );
	//区切りを追加(引数:パラメータ名、オプション)
	mParams.addSeparator(["separator name", "option"]);
}
※日本語は文字化けする。
※addParamで渡せる変数の型
	bool, float, int32_t, Vec3f, Quatf, Color, ColorA, std::string, std::vector<std::string>

引数で渡すオプションで色々設定できる。オプションについては後で。

描画の最後に
void PracticeApp::draw()
{
	//色々描画
	//色々描画
	//色々描画

	//パネルの描画
	params::InterfaceGl::draw();
}

以上でOK。わぉ!簡単!

オプションについて
最小値/最大値とか、変化量とか、keyイベントとか
色々設定できます。

フォーマットは
"min=0.0f max=20.0f step=0.5f keyIncr=x keyDecr=X"
param=valueをスペース区切りで複数設定できます。

種類
min=value
最小値設定(数値の変数のみ)

max=value
最大値設定(数値の変数のみ)

step=value
変更量の粒度(数値の変数のみ)

key=string

keyincr=string
ショートカットキーでstep分足す

keydecr=string
ショートカットキーでstep分引く

※ショートカットに指定できるもの
	a,A,1,#, などキーボードで打てる文字
	SPACE (or ' ')
	BACKSPACE (or BS)
	TAB
	CLEAR (or CLR)
	RETURN (or RET)
	PAUSE
	ESCAPE (or ESC)
	DELETE (or DEL), INSERT (or INS)
	UP, DOWN, RIGHT, LEFT
	HOME, END
	PGUP, PGDOWN
	F1, F2,..., F15

※+でつなげて指定するもの
	SHIFT
	ALT
	CTRL
		例、CTRL+a, ALT+F1, SHIFT+ALT+F1
		※SHIFTとCTRLはキーボードで打てる文字と一緒には使わない方が良い。
		SHIFT+a → A, CTRL+a..z → ASCII codeの1〜26に置き換えるべき?

label=string
ラベルつける

help=string
ヘルプ用の文字列。配布する時とか。

group=string
同じグループの

visible=bool
欄を表示したり消したり

readonly=bool
変更出来なくなる

precision=value(double型の変数のみ)
小数点以下何桁まで使うか
0〜12が指定できます。
-1を指定すると無効になります。
precisionが定義されず、stepが定義されている場合は
stepの値を元に定義されます。

hexa=bool(integer型の変数のみ)
16進数で表示

true=string(boolean型の変数のみ)
false=string(boolean型の変数のみ)
表示される文字を設定する
例、"true=Yes! false='No !!'"

opened=bool(groupのみ)
グループを開いたり閉じたり

enum='const1 {label1} , const2 {label2} , ...'(enum型の変数のみ)
cinderではつかえないのでノー説明

coloralpha=bool(ColorA型の変数のみ)
アルファの有効無効

colororder=rgba(ColorA型の変数のみ)
colororder=argb(ColorA型の変数のみ)
OpenGL and Direct3D10はrgba、Direct3D9はargbのフォーマットのようです。

colormode=rgb(Color型の変数のみ)
colormode=hls(Color型の変数のみ)
値をRGB(Red Green Blue) かHLS(Hue Lightness Saturation)のどちらとして使うか指定できる 。

arrow='x y z'(Quatf型の変数のみ)
arrow=0(Quatf型の変数のみ)
3Dの矢印を表示
値がゼロの場合0リセット

arrowcolor='r g b'(Quatf型の変数のみ)
矢印の色を変える

axisx=n(Quatf型の変数のみ)
axisy=n(Quatf型の変数のみ)
axisz=n(Quatf型の変数のみ)
左手系のなにか

showval=bool(Quatf型の変数のみ)
数値を表示


2011.04.15 | 

続けざまメモでおなじみのkaminalyです。
CinderのEvent関係をちょっこす調べたのでメモメモ。


・Eventの種類と伝播タイミング
	MouseEvent
		MouseDown
		MouseUp
		MouseWheel
		MouseMove
		MouseDrag

	KeyEvent
		KeyDown
		KeyUp

	ResizeEvent
		Resize

	FileDropEvent
		FileDrop

	TouchEvent(AppBasic継承クラスのみ)
		TouchesBegan
		TouchesMoved
		TouchesEnded

・イベントを登録
	>App継承クラス(※直接EventHandlerをoverrideするからあまり使わない。)
		CallbackId id = registerHogehoge( callback );
		を呼ぶ。

	>App継承クラス意外からは
		ci::app::App::get()でインスタンス拾って登録
		CallbackId id = ci::app::App::get()->registerHogehoge( callback );

	※Hogehogeを適宜置換える。
	※戻り値にCallbackIdが帰ってくる。
		このidはイベント解除の時に引数として使用する。
	※callbackは各種Eventを引数でとるメソッド。
		(MouseEvent, KeyEvent, ResizeEvent, FileDropEvent, TouchEvent);

	・イベントを解除
		unregisterHogehoge( CallbackId );

2011.04.15 | 

こんばんわ。
OpenGLにハマり中のkaminalyです。

Kinectをいじいじしてることはこの前メモりましたが、
Xcodeのショートカットキーがなかなかなじまないのでメモります。
いろんなサイトからの寄せ集めです(汗

■よく使う系

Cmd+Enter
ビルドとデバッグ

Cmd+シンボル文字列をダブルクリック
ダブルクリックしたシンボルが定義された所を開く。
コンテキストメニューの「定義へジャンプ」と同じ機能。

Opt+Cmd+↑
.hファイルと.m(.c .cpp)ファイルの切り替え
左の「グループとファイル」ペインから選択と同等。
トグルなので.hから.mへ。.mから.hが開く。

Opt+シンボル文字列をダブルクリック  
ダブルクリックしたシンボルをリファレンスで検索。
コンテキストメニューの「APIリファレンス内で選択されたテキストを検索」と同じ機能。

Ctrl+,
入力補完の一覧表示

Ctrl+.
Ctrlをホールドしてピリオドで、候補が切り替わる。
候補が多すぎると時間がかかるから、ある程度入力してから使う。

Cmd+/
カーソル位置または、選択範囲コメントアウト。

Cmd+Shift+R
コンソール画面表示

■インデント系(タブは使えない)
Cmd+[
インデントを下げる

Cmd+]
インデントを上げる

Ctrl+i
選択範囲を良い感じにインデント。

■カーソル移動系
Ctrl+E
行末にカーソルを移動

Ctrl+A
行頭にカーソルを移動

Ctrl+F
カーソルを左に移動

Ctrl+B
カーソルを右に移動

Ctrl+P
上に移動

Ctrl+N
下に移動

■削除系
Ctrl+K
カーソル位置から行末まで削除

Ctrl+H
delete

Ctrl+D
Forward Delete

■不思議系
Ctrl+R
選択範囲シェルスクリプトを実行し出力を挿入する