MySQL を外部接続できるようにする
前回で MySQL をインストールしましたが、 外部から接続するために設定が必要だったのでメモ。
まず、普通に接続しようとすると以下のエラーメッセージが出ました。
SQL Error (2003) Can't connect to MySQL server
で、設定ファイルを編集します。
sudo vim /etc/mysql/my.cnf
↓この bind-address の行をコメントアウトします。
# bind-address = 127.0.0.1
編集したら再起動
sudo service mysql restart
で、外部から接続テストすると
sql error 1130 host is not allowed to connect to this mysql server
なエラーメッセージが。 まだ権限付与しないとダメらしいので コマンドラインから接続して設定します。
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO root@'192.168.%' IDENTIFIED BY 'root のパスワード' WITH GRANT OPTION;
これで他ホストから接続できました。
IP address 'XXX.XXX.XX.XX' could not be resolved: Name or service not known
ただ、以下のようなワーニングが出て気になったので設定した。 /etc/mysql/my.cnf に
skip-name-resolve
を追加したら OK でした。
PHP で簡易 Enum を実装する
php では java のように enum 型がないのですが、 やはり使いたい場合があります。
本格的に実装してもいいのですが、 そこまでするのも大げさだなぁ、という場合に リフレクションを使って簡単に実装する方法があります。
<?php trait SimpleEnum { public static function values() { $className = get_called_class(); $refClass = new ReflectionClass($className); $values = $refClass->getConstants(); return $values; } public static function valueOf($value, $notfound = null) { $values = self::values(); if (!array_key_exists($value, $values)) return $notfound; return $values[$value]; } }
使い方
<?php class TestEnum { use SimpleEnum; const HOGE = 0; const FUGA = 1; } echo TestEnum::HOGE; // => 0 echo TestEnum::FUGA; // => 1 echo TestEnum::valueOf('FUGA'); // => 1 echo TestEnum::valueOf('UnDefined'); // => null echo TestEnum::valueOf('UnDefined', 'undefined'); // => undefined
java みたく複数の値を定義したり、型検証できませんが、 ちょっと使う分にはこれでもいいかと。
trait を使ってますが、 class にして継承すれば 5.3 以下でも使えると思います。
ubuntu に php の開発環境を入れる ~ apache から jenkins まで ~
ubuntu に php の開発環境を作ったのでメモ。 ubuntu のバージョンは 13.04 です。 他の OS から ssh 経由で操作しています。
apache のインストール
$ sudo apt-get install apache2
で OK です。 動作確認は
$ ifconfig
して、ブラウザからその IP にアクセスして "It works!" と表示してれば OK
php のインストール
$ sudo apt-get install php5 libapache2-mod-php5 $ sudo echo "<?php phpinfo(); | sudo tee /var/www/phpinfo.php > /dev/null $ sudo apt-get install php5 libapache2-mod-php5 $ sudo apt-get install php5-mysql
ブラウザからさっき調べた IP/phpinfo.php にアクセスして表示される事を確認します。
例: http://192.168.12.34/phpinfo.php
MySQL のインストール
次に MySQL をインストールします。
$ sudo apt-get install mysql-server
途中で root ユーザのパスワードを聞かれるので設定します。 インストール終了後、以下のように表示されれば OK です。
$ mysql -u root -p mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
phpunit のインストール
phpunit をインストールしますが、その前に pear を入れる必要があります。 以下のコマンドを入力します。
$ sudo apt-get install php-pear $ sudo apt-get install phpunit
動作確認は以下のコマンドを入力してバージョンが表示されれば OK です。
$ phpunit --version
jenkins のインストール
最後に jenkins をインストール。
$ sudo apt-get install jenkins
またブラウザから 8080 ポートにアクセスして おじいちゃんの顔が見えれば OK 。
すばらしい vim プラグイン 5 選 + 1
最近仕事がヒマなので何年かぶりに vim プラグインをあさったら、ものすごく便利なのがあったのでメモ。
私の .vimrc が github にあります。
NeoBundle
これが一番衝撃を受けた。 GitHub にでも .vimrc を登録しとけば どこでも同じ環境ができる。便利すぎ。
ctrlp.vim
ファイルを簡単に開けすプラグイン。 再帰的に検索してくれてその中から絞り込みしてくれる。
unite.vim
これは前から名前だけは知ってたけどちゃんと入れてみた。 ものすごく色々できうそうだけど、 まずは最近開いたファイルの履歴だけ使ってる。 それだけでもかなりいいですね。
gitv
vim から git が操作できる。 tig でもいいんだけど、気分によって使い分けてる。
surround.vim
文字列の " を ' に変えたいとかあるのでなかなか便利。