アプリ開発中に開発用と申請用で別のターゲットとしてビルドする際、 それぞれ違ったSettings.bundleを読ませたい場合が出てきたのでメモ。
違う設定というと例えば、デバッグ用/デプロイ用で別のサーバを使用するため、それを切り替える設定が欲しかったりするとき、 トグルスイッチを用意しておいたり等。
通常、XcodeのBuild Phase に Run Script で Settings.bundleファイルをコピーしたり削除する設定をするのが 良くやる方法のようだが、もっと簡単に違うディレクトリにコピーしておいて、ターゲットのチェックをするだけで反映できたのでこの方法で行くことにしてみる。 推奨方法でも何でも無いので、設定は自己責任でオネシャス!
これで一応反映される。
少し先の話になりますが、2月に恵比寿の写真美術館で行われる恵比寿映像祭に
gzkというグループで参加することになりました。作品は鋭意制作中です..。
以下一部情報ですが、サイトからの転載です。
第5回恵比寿映像祭 パブリック⇄ダイアリー
会期 : 平成25(2013)年2月8日(金)~2月24日(日)[15日間]*うち、2月12日(火)、2月18日(月)のみ休館 開催時間 10:00~20:00 *ただし最終日平成25(2013)年2月24日(日)のみ18:00まで
料金 : 入場無料 *ただし定員制の上映プログラム、イヴェント等については有料です。スケジュールなどの詳細は順次当ウェブサイト他で公表いたします。
会場 : 東京都写真美術館 東京都目黒区三田1-13-3恵比寿ガーデンプレイス内 〒153-0062 Tel.03-3280-0099/Fax.03-3280-0033
アクセス : JR恵比寿駅東口より徒歩約7分(動く通路使用) ※当館には専用駐車場はございません。恵比寿ガーデンプレイス内駐車場をご利用ください。 (問い合わせ:03-5420-3080)
User.h#pragma once
class User {
private: float x, y, z;
public: User( string _id ) { id = _id; x = ofRandom( 100 ); y = ofRandom( 100 ); z = ofRandom( 100 ); };
string id; void draw() { ofPushMatrix(); ofPushStyle(); ofTranslate(x, y, z); ofSetColor(0, 0, 255); ofBox( 0, 0, 0, 10 ); ofPopStyle(); ofPopMatrix(); };
}; OSCThreadedObject.h
#define PORT 5000
#import "ofmain.h" #include "ofxOsc.h" #include "User.h"
class OSCThreadedObject : public ofThread {
private: ofxOscReceiver receiver;
public: map users;
OSCThreadedObject(){ receiver.setup(PORT); } void start(){ startThread(true, false); cout << "thread started ___! " << endl; } void stop(){ stopThread(); } void threadedFunction() { while ( isThreadRunning() != 0 ) { if ( lock() ) { while ( receiver.hasWaitingMessages() ){ ofxOscMessage m; receiver.getNextMessage(&m); if ( m.getAddress() == "/add" ) { string id = m.getArgAsString(0); users.insert( map
::value_type( id, User( id ) ) ); cout << "added user : " << id << endl;
} else if ( m.getAddress() == "/remove" ){ string id = m.getArgAsString(0); map
::iterator it = users.begin();
while ( it != users.end() ) { if ( (*it).first == id ) { users.erase( it++ ); cout << "erased user : " << id << endl; } else { ++it; } } } } unlock(); } } }
}; testApp.h
#pragma once
#include "ofMain.h" #include "OSCThreadedObject.h"
class testApp : public ofBaseApp{
public: void setup(); void update(); void draw();
void keyPressed (int key); void keyReleased(int key); void mouseMoved(int x, int y ); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void windowResized(int w, int h); void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg);
private: ofCamera camera; OSCThreadedObject OT; }; testApp.cpp
#include "testApp.h" #include "User.h"
//-------------------------------------------------------------- void testApp::setup(){
ofBackground( 255 ); camera.setFov( 50.8 ); camera.setFarClip( 800.f ); camera.setNearClip( 0.00001f ); //start thread OT.start(); camera.setPosition( 0, 0, 1000 );
}
//-------------------------------------------------------------- void testApp::update(){
camera.lookAt( ofVec3f( 0,0,0 ) );
}
//-------------------------------------------------------------- void testApp::draw(){
camera.begin(); ofRotate(ofGetFrameNum() * 0.15, 0, 1, 0); //draw users OT.lock(); map
::iterator it = OT.users.begin(); while( it != OT.users.end() ) { (*it).second.draw(); ++it; } OT.unlock();
camera.end(); //draw framerate ofPushStyle(); ofSetColor( 0 ); ofDrawBitmapString( ofToString( ofGetFrameRate() ), ofPoint( 10, 10 ) ); ofPopStyle();
}
//-------------------------------------------------------------- void testApp::keyPressed(int key){
}
//-------------------------------------------------------------- void testApp::keyReleased(int key){
}
//-------------------------------------------------------------- void testApp::mouseMoved(int x, int y ){
}
//-------------------------------------------------------------- void testApp::mouseDragged(int x, int y, int button){
}
//-------------------------------------------------------------- void testApp::mousePressed(int x, int y, int button){
}
//-------------------------------------------------------------- void testApp::mouseReleased(int x, int y, int button){
}
//-------------------------------------------------------------- void testApp::windowResized(int w, int h){
}
//-------------------------------------------------------------- void testApp::gotMessage(ofMessage msg){
}
//-------------------------------------------------------------- void testApp::dragEvent(ofDragInfo dragInfo){
}
データ加工ストリーミングのすすめ2012 11 20 from Koichiro Mori
社内向けに作成したスライド、何のこっちゃ分からないですね...。
知りたい方は森まで。
SuperColliderの3.6が専用のIDE付きでリリースされましたね。
QtベースのUIでいろいろとキーバインドがカスタマイズできたりと使いやすくなっているようです。
とりあえず無事動いたので、最初に行ったカスタマイズについて書き留めておきます。
環境はMacBookPro retinaのUSキーボードで行いました。
実行時、Shift + returnとかめんどいのでかつてコードの実行に使っていたenterキー、今はreturnキーと同じアサインですが、これをRight-Optionキーに割り当てます。
メニューの Preference > Shortcuts でカスタマイズセクションがあります。
コードの実行はEvaluate File, Evaluate Line と Evaluate Selection, Line or Regionの三つですが、Evaluate Line と Evaluate Selection, Line or Regionに今回のRight-Optionを割り当てます。
ところでRIght-OptionはLeft-Option同じOptionなので通常は選択できません、そこで KeyRemap4MacBookというカスタマイズツールで、Right-Optionキーに適当なーキーバインドを割り当てておきます。
KeyRemap4MacBookで
Change Key > Change Option_R Key(Right Option) にカスタムできるキーバインドがリストになっています。
意外とどうでもいいキーバインドって無いもんですね、
私が割り当てたのは
Option_R to Command+Control+Option+Shift+F1
scのPreferenceで選択できかつscで使わないキーバインドはかなり限られていました。
次にSCのPreferenceに戻って、Evaluate Line と Evaluate Selection, Line or Regionのショートカットの、Customラジオボタンにチェックして、
Command+Control+Option+Shift+F1を入力します。
これで完成しました。
Evaluate Lineだけでなく、Evaluate Selection, Line or Regionも同じキーにしておくと、今までは()でかこったったコードをダブルクリックで選択していましたが、現在のカーソルの位置のセクションを自動判別してくれて実行してくれます(これは便利)。
一応現在のIDEのsc_ide_conf.yamlを張っておきます。IDE: editor: blinkDuration: 100 colors: evaluatedCode: !textFormat color: "#000000" background: "#0ff8bf" lineNumbers: !textFormat {} matchingBrackets: !textFormat color: "#ff0000" bold: true searchResult: !textFormat color: "#000000" background: "#8ba5c5" selection: !textFormat {} text: !textFormat color: "#d4d4d4" background: "#080301" font: antialias: 2 family: Monaco size: 12 highlighting: built-in: !textFormat color: "#948eff" char: !textFormat color: "#00b500" class: !textFormat color: "#9188ff" comment: !textFormat color: "#06a100" env-var: !textFormat color: "#ff6600" keyword: !textFormat color: "#7a6ee6" bold: true number: !textFormat color: "#00ccdf" primitive: !textFormat color: "#7c92ff" string: !textFormat color: "#9a9a9a" symbol: !textFormat color: "#00de00" indentWidth: 4 lineWrap: true spaceIndent: false stepForwardEvaluation: true interpreter: autoStart: true configFile: "" runtimeDir: "" mainWindow: geometry: AdnQywABAAAAAAAGAAAAFgAAB4UAAASrAAAABgAAACwAAAcWAAAClAAAAAACAA== state: AAAA/wAAAAD9AAAAAgAAAAAAAAJsAAAEaPwCAAAAAfsAAAASAHAAbwBzAHQALQBkAG8AYwBrAQAAAAAAAARoAAAAaQD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAHABkAG8AYwB1AG0AZQBuAHQAcwAtAGQAbwBjAGsAAAAAAP////8AAABoAP///wAABRMAAARoAAAABAAAAAQAAAABAAAACPwAAAAA postWindow: lineWrap: false scrollback: 1000 recentDocuments: !QVariantList [] shortcuts: evaluate_line: Meta+Ctrl+Alt+Shift+F1 evaluate_selection,_line_or_region: Meta+Ctrl+Alt+Shift+F1 recompile_class_library: Ctrl+K switch_document: Alt+Tab startWithSession: last