Max OS X ローカルにXdebugインストール

OS X 10.9.5  / PHP 5.4.30 の環境です.

1 . Xdebug.so (Xdebugのバイナリ) を入手

こちらのサイトからPHP Remote Debugging Client の Max OS X版をダウンロードして, 解凍します. PHPのバージョンごとにディレクトリがあるので, そのなかのxdebug.soを以下のディレクトリにコピーします (環境によっては20100525の数値が違うかもしれませんが適宜読み替えてください).

sudo cp ./xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20100525/

2. php.ini の設定

まずは, /private/etc/php.ini.default をコピーしておきます.

sudo cp /private/etc/php.ini.default /private/etc/php.ini
sudo chmod 644 /private/etc/php.ini

php.iniの最後に以下の記述を追加します.

[xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

3. Apacheを再起動

以上をおこなえば, 以下のように with Xdebug … という表記が出ます. あるいは, スクリプトを作成して, phpinfo()を実行すれば, Xdebugのテーブルが表示されるはずです.

$ php -v
PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Xdebug v2.2.5-komodo, Copyright (c) 2002-2014, by Derick Rethans

以上を, 確かにやっているのにインストールされない …という場合は, php.iniがきちんと読み込まれているか確認してみてください.

phpinfo()の出力で,

Configuration File (php.ini) Path /etc
Loaded Configuration File /etc/php.ini

おそらく, /etcにあるphp.iniを読み込む設定になっていると思います. Mac OS Xでは/etc は, /private/etc へのシンボリックリンクなので, /private/etc にphp.iniを置いておけば大丈夫なはずです.

実は, 私は /private/etc ではなく, /private/etc/apache2に置いてしまっていたので…php.iniが読み込まれず, あれでもないこれでもないとずいぶん遠回りをしてしまいました…

Vim インデント関連の設定

最近, Vimを使うことが多いので, 備忘録的に.

今回は, Vimのインデントに関する設定です.

Vimを起動するたびに設定するのはめんどくさいので,

.vimrcを作成して記述しておきます.

set expandtab       "タブ入力を複数の空白入力に置換
set tabstop=4       "タブのスペース数
set shiftwidth=4   "自動インデントでのスペース数
set autoindent      "改行時に前の行のインデントを継続する
set smartindent    "改行時に入力された行の末尾に合わせて次の行のインデントを増減する

これで, めんどくさいスペース入力がずいぶん減りました.

ちなみに, こちらのサイトが参考になりました.

Java byte配列・char配列 < - > Stringインスタンス 変換

備忘録的に…

Stringインスタンス (文字列) を, byte配列に変換する

byte[] bytes = "TESTtestString".getBytes();

Stringインスタンス (文字列) を, char配列に変換する

char[] chars = "TESTtestString".toCharArray();

char配列をStringインスタンス (文字列) に変換する

String str = String.valueOf(chars);
//String str = new String(chars);  //コンストラクタ呼び出しでも可能ですが, valueOfのほうがパフォーマンス良いそうです

Web Audio API 解説サイト レスポンシブレイアウトの変更

Web Audio API 解説サイトのスマートフォン (320px – 767px) / タブレット(768px – 1023px) のナビゲーションを変更しました.

ヘッダーにメニューアイコンを追加して, アイコンをタップするとグローバルナビゲーションが表示されるようにしました.

狭い画面で何を重視して見せる & PCサイトと同じようにユーザビリティを確保する…これは経験とアイデアを磨いていくしかないですね

Java チャットアプリ

JavaのSocketを利用したコンソール上で動作するチャットアプリを実装してみました.

1. まずは, サーバー側を起動して.
2. 別のコンソール上でクライアント側をポート番号を指定して起動します.

3. ‘quit’を入力すれば終了します.

現状の実装では, 1クライアントしか接続できませんが, 今後はマルチスレッドを利用して1対多の接続が可能になるように実装する予定です.

Node.jsでBase64のエンコード / デコード

Node.js では, Base64のエンコード / デコードにwindow.atob, window.btoaは利用できませんが, Bufferクラスを利用することで同じぐらい簡単にエンコード / デコードが可能です.

var buffer1 = new Buffer('Hello World !!', 'ascii');
var base64 = buffer1.toString('base64');  //Base64にエンコード
var buffer2 = new Buffer(base64, 'base64');
var ascii       = buffer2.toString('ascii');  //Base64をデコード