サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
polidog.jp
Symfony Advent Calendar 2014 - Qiita の5日目の記事です。 SymfonyでBackboneJSやAngularJSを利用したアプリケーションを使うときってどうやって作ってますか? 僕の場合はサクッと作りたい場合はFOSJsRoutingBundleとFOSRestBundleを利用しています。 今日はそんなFOSJsRoutingBundleについてさっくりと書いていきたいと思います。 そもそもFOSJsRoutingBundleとは? FOSJsRoutingBundle SPA(シングルページアプリケーション)な環境でSymfony2を利用してる場合に、Js側でもルーティング周りを統一できるBundleです。 Tiwgでpath()関数と同じ機能をJavaScript側にも提供してくれる非常に便利なBundleです。 FOSJsRoutingBun
Android系の開発をするときにわりと必須になりつつあるGenymotion。 やっぱAndroidエミュレータ使うより早いし便利ですね。 そんなGenymotionですが、僕の愛するMBAでは動作しませんでした。 起動すると以下のようなエラーが・・・ Unable to start the Genyotion virtual device. The Genymotion virtual device could not obtain an IP address. For an unknown reason, VirtualBox DHCP has not assigned an IP address to virtual device. Run the VirtualBox software to check for issues. For more help refer to: ht
www.polidog.jp
最近だとCI使って自動テストしてます系の会社も多いのかと思います。 有名なCIとしてあるのはjenkinsがありますよね。ただ最近はJenkins以外のツールも出てきています。 そこで、ここ最近CIツールがいくつか出てきたので調べてみました。 そもそもCIツールとは? 継続的インテグレーションを自動化するためのツールであるわけで、テストの自動化とかビルドの自動化とかが中心なツールですよね。 まあ僕はWebアプリケーションエンジニアと呼ばれるクラスタなので、ユニットテストの自動化とpushしたタイミングとかで自動的にやってくれる便利なツールぐらいの認識ですが・・・ 最近は様々なCIツールができてました。webサービスとしてでているのでCIツール用のサーバを用意したりってのもいらなくて非常に便利です。 あといろいろな言語に対応してたり、yamlで簡単に設定書けばいいとかJenkinsに
テストという言葉の定義はどこにあるのか?人によって、関わる仕事によってPHPerの中でもテストという言葉の認識のズレがあるなーと感じている今日この頃です。 人によってはモンキーテストと呼ばれる懐かしい物をさす人がいる。また、受け入れテストを想像する人もいるだろう。イケてるエンジニアの人々にはユニットテストを想像する人もいるかと思います。 MVC(MVC2的なMVC)におけるモデルにも同じ事が起きていることにみんな気づいているだろうか? 僕は最近このモデルの認識のズレがあるような気がします。まあ、モデルとは一口にいってもいろいろなモデルがある訳で、それぞれが違っている意味合いになってくるので仕方ない事でもある気がします。 ただその違いがうまく認識できないと、コミュニケーションの齟齬というか、そういったことが起きる。 そもそもMVCとは? 今回はWEBアプリケーション(PHP)界隈で言われるM
こんばんは、最近またSymfony2やcomposerに触れる機会が増えてきた僕です。 さて、今日はcomposerでinstallやupdateしたら、ライブラリがメンテされてなくて依存関係でインストール出来なかった時の対処法をお教えします。 phpforce/salesforce-bundleをインストールしようとしたら、composerでこけたんですね。 原因としては、phpforce/salesforce-bundleのcomposer.jsonの中で、phpforce/soap-clientを指定してたんですが、そのphpforce/soap-clientのcomposer.jsonで指定してたdoctrine/commonの値が「2.3@stable」になってたからぽいです。 さらに、phpforce/soap-clientのcomposer.jsonでphpforce/com
正月休みも終わり、すっかり忙しい日々に戻ってしまった僕です。 さてさて、今日はvagrantで時刻がおかしい場合にどのような原因があるのか?どのような対応をすればいいのかについて書いていこうと思います。 1. UTCになってしまっている場合の対処法 まずCentOS Minimalのboxとかつかってるとよく起きる問題として、システム時刻がUTCになっているという問題があります。 dateコマンドで確認してみましょう $ date 2014年 1月 7日 火曜日 17:10:43 UTC UTCになってしまっていますね。 ということで以下の手順で直して行きましょう $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime 再度dateコマンドを実行してみましょう $ date 20
この記事は間違った記事です。 MemcachedSessionHandlerで持続的接続を行うとESTABLISHEDが大量に発生する問題を参照してください。 相変わらずsymfony2で開発している僕です。 Symfony2のMemcachedSessionHandlerを利用してセッションの管理をしていたんですが、ブラウザから実行するとmemcacheのコネクションをずっと持ち続けてしまうという不具合が発生していました。 ブラウザからアクセスすればするほどmemcacheとのコネクションが貼りっぱなしになり、、、やがて接続できなくなるというかmemcacheからレスポンスが返ってこなくなるという現象でした。 ちなみに環境は「PHP 5.4.19」と「Apache/2.2.15」の組み合わせで発生していました。 最初は原因が分からずに、apache再起動してなんとかしていましたが、、、本
よくapacheのmod_rewriteつかってurlを書き換えるときにこんな感じの指定するときってあると思います。 たしかcakePHPのmod_rewriteって以下の感じですね。 RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] じゃあこれと同じようなことをnginxでやるとなると、以下のように書きます。 てかぐぐったサンプルとか見るとこうなってた。 rewrite ^(.+)$ index.php?url=$1 last; 一見同じような指定なので、$1に入ってくる値が一緒だと思っていまいますが、実は違ったりします。。。 urlのパラメータがapacheの場合だと以下のようになります。 index.php <?php var_dump($_GET['url']); apacheの場合 array (size=1) 'url' => string
会社ではSymfony2、自宅ではCakePHP2という二重生活な僕です。 さて、今日はcakephpでスマートフォンかどうかを判定するってお話です。 「cakephp スマホ 判定」でググってみるとわりとひどい結果ばかり(´・ω・`) やっぱりみんなそんなにコントローラで処理したいんですかね… 僕はあまり賛成できないです。AppControllerで書けば確かにロジック共有できますけど、、、きもい、、、まじきもいーーー。。。 ってことでじゃあお前ならどうすんだよ?って話ですよね。 そうです、僕ならRequestHandlerComponentコンポーネントを使います。 しってます?RequestHandlerComponentにisMobile()ってメソッドがあることを。 まあぶっちゃけコントローラの中で以下のように書いても挙動的には一緒ですけどね。 $this->request->i
ゆるかわPHP#2を開催してやりました!! そして、今回はEngine yardさんに会場をお借りして開催しました。 本当にあんなに良い会場をお貸しいただいて、engine yardさんありがとうございます!!! みなさん、サーバに困ったらEngine yardさんでサーバ借りましょう!! 資料一覧
※めっちゃ間違っていたので訂正してあります(2013/07/11) 最近はSymfony2な日々を送っています。 アクティブレコードから解放された僕はフリーダムです。 で、やっぱりDoctrine2でも論理削除をしたいわけです。 ただ、ちょっと導入がやっかいというかサンプルがなかなか見つからなかったので見聞録としてここに残しておきます。 ※今回使ってるsymfony2は2.2系です。2.1とかだと動くかどうかはわかりません。 まずは論理削除用のDoctrineの拡張を取得する https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md composer.jsonのrequireの中に以下のように記載すればcomposer installで入るかと思います。 ちゃんとオートローダーの設定もして
前に書いた記事以下の二つの修正内容になります。 「cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。その2(修正版)」 「cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。」 このネタに関して書いた事もすっかり忘れている今日この頃です。 最近はnode.jsとかAlloyが楽しくて仕方ありません。まあそんなにAlloy触れてないんですけどねw でもまあしばらくはcakephpから離れていました。 一応業務ではPHP使っていますが、もう1年ぐらい仕事としてcakephp使っていません。むしろもう2.3とか出てるんですね!!って驚くレベルです。 ヘルパーの呼び出し方も忘れるぐらいの糞です。ごめんなさい。まじごめんなさい。 で、今日も疲れたなーと思いながら帰宅してtwitterみてたら、こんな素敵な突っ込みがwwwww 古い記事に恐縮で
全国のnode.jsとcakephp好きの皆さんこんばんは。 最近cakePHPで書いたコードをnode.jsに移植したいとか若干思った僕がいます。 趣味のプロジェクトとかなら、一気にコードの書き換えとかでもありですが、現実的なプロジェクトだと徐々に移行したいとかあると思います。 というか、既存のロジックも使いつつ、nodeに徐々に移行したいって話は結構あると思います。 今回はそいういう徐々に移行するという状況を想像して、実際にどういうプランで移植するか考えてみました。 いろいろ方法はあると思いますがだいたい思いつく範囲はこんなところではないでしょうか? ・Web API的にcakephp側で対応させる ・node側でchild_processとかつかってsystem call的にcakeのshellとか実行する ・DNodeを使ってRPC的にcakeのメソッドを実行する 現実的に考えて、
前回の「Redisでランキングを作ろうとしたんだ」で悩んでた部分が解決できました。 かばだんなさん様からのコメントをいただき、対応できました。 本当に感謝しています!! んでもって、結局こんな感じのコードになれば同一を含んだランキングが取得できるかと思います。 <?php $server = "localhost"; $port = 6379; $timeout = 2.5; $redis = new Redis(); $redis->connect($server,$port,$timeout); // 得点 $userPoint = array( 'さんま' => 200000, 'たけし' => 4000, 'ところ' => 300, 'いたお' => 200, 'はまだ' => 100, 'やまだ' => 100, 'はざま' => 40 ); // 得点をセットする foreac
var_dumpやdebug_print_backtraceをやめてconsole.logを使おう By polidog 21 6月, 2012 No Comments phpの配列の中身を確認するときってvar_dump使って出力すると便利ですよね。 あとはdebug_print_backtraceなんかで中身を確認するとかも便利ですよね。 開発時にはよく使ったりしますが、htmlのレイアウト崩れたして不便だったり見にくかったりする場合も多々あるかと思います。 なんか良い解決策がないのかなぁーとかおもって、悩んでいたところ 「var_dumpがいやなら、console.logつかえばいいじゃない」 って天の声が聞こえました(・∀・)! 早速実装してみました。 js_console_log.php function js_console_log( $array, $label
ソーシャルアプリだと必ず必須なランキング。 でもやっぱり普通にMySQLとかでrankを表現するのって難しいですよね(負荷的な意味で) まあここの記事をみたりすると出来ない事は無いと思いますが、もっとさくっとリアルタイムにランキングを作成したいわけですよ。 あ、そういえばENGINEをMEMORYにすればかなり早くリアルタイムランキングとかだせるかも。やった事無いので分かりませんが。 んで、まあやっぱりさっくり実装するにはRedisかなぁーと。 結構いままではRedisってmemcached+αてきに考えていました。厳密に言うとList構造とかは便利なのでmemcached的な使い方以外の使い方もしてますが… List構造以外にもhash,set,ソート済みsetがあるわけで、ソート済みsetを使えばランキング簡単やないかーいっと思った次第でございます。 まずはランキングデータを
なんかうまくINDEXが使用されない箇所があって、たまにFORCE INDEXが使いたくなる事ってあると思います。 cakePHPだと、FORCE INDEXを書く方法が無いように見えますが、意外と簡単にFORCE INDEXを書く事ができます。 基本的にテーブル名の後ろに文字列入れられればいいので、実はjoinsに記載していまうのがいいんです。 最初はAppModelいじったり、DataSorce拡張しようとか考えましたが、ここはシンプルな方法で行くのが良いのでjoinsで書く事にしました。 書き方 <?php $this->Hoge->find('all',array( 'conditions' => array( 'id' => array(1,2,3,4) ), 'fields' => array( 'id','name' ), 'joins' => array('FORCE IN
3連休がっつり休んでしまったせいなのか夏休みぼけをしていた私。 ついうっかりこんなコマンドを朝出社してすぐに実行してしまいました。 # yum -y remove libcurl 消えてゆく。。。PHPもyumもrpmも・・・ 泣きそうでしたが、再インストールするわけにも行かないので復旧をさせようと。 復旧手順は意外と単純。 ※rpmが消えていない他のサーバで作業すること 1.CentOSのrpmパッケージをを取得してくる。 2.rpm2cpioで適当なフォルダに展開 3.展開したフォルダをtarで固める 4.rpmを消してしまった鯖に転送して展開する 5.rpmコマンドを使ってyumをいれる ということで早速作業 ※手元にCentOS5.5の鯖しかなかったので最初はCentOS5.5で作業しました。これが悲劇の・・・ 1.CentOSのrpmパッケージをを取得してくる。 $ mkdir
最新情報!!!! 新しく修正した記事書きました!!! cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。その3(修正版) 前に書いた記事がselectやradioなどが存在する場合に動作しない事が判明したため、修正版を用意しました。 $(function(){ $('form').submit(function(){ var postData = {}; $('form').find(':input').each(function(){ if ( !$(this).is(':disabled') ) { // disableでない場合のみサーバに送る if ( $(this).attr('type') == 'radio' || $(this).attr('type') == "checkbox" ) { // ラジオボタンの場合 if ( $(this).i
cakephp1.3を使っているとよくレスポンスタイムおそいなーと思う事は多々あると思います。 まあ機能が豊富な分遅いのはしかたないです。 まあロジックが複雑になればController actionやRender Controller Actionも重くなりますが、やっぱCore ProcessingがおもいなーとDebugKitでみると気になります。。 なんとかもっと早くしたいなーとかおもってモヤモヤしていました。 んで、たまたまController::loadModel()メソッドの中を見てた時に以下の部分の処理が目にとまりました。 persistModel === true) { $cached = $this->_persist($modelClass, null, $object); } なんかあやしいなーとおもって_persistメソッドをみてたら、あらびっくり。 モデルのイ
cakePHPで簡単なお問い合わせフォーム的なものを作っていたのですが、Formヘルパー使ってエラーメッセージ表示させようとしたら、エラー時のdivタグとかは生成されるのに、肝心なエラーメッセージが表示されないって現象が起きました。 Smarty使ってたせいなのかとかいろいろと考えたのですが・・・。 原因は、modelの文字コードがSJISだった・・・ってことでした。 なんか死にたくなるようなミスですね。。。 僕みたいなお馬鹿さんはあまりいないと思いますが、気をつけてください。 文字コードを疑ってみてください。 僕もミスがないように気をつけます。
CentOSでGitLabを動かしてみました。 なおgitosisはすでにインストール済みとします。 まずはRubyのインストール。どうやらgitlabはruby1.9.2が必要らしく、yumとかではいらないみたいです。(2011/11現在) なんで、普通にコンパイルしていれましょう。(まあrpm化していれようとおもってmake installしてしまった僕ですがw) # cd /usr/local/src # wget http://core.ring.gr.jp/archives/lang/ruby/1.9/ruby-1.9.2-p290.tar.gz # tar zxvf ruby-1.9.2-p290.tar.gz # cd ruby-1.9.2-p290 # ./configure --prefix=/usr # make # make install あとsqliteもyumだ
cakephp1.3でMySQLのgeometry型を使いたとおもったのですが、普通にModel::saveだとうまくいきません。 afterSaveとかでsaveすると2回クエリなげることになって微妙な感じだったんで、なにか方法はないかと探していました。 まる2日間ぐらい悩んだんですが、DboSource::expression()使えばいいんじゃね?ってことで、試してみました。 とりあえずスキーマはこんな感じ CREATE TABLE `test`.`areas` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR( 255 ) NOT NULL , `latlng` GEOMETRY NOT NULL , `created` DATETIME NOT NULL , `modified` DATETIME NOT N
最新情報!!!! 新しく修正した記事書きました!!! cakePHP+JQueryでajaxを使ってFormの内容をPOSTしてみた。その3(修正版) cakePHP使っているんでAjaxだろうがpostしたときは$this->dataで受け取りたいなーとか思ってました。 data[Post][title]とかいうformの名前にしておけばいいといえばいいけど、Securityコンポーネントつかっているとだめだよねって話になりますよね。 んで、いちいち全部のinputタグのIDからデータとってくるのとかめんどいなーと悩んだ訳ですが・・・ よく考えたら、formのデータを全部もってくればいいってことに気づきました。 ってことでこんな感じに書いてみました。 <?php $this->Html->scriptStart(array('inline' => false))?> $(function
最新のEclipse Helios (3.6.2)のEclipse for PHP Developers(Mac OS X 64 Bit)を落としてきたら、command+/のコメントアウトのショートカットが効かなくなっている。。。 調べたところどうやらバグっぽい。。。 パッチがでているようなので当ててみる。 http://sourceforge.jp/projects/pdt-tools/releases/?package_id=9452 上記のサイトから「Patched plugin for eclipse-php-helios-SR2」にある org.eclipse.php.debug.core.source_2.2.0.v20101001-2300.jar org.eclipse.php.debug.core_2.2.0.v20101001-2300.jar org.eclipse
cakePHPのフォームヘルパーでselectタグでoptgroupすることがあったんでメモしておきます。 selectメソッドの中のoption引数で連想配列にしてあげればよいだけです。 index.ctp <?php $options = array( 'アメリカ' => array( 1 => 'red hot chilpeppers', 2 => 'sum41' ), 'ヨーロッパ' => array( 3 => 'mogwai', 4 => 'mew', ), ); e( $this->Form->select('music',$options)); ?> ほんと単純に連想配列の配列名をoptgroupで表示したい名前にするだけです。 ただしvalueの番号が連番にならないので、必ず配列のなかで番号を指定するほうがいいですね。
負荷テストのためにJMeterを使ってみました。 意外とWindowsでのやり方とか書いてあったのですが、LinuxのCLIを使ったやり方が見つかりにくかったのでメモしておきます。(僕のググる力が足りなかっただけなのかもしれませんが・・・。 一応CentOS5.4での実行ということで 1.まずはJavaをサーバに突っ込む。 OpenJDKでよいのでさっくりyumでインストールしてしまう。 # yum install -y java 2.JMeterを取得してくる # wget http://ftp.kddilabs.jp/infosystems/apache/jakarta/jmeter/binaries/jakarta-jmeter-2.4.tgz # tar zxvf jakarta-jmeter-2.4.tgz # mv jakarta-jmeter-2.4 /usr/local 3
cakePHPで良い感じのTwitterコンポーネントが見つからなかったので自分で作ってみました。 TwitterApiComponent OAuthに対応しており、かつTwitterに気軽にツイートとかできてしまいます。 ということで使い方を説明しておきます。 まず、今回必要なものは以下の通りです。 consumerKeyとconsumerSecret OAuth consumer component 1.アプリ登録して、OAuth consumer componentを入手する consumerKeyとconsumerSecretはTwitterからアプリケーションを登録する際に入手できます。 OAuth consumer componentは下記のURLから取得してください。 http://code.42dh.com/oauth/ ※OAuth consumer classのダウンロ
UbuntuにEclipse入れて、日本語化までした。 PDTやらJavaEEやら必要なものも一通りいれて、さあコーディングをしよう!とおもったら、補完されない。。。 かといって自動補完はうざいなーとか思ったりもする。 とかとか考えていたら、どうやら「Alt + / 」になってたら。。 やっぱそこは「Ctrl + Space」がよかったので変更。 ちなみにCtrl + Spaceだと日本語入力の切り替えになってしまう。。 まず、Ctrl + Spaceを日本語入力の切り替えにしないようにする。 システム→設定→iBusの設定 切り替えの右横の「…」ってボタンをおして、Ctrl+Spaceのショートカットを削除する Eclipseで補完の割り当てを変更する ウィンドウ→設定→一般→キー フィルタに「コンテンツ」と入力する。一番上にでてくる「コンテンツ・アシスト」のバインディングをCtrl +
次のページ
このページを最初にブックマークしてみませんか?
『polidog lab++』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く