あなたの得意なプログラミング言語は?
と問われたときに、bashと答えそうになります。

シェルスクリプトで割といろんなことができますが、
いつも忘れてしまう構文を書いておきます。

自分がいつもわすれるのは、「配列」です。

今日紹介するのは、厳密には配列ではないですが、
bash(よりいうならば、Bourne shell)だとよくやる
構文を、自分のメモの意味を含めて書き留めます。

外部ファイルに読み込みたいリストを作成し、
それをシェルスクリプと内で配列的に扱う例です。


#!/bin/bash

SERVERLIST=server.list
if [ -f "${SERVERLIST}" ]; then
echo "SERVERLIST FILE $FILE NOT FOUNT ! ";
exit;
if

## INPUT CHECK
FILE="$@"

if [ ! -f "${FILE}" ]; then
echo "INPUT FILE $FILE NOT FOUND !";
exit;
if

exec 3<&0 < $SERVERLIST
i=0
while read SERVER
do
i=`expr $i + 1`
eval SERVER_$i=$SERVER
done

for seq in `seq 1 $i`
do
eval SERV=\$SERVER_$seq
echo $SERV;
done

といった感じです。

肝になるのは、

exec 3<$0 < $SERVERLIST

です。
ファイルディスクリプタをつかって、
外部ファイルを読み込んでいます。
いつもファイルディスクリプタの使い方を忘れます。

あとは

eval SERV=\$SERVER_$seq

のように
変数(擬似的な配列から変数に代入している)に代入して
あつかっています。(例だとechoしているだけ)

ファイルディスクリプタの使い方をおぼえると
(自分も使いこなせてないですが)
bashで意外となんでもできることがわかります。

次回は、本当の配列の使い方です。


MacにHandlerSocket-Plugin-for-MySQLを入れてみる

(1)ソースを落とす
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
からおとす。
gitは今回つかいませんでした。

(2)MySQLのソースをおとす
http://downloads.mysql.com/archives.php?p=mysql-5.5&v=5.5.6
ここから。
macportsでいれたMySQLが5.5.2-m2だったので
それにあわせてソースをおとす。

(3)コンパイル&インストール
(1)で落としたソースを展開したディレクトリで
$ ./autogen.sh
$ ./configure --with-mysql-source=/var/tmp/mysql-5.5.2-m2/ --with-mysql-bindir=/opt/local/bin --with-mysql-plugindir=/opt/local/lib/mysql5/mysql/plugin
が、エラー
macportsのmysqlはmysql5用にコマンド名の最後に5が入るため、configureが通らない。
そのため、シンボリックリンクをはって回避
$ sudo ln -s /opt/local/bin/mysql_config5 /opt/local/bin/msql_config

再度configureを実行。無事成功
$ make
$ sudo make install

(4)my.cnfの編集
つぎの記述を追加
[mysqld]
loose_handlersocket_port = 9998
# the port number to bind to (for read requests)
loose_handlersocket_port_wr = 9999
# the port number to bind to (for write requests)
loose_handlersocket_threads = 16
# the number of worker threads (for read requests)
loose_handlersocket_threads_wr = 1
# the number of worker threads (for write requests)
open_files_limit = 65535
# to allow handlersocket accept many concurrent
# connections, make open_files_limit as large as
# possible.

mysqlにてプラグインを認識させる
mysql> install plugin handlersocket soname 'handlersocket.so';

とりあえず、ここまで。

次回はPHPからHandlerSocket Pluginをつかってみます。
debugするなら、ステップ実行できなきゃつらいってことで、
Aptana+Xdebugでステップ実行しようとしてはまった時のメモ。

VMWare上でLinuxうごかして、そのなかのPHPをつかっていたんだけれど、
yumでいれたXdebugがうまくない。

設定自体は次のサイトを参考にして設定したんだけど、
ブレークポイントで止まらない!
http://docs.aptana.com/docs/index.php/Basic_PHP_Debugging#XDebug_Configurations

で、Xdebug本家にいってしらべてみると、診断ツール発見
診断ツール

TextAreaにphpinfoの出力をHTMLをそのままコピー(ソースを表示してコピーではない!)&ペースト

[Analyse my phoinfo() output]のボタンをおしたら、
Zend経由になってないからダメ!
っぽい結果だった。

で、yumでいれたXdebugはあきらめて、
手動でソースからいれなおし、
php.iniを修正。

zend_extension = extensions/no-debug-non-zts-20090626/xdebug.so

zend_extensionとして登録したら、無事ブレークポイントでとまった。

これで、ちゃんとデバッグできる!
タイトルの通り、MacBook(アルミUnibody)の動作がもっさりしてるような気がするので、
SSD入れたら快適になるんじゃないかと思って、しらべた。

余裕がでてきたら、SSD買おうかとおもってたら、結構値段さがってる。
SSD X25-M  [秋葉館]へのリンク
ちょっと、まじめに検討しようかな。

参考に読んでたのがこの記事

あと、このベンチマークも参考に読んでた。

で、160GBじゃいま積んでるやつとかわんなくて
容量たんなくなるなーっておもってた。(いま、残り6GB)
が、この記事発見して目からウロコがおちた。

内蔵のSuperDriveはずすとか、おもいつかなかった。
しかも、外したSuperDriveを外付けとしてつかうなんて!

goodooさんのブログ-109-2

goodooさんのブログ-109-1

goodooさんのブログ-渋谷駅


今朝の渋谷駅前はこんなかんじでした。
ドコモの「Who is my boss?」一色でした。
ドコモがどんなしかけを今後してくるのか楽しみです。