2013-01-01から1年間の記事一覧

Vagrant アップグレード後に vagrant box list が出来ない

Vagrant は、長らく 1.0 系を愛用していたが、1.4 がリリースされたことだし、そろそろアップデートしてみようかと思って試してみたところ、vagrant box (list|remove) サブコマンドがうまく動かないことが分かった。 $ vagrant box list base (virtualbox) …

PHP でディレクトリ以下を再帰的にファイル削除

PHP

RecursiveDirectoryIterator を使って削除。 isFile() || $item->isLink()) {…

Apache の DocumentRoot に共有フォルダを使った場合

Vagrant を使っていて VirtualBox の共有フォルダを DocumentRoot に設定することがよくあるが、 EnableSendFile offとすると静的ファイル読み込みが早くなってよいらしい。

SplFileObject で標準入力を扱うには

PHP

http://d.hatena.ne.jp/hnw/20090523 より、NoRewindIterator でラップする。

PHP の動作環境が 32bit か 64bit かを確認する

PHP

確認する方法はINTサイズを見るのが手っ取り早い。 PHP_INT_SIZE 定数が 4 の場合は 32bit、8 の場合は 64bit となる。

CakePHP2 のモデルで PostgreSQL のシーケンスを指定する方法

CakePHP では、PostgreSQL の主キーに設定するシーケンス名がデフォルトと異なる場合、Model::sequence に書くことで対応できるのだが、CakePHP 2.1 から「スキーマ名 . シーケンス名」という書式が前提になっていた。

Debian wheezy で rake の update-alternatives の設定がない

Debian wheezy で管理されたパッケージの中で ruby などの複数のバージョンが存在するコマンドは、update-alternatives コマンドで管理されているが、ruby1.9.1 パッケージのインストール後も rake はなぜか設定されていなかった。 ri や rdoc はあるのに…。…

PHP の単体テストでファイルシステムのモックを使う

PHP

単体テストでは外部リソースへのアクセスは行わないのが基本。もちろんファイルシステムも含まれる。テスト対象コード内にある外部リソースへのアクセス処理は、アクセス先を「モック」に差し替えることで対応できる。 なるべく設計レベルでモックへの差し替…

known_hosts の強制更新

ssh のコマンド実行時に -o オプションを付けて known_hosts を強制的に更新する。 Chef などで自動で known_hosts を更新したい場合に使える。 $ ssh -o "StrictHostKeyChecking=no" user@hostname

Vagrant (1.0 系) のベースBOX作成手順 (Debian wheezy)

Vagrant のベースBOX 作成手順をネットで探すとたいていの場合、 veewee を使用していますが、無理に使用する必要はありません。 全自動化できれば便利ではあるのですが、個人的には手作業で作成するほうが手軽で気に入っています。http://d.hatena.ne.jp/ok…

Migrations プラグインがサポートするデータベースは MySQL のみ?

https://github.com/CakeDC/migrationsCakePHP のデータベーススキーマの管理用に Migrations プラグインがある。 Migrations プラグインで残念なことは、CakePHP の Schema クラスがサポートしていないクエリはプラグイン内部 (CakeMigration クラス)で SQL…

PukiWiki 派生プロジェクト

Google Apps を使用したり、Redmine などでも Wiki が使えたりする関係で、新たに単独で Wiki サーバを立てることはなくなったが、今でも一部 PukiWiki を使用している。PukiWiki: http://pukiwiki.sourceforge.jp/Pukiwiki の開発が止まっていることに対す…

PHP で pkcs12 形式の SSL 証明書を pem 形式に変換

PHP

ApnsPHP でプッシュ通知するのにサーバ側にPEM形式の証明書が必要。 https://code.google.com/p/apns-php/wiki/CertificateCreation証明書を更新するたびに openssl コマンドを打つのも面倒なので、PHP プログラム内で作成できるようにした。ついでに秘密鍵…

vagrant init の第2パラメータでちょっと楽する

久々の Vagrant ネタ。Vagrantfile に ダウンロード先 URL (box_url) を設定しておくことで、 vagrant up 実行時にベースBOXが無かった場合は BOX を自動的にダウンロードしてくれるので、初回の vagrant box add が省略できて重宝している。複数人での開発…

CREATE OR REPLACE LANGUAGE をシミュレートする

PostgreSQL で plpgsql を利用するには CREATE LANGUAGE する必要があるが、複数回実行すると2度目からエラーになってしまう。 "CREATE OR REPLACE" 的なことはできないかどうかググったところ、そのものずばりがかかれてあった。http://wiki.postgresql.or…

CakePHP 2.x キャッシュファイルのパーミッション変更

cake コマンド実行するユーザと apache のユーザが異なる場合、キャッシュ周りでパーミッションエラーが発生してしまう。誰でも書込みできるように権限を設定するには、Cache::config() に "mask" というパラメータを追加してやるとよいらしい。 また、設定…

CakePHP 2.3.0 上の Migrations プラグインの注意

CakePHP 2.3.0 が正式にリリースしたのだが、 Migrations プラグインの master ブランチでは 2.3.0 は、未対応。公式な解決策としては、develop ブランチを使うといいとのこと。https://github.com/CakeDC/migrations/issues/107とりあえず master ブランチ…

CSSフレームワーク

Blueprint タイポブラフィーやプラグインシステムを備えオールマイティに活躍 http://www.blueprintcss.org/ TwitterBootstrap レスポンシブからモック作成まで汎用性が高く幅広い層から支持 http://twitter.github.com/bootstrap/ 960 Grid System http://9…

外部プログラムの呼び出し方法いろいろ

PHP

PHPで外部プログラムを呼び出すには exec() paththru() popen() proc_open() shell_exec() system() などの関数を使う。shell_exec() は、「実行演算子 バッククォート (``)」 のエイリアスでもある。popen(), proc_open() は、標準入出力をストリームとして…

hosts のパス

つい忘れてしまうのでメモ。Windows 7 の場合: C:\Windows\System32\drivers\etc\hosts