kakakakakku blog

Weekly Tech Blog: Keep on Learning!

PHP

PHP 5.6 環境では CacheTool v3.2.1 を使うべし

PHP

数年前にも記事を書いた PHP のキャッシュ管理ツール CacheTool を,今日 PHP 5.6 環境にインストールをして実行したら以下のエラーが出てしまった.調べたところ,5月末にリリースされた最新メジャーバージョン CacheTool v4 から PHP 7.x 系だけをサポート…

PHP の Elasticsearch クライアント Elastica で Amazon ES に接続する

PHP から Elasticsearch を操作するために Elastica というライブラリを使っている.今まで EC2 で運用していた Elasticsearch を Amazon ES に移行する話があり,Elastica から Amazon ES を操作するときに悩むことが多かったため,まとめておこうと思う. …

APC / OPcache を CLI で管理できる CacheTool を試してみた

PHP

CacheTool を使うと PHP のキャッシュ機能である APC / APCu / OPcache を CLI で管理できるようになるという話を今日会社で教えてもらった!さっそく導入してみようと思って調査した. github.com 背景 例えば,キャッシュをクリアする場合,APC / APCu な…

「第106回 PHP勉強会@東京」で PHP & FuelPHP をアップデートした事例を話してきた

第106回目にして初参加!普通に楽しかった :) PHPer が多く集まってて,最初からビールで乾杯して,ワイワイと話しながら発表を聞くという非常にカジュアルなスタイルの勉強会だった. phpstudy.doorkeeper.jp 資料 最近進めていたプロジェクトを整理して話…

PHPCompatibility で `break 0;` と `continue 0;` を検知できるようにした話

PHP

先月に PHPCompatibility を使ったときに,PHP 5.4 から非互換になった break 0; は検知できなかったと書いた.せっかくなら検知できるようにしようと思って PHPCompatibility に PR を送ってマージしてもらった話を簡単に書いておこうと思う. kakakakakku.…

PHPCompatibility で非互換になった項目を静的解析する

PHP

最近 PHP のバージョンアップの検証をしていて,非互換 (incompatible) になった項目を静的解析できる PHP_CodeSniffer + PHPCompatibility を導入した.非互換を完全に網羅してチェックできるわけではなく,最終的には地道にコードを読んで書き換えていく必…

APC (Alternative PHP Cache) をモニタリングする

PHP

