アジャイル,Trac,オープンソースなどの話。認定スクラムマスター。Twitterは@ryuzee
よく使う手なのでメモっておく。意外とやっている人は少ないような気がする方法。
まずバックアップするためのMySQLの専用ユーザーを作成する。間違ってもmysqlのrootのパスワードを設定ファイルに書いたりしてはいけない。(自宅鯖で面倒なときはやるけど、本番システムではありえない)
↑バックアップユーザーを作成。でもアクセス元の制限がないので、下のようにアクセス元を制限しておかないと危険。
んで、肝なのだが、バックアップ&世代蓄積にlogrotateを使う。/etc/logrotate.d/以下に適当な名前でファイルを作るよ。拡張子も特に気にしなくてよい。
これ何やっているかというと、毎日前日分のバックアップファイルをローテーションして、それが終わったら当日分のデータベースのバックアップをmysqldumpコマンドを使ってとっているだけ。サイズが0でも日次で強制ローテーション。
注意点としては、postrotateもログファイルが1個もないような場合は動作しないので、初回だけ手でmysqldupコマンドを発行してログを作っておくくらいかな。
なお、強制的にlogrotateを実行させるには
みたいに実行すれば良い。
平均4時32分。GWの休みや土日含めて6時を超えているのが1回だけ。ほとんどが5時前に起床できており、規則正しさ抜群!。
まぁ体が朝方モードに完全に切り替わっていて、夜はその分10時には眠くなっちゃうから偉そうなことは言えないけど、でも朝の方が生産性が高いのは間違いないと思っている。
ということで、個人的には最初から決勝に残る気まんまんだったんだけど、残念ながら、奨励賞。
奨励賞ってサイトに掲載されてない新たに作られた賞で10人選ばれた様子。
[各賞]
・チャンピオン 1名様
・優秀賞(決勝進出者) 4名様
・NEC賞 1名様
・Microsoft賞 1名様
・64ビット賞 1名様
・ヤング奨励賞 1名様
・G.G賞 1名様
・エレガント賞 1名様
・Think IT賞 1名様
・EE Times賞 1名様
・奨励賞 10名様
で、賞品は何??(w
それにしても60個インストールしてこの順位だとすると、上位はコンプリートに近いのか。
もしくはソースコード改修して、SQLServer対応しまくったのか。
まぁ、いくつか実際の提案に使えそうなソフトウェアを見つけられたことが一番の収穫だな。
前のエントリで書いたWordTwitだが動作したよ。
修正ポイントを書いておく。
(1)wordtwit.phpで日本のタイムゾーンが考慮されていない?
wordtwit.phpの288行目あたり。
で投稿した時刻を取得して最終更新時刻と比較しているんだけど、こいつがGMTでの日時になっておりタイムゾーンが考慮されていない様子。なので以下のように変更する。
(2)MySQLのバージョンによってはテーブルが作成されない。
wordtwit_check_table() 関数の中でテーブルの存在チェックをして、無ければ作成しているんだけど、ここで文字コード等の属性を設定してテーブルを作成している。しかし、これができるのはMySQL4.1以降とMySQL5以降のはずで、僕が使っているさくらのレンタルサーバだと、4.0.27のバージョンなのでテーブルが作成されない。
仕方ないので自前で以下のようなクエリを使ってテーブルを作ってやる必要がある。
意外とはまったなぁ。
タイトルのまんま。こういうこともプラグインで簡単に出来てしまうwordpressって楽でいいね。
WordTwitというプラグインを使う。
使い方も簡単。いつもどおりアーカイブをダウンロードして解凍し、pluginsフォルダにアップロードして有効化。有効化が完了したら設定画面で自分のTwitterのアカウントとパスワードの設定をすれば良い。
#はずなんだけど、うまくPOSTしてくれていないような・・・。
このブログをiPhone対応してみた。iPhoneでみると以下のように表示される。
これ実現するためにはWPTouchというwordpressのプラグインを使えば良い。
導入は容易で、上記サイトから最新版をダウンロードしてきて解凍し、wordpressのpluginsディレクトリにアップロードし、有効化するだけ。
なお、WP-Cacheのようなコンテンツをキャッシュするプラグインを利用しているとバッティングしてしまって、キャッシュ切れのあとの初回アクセス時の媒体用のコンテンツが表示されてしまうことになるので注意が必要だ。確か同じような問題に携帯対応のときぶちあたっているのだが、もう面倒なので、一旦WP-Cacheを無効にしてある。
それにしても、中小企業がマルチキャリア対応のWebサイト作るんだったら、やっぱりブログエンジン使うのが一番簡単だよな~、とつくづく思うよ。
Yahoo!アクセス解析をこのブログに入れてみたよ!。まぁ既にGoogleAnalyticsも使っているわけだが。
それにしても、アクセス解析の製品群はライフサイクルがやたらと早い。
日本だとここんところOmnitureのサイトカタリストが圧倒的優勢になりつつある状況。ただ、サイトカタリストって使いこなしが難しいんだよね。画面のごちゃごちゃ感とあいまって、PCリテラシの低い人にとっては画面自体の敷居がかなり高い。
そういう意味では、このYahoo!アクセス解析みたいに軽量な解析ツールは、さくっと結果見たい人には良いだろうね。
以前にも書いたんだけど、CentOS5系を利用していると、バリデーションのAlphaNumericが動作してくれない。その回答としては、環境に問題あるので、PCREをバージョンアップして、という風に書いたが、これだと、納品後どのサーバに配置するかによって、アプリケーションの動作に差が出てしまう。環境差によって差があるのであれば、それを検証するテスト書かなきゃいけなくなるので、今回は本体を修正して、環境非依存な状態にする方法を紹介する。
libsディレクトリの中にあるvalidation.phpを修正する。
修正前
if (is_array($check)) {
$_this->_extract($check);
}
if (empty($_this->check) && $_this->check != '0') {
return false;
}
$_this->regex = '/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu';
return $_this->_check();
}
修正後。$_this->regexのところが普通の正規表現に変わっている。
ちゅーか、なんでPCREつかっているのか分からん。
まだ色々試行錯誤中なんだけど、途中経過としてメモ。
cakephpでSimpleTestを使ったテスト自動化をしているんだけど、コントローラーのテストでは、メソッドにredirectが含まれていると、テストが途中で中断してしまう。(テスト自体がリダイレクトされてしまう)。
絵で説明すると、最初にSImpleTestにアクセスすると、以下のような画面が表示される。これは特に問題ない。

