Java言語で学ぶリファクタリング入門
PHPでリファクタリングを学べる書籍を探していましたが、存在しなかったのでこの本で学習しました。Javaが読めることが前提ですが、十分PHPにも応用できると思います。
本格的なオブジェクト指向言語ではないPHPでは、特に巻末付録Aのリファクタリング一覧がもっともためになります。半分ぐらいはオブジェクト指向と関係ないのでますはここから学習しましょう。(多分リファクタリングとは意識せずに行っているものも多いと思います)
本編に関しては、enumが出てくる箇所は無視。第4章のヌルオブジェクトはJavaとはNULLの扱いが違うので無理に行う必要はないと思います。また第8章、9章のサブクラスによるタイプコードの置き換えや、State/Strategyによるタイプコードの置き換えはちょっと難しく、本格的なオブジェクト指向言語ではないPHPでここまでやる必要があるのかと感じました。また第12章の観察されるデータの複製はswingを使った特殊なパターンでテンプレートエンジンやフレームワークをよく使うPHPでは不要と感じられました。その他の章はPHPユーザでも参考になると思うので、リファクタリングに興味のある方は是非一読してみてください。
- 作者: 結城浩
- 出版社/メーカー: ソフトバンク クリエイティブ
- 発売日: 2007/01/27
- メディア: 大型本
- 購入: 12人 クリック: 189回
- この商品を含むブログ (110件) を見る
PHP Warning: PHP Startup: ******: Unable to initialize module
PHP Warning: PHP Startup: ******: Unable to initialize module 〜
や
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/xxxxxxxx.so' 〜
といったエラーが出た。プログラムは問題なく動いていたが、気持ち悪いので対処しました。(ここでの対処法は*******やxxxxxxxを使用しないことが前提です)
まず/etc/php.iniファイル内に「extension=*******.so」や「extension=xxxxxxx.so」と記述があればコメントアウト。次に/etc/php.dディレクトリ内の******.iniファイルやxxxxxx.iniファイルを開き、「extension=*******.so」や「extension=xxxxxxx.so」といった記述があればコメントアウト。これで私は対処できました。
Amazonレビュー数ランキングを公開しました
ServersMan@VPS+CentOS PHP(Smarty),MySQLにて作成しました。
http://www.rockstar2007.com/amazon/index.php?hierarchy=root&root_genre_id=465610
AmazonのAPIから第4階層のカテゴリまでの全商品(和書のみ)を集めてきて、DB化し、レビューの数順に表示しています。AmazonのAPIはレビュー数が取得できないので(昔はできたのに・・)、リンクのURLからhtmlを解析して取得しています。また各カテゴリごとに10ページまでしか取得できないので(昔は400ページまでいけたのに)、レビュー数が多くても現在の売れ筋商品から外れているもの(炎上したもの、過去に一時的に売れたもの)が取得出来ていません。それでもある程度は参考になると思い公開させていただきました。
phpMyAdminにログイン出来なくなった
apacheのユーザを変更したところ、phpMyAdminにログイン出来なくなった(リロードを繰り返す)。apacheのユーザを元に戻したところ、
Existing configuration file (./config.inc.php) is not readable.
とエラーが発生。
#chmod 705 /var/www/phpmyadmin/config.inc.php
でエラーが消えたが、再びphpMyAdminにログイン出来なくなった(リロードを繰り返す)。/var/lib/php/session内のファイルを削除したところ、無事ログイン出来ました。
ServersMan@VPS+CentOS PHP,MySQLの初期設定(Entryプラン)
CentOSのアップデート。
# yum update # cat /etc/redhat-release CentOS release 5.7 (Final)
MySQLのインストール。
# yum install mysql # yum install mysql-server # yum install mysql-devel
インストール後、MySQLの設定ファイルを編集→起動。
#vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). symbolic-links=0 old_passwords=1 default-character-set=utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [client] default-character-set=utf8 # /etc/rc.d/init.d/mysqld start
PHPのインストール。
# yum -y install php # yum -y install php-devel php-gd php-mbstring php-mysql php-pdo php-pear php-xml php-imap
phpmyadminを使用するため、PHPのバージョンを5.2に+php-mcryptのインストール。
# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka # vi /etc/yum.repos.d/utterramblings.repo [utterramblings] name=Jason's Utter Ramblings Repo baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka # yum update php* # yum install php-mcrypt
rpmファイルのenabledを0に。
# vi /etc/yum.repos.d/utterramblings.repo [utterramblings] name=Jason's Utter Ramblings Repo baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/ enabled=0 gpgcheck=1 gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
phpmyadminのインストール。
# yum -y install subversion # yum -y install expect # svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/STABLE/phpMyAdmin phpmyadmin # mv phpmyadmin/ /var/www/ # cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php # chmod 755 /var/www/phpmyadmin/config.inc.php # mkpasswd -l 46 ojwelolk6gmsswpgqosameeBmtxswelzamM4wdfcfolbz> ← ランダムな46桁の文字列※設定ファイル編集で使用する # vi /var/www/phpmyadmin/config.inc.php $cfg['blowfish_secret'] = 'ojwelolk6gmsswpgqosameeBmtxswelzamM4wdfcfolbz>'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Lang'] = 'ja-utf-8';
phpmyadminの設定。
# chown -R root.apache /var/www/phpmyadmin/ # vi /etc/httpd/conf.d/phpmyadmin.conf Alias /phpmyadmin /var/www/phpmyadmin # /etc/init.d/httpd restart
phpmyadminでログイン出来るようにするための設定。
#vi /etc/php.ini session.save_path = "/var/lib/php/session" ← session.save_pathを確認 # chmod 777 /var/lib/php/session
「Project Euler」解答ブログを作成した
数学の問題を好きなプログラミング言語で解く「Project Euler」というサイトがあります。こちらの翻訳wikiを見つけたので、Javaで随時解答していこうと思います。が、量がかなり多いため、別ブログを立ち上げました。
数学の問題を好きなプログラミング言語で解く「Project Euler」解答
よろしければ、こちらの方もご覧になって下さい。