Amazon Campaign

2013年10月22日火曜日

Xcode5 スタックトレース(バックトレース)の確認方法

Xcode5 になってコマンドラインのデバッグツール gdb が標準でインストールされなくなってしまったので、エラーが発生した際には lldb を使ってスタックとレース(バックトレース)を確認します。

使い方はとても簡単です。エラーが発生したらデバッグコンソール(Debug Area)で "bt" (Back Trace) とタイプし enter するだけ。

下のwindowの緑色の文字 "(lldb)" のところに入力します。 

2013年10月15日火曜日

ベラルーシ戦 ブラジルWCはザッケローニと心中だ

セルビア、ベラルーシとの連戦、予想以上に残念な結果となりました。

まさか、これまで以上にメンバーの固定化に向かうとは予想を遥かに超えていました。まるで何かのタイトルが掛かっているかのような現状でザックが考えているベストメンバーへの固執。
ベラルーシ戦の後半などは、あれだけゲームが停滞していたのだから、ドリブルで打開が出来る清武、乾を出すには絶好のシチュエーションだったのにもかかわらず、結局最後はいつものハーフナー投入だけというアイデアの無さ。 

さらにはちょっとだけ試した3バック。なにか得るものあったのでしょうか。
ザックがいう3バック、もとい3トップは信頼できるフォワードがいないためのゼロトップというのが真実でしょうね。

さらにはメンバー酷使による本番でのコンディション不良も大いに懸念されます。こんな状況で南アフリカ以上の成績なんで、とても望めるものではありません。 

今までのマネジメントを見る限り、岡ちゃんのような大会直前での大改革をやる度胸を持っているとはとても思えませんし、残念ながらザックで行く以上ブラジルは期待できそうもありません。

 無理とはわかっていますが、オシムに代わって欲しいです。

2013年10月6日日曜日

FuelPHP を Google App Engine for PHP で動かす

FuelPHP を GoogleAppEngine for PHP (gae)で動かしてみました。

※2013/10/14 ひとまずデプロイして動作するようになったので記事を更新しました。
※2013/10/16 log出力パッチを公開しました。

環境

GoogleAppEngineLauncher(GAEの開発環境)が Webサーバも兼ねているので Apache は不要です。


  • OSX 10.8.5
  • GoogleAppEngineLauncher 1.8.5
  • PHP 5.4.20
  • FuelPHP 1.6


まずは環境定義をします


GAE にデプロイすると当然 URL がローカルとは異なりますので、とりあえずローカルとデプロイ先で環境を切り替えるように定義しておきます。ここではローカルを "development" デプロイ先を "production" とします。Fuel はサーバ変数 "FUEL_ENV"  の値で切り替えられます。GAE の場合は app.yaml で定義可能です。

env_variables:
  FUEL_ENV: 'production'
#  FUEL_ENV: 'development'


app.yaml でリクエストをハンドルする


FuelPHP は全てのリクエストを /public/index.php に処理させる仕組みとなっているので、/public/assets 配下へのアクセスは静的ファイルとしてアクセスさせる必要があります。
そのハンドリングを標準では Apache の .htaccess で行いますが Google App Engine では、それをアプリケーション設定ファイルである app.yaml の handlers で指定してあげます。同様に favicon.ico についても静的ファイルとして設定します。


handlers:
 
# assets dir
- url: /assets
  static_dir: public/assets
 
# favicon file
- url: /favicon.ico
  static_files: favicon.ico
  upload: favicon.ico
 
# php files
- url: /.*
  script: public/index.php


ローカル環境ではこれだけで動いてくれるのですが、GAE に上げると色々あり、以降の設定が必要です。

localでの起動画面
ローカルでは動くのですが。。。


base_url を設定する



GAE に上げた際の URL を定義します。production 環境でのみ有効となるように、production 用の設定ファイルである下記ファイルへ定義します。必要な項目のみ差分で定義できます。


/fuel/app/config/production/config.php

'base_url' => 'http://{your_app_id}.appspot.com/',


logファイルは出力できないのでパッチを作りました


GAE 上ではlogファイルの出力は行えませんので、下記設定で出力しないようにすることで回避は可能です。

/fuel/app/config/production/config.php

'log_threshold'    => Fuel::L_NONE,


ただ、これでは実用的ではありませんので Fuel の Logクラスを改修して、GAE でログ出力を行うためのパッチを作成しました。単純に /fuel/core/classes/log.php のファイル出力部分を syslog() に置き換えただけです。GitHub に公開しましたので自由に使ってください。

