LOGSTACK

Tips for programming

Blog

  • 8月 28 / 2014
  • 0
PHP

php 5.4 用のシステムを 5.2 で動く様にする

PHP5.4向けの自作フレームワークで作成したシステムが、
納品直前でサーバがPHP 5.2であることが判明しました。

結局エンジンを5.2用に改造することになったのですが、
かなり手間がかかりましたので、今後のために要点を記録しておきます。

1.無名関数が使えない

無名関数が使えないので、これはひたすらに外だし。

2.オートローダーに無名関数が使えない

上記にも関連しますが、spl_autoload_register()に関数の直指定ができないため、
これを外だし。

などとやっていたのを、

のように改造

3.クラス名を変数にして、staticメソッドを呼べない

が出来ない。これらは全部、call_user_func() で代用する。

4.get_called_class() が使えない。

上記コードが動きません。
ネットで探すと、debug_backtrace()をパースする方法が代替メソッドとして例がいくつかありましたが、
どれもこれも完全には動作しませんでした。

そんな中、デフォルト引数に __CLASS__ を渡すという方法で
対処する手法が紹介されているのを見つけました。
http://qiita.com/Hiraku/items/2f4e3c146857010b4ff6

これすごいな!と感動し、試してみました。
サイトにも書かれていますが、上記コードを例にとると、

要は派生先に同名のメソッドを追加し、__CLASS__を親へ親へと渡していき、起因となるクラスを特定します。
ちょっと面倒くさいですが、debug_backtrace()を使うよりは確実と思います。

5.アクセサで同様の問題

が動きません。
4.の方法をそのまま適用すると、

という定義になり、「ゲッターに引数二つ指定できないぜ」と言われます。
仕方がないので、継承先クラスに BASE のゲッターをそのままコピペしました…。
いい代替法があるのだろうか?

6.$_POSTで、フォームからpostしたデータが取得できない

これが一番悩みました。
$_GETは受け取れる。しかし、$_POSTがどうしても空になってしまう。
なんで???と、悩むこと丸一日。

これで、内容が空になってしまうという…。
最終的に、.htaccessを消してみたら動いたので解決。

と書いていたのがまずかったようで、
“2G”を、”100m”に変更したら取得できるようになりました。
Gという単位が使えないのか、もしくはwin32バージョンだからなのか…
理由までは追いませんでしたが。

これでなんとか動作させることが出来、
5.3以上のありがたみを改めて実感したところです。


  • 8月 05 / 2014
  • 0
iOSアプリ開発

iPhoneアプリ開発:ログファイルへの出力

例えばカメラやGPS、実機を使ったテストを行い場合など、
NSLog()で標準出力に出すログの他に、ファイルにも出して確認したい場合の実装サンプルです。


  • 6月 16 / 2014
  • 0
DB

MySQLをコマンドラインから接続

DBツールなどが入っていないサーバも多いため、
MySQLをコマンドラインから操作する手順のメモです。

コマンドラインからMySQLへ接続する。

データベースを選択する。

テーブル一覧を表示する。


  • 5月 20 / 2014
  • 0
cocos2d-x, iOSアプリ開発

CCTMXTiledMapで、空のレイヤーを含むtmxファイルを読み込む

cocos2d-xで、CCTMXTilesMapを使っている場合の話です。

地図情報を”Tiles”というアプリで作成し、出来上がったtmxファイルを
CCTMXTiledMapで読み込み、画面へ展開します。

Tilesではマップ情報をレイヤーで管理できるため、
あらかじめレイヤーを複数作成しておいて、後で少しずつ入力していく方法をとりたいのですが、
レイヤー内にブロックが一つもなかった場合、CCTMXTilesMapへの読み込み時にエラーが出てうまくいきません。

これを修正したコードをのせておきます。
ブロックが配置されていないレイヤーがあっても、読み込みと表示が出来るようにはなります。

CCSpriteBatchNode.cpp #668

◎ 変更前

◎ 変更後

CCTMXTiledMap.cpp #132

◎ 変更前

◎ 変更後

CCTMXTiledMap.cpp #217

◎ 変更前

◎ 変更後

※開発者ではありませんので、この修正が正しいのかはわかりません


ページ:12345