2016年にもなって APC (Alternative PHP Cache) の話かよ!って感じもするけど,最近 APC の調査していて,個人的に学びが多かったので,主に apc.php に関してまとめておこうと思う. 前提 APC (Alternative PHP Cache) PHP の実行コード(実行時に生成する…

php-fpm のパラメータを調査した

PHP

php-fpm (FastCGI Process Manager) の調査をしていて,学びが多かったので,簡単にまとめておこうと思う.予想していた以上にパフォーマンスが出てないことに驚いたけど,SRE として,インフラ改善 + アプリケーション改善の施策を考えて実行していかないと…

表参道.rb #10 で PHP + Capybara ネタの LT をしてきた

久し振りに「表参道.rb」に参加してきた. 会場の東京糸井重里事務所には初潜入だったけど,宇宙鳥の乱入があったり,豪華な手料理の提供があったり,とにかく最高だった. omotesandorb.connpass.com LT した 今回は「PHP + Capybara を試してみた」という…

Composer beta1 のリリースで secure-http config が追加されていた

今日は1日 Composer と戦っていた...! 学んだことを簡単にまとめておこうと思う.基本的に困ったら Documentation を読むとちゃんと書いてあるなと感じた. ./composer.phar self-update self-update で Composer を更新すると,デフォルトの挙動だと GitHu…

FuelPHP で複数の OR 条件を使う SQL を書く

FuelPHP で複数の OR 条件を書く場合,Query Builder を使う必要があって,ORM だと実現できなかった.検証環境は FuelPHP 1.6 で,もしかしたら FuelPHP 1.7 以降で修正されているかもしれないけど,調べてる限りだとできなさそう. 前提 SQL に特に意味は…

社内勉強会で "PHP Application E2E with Capybara" という話をした

社内勉強会で Capybara の話をしたので,発表資料と実際に試行錯誤しながらプロトタイプを実装したときに学んだ細かなポイントなどをまとめておこうと思う. 発表タイトルを “PHP Application E2E with Capybara” にした通り,一般的なユースケースである Ra…

swagger-php と Swagger UI で API をコールしてみた

引き続き swagger-php を試している.前回 swagger-php のサンプルアノテーションを使って Swagger Specification を生成するところまで確認したので,次は実際にアノテーションを書いてみようと思って格闘していた. deprecated って言われた http://zircot…

swagger-php CLI で Swagger Specification を生成してみた

前回に続き Swagger の話で,アノテーションから Swagger Specification を生成してみたいなと思って swagger-php を試してみた. swagger-php Swagger 2.0 に対応してる PHP 用のライブラリで,Composer でインストールすればすぐ使える.Swagger Specifica…

PHP で array_flatten を実現する

PHP

Ruby だと Array で .flatten が使えるけど,PHP の Array には無くて自分で実装する必要があるということで! PHP で flatten SPL (Standard PHP Library) にある再帰関数を使って実装できた.簡単にイメージを書いておくと,RecursiveArrayIterator で Arr…

Smarty で for を書く

PHP

Smarty 3 Smarty 3 なら for が実装されている. {for} | Smarty {for $i=1 to 10} <div>{$i}</div> {/for} Smarty 2 Smarty 2 だと for が実装されていないため section を使う必要がある. {section},{sectionelse} | Smarty {section name=i start=1 loop=11} <div>{$smar</div>…

phpcon 2015 に参加して GoLang を勉強したくなった

phpcon 2015 に参加してきた! キャパ2500人って多すぎるw 本セッションを6個聞いてきたので簡単にメモを残しておく. PHPカンファレンス2015 - #phpcon2015 Composer ではじめるアプリケーション開発 PEAR -> PEAR2 -> Openpear -> Composer npm と Bundler…

FuelPHP でマイグレーションを試してみた

FuelPHP でマイグレーションを試してみた. 雰囲気的には Rails のマイグレーションと似ていて,特に違和感無く使えた. Migrations - General - FuelPHP Documentation FuelPHP 環境 Vagrant に立てた. $ oil -v Fuel: 1.7.3 running in "development" mod…

Phalconでテーブル名のアンダーバーは無視される

昨日に引き続き Phalcon Developer Toolsの話で,user_table みたいなテーブル名にアンダーバーを含んだテーブルを扱おうとしてかなりはまったのでまとめておく.結論としては Phalcon ではアンダーバーを無視する仕様とのこと. まずは phalcon model して…

phalcon model すると Database configuration cannot be loaded ってエラーが出る

PHPフレームワークの Phalconで,Phalcon Developer Tools を使って Model を自動生成するときに phalcon model すると以下のエラーが出た.原因は単純に MySQL の設定情報が config.php や config.ini に定義されてないだけで,マニュアルちゃんと読めよっ…

Homebrew で PHP5.5 を導入したけど反映されなかった

PHP

PHP5.5 の導入手順は以下のエントリーを参照してうまく進めたけど,途中で PHP のパスが PHP5.5 に変わってないことに気付いて少し調査した. 結論として Mac OS X Lion にデフォルトで入ってる PHP5.3 のパスが読み込まれていたのでそれを書き換える必要が…

PHPでユニークなIDを生成する:uniqid()

PHP

PHPでユニークな(一意な)IDを生成したい場合に「uniqid」という関数が利用できる. string uniqid ([ string $prefix [, bool $more_entropy ]] ) マイクロ秒単位の現在時刻にもとづいた、接頭辞つきの一意な ID を取得します。 PHP: uniqid - Manual $prefi…

PHPカンファレンス2008に参加してきた

昨日はこっそり申し込みをしていた,日本PHPユーザ会「PHPカンファレンス2008」に参加してきた.参加者のエントリーが多数上がっているので,僕は簡単にコメントを.楽天×PHP 楽天におけるPHPの過去・現在・未来 安藤さんによる楽天の事例. PHP3の時代から…