Warning: array_keys() expects parameter 1 to be array, object given in /export/sd09/www/jp/r/e/gmoserver/8/7/sd0135687/torokeru.tv/mameblog/wordpress-2.8.2-ja-undernavicontrol/wp-content/plugins/script-compressor/script-compressor.php on line 348

Warning: max(): When only one parameter is given, it must be an array in /export/sd09/www/jp/r/e/gmoserver/8/7/sd0135687/torokeru.tv/mameblog/wordpress-2.8.2-ja-undernavicontrol/wp-content/plugins/script-compressor/script-compressor.php on line 348
2013 9月 | まめも

Monthly Archives: 9月 2013

シングルトンのテンプレートって

久々にC++でシングルトンを書く事があって、昔はテンプレート化してたなーと思いつつ
「シングルトン テンプレート」で、ぐぐれば色んなエントリー出るんですね。
多様な書き方があるなーと思いつつ、久々にシングルトン書いてみた。

#ifndef __SINGLETON__
#define __SINGLETON__

/*! @class Singleton
    @brief シングルトン
*/       
template <typename T> class Singleton
{
private:
    /** コンストラクタ */
    Singleton(void)
    {
    }

    /** デストラクタ */
    ~Singleton(void)
    {
    }

    /** コピーコンストラクタ(使用禁止) */
    Singleton(const Singleton& single);

    /** 代入演算子(使用禁止) */
    const Singleton& operator = (const Singleton& single);

public:
    /*! 共通ポインタの取得
    @param[in]      none
    @return         T 唯一の静的インスタンス
    @exception      none
    */
    static T* sharedSingletonPtr(void)
    {
        if (!_pSingleton) _pSingleton = new T();
        return _pSingleton;
    }

private:
    static T*  _pSingleton;            //!< 唯一のインスタンス
};

//---- 唯一のインスタンス静的変数
template <typename T> T* Singleton<T>::_pSingleton = NULL;

#endif  //__SINGLETON__

で、これを使う側。

class Hoge : public Singleton<Hoge>
{
friend Singleton<Hoge>;
private:
/** コンストラクタ /
Hoge();
/* デストラクタ */
virtual ~Hoge();

public:
int getPiyo()
{
    return piyo;
}
private;
int piyo;
}

/*! @brief アクセスインターフェース
/ 
inline Hoge* HogePtr(void)
{
    return Singleton<Hoge>::sharedSingletonPtr();
}

言いたい点はここ

friend Singleton<Hoge>;
private:
/** コンストラクタ /
Hoge();
/* デストラクタ */
virtual ~Hoge();

コンストラクタ部分をpublicにしている人もいるけど、そもそもpublicにしてしまうと、
Hoge hoge;
でインスタンスつくれてしまう

wikiでもいうとおり、

そのクラスのインスタンスが1つしか生成されないことを保証することができる

というからには、privateにする必要がある。
ただ、そうなると、singleton.hで

if (!_pSingleton) _pSingleton = new T();

が呼び出せなくなってしまうので、

friend Singleton<Hoge>;

でSingletonからはアクセス可能にする為、穴をあける。

// Example:
HogePtr()->getPiyo();

UnityをiPhoneで試してみた

はれてiOS Developerの仲間入りしたので、ひっかかっていた証明書を落としてくる

iOS Developer Programに行って
メンバーセンター→ログイン
Certificates, Identifiers & Profilesというのがそれっぽいのでクリック!

iOS AppsのCertificatesがそれっぽいのでクリック!!

証明書っぽいのがでるので、その中にクリックできそうなCertificate Signing Request という部分があったのでクリック!!!

What type of certificate do you need?

坊やはどんな証明書が欲しいんだい?
的な事を聞かれるので、言ってやったんだ
開発(iOS App Development)するのさ! 配布(App Store and Ad Hoc)も予定してるよ!ってね

続きは[iOS Provisioning Portalがついにリニューアル! とりあえずどんなものか]が詳しいので割愛。

キーチェーンアクセスで証明書を作っておく必要はある。

証明書もダウンロードできて、キーチェーンアクセスに登録できたので、これでいけるか!?と
再ビルドしてみたけど、まだできず、、

App IDを登録する必要があるらしい

[Xcodeで実機デバッグをするまでの手順(スクリーンショット付き)]とかを参考にしつつやってみたけど、

App ID Suffixは
Explicit App IDは実際に配布する時にはユニークで取得して、
Wildcard App IDは開発用で使い回すように取得しとけばいい感じかなぁと、、

App Serviceも登録後に編集できるようなのでスルー


Unity側
Bundle Identiferを変更する
最初、APP IDだけを入れていたけど怒られたので
com.{APP_ID)
的な名前にしたら通った、、 ここら辺ルールがあるのかな

iPhone0928

という感じでビルドしたらiPhoneで表示する事ができました!
ちゃんとTouchも動いてていい感じ! 操作性はボロボロだけど!

iOS Developer Program 購入だん

さぁUnityでキャラも出た事だし、iPhoneでやってみるかーー
と試してみたら

Code Sign error: The identity 'iPhone Developer' doesn't match any valid, non-expired certificate/private key pair in your keychains

証明書期限切れてるよ!な感じで怒られた。。

エラーメッセージでググるとキーチェーンをこねこねすると直るという事なんですが、