んで、メソッドの中にredirectが含まれないやつのテスト結果。これも緑なのでOK。

じゃあ、ということで、以下のメソッドについてテストを書く。
もう、ふんだんにredirectしちゃってる。まぁloginだから普通なんだけど。
んで、テスト内容的には
とかそんな感じになるかと思うのだが、これ、そのままだとテスト出来ない。
例えば、ログインのテストコードは以下のように書いてみる。
これは正常ログインするケースなのだが、正しい動作なら、/usrs/loginで正常に認証を完了すると、ログイン後トップページにリダイレクトされて、「ようこそ××さん」とかが出るはず。なので、戻り値の$resultを正規表現でごにょごにょすれば完成のように見えるんだけど、このテストを実行すると、下図のようになる。

残念ながら、テスト対象クラスの中のredirect関数で、本当にredirectされちまった。。。
ということで、対応方法を色々考えたのだが、一番手っ取り早い方法を書いておく。それは
runkit(PHPの拡張)
を使う。runkitは
runkitは、PHPの定数や関数、クラス、メソッドを追加・変更・削除したり、独自のスーパーグローバル変数を定義したりできるPHPのエクステンションです。
(http://www.phppro.jp/phptips/archives/vol50/1より)
ということで、今ある関数やクラスの挙動を外部から動的に変更できるすぐれものだ。
こいつを使って、例えばこうする。
//redirectメソッドを抹消
runkit_method_redefine("UsersController" , "redirect" , '$url, $status = null, $exit = true' , "return true;" );
$this->Users = new TestUsers();
$this->Users->constructClasses();
}
これで、UsersControllerのredirectメソッドは単にtrueを返すように挙動が変更され、テストが途中で中断されることもなくなった。
あくまでテストコードなので、これで十分だと思うのだが、どうだろうか?
もっと良い方法があればコメントで教えてほしいなぁと。
日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有