fuelphpでhaml導入したった
またfuelphpネタです。
fuelphpでhamlつかおうって話になり、とりまいれることになったんだけど、なんでこんなつまづいたのか...
無力すぎて泣ける... orz
ドキュメント読んでわかんなかったところなど、なかなかつまづいたのでメモ。
まず、公式ドキュメントではhaml使うなら、ドライバーなんもないからcomposerから"必要なやつ"入れてね!的なことが書いてあったので、pakagistにあるmthamlをいれた。
まずここ。
mthaml使おうとしたとき、 既存のものだとParser\View_HamlTwigをつかうことになりーの、自ずとtwigも一緒に使うことになると。
Parser\View_HamlTwigって、継承関係が Parser\View < Parser\View_Twig < Parser\View_HamlTwig になってる。
Parser\View_Hamlあるんだけど、こいつ使うなら、fuel/package/config/parser.phpをみると、PHamlPを使わないとあかんらしい。(Parser\View_Haml != Parser\View_HamlTwig?)
mthamlの方が、packagistにあるし、twigも勉強できる良い機会!とか無理矢理ポジティブに考えて、Parser\View_HamlTwigを使う事に。
次。
sample.mthamlとかいうviewファイルがあったとする。
デフォではviewファイルの拡張子 .mthamlのやつがあれば、 Parser\View_HamlTwig::forge("sample")で表示してくれるような雰囲気を感じていたのですが。。。
で、できね。。。orz
とりま最低限表示されるところまでいこうと思い、やった対策。
1. Parser\View_HamlTwig::forge("sample.mthaml")のように、拡張子もちゃんと書く。
2. fuel/app/configにparser.phpを追加。
<?php return array( 'extensions' => array( 'mthaml' => 'View_HamlTwig', // ① default: 'mthaml' => array('class' => 'View_HamlTwig', 'extension' => 'twig'), ), 'View_HamlTwig' => array( 'environment' => array( // ② default: true 'auto_escaper' => false, 'escape_html' => false, 'escape_attrs' => false, ), ), );
デフォのまんまだと、
① 内部でsample.twigを探しにいって、んなもんねーよでオワタ
② html系の文字がエスケープ処理されて、えらいもん表示される
以上。
動いてよかった(´・ω・`)
P.S. fuelphpでtwig使うとき、Twig_Fuel_Extensionがデフォってて、
<?= Asset::img("sample"); ?>
てのが
{{ asset_img("sample") }}
とか、使えるようになってる!!
すばらしかー
...と、思いきや、Twig_Fuel_Extensionの中身みると、足らないメソッドがある。。。orz(ex. Form::csrf()とか)
ここらへんの設定方法が、詳細に書かれているブログを発見しますた!
参考:
FuelPHPでTwig Extension #FuelPHPAdvent2013
ありがとうございます!
Vimで最短一致
vimで最短一致が思うようにいかなかった。
例えば、
```
spring-android-showcase - The showcase contains client and server apps, and illustrates the features of Spring for Android.
spring-android-news-reader - The news reader highlights the use of the Android ROME Feed Reader by retrieving RSS and Atom news feeds.
spring-android-twitter-search - The Twitter search app demonstrates an Android project including Spring for Android jars without the use of Maven's dependency management.
spring-android-twitter-client - A Twitter client demonstrating Spring Social on Android
spring-android-facebook-client - A Facebook client demonstrating Spring Social on Android
spring-android-basic-auth - These client and server applications show how to make Basic Auth requests using RestTemplate on Android and connecting to a Spring MVC site.
```
上記の文章で、spring-android-????-を抜きたいとき、
before:
/spring-android-.*?-/
とやろうとしたらうまく行かない。
エスケープだろうとごにょごにょしたら、
after:
/spring-android-.*\\\?-/
でうまくいった。
エスケープ、大杉蓮ですな (´・ω・`)
調べたところ、vimで最短一致は若干特殊な記法があったった。
before:
/spring-android-.*?-/
after:
/spring-android-.\{-}-/
ec2にphpGOGO!
前回に続き、phpネタです・
AmazonLinuxでphp5.5系いれたい!
php55をいれると、macと違って、mongo.soがデフォってた。
[Path]
/usr/lib64/php/5.5/modules/
しかし、mysqlがなひ。
やったこと。
1. $ yum install mysql
2. $ yum install php55-pdo
dep1. $ yum install re2c
dep2. $ yum install mysql-devel
(いるの?) $ yum install php55-mysqlnd
3. $ pecl install pdo_mysql。。。
で、こけた。
configure: error: Cannot find php_pdo_driver.h.
なので、
手動で落としてきて、
phpizeして
./configure --with-pdo-mysql=
すると、pdo_mysql.soができる。
。。。といろんな方々がおっしゃってました。
実際、pdo_mysql.soができたにはできたのだけど、pecl install pdo_mysqlで未だこける。
どのタイミングでできたんだ...
P.S.
古いphpでいれたmongo.soはphpだけ新しくても、pecl install mongoで
新しいのあるから無理っしょ。
と、返されるので、uninstall->installやり直し!
以下、追加で入れたモジュール群
==================
re2c
mysql
mysql-devel
php55-mysqlnd
php55-pdo
php55-mbstring
php55-gd
==================
PullToRefresh と SSLPeerUnverifiedException にはまった話
1. Android-PullToRefreshが非推奨になって、ActionBar-PullToRefreshを使わないといけないって話で、こけた。
ActionBarでTabを制御してた際、AsyncHttpClientのコールバックメソッド内でUIをいじると、現在触れてない他のTabのfragmentが動き出した。。
ただ動くならいいんだけど、PullToRefreshLayoutAttacher.addHeaderView~:594がヌルポとか・・・orz
とりあえず、諦めました。。
2. javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
うさんくさいエラーに悩まされた。。
原因わかんなくてググってたら、証明書エラーを搔い潜る方法があがってたりしたけど、
主原因は、まさかの、端末時刻ズレズレで認証はじかれてたとかw
恥。
参考 -> http://mizoguche.info/2012/06/androidでssl通信するとsslpeerunverifiedexception-no-peer-certificate/
ありがとうございました m(_ _)m
MacでFuel+MongoDB
MarvericsでデフォのPHPは5.4.17。
PHP5.5系入れたい。。。
Mongoも入れたい。。。
そこで登場、Homebrew。
Mongoはいつもどおり。
PHPはtapでリポジトリ追加する手間はあるものの、いつも通りスラーって入れられる。
で、ここからめんどくさい設定ラッシュ。
1. PHPの設定
# LoadModule php5_module libexec/apache2/libphp5.so
コメントアウトされてるっていう。
そして、モジュールのパス。
[Default]
/usr/libexec/apache2/libphp5.so
[Homebrew]
/usr/local/Cellar/php55/5.5.8/libexec/apache2/libphp5.so
2. DocumentRoot
publicフォルダまでいれたろう。
3. <Directory />
AllowOverride All
Allow from all
4. <Directory "<workspace>">
追加。
続いて、php.iniに追記(/usr/local/etc/php/5.5/php.ini)
date.timezone = Asia/Tokyo (最初コメントアウトされてる)
extension=mongo.so
(※ もし標準のPHPを使用する場合、下記の処理が必要
$ sudo cp /etc/php.ini.default /etc/php.ini(権限も一緒に))
最後に、mongoのphp driverのインストール。
$ sudo pecl install mongo
ここで、mongo.soが配置される場所に注意!
[Default]
/usr/lib/php/extensions/no-debug-non-zts-20100525/mongo.so
[Homebrew]
/usr/local/Cellar/php55/5.5.8/lib/php/extensions/mongo.so
どのPHPを使って、どこに何が保存されているか、常に把握していないとあとで事故る。
そして、今日事故った。
なので、備忘録。
P.S.
<?php return array( 'dsn' => 'dbname=fuel_dev;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock' );
と記述するとおもうのですが、パラメータ間のセミコロンはあくまでデリミタであって、ステップ終了のセミコロンではありません。
故に、勢い余って最後にセミコロン入れたもんなら、No such file とかでエラーでまくって事故ります。
お気をつけて!