そもそも証明書なんて取ってない!
に登録が必要という事なので登録してきました。

登録手順は参考に。

で、Activation Codeが送られるのに結構かかるという記事をちょこちょこ見てたのですが、
僕の場合は10分くらいで返信がが。

メールでActivation Codeが送られてくるので、それを選択すると
We are unable to activate your Apple Developer Program membership
まさに、ここで詰まる、、、
この時点で8000円で購入しているので、認証とおらないとちょっとイラッとくる。
ソシャゲでいうとガチャ引いたけどカードは付与されないようなもん。

ただ、その下に「連絡メール送るからちょっと待ってね!」的な事が英語で書かれてたので、
信じて待つ。5分待つ。10分待つ。30分待つ。1時間待つ。寝る。

次の日の朝にApple Developer Program Support(日本語窓口)からメールが!
英語で質問されたらどうしよう! 不安で寝れない!
という事も無く普通に寝てたんですが、日本語でとりあえずヨカタ!

内容的には
Apple IDに登録している名前と住所を全部ローマ字に変更してね!
という、、 海外の方が目diffでアカウント管理してるんかね。

いわれた通りローマ字で変更し、Supportに返信(日本語で

数時間後に再度返信が来て、
またActivation Codeを押してね! それでうまくいくよ!
という内容だったので、前のメールを探してActivation Codeを再選択!
→この時点で前のメールが迷惑メール入りしてて探すのに時間ロス

晴れて登録できました!

え、iOSに転送はまだですよ

mecanim触ってみた

モデルの骨を入れるのが一番苦労、、
blenderで頑張ってたけど、結局みじょに骨いれてもらいました。

モデルはここからDL
ってか色んなモデルがあるので、これはこれで個人でなら楽しめるかも?
製品とするなら色々問題でそうですがが

アニメーションはAsset Storeでmecanimで検索するとひっかかる無料のやつです。
Mecanim Lomotion StarterとかMecanim Example Scenesとかね!

あのアルタイルがこんなに簡単に動くのはUnityだけ!

sublime text 3めも。emacs風(時々追記)

ログインすら忘れてて、1年以上放置してましたが、久々のメモ

ここ1年はお仕事の方で、webアプリ2〜3本リリースしたり、数回心折れそうになったりしてました。

で、最近新しい仕事に移ったという事&unity熱がまた発足したので、一時復活中です。

とりあえず気分転換の一つとしてエディタを乗り換えようかと思った訳で。
さよならemacs! ありがとうemacs!

と、いうわけでここからは自分用メモ。
細かいインストール方法とかは調べたらたくさん転がってるので割愛。
インストールしたパッケージとかを書いてます。

sublime text 3のダウンロード

ここからダウンロード


package control

package controlは入れなきゃ始まらない。

↑が見れなかった時の為の呪文。
View→Show Consoleに入力

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

sublemacsproのインストール

emacsのキーバインドにしてくれるパッケージ。
command + Shift + PでPackage controlを開き

Package Control : Add Repository

https://github.com/grundprinzip/sublemacspro

を入力。

Package Control:Install Package

sublemacspro

が出てくるので、インストール。


さらにemacs風に

カーソル移動はsublemacsproを入れるだけでemacsに近づいたけど、
ctrl + m(改行)とかが効いてない。
Preferences→Key Bindings – User
に追記。
Userの方を優先してくれるらしい。

emacsでは鬼軍曹を入れていたので、それにそった形で設定を上書きする。
多分まだ足りない

[
	// Key bindings like Emacs.
	{"keys": ["ctrl+m"], "command": "insert", "args": {"characters": "\n"}},
	// close
	{ "keys": ["ctrl+x","ctrl+k"], "command": "close" },
	// save
	{ "keys": ["ctrl+x","ctrl+s"], "command": "save" },
	// side_bar focus
	{ "keys": ["ctrl+x","l"], "command": "focus_side_bar" },
	// tab
	{ "keys": ["ctrl+i"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
	{ "keys": ["ctrl+i"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
		"context":
		[
			{ "key": "setting.tab_completion", "operator": "equal", "operand": true }
		]
	},
	// find show panel
	{ "keys": ["ctrl+s"], "command": "show_panel", "args": {"panel": "find", "reverse": false} },
	// Find panel key bindings
	{ "keys": ["ctrl+s"], "command": "find_next", "context":
		[{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
	},
	{ "keys": ["shift+enter"], "command": "find_prev", "context":
		[{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
	},
]

※追記の可能性あり


Theme

SodaとかFlatlandとか試してみたけど、Phoenixに落ち着きました。

Install packegeからPhoneixを追加して、
Settings -Userに追記

	"indent_to_bracket": true,
	"phoenix_color_green": true,
	"phoenix_eighties": true,
	"phoenix_highlight_current_tab": true,
	"phoenix_sidebar_tree_large": true,
	"phoenix_solid_current_tab": true,
	"theme": "Phoenix Dark.sublime-theme",
	"translate_tabs_to_spaces": true

細かい設定はここ見ながらで。


おまけ

やたらキーリピートが遅く、KeyRemap4でも変わらないので調べてみたら

defaults write com.sublimetext.3 ApplePressAndHoldEnabled -bool false

をターミナルで叩かないといけないらしい、、
sublime2の場合は2の所を3にしたらうまくいく?