ansibleが便利です

今までは良くvagrant+chefを利用して開発環境等の構築をおこなっていましたが、ansibleなるものを知人に教わり、試してみた所、これが最高に便利なので、紹介します。

まず、なにがchefより便利なのかというと、chefの場合は、cookbook単位でレシピを作成することになり、これはこれで再利用可能なのと、様々な機種で対応できるため、なかなか慣れないと把握に難しい点がありました。ansibleの場合には、playbook.ymlというファイルにサーバーの構築手順をそのまま書くことでそのとおりのサーバーが作成されます。個人的には、これがとてもわかり易く直感的に扱えるため、便利だと思いました。ただ、例えば、redhat系とdebian系を分ける場合には、その判断もこのファイル内に書く必要があるため、注意が必要です。

Apache2+PHP+NTP+MySQL+PHPMyAdmin+Composerを自動的にインストールするplaybookは例えば、以下の感じになります。

このファイルをvagrantから実行することで、自動的にサーバーが構築されます。

公式サイト http://www.ansible.com/home

laravel4でカスタムバリデーション

ちょっとした仕事でLaravel4でカスタムバリデーションを作成する機会があった。以下、備忘録。

まず、start/global.phpにresolverを追加する。

ここでは、Extensions以下のクラスをapp/extensions以下に配置したいので、composer.jsonのautoloadに設定を追加する。

ここで、artisanでdump-autoloadを実行する。

作成するカスタムバリデータークラスはCustomValidatorとし、Extensions\Validate名前空間を利用することにする。
app/extensions/Validate以下にCustomValidator.phpを作成する。

ポイントは、メソッド名の先頭はかならずvalidateとすること。
あとは、通常のバリデーションルールと同様に利用できる。

yumのアップデートでエラー!!

久々の更新です。借りているサーバーを久々にメンテナンスしようとしてyumってみた所、いきなりエラー発生!

なんか、python関連でエラー??
とりあえず、

としてみるも、エラーは変化しない。しょうがないので、rpmのリビルドDBとクリーンアップを行なってみる。

これで、エラーはなんとか解決!後は、そのままアップデートを行った。一瞬焦った!

phpmyadminのログイン切れの防止策

デフォルトで1440秒でセッションが切れてしまい、開発中に何度もログインするのはとても煩わしい。
以下の修正をphpmyadminのconfig.inc.phpにすることで、この煩わしさから開放される。

vagrantでcssが更新されない件で

久々にCSSを触っていたら、vagrantの環境でCSSが更新されない。なぜ??
調べたところ、静的なファイルはアクセスを必要としない時に、カーネルのsendfileを使って送るようになっているためのようで、Apacheの設定ファイルを変更することで対応できた。

httpd.conf等に

と記述すればOK。

jBossの開発でeclipseでファイル数が多いとエラー

久々にJavaでの開発を行おうと重たい腰を上げた。折角なので、仕事でも使うことからjBoss+struts2にすることに。eclipseにjBossのプラグインを入れて、サーバー設定をしていたら、「多くのファイルを開きすぎです」というエラーがでた。どうやら、jBossのプラグインを使う上で、OSの想定値よりも多く使うようだ。初期値はdebianでは1024個となっている。この設定は以外にも簡単にできる。以下の設定を行い、サーバーを再起動することで、このエラーは消えた。

http://orablogs-jp.blogspot.jp/2011/02/osb-and-ubuntu-1004-too-many-open-files.html

PhalconというPHPのフレームワーク

最近、仕事で使っているので、LaravelというPHPのフレームワークがとても使いやすいため気に入っていた。そんな中、Phalconというフレームワークを教わった。なんでも、PHPのextensionとして実装されているそうな。そのため、とても高速であると・・・。早速、インストールして使ってみた。良い!仲々に良い感じ!!これは、少し使ってみるかな。

公式サイト

http://phalconphp.com/

インストール方法

とても簡単である。あとは、php.iniに

とするだけ。

このままでは補完がされない

このフレームワークはC言語で実装されているため、このままだと、フレームワーク側のメソッドの補完が効かない。これは、IDEを利用しているユーザーにとっては致命的だ。そこで出番なのが、phalcon-devtoolsだ。こちらもgithubから入手できる。

https://github.com/phalcon/phalcon-devtools

debtools/ide以下に各バージョンのフォルダーがある、自分がダウンロードしたバージョンのフォルダーをプロジェクトのインクルードパスに指定すれば、補完ができるようになる。

devtoolsで簡単に雛形作成

このdevtoolsを使うと、CakePHPやEthnaみたいに簡単にプロジェクトを作成してくれる。そのコマンドはphalconコマンドだ。フレームワークと同じ名前だから覚えやすい。このコマンドはプロジェクトを作成する以外にも、コントローラーやモデル等の作成する場合にも利用する。

プロジェクトを作成したいディレクトリーで

とすれば、簡単に作成できる。phalcon projectで実行すると、このコマンドのヘルプが表示されるため便利である。
なお、phalcon commandsでサブコマンドが一覧表示されるため、分からなくなったら、これで確認をしよう。

1点プロジェクトを作成する場合の注意点だが、phalconは、3つの形式のプロジェクトを作成できる。micro,simple,modulesだ。それぞれの詳細は割愛するが、作成するシステムの規模や形態に応じて選択する。先ほどのphalcon projectで新しいプロジェクトが作成できるが、その時にtypeでこれらを指定できる。コマンドのマニュアルを見る限りだと、typeに指定できるのは、micro,simple,multi-moduleと記載されているが、実際には、multi-moduleではなく、modulesと指定することになる。これで、multi-moduleなプロジェクトが作成される。

MySQLが文字化けした

初期状態では、MySQLにUTF8の日本語を書きこもうとすると文字化けが発生する。以下の対策で回避する。
これは、multi-moduleプロジェクトの場合だが、/frontend/Module.phpを修正する。

これで、文字化けが解消される。

http://forum.phalconphp.com/discussion/10/mysql-utf8-encoding

Objective-CでのURLエンコード

NSStringのstringByAddingPercentEscapesUsingEncodingメソッドはなぜか&や+,/などがエスケープされない。これではセキュリティー的に好ましくないため、以下の方法で対応した。備忘録。

phpのvar_dump

PHPのデバッグには、var_dumpやprint_rを多用しますよね。しかし、これらって、お世辞にも見やすくはありません。そこで、krumoなるものを見つけました。使い方も簡単ですし、折りたたみで表示されるため、とても便利です。特に再帰的に表示されるようなパラメータは適当に切り詰めてくれるようなので、これも便利です。良ければどうぞ!

http://krumo.sourceforge.net/