https://github.com/isatan/FuelPHP4Gae_patch


/fuel/core/classes/log.php を置き換えるだけで下記のように GAE のコンソールに出力されるようになります。

log をファイル出力すると 500 エラーにもかかわらず何も出力されません。

パッチをあててもらうと Fuel の log 出力も debug log も出力できます。

locale を指定する


Fuel のデフォルト locale は "en_US" ですが、GAE では指定できないようです。いくつか試したところ、Cロケールは認識してくれました。

/fuel/app/config/production/config.php
'locale' => 'C',


assets 関連ファイルは絶対 URL で指定する


どういうわけか、base_url を指定しているのもかかわらず assetes 関連のファイルを見つけてくれず、bootstrap.css の読み込みでエラーになってしまいます。assets 用の設定ファイルに下記の設定することでエラー時に強制実行させることができますが、それでは link タグを出力してくれません。

 /fuel/app/config/production/asset.php


'fail_silently' => true,


仕方がないので view ファイルでの assets 関連ファイルの指定は絶対 URL で指定することにします。

/fuel/app/views/welcome/index.php

echo Asset::css('http://{your app id}.appspot.com/assets/css/bootstrap.css');



動きました

これで FuelPHP の welcome 画面は表示できるようになりました。ここで修正した app.yaml, config.php, log.php は GitHub に上げてありますので自由に使ってください。

https://github.com/isatan/FuelPHP4Gae_patch

ただ、assets ファイルの指定はいただけないので今後なんとかしたいですね。


ようやく appspot.com 上でも Welcome! が拝めました。


2013年10月5日土曜日

FuelPHP まとめ

仕事で利用したPHPのフレームワーク「FuelPHP」がとても便利だったのでコツをまとめておきます。順次以下を項目を予定。




2013年10月4日金曜日

FuelPHP 実行したSQLクエリをdebugログに出力する

FuelPHPで実行したSQLをログに出力する場合、DB::last_query() を使います。最後に実行したSQLが取得できるので、Model内のクエリメソッド内で出力させるといいですね。
$result = DB::query("select * from productusers where product_id = $product_id", DB::SELECT)->as_object('Model_Productuser')->execute();
Log::debug('[sql:'.get_called_class().']'.DB::last_query());

2013年9月7日土曜日

グアテマラ戦 ドン引き相手で得るものはあるのか?

2013年9月6日のグアレマラ戦。
ドン引きな相手との試合はつまらないと改めて思う。敵陣で長い間パスを回してはフィニッシュの際にブロックされるか精度を欠いてゴールを外すことの繰り返し。

完全に引いてしまっている相手に対して、押し込んで同じペースで攻めているのではこなることは当然せす。
あえて相手にボールを持たせて攻めさせるとか、大きなサイドチェンジを徹底するとかチームとしての戦術が必要で、そういうことを監督が授けなかればんらないと思うのですが、ザッケローニにはそういうことは期待できそうもありません。
改めてザッケローニの監督としての資質に疑問を持たずにはいられません。

ザッケローニの選手選考に注目が集っていますが、一方的な展開で変化のない試合において、はたしてどれだけ選手の評価が行えるのか疑問です。そもそも、これだけ力の差がある相手とホームで試合をする価値は収益以外にあるのでしょうか。

いちサッカーファンとしてもう少し楽しめる試合を観たいと切に思います。

2013年8月15日木曜日

豊田を投入したものの意図持たぬザック ウルグアイ戦

ウルグアイ戦、「融合」と言いつつ招集していない前田の代わりに柿谷がトップに入っただけで、それ以外は何も変わっていないスタメンに少なからず驚かされました。問題視されていたディフェンス陣すらも。ある意味ザックらしいといえばその通りなのですが。

また、選手交代で何らかの意図が見えないのも相変わらず。特に後半、せっかく豊田を投入したにもかかわらず、選手たちはそこを意識して使おうとする意図は全く見えず、監督から何の指示も与えられていないことは明白でした。
そうなると残念ながら、どこかのサッカー番長が言っているように「引き出しの少ない」「交代がことごとく下手」な監督としてしか観れません。

「ここはらは世界モードへのシフトだ!」と言って出し惜しんでいた引き出しの中身をドーンと見せてくれるような、ボクらの期待を裏切るようなことは。。。ありそうもないですね。
せめて田中さんを呼んでくれるぐらいはして欲しいと淡い期待を抱きつつ、9月の試合を楽しみにしたいと思います。

Amazon_ad