UnityのAdMobプラグイン、Flurryプラグインを作ってみました
Unityで使えるモバイル向けのプラグインを作ってみました。
■ Unity AdMob Plugin
https://github.com/mikito/unity-admob-plugin
■ Unity Flurry Plugin
https://github.com/mikito/unity-flurry-plugin
両方ともパッケージを読み込み後、
プレファブ一個を追加してAPI Keyを設定するだけで使えるので導入も簡単だとおもいます。
iOS、Androidの切り替えも自動です。
AdMob、Flurryに関してはprime31のプラグインが既にありますけどね...
自分のサポートにあまり自信がないので、
企業などのちゃんとしたプロダクトに関しては上記の有償のプラグインを使ったほうが良いんじゃないかと思います。
トラブルが起きた際の損失は保証できませんのであしからず
最近はサーバーサイドをもっぱら触ってるのでUnity関連が全然トラックできてない...
先日Unite Japanにいってきましたが、最新の動向やらマニアックなTipsが知れていい刺激になりました。
Tic Tac Toe Countdownをアップデートしました
2010年にiOSネイティブで作ったゲームをアップデートしました。
https://itunes.apple.com/jp/app/tic-tac-toe-count-down/id348792842?mt=8
引き分けがない特殊ルールのまるばつゲームです。
前まで大学のサーバーに勝手にサイト置いてましたがそれも移しました。
http://mikinya.net/apps/tictactoe
更新内容は以下です
- マルチタスクに対応して、アプリを中断しても途中からできるように(いまさら!)
- iPhone5の解像度に対応(むしろRetina Displayにも対応してませんでた)
- ゲーム中の画像リソースのクオリティをぐんとアップ!
いやぁリリースしたのはiPhone3GSとかそんな時代だったからなぁ
ソースコードがあるのかも怪しかった...学生のリソース管理怖い
アップデートにご協力頂いた皆様、大変ありがとうございました。
おいしいケーキでもごちそうします。
以下駄文
さてさて、今回(以前?)はObjective-Cで書いた完全にネイティブなアプリですが、
そのうちマルチプラットフォームのアプリも出したいですねー
今、Cocos2d-xに奮闘中ですが、環境構築や作業フローなどにやや煩雑さを感じます。
慣れればどうってことないでしょうが。
仕事でUnityを触ってると、開発効率に惹かれますが、ライセンス料金が個人で賄うにはきつい...
フリーではスプラッシュかえられないし、3Dのモデラーがいないと、宝の持ち腐れ感もありますし。
新しいゲームエンジンもいろいろと出てて、キャッチアップしていかないとなーと
作りたいものはたくさんあるんですけど、一番の問題は開発時間をどうとるかですね。
がんばっていこうかと思います。
Gitlabを5.0にアップデート
Gitlabが5.0リリースされました。
アップデートはまぁ近いうちとおもってましたが、
このタイミングでとは...
しかし、公式サイトみてみたらちゃんと3/22にリリースしますって書いてあった...
今回はちゃんと調べて選択しろってことを大変よく学びました。
なにはともあれアップデートしました。
5.0からはgitoliteがいらなくなり、構成、インストール手順も大きく変わってます。
公式の手順はこちら。
https://github.com/gitlabhq/gitlabhq/wiki/From-4.2-to-5.0
以下は作業のログです。
bundlerのおかげでrvm使うメリットはあまりないかもしれませんが、
バージョン違いのアプリケーション共存とかも考えて一応使う方向でいきます。
うーんrbenvをつかったほうがいいんですかね?
Gitlab停止
[mikito@nya ~]$ sudo service gitlab stop
gitユーザのシェル変更
[mikito@nya ~]$ sudo chsh -s /bin/bash git
リポジトリの所有者変更
[mikito@nya ~]$ sudo chown git:git -R /home/git/repositories/
gitlab-shellインストール
[mikito@nya ~]$ sudo su - git
[git@nya ~]$ git clone https://github.com/gitlabhq/gitlab-shell.git /home/git/gitlab-shell
[git@nya gitlab-shell]$ cp config.yml.example config.yml
[git@nya gitlab-shell]$ vim config.yml # gitlab_url編集
[git@nya gitlab-shell]$ ./support/rewrite-hooks.sh
gitlabコピー
[mikito@nya ~]$ sudo cp -R /home/gitlab/gitlab /home/git/gitlab
[mikito@nya ~]$ sudo chown git:git -R /home/git/gitlab
[mikito@nya ~]$ sudo rm -rf /home/gitlab/gitlab-satellites
RVM再度入れる
[mikito@nya ~]$ sudo su - git
[git@nya ~]$ curl -L https://get.rvm.io | bash -s stable --ruby
[git@nya ~]$ rvm install 1.9.3
[git@nya ~]$ rvm use 1.9.3
[git@nya ~]$ gem install bundler --no-rdoc --no-ri
[git@nya ~]$ gem install charlock_holmes --version '0.6.9' --no-rdoc --no-ri
[git@nya ~]$ rvm gemset create gitlab
[git@nya ~]$ rvm use 1.9.3@gitlab --default
gitlab update
[git@nya ~]$ cd gitlab
[git@nya gitlab]$ cp config/gitlab.yml config/gitlab.yml.old
[git@nya gitlab]$ git fetch
[git@nya gitlab]$ git checkout 5-0-stable
[git@nya gitlab]$ cp config/gitlab.yml.example config/gitlab.yml # 再度設定
[git@nya gitlab]$ bundle install --without development test postgres --deployment
[git@nya gitlab]$ bundle exec rake db:migrate RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:shell:setup RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:shell:build_missing_projects RAILS_ENV=production
[git@nya gitlab]$ mkdir /home/git/gitlab-satellites
[git@nya gitlab]$ bundle exec rake gitlab:satellites:create RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:wiki:migrate RAILS_ENV=production
パーミッションの設定など
[git@nya gitlab]$ chmod 700 /home/git/.ssh
[git@nya gitlab]$ chmod 600 /home/git/.ssh/authorized_keys
[git@nya gitlab]$ chown -R git /home/git/gitlab/log/
[git@nya gitlab]$ chown -R git /home/git/gitlab/tmp/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/log/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/tmp/
[git@nya gitlab]$ mkdir /home/git/gitlab/tmp/pids/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/tmp/pids
unicorn設定
[git@nya gitlab]$ cp config/unicorn.rb config/unicorn.rb.old
[mikito@nya ~]$ cp config/unicorn.rb.example config/unicorn.rb
[mikito@nya ~]$ vim config/unicorn.rb # 待ち受けポートを変更
listen "127.0.0.1:8080", :tcp_nopush => true
gitconfig設定
[git@nya gitlab]$ git config --global user.name "Gitlab"
[git@nya gitlab]$ git config --global user.email "gitlab@gitlab.mikinya.net"
起動スクリプト更新
[mikito@nya ~]$ sudo -E curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
[mikito@nya ~]$ sudo vim /etc/init.d/gitlab # rvm環境変数を追加
#
# set rvm environment valiables.
#
export PATH=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab/bin:/home/git/.rvm/gems/ruby-1.9.3-p392@global/bin:/home/git/.rvm/rubies/ruby-1.9.3-p392/bin:/home/git/.rvm/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/git/bin
export GEM_HOME=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab
export GEM_PATH=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab:/home/git/.rvm/gems/ruby-1.9.3-p392@global
export MY_RUBY_HOME=/home/git/.rvm/rubies/ruby-1.9.3-p392
export IRBRC=/home/git/.rvm/rubies/ruby-1.9.3-p392/.irbrc
VirtualHost再設定
[mikito@nya ~]$ sudo vim /etc/httpd/conf/httpd.conf
/home/gitlab/gitlab/public -> /home/git/gitlab/public
[mikito@nya ~]$ sudo /etc/init.d/httpd graceful
SSH 環境変数(参考: https://github.com/gitlabhq/gitlab-shell/issues/12)
[mikito@nya ~]$ sudo vim /etc/ssh/sshd_config
PermitUserEnvironment yes
[mikito@nya ~]$ sudo su - git
[git@nya ~]$ env | grep -E "^(GEM_HOME|PATH|RUBY_VERSION|MY_RUBY_HOME|GEM_PATH)=" > ~/.ssh/environment
[git@nya ~]$ exit
[mikito@nya ~]$ sudo /etc/init.d/sshd restart
再起動
[mikito@nya ~]$ sudo service gitlab start
いらないの削除
[mikito@nya ~]$ sudo su - git
[git@nya ~]$ rm -rf bin
[git@nya ~]$ rm -rf gitolite/
[git@nya ~]$ rm projects.list
[git@nya ~]$ cd repositories/
[git@nya repositories]$ rm -rf gitolite-admin.git/
[git@nya repositories]$ rm -rf testing.git/
[git@nya repositories]$ rm -rf root
[git@nya ~]$ exit
[mikito@nya ~]$ sudo rm /home/git/gitlab.pub
[mikito@nya ~]$ sudo userdel -r gitlab
CentOS6にApache + RVM + UnicornでGitlab4.2構築
GitlabはGithubのオープンソースクローンで
プライベートリポジトリをつくることはもちろん、
ユーザ管理や公開鍵管理などをWebブラウザ上からできる、おされなツールです。
さらに、プロジェクト毎にWallやWikiが使えたり、ブランチのネットワークグラフを表示したり、マージリクエストの管理などもできます。
最近構築する機会があったのでメモ
# ただし、5.0へのメジャーアップデートでGitoliteが必要なくなるらしく、もっと簡単にインストールが済むようになるかもです。
とりあえず現時点の手順です。
極力手間をかけず、メンテもしやすいような感じで構成してみました。
メモ程度に残していたログを都合よくまとめただけなので、へんなとこあるかもです。
あしからず。
公式の手順はこちら
gitlabhq/installation.md at 4-2-stable · gitlabhq/gitlabhq · GitHub
必要そうなパッケージインストール
[mikito@nya ~]$ sudo yum -y install libyaml-devel openssl-devel gdbm-devel readline-devel ncurses-devel libffi-devel redis libxml2-devel libxslt-devel libicu-devel curl git-core openssh-server postfix
Redis起動、自動起動設定
[mikito@nya ~]$ sudo /etc/init.d/redis
[mikito@nya ~]$ sudo chkconfig redis on
[mikito@nya ~]$ chkconfig --list redis
redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
データベース設定(MySQL)
[mikito@nya ~]$ mysql -u root -p
mysql> create user 'gitlab_user'@'localhost' identified by '*******'
mysql> CREATE DATABASE IF NOT EXISTS `gitlab_db` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlab_db`.* TO 'gitlab_user'@'localhost';
System User作る
[mikito@nya ~]$ sudo adduser -r -s /bin/sh -c 'git' -d /home/git -m git
[mikito@nya ~]$ sudo adduser -r -s /bin/sh -c 'gitlab' -d /home/gitlab -m gitlab
[mikito@nya ~]$ sudo chmod g+rx /home/git
[mikito@nya ~]$ sudo usermod -a -G git gitlab
gitlabユーザのSSH Key作ってコピーしとく
[mikito@nya ~]$ sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
[mikito@nya ~]$ sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
[mikito@nya ~]$ sudo chmod 0444 /home/git/gitlab.pub
Gitolite設定
[mikito@nya ~]$ sudo su - git -s /bin/bash # gitユーザで作業
[git@nya ~]$ git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git gitolite
[git@nya ~]$ mkdir /home/git/bin
[git@nya ~]$ sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile'
[git@nya ~]$ sh -c 'gitolite/install -ln /home/git/bin'
[git@nya ~]$ sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"
[git@nya ~]$ chmod 750 /home/git/.gitolite/
[git@nya ~]$ chmod -R ug+rwX,o-rwx /home/git/repositories/
[git@nya ~]$ find /home/git/repositories -type d -print0 | xargs -0 chmod g+s
list of known hostsに追加とかcloneチェックとか
[mikito@nya ~]$ sudo su - gitlab -s /bin/bash # gitlabユーザで作業
[gitlab@nya ~]$ ssh git@localhost
The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is 24:11:23:ff:35:72:9f:e0:5e:36:5f:c4:f9:4d:c7:f8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
hello gitlab, this is git@nya running gitolite3 v3.2-gitlab-patched-0-g2d29cf7 on git 1.7.1
...
実際に管理用のリポジトリcloneしてみる
[gitlab@nya ~]$ git clone git@localhost:gitolite-admin.git gitolite-admin
Initialized empty Git repository in /home/gitlab/gitolite-admin/.git/
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
[gitlab@nya ~]$ ls
gitolite-admin
[gitlab@nya ~]$ rm -rf gitolite-admin/
Git設定
[gitlab@nya gitlab]$ git config --global user.name "Gitlab"
[gitlab@nya gitlab]$ git config --global user.email "gitlab@gitlab.mikinya.net"
RVM & Gemインストール
[gitlab@nya ~]$ curl -L --insecure https://get.rvm.io | bash -s stable --ruby
[gitlab@nya ~]$ source .bash_profile
[gitlab@nya ~]$ rvm install 1.9.3
[gitlab@nya ~]$ gem install bundler --no-rdoc --no-ri
[gitlab@nya ~]$ gem install charlock_holmes --version '0.6.9' --no-rdoc --no-ri
[gitlab@nya ~]$ rvm gemset create gitlab
[gitlab@nya ~]$ rvm use 1.9.3@gitlab --default
Gitlabインストール
[gitlab@nya ~]$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
[gitlab@nya ~]$ cd gitlab/
[gitlab@nya gitlab]$ git checkout 4-2-stable
[gitlab@nya gitlab]$ chmod -R u+rwX log/
[gitlab@nya gitlab]$ chmod -R u+rwX tmp/
[gitlab@nya gitlab]$ mkdir gitlab-satellites
[gitlab@nya gitlab]$ cp config/gitlab.yml.example config/gitlab.yml
[gitlab@nya gitlab]$ vim config/gitlab.yml # host名とか設定
[gitlab@nya gitlab]$ cp config/database.yml.mysql config/database.yml
[gitlab@nya gitlab]$ vim config/database.yml
database.yml
# # PRODUCTION # production: adapter: mysql2 encoding: utf8 reconnect: false database: gitlab_db pool: 5 username: gitlab_user password: "***********" # host: localhost # socket: /tmp/mysql.sock
unicorn設定
[gitlab@nya gitlab]$ cp config/unicorn.rb.example config/unicorn.rb
[gitlab@nya gitlab]$ vim config/unicorn.rb
unicorn.rb
# uncomment and customize to run in non-root path # note that config/gitlab.yml web path should also be changed # ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" app_dir = "/home/gitlab/gitlab/" worker_processes 2 working_directory app_dir # Load app into the master before forking workers for super-fast # worker spawn times preload_app true # nuke workers after 30 seconds (60 is the default) timeout 30 # listen on a Unix domain socket and/or a TCP port, #listen 8080 # listen to port 8080 on all TCP interfaces #listen "127.0.0.1:8080" # listen to port 8080 on the loopback interface #listen "#{app_dir}/tmp/sockets/gitlab.socket" listen "127.0.0.1:8080", :tcp_nopush => true pid "#{app_dir}/tmp/pids/unicorn.pid" stderr_path "#{app_dir}/log/unicorn.stderr.log" stdout_path "#{app_dir}/log/unicorn.stdout.log" # http://www.rubyenterpriseedition.com/faq.html#adapt_apps_for_cow if GC.respond_to?(:copy_on_write_friendly=) GC.copy_on_write_friendly = true end before_fork do |server, worker| # the following is highly recomended for Rails + "preload_app true" # as there's no need for the master process to hold a connection defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! ## # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and # immediately start loading up a new version of itself (loaded with a new # version of our app). When this new Unicorn is completely loaded # it will begin spawning workers. The first worker spawned will check to # see if an .oldbin pidfile exists. If so, this means we've just booted up # a new Unicorn and need to tell the old one that it can now die. To do so # we send it a QUIT. # # Using this method we get 0 downtime deploys. old_pid = "#{server.config[:pid]}.oldbin" if File.exists?(old_pid) && server.pid != old_pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH # someone else did our job for us end end end after_fork do |server, worker| # Unicorn master loads the app then forks off workers - because of the way # Unix forking works, we need to make sure we aren't using any of the parent's # sockets, e.g. db connection defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection # Redis and Memcached would go here but their connections are established # on demand, so the master never opens a socket end
フックの設定
[gitlab@nya gitlab]$ cp /home/gitlab/gitlab/lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
[gitlab@nya gitlab]$ chown git:git /home/git/.gitolite/hooks/common/post-receive
gemインストール、Migration & Setup
[gitlab@nya gitlab]$ bundle install --deployment --without development test postgres
[gitlab@nya gitlab]$ bundle exec rake gitlab:setup RAILS_ENV=production
Applicationチェック
[gitlab@nya gitlab]$ bundle exec rake gitlab:env:info RAILS_ENV=production
[gitlab@nya gitlab]$ bundle exec rake gitlab:check RAILS_ENV=production
それっぽいのが出ればOKかと
起動スクリプト設定
[mikito@nya ~]$ sudo -E curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/4-2-stable/init.d/gitlab
[mikito@nya ~]$ sudo vim /etc/init.d/gitlab #RVMの環境変数の設定を追加
/etc/init.d/gitlab
#! /bin/bash # GITLAB # Maintainer: @randx # App Version: 4.0 ### BEGIN INIT INFO # Provides: gitlab # Required-Start: $local_fs $remote_fs $network $syslog redis-server # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: GitLab git repository management # Description: GitLab git repository management ### END INIT INFO # # set rvm environment valiables. # export PATH=/home/gitlab/.rvm/gems/ruby-1.9.3-p392@gitlab/bin:/home/gitlab/.rvm/gems/ruby-1.9.3-p392@global/bin:/home/gitlab/.rvm/rubies/ruby-1.9.3-p392/bin:/home/gitlab/.rvm/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gitlab/bin export GEM_HOME=/home/gitlab/.rvm/gems/ruby-1.9.3-p392@gitlab export GEM_PATH=/home/gitlab/.rvm/gems/ruby-1.9.3-p392@gitlab:/home/gitlab/.rvm/gems/ruby-1.9.3-p392@global export BUNDLE_PATH= export MY_RUBY_HOME=/home/gitlab/.rvm/rubies/ruby-1.9.3-p392 export IRBRC=/home/gitlab/.rvm/rubies/ruby-1.9.3-p392/.irbrc set -u set -e APP_ROOT="/home/gitlab/gitlab" DAEMON_OPTS="-c $APP_ROOT/config/unicorn.rb -E production" PID_PATH="$APP_ROOT/tmp/pids" UNICORN_PID="$PID_PATH/unicorn.pid" SIDEKIQ_PID="$PID_PATH/sidekiq.pid" STOP_SIDEKIQ="RAILS_ENV=production bundle exec rake sidekiq:stop" START_SIDEKIQ="RAILS_ENV=production bundle exec rake sidekiq:start" NAME="unicorn" DESC="Gitlab service" check_pid(){ if [ -f $UNICORN_PID ]; then PID=`cat $UNICORN_PID` SPID=`cat $SIDEKIQ_PID` STATUS=`ps aux | grep $PID | grep -v grep | wc -l` else STATUS=0 PID=0 fi } start() { cd $APP_ROOT check_pid if [ "$PID" -ne 0 -a "$STATUS" -ne 0 ]; then # Program is running, exit with error code 1. echo "Error! $DESC $NAME is currently running!" exit 1 else if [ `whoami` = root ]; then sudo -u gitlab -H bash -l -c "nohup bundle exec unicorn_rails $DAEMON_OPTS > /dev/null 2>&1 &" sudo -u gitlab -H bash -l -c "mkdir -p $PID_PATH && $START_SIDEKIQ > /dev/null 2>&1 &" echo "$DESC started" fi fi } stop() { cd $APP_ROOT check_pid if [ "$PID" -ne 0 -a "$STATUS" -ne 0 ]; then ## Program is running, stop it. kill -QUIT `cat $UNICORN_PID` sudo -u gitlab -H bash -l -c "mkdir -p $PID_PATH && $STOP_SIDEKIQ > /dev/null 2>&1 &" rm "$UNICORN_PID" >> /dev/null echo "$DESC stopped" else ## Program is not running, exit with error. echo "Error! $DESC not started!" exit 1 fi } restart() { cd $APP_ROOT check_pid if [ "$PID" -ne 0 -a "$STATUS" -ne 0 ]; then echo "Restarting $DESC..." kill -USR2 `cat $UNICORN_PID` sudo -u gitlab -H bash -l -c "mkdir -p $PID_PATH && $STOP_SIDEKIQ > /dev/null 2>&1 &" if [ `whoami` = root ]; then sudo -u gitlab -H bash -l -c "mkdir -p $PID_PATH && $START_SIDEKIQ > /dev/null 2>&1 &" fi echo "$DESC restarted." else echo "Error, $NAME not running!" exit 1 fi } status() { cd $APP_ROOT check_pid if [ "$PID" -ne 0 -a "$STATUS" -ne 0 ]; then echo "$DESC / Unicorn with PID $PID is running." echo "$DESC / Sidekiq with PID $SPID is running." else echo "$DESC is not running." exit 1 fi } ## Check to see if we are running as root first. ## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" exit 1 fi case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload|force-reload) echo -n "Reloading $NAME configuration: " kill -HUP `cat $PID` echo "done." ;; status) status ;; *) echo "Usage: sudo service gitlab {start|stop|restart|reload}" >&2 exit 1 ;; esac exit 0
Gitlab起動、自動起動設定
[mikito@nya ~]$ sudo chmod +x /etc/init.d/gitlab
[mikito@nya ~]$ sudo service gitlab start
[mikito@nya ~]$ sudo chkconfig gitlab on
[mikito@nya ~]$ chkconfig --list gitlab
gitlab 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iOSとAndroidのプロジェクトを統合する
最近cocos2d-xをよく勉強してます。
cocos2dのドキュメントはたくさん出てくるけど、
なかなかxのは出てこない...
読み替えたり、挙動が若干ちがったりと一苦労です。
前、環境構築の時にもすこし触れましたが、
最初に悩んだXcodeのプロジェクトとAndroidのプロジェクトどう統合するかの手順をもう少し詳しく説明します。
正規の手順かはどうだかわかりません。
Androidプロジェクト作成
cocos2d-xのルートディレクトリにターミナルで移動してcreate-android-project.shを実行します。
$ ./create-android-project.sh
ルートディレクトリに移動しないといけないのが何ともですが、
Bundle IDなどを入力すると無事プロジェクトが出力されます。
プロジェクトがcocos2d-xのルートに出力され、
ファイルがたくさんあってみづらいので、好きなところに移動させます。
自分はいつも~/Projectsってとこにいろいろ置いてます。
Xcodeプロジェクト作成
Xcodeを立ち上げCreate a New Xcode Projectで
Cocos2d-xを選びます。
こちらも手順どおりすすめて
さっき作ったAndroidプロジェクトの中に保存します。
XcodeのほうもMofuMofuというプロジェクト名で保存したので、
プロジェクト全体はこんな感じになります。
ここでいったんXcodeを終了させて
いま作ったXcodeプロジェクトのディレクトリ名をproj.iosに変更します。
こんな感じになります。
Xcodeプロジェクト設定
作成したXcodeプロジェクトを再度開きます。
XcodeからClassesを削除します。
またプロジェクト名/Resourcesの
CloseNormal.png
CloseSelected.png
HelloWorld.png
を削除して、アイコン画像やスプラッシュinfo.plistなどiOSアプリに必要なリソースだけにします。
次に、Androidプロジェクトと共有する
ClassesとResourcesのディレクトリをインポートします。
Fils -> Add Items To ....からproj.iosと同じ階層にあるClassesを選択します。
このときCopy Items Into...オプションは外します。
Resourcesも同様にインポートします。
最終的にXcodeはこんな感じになります。
これでXcodeの設定は完了です。
Runを実行してちゃんと起動すればOKです。
Androidプロジェクト設定
Eclipseを起動します。
File -> Importから
Android -> Existing Android Code Into Workspaceを選択
Cocos2d-xから出力したディレクトリを選択してインポートします。
ここで、Androidプロジェクトを移動してるのでLibraryの参照でエラーがでてます。
プロジェクト名をクリックしてでてくるProperties -> Androidメニューで
エラーになってるlibcocos2dxを削除します。
その後、環境構築でEclipseに追加してあったlibcocos2dxを再度設定します。
で、自分の環境だとAndroidManifest.xmlでもエラーがでてました。
どうやら生成されたアイコン名がiconからic_launcher.pngに変わってるらしく、そこを修正します。
次に、build_native.shを修正します。
COCOS2DX_ROOTを.bashrcとかに追加してある場合はコメント化、
それかCocos2d-xのルートディレクトリを直に設定します。
38 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
39 # ... use paths relative to current directory
40 # COCOS2DX_ROOT="$DIR/../.."
41 APP_ROOT="$DIR/.."
42 APP_ANDROID_ROOT="$DIR"
とりあえず設定はこれで終了です。
Androidでもビルドして起動してみます。
build_native.shを実行します。
$ .build_native.sh
Android機をつないで、
EclipseからRunします。
iOSと同じ画面が出たでしょうか。
実際の開発のながれ
Xcodeでソースなどを追加、編集、デバッグをメインでやって
ある程度機能ができたらEclipseでAndroidのデバッグって感じでしょうか。
jni/Android.mkにソースのリストを追加しないといけないないですし
まだまだ、わからいことが多いですが、
慣れてきたらそのうち開発自体のTipsものせていきたいです。
Node.jsとherokuで静的サイトを簡単につくる
Railsホスティングサービスherokuを使って、
無料かつ広告が挿入されてないホームページを作るってことをやってみました。
ただ、データベースもルーティングも使わない単たる静的ページにRailsを使うのも大げさだなぁと思い、
Node.jsを使ってみました。
テンプレートをGithubにあげておきました。
https://github.com/mikito/node-static-site
テンプレートといっても、必要最小限の機能を残しただけですが...
恐ろしくシンプルです。
下準備
まずherokuのアカウントをつくっておいてください。
さらにherokuのコマンドを使えるようにherokuツールもインストールしてください。
多分、アカウント作った後にherokuのダッシュボードの画面でダウンロードのリンクが表示されると思います。
herokuツールがインストールできたらターミナルからherokuにログインしておきます。
$ heroku login
Enter your Heroku credentials.
Email: ************@gmail.com
Password:
サイトつくってみる
Githubからテンプレをclone
$ git clone git@github.com:mikito/node-static-site.git mikinya-net
cloneしたディレクトリに移動
$ cd mikinya-net/
herokuアプリ作成
$ heroku create mikinya
herokuにアプリが作成され、さらにgit remoteにherokuが追加されます。
$ git remote
heroku
herokuにpushします
$ git push heroku master
一応プロダクション環境で起動しときます。
$ heroku config:add NODE_ENV=production
サイト開いてみます
$ heroku open
サイトの更新
サイトを更新する時はpublic以下を編集後、
git add、git commitしたあと再度
$ git push heroku master
です。
バージョン管理もできて一石二鳥だしFTPとか使わないので楽。なはず。
Cocos2d-x環境構築
以前ハッカソンをやったときにCocos2d-xを触ってみたのでそのときのメモ。環境はMac
ダウンロード
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Downloadからcocos2d-2.0-x-2.0.4みたいのをダウンロード。解凍したファイルを任意のフォルダに移動 。
iOS 手順
テンプレートのインストール
sh cocos2d-2.0-x-2.0.4/install-templates-xcode.sh -u
プロジェクト作成
- Xcode起動
- 新規プロジェクト作成
- cocos2d-xテンプレートが追加されているので選択
- 作成されたプロジェクトをRunすれば起動する
Android 手順
.bash_profile等でSDK Path設定
export NDK_ROOT="/SDKs/adt-bundle-mac/ndk/"
export ANDROID_SDK_ROOT="/SDKs/adt-bundle-mac/sdk/"
EclipseにCocos2dxライブラリをインポート
- file->importを選択
- Existing Projects Into Workspaceを選択
- Select root directoryでcocos2d-2.0-x-2.0.4フォルダの下の、cocos2dx/platform/android を選択
- Finishを選択してlibcocos2dxをインポート
- このときcopy projects into workspaceにチェックを入れないようにする
Android Project作成
ビルド
proj.androidにあるbuild-native.shを実行。このとき、Android Projectをcocos2d-2.0-x-2.0.4/から移動してるとエラーになるので.bash_profileに以下を追加
export COCOS2DX_ROOT="/SDKs/cocos2d-2.0-x-2.0.4"
さらに、build_native.shのCOCOS2DX_ROOTをコメント化
#COCOS2DX_ROOT="$DIR/../.."
これで、一応Eclipseでビルドして実行できるようになる。
やや無理矢理な感じがするけど、cocos2d-x直下にandroidプロジェクトを置けってことなんだろうか...
ちなみにソースを追加した場合jni/Android.mkのリストにも追加する必要がある。
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/GameOverScene.cpp
iOS、Androidソース統合
Androidプロジェクト作成後、Xcodeプロジェクト作成して、ディレクトリ構成を以下みたいにして、Xcodeプロジェクトごちゃごちゃいじった。もっと効率的に作成する方法があるんだろうか。
Hackathon/
├── Classes # Android、iOSともにこのディレクトリのソースを参照
├── Resources # Android、iOSともにこのディレクトリのリソースを参照
├── proj.android
│ ├── assets
│ ├── bin
│ │ ├── classes
│ │ └── res
│ ├── gen
│ │ └── jp
│ ├── jni
│ │ └── hellocpp
│ ├── libs
│ │ └── armeabi
│ ├── obj
│ │ └── local
│ ├── res
│ │ ├── drawable-hdpi
│ │ ├── drawable-ldpi
│ │ ├── drawable-mdpi
│ │ ├── drawable-xhdpi
│ │ ├── layout
│ │ └── values
│ └── src
│ ├── jp
│ └── org
└── proj.ios
├── Hackathon
│ ├── Resources
│ ├── ios
│ └── libs
└── Hackathon.xcodeproj
├── project.xcworkspace
└── xcuserdata