vagrantでホストOSとゲストOSでフォルダをシェアする
ホストOSで編集作業等をするために、共有フォルダの設定を行う。
$ sudo ln -fs /vagrant /home/vagrant/nodejs
こんなパスにhello.jsを作成する。
/Users/futabooo/Vagrant/centOS64vm_clone/hello.js
ゲストOSでも見れる!
[vagrant@localhost ~]$ ls /home/vagrant/nodejs/ Vagrantfile hello.js
AndroidのEditTextにフォーカスがある時にキーボードの全画面表示を抑制する
XML上で、EditTextのプロパティで下記の1行を追加
<EditText android:imeOptions="flagNoExtractUi | flagNoFullscreen" />
flagNoExtractUiはAPIレベル1使えるオプション
flagNoFullscreenはAPIレベル11から使えるオプション
今後はflagNoFullscreenだけ使っていればいいと思いますが、
いまだにAndroid2.3とかもシェアがあるので両方指定しとく。
ただこのオプション、端末側の設定で強制的に効かなくすることもできるようなので、
端末によってはフルスクリーン表示が抑制できないかもしれません(´・ω・`)
更に、フルスクリーン表示しなくすることで下のViewが見えなくなって入力してる文字がみえなくなるかも。
その時の解決方法まではまた今度。
node.jsの環境を再度構築する
$ sudo yum install wget git gcc-c++ openssl-devel $ git clone git://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh $ nvm install 0.10.24 $ nvm use v0.10.24 $ nvm alias default v0.10.24
3行目のところを.bashrcに書いておく
6行目やっとかないとnodeコマンド使うのに毎回use叩く。
Vagrant導入時につまづいたことの解決策
だいぶバージョンの違いなどにやられたので、これを書いた時点での自分の環境を。
MacOSX 10.9.1
Vagrant 1.4.0
VirtualBox 4.3.4
ぶちあたった問題点は下記2点
・GestAdditionsのバージョンの違い
・ネットワークの設定
以下解決策
GestAdditionsのバージョンを更新する
こちらを参考に。
VagrantのboxのGuest Additionsのアップデート方法 - Qiita [キータ]
$ vagrant plugin install vagrant-vbguest $ vagrant vbguest
これでしばらく待てばアップデート完了する。
GuestAdditions 4.3.4 running --- OK.
とかって表示される。
このままだと自動で更新が走るので、手動でやりたい場合は設定ファイル作成する。
/Users/futabooo/.vagrant.d/Vagrantfaile
Vagrant::Config.run do |config| # we will try to autodetect this path. # However, if we cannot or you have a special one you may pass it like: # config.vbguest.iso_path = "#{ENV['HOME']}/Downloads/VBoxGuestAdditions.iso" # or # config.vbguest.iso_path = "http://company.server/VirtualBox/%{version}/VBoxGuestAdditions.iso" # set auto_update to false, if do NOT want to check the correct additions # version when booting this machine config.vbguest.auto_update = false # do NOT download the iso file from a webserver config.vbguest.no_remote = true end
ネットワーク設定についてパッチを当てる
参考
Vagrant 1.4.0 で private_network を指定しているとエラーになる件 - akishin999の日記
こんなエラーが出る。
The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! /sbin/ifdown eth1 2> /dev/null Stdout from the command: Stderr from the command:
エラーメッセージっぽい最初の2行で検索してると、別のエラーの解決策にあたる。
3行目のところで検索したら参考のURLがひっかかり解決に至りました。ありがたい。
ソースを修正する。
下記を参考に。
Merge pull request #2628 from makern/ifdown-fix · 70b662e · mitchellh/vagrant · GitHub
これで無事にブラウザにHello worldが表示されました。
cocos2d-x 3系へ書き換えてみる
書き換えできなかったので、知っている人がいれば教えていただきたい!
2系だとボタンが押された時の動作を設定するのにこんな感じ
MenuItemFont* retryLabel = MenuItemFont::create("Retry", this, menu_selector(HelloWorld::menuRetryButton)); void HelloWorld::menuRetryButton(CCNode *node) { CCDirector::sharedDirector()->getTouchDispatcher()->removeAllDelegates(); CCScene* gameScene = (CCScene*)HelloWorld::create(); CCDirector::sharedDirector()->replaceScene(gameScene); }
3系で書きなおしてみるもエラーが出ていて使えない。
MenuItemFont::createでの2番目の引数が良くないみたいなのだが分からない。
MenuItemFont* retryLabel = MenuItemFont::create("Retry", CC_CALLBACK_0(HelloWorld::menuRetryButton, this)); void HelloWorld::menuRetryButton(Object* pSender) { // Director::getInstance()->getTouchDispatcher()->removeAllDelegates(); // Director::getInstance()->r Scene* gameScene = (Scene*)HelloWorld::create(); Director::getInstance()->replaceScene(gameScene); }
ちなみに上記でコメントアウトしている部分も書き換えができていないので、分かる人いれば教えて欲しいです。
2系
CCDirector::sharedDirector()->getTouchDispatcher()->removeAllDelegates();
3系
Director::getInstance()->この先がわからない\(^o^)/
cocos2d-xハンズオンを受けたのでメモ
頭にCCがつくのが最初気持ち悪かった。
iOSの開発やってる人は馴染みやすそう。
クロスプラットフォーム開発すげぇ!
Unityよりも固めたアプリが軽量。
// シングルタップでは必ずoverride virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); // cocosのタッチポイントをopenGLのタップポイントにする。touchPointは構造体(x, y) CCPoint touchPoint = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView()); // 指定された四角形の中にタッチポイントが含まれているかどうかをtruefalseで返す node->boundingBox().containsPoint( // フォントの指定で空にするとシステムフォント CCLabelTTF* timerLabel = CCLabelTTF::create("0.000s", "", 32.0f);touchPoint) // CCDirectorはシングルトンになっている。画面を統括する唯一のクラス。sharedDirectorでインスタンスを取得してgetWinSizeで画面サイズ取得 CCSize bgSize = CCDirector::sharedDirector()->getWinSize(); // scheduleを使うと毎フレーム呼び出す this->schedule(schedule_selector(HelloWorld::countTimer)); // getChildByTagの返り値がnodeなのでキャストする CCLabelTTF* timerLabel = (CCLabelTTF*)this->getChildByTag(kTagTimerLabel); // flush()までやってsetしたものが次回使えるようになる CCUserDefault::sharedUserDefault()->setFloatForKey("highscore", gameTime); CCUserDefault::sharedUserDefault()->flush(); // ボタンが10こあったら最後にNULLを入れる CCMenu* menu = CCMenu::create(retryLabel, NULL);
Unity4.3のプロジェクトをcodebreakで管理する
Unityのプロジェクトを複数人で共有する必要が出てきたので、
無料でプライベートリポジトリが作れるcodebreak;を使ってみました。
Free Git Hosting | codebreak;
とりあえず一人で2PCでやってみたらできたので備忘録。
1.Unityプロジェクト側の設定
Edit>Project Settings>Editor
Version Control>ModeをVisible Meta Filesへ変更する
2.codebreak;のリポジトリへコミット
事前にcodebreak;上でリポジトリを作成しておく。
Unityのプロジェクト内にあるLibraryフォルダを丸ごと削除する(必要ないかも)
プロジェクトのフォルダ内に移動して下記コマンド
$git init $git add Assets $git add ProjectSettings $git commit -m "first commit" $git remote add origin [リモートリポジトリ] $git push -u origin master
これでcodebreak;上にリモートリポジトリ完成。
3.ローカルにクローン
$git clone [リモートリポジトリ]
プロジェクトがローカルにコピーされる。
Unityでプロジェクトを開く。
なんか適当に変更加える。
4.変更内容をリモートリポジトリへコミット
変更内容の確認をしてみる。
今回はマテリアルの色を変更してみただけなので、下記のファイルが変更されていた。
$git status $On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: Assets/FloorMaterial.mat modified: Assets/Main.unity untracked files: (use "git add <file>..." to include in what will be committed) Library/ no changes added to commit(use "git add" and/or "git commit -a") $git add Assets/FloorMaterial.mat $git add Assets/Main.unity $git commit -m "floormaterial color changed" $git push origin master