I ♥ WordPress

僕に一番向いてるプログラミング言語
2007/10/18 00:17 posted by kunkichi

Lightweight Language AHP

今更Pyth(ry

いや、ほんとまじめに勉強しようと思っています。

さくらで CakePHP
2007/09/17 03:21 posted by kunkichi

ちょっと作りたいアプリケーションを思いついたので、最近流行の CakePHP をさくらインターネットで使ってみようと。その時のメモ。

ちなみにうちのディレクトリ構成はこんな感じ。+/home/example ・・・ ホームディレクトリ
  |
  +cake ・・・ cake ディレクトリ
  |
  +apps ・・・ CakePHPで作成するアプリケーション用ディレクトリ
  | |
  | +app1 ・・・ CakePHPで作成するアプリ1のappディレクトリ
  | | |
  | | +config, docs, libs, scriptsディレクトリとファイル
  | |
  | +app2 ・・・ CakePHPで作成するアプリ2のappディレクトリ
  |   |
  |   +config, docs, libs, scriptsディレクトリとファイル
  |
  +www ・・・ ウェブで公開されるディレクトリ(DocumentRoot)
    |
    +app1 ・・・  CakePHPで作成するアプリ1 の webroot
    |
    +app2 ・・・  CakePHPで作成するアプリ2 の webroot
    |
    +other ・・・  CakePHP以外のアプリを使う場合のディレクトリ
ちなみに以下のサイトを参考にさせてもらいました。

ディレクトリ構成的には、

  • 複数のアプリを同じcakeライブラリで使い回せるよう、cakeディレクトリを/home/UserName 配下に置く。

辺りのところは、I Love PHP さんとこで紹介されているのと同じポリシーなんだけど、

  • セキュリティ的な観点から、appディレクトリはDocumentRoot(さくらの標準では、/home/UserName/www)からは見えないところに置く。DocumentRootに配置するのは、webrootディレクトリのみ。
  • CakePHPで複数のアプリを作成するので、appディレクトリはアプリごとにコピーして配置。
  • 同様に、webrootディレクトリもアプリごとにコピーして配置。各アプリへのアクセスは、http://www.○○○.com/app1/ みたいな感じでアクセス。
    CakePHP以外のアプリをインストールする場合も同様のポリシー。

というところを追加してみました。

最近はホスティングもドメインも安くなってきたけど、それでもやっぱり余計な出費は抑えたい、一つの契約でいろいろやりたい、というお金がない人向けの設定(笑)。でも結構ニーズあるかと。

手順は以下。

ソースのダウンロードと展開
# cd ~/tmp
# wget http://cakeforge.org/frs/download.php/502/cake_1.1.17.5612.tar.gz
# tar zxvf cake_1.1.17.5612.tar.gz
# cd cake_1.1.17.5612

CakePHPライブラリの配置
# cp -r cake /home/example/.

アプリ用ディレクトリにappディレクトリを配置
# mkdir /home/example/apps
# cp -r app /home/example/apps/app1

公開ディレクトリにwebrootディレクトリを配置
# mv /home/example/apps/blog/webroot /home/example/www/app1

設定ファイルの編集
# vi /home/example/www/app1/index.php変更箇所は以下。CakePHPのマニュアルによると、ディレクトリのパスは’/abc/def’と指定するより、DS.’abc’.DS.’def’が推奨と書いてあるので、それに併せてます。
・・・
define('ROOT', DS.'home'.DS.'UserName'.DS.'apps');
・・・
define('APP_DIR', 'app1');
・・・
define('CAKE_CORE_INCLUDE_PATH', DS.'home'.DS.'UserName');
・・・

mod_rewriteの設定
# vi /home/example/app1/.htaccess
    RewriteBase   /app1

データベースの設定
# cd /home/example/apps/app1/config
# cp -pi database.php.default database.php
# vi database.php
変更箇所は以下。
・・・
class DATABASE_CONFIG
{
    var $default = array( 'driver'   => 'mysql',
                          'connect'  => 'mysql_connect',
                          'host'     => 'mysqlXX.db.sakura.ne.jp',
                          'login'    => 'UserName',
                          'password' => 'password',
                          'database' => 'UserName',
                          'prefix'   => 'app1_');
 
    var $test = array('driver' => 'mysql',
・・・
}

prefixをつけているのは、複数のアプリを作る場合にややこしくなりそうなので。

あ、そうそう、うちではビルドしたphp5で確認してます。さくら標準のphp4でも同様に動くかどうかは不明。

ではぼちぼち作っていきます。

いよいよ PHP4 が終焉、、、
2007/07/14 02:42 posted by kunkichi

php本家にこんなニュースが、、、拙訳ですが。

PHP 4 開発終了のお知らせ(※クリックすると原文に飛びます。)

[2007年7月13日] 今日からちょうど3年前、PHP5がリリースされました。この3年間、PHP 4を超える多くの改善が見られました。PHP5 は 高速で安定した製品レベルに達しており、PHP 6 も 開発中ですので、PHP 4 は 終了する予定です。

PHP 開発チームはここにPHP4のサポートが今年の年末までしか続かないことをお知らせします。2007年12月31日より後は、PHP4.4. 以上のさらなるリリースはないでしょう。私たちは、2008年8月8日までは、あくまでもケース・バイ・ケースになりますが、緊急のセキュリティ修正については継続して提供する予定です。どうか、あなたのアプリケーションがPHP 5での動作に適した形になるように、今年の残りを使ってください。

PHP 4 からPHP 5 への移行に関するドキュメントについては、私たちは移行ガイドをお勧めします。同様に PHP 5.0 から PHP 5.1、PHP 5.1 から PHP 5.2 への移行ガイドにおいても追加情報が手に入ります。(www.php.net

いよいよかー、個人的には PHP4 が初めて勉強したプログラミング言語だったので感慨深いものがあります。
ただ、PHP5への移行はあまり進んでいないという現状に、これがどう影響するかだなー。

PHP5への移行が進んでいないという情報に関するサイトを以下につけときます。
・PHP is dead … long live PHP!

PHPでリモートデバッグ
2006/12/09 18:19 posted by kunkichi

昨日は仕事を午前休もらって、アシアル株式会社主催のPHPセミナーに行ってきました。もちろん無料セミナー(笑。

で今回のテーマは「PHPで快適デバッグ」

PHPのデバッグ、というかWebアプリのデバッグは、例えばVisual Studioなんかを使ったデバッグとはちょっと違って難しいところがある。例えば、スクリプトのある時点での変数の値を確認したいとする。

Visual Studio だと、

  • 変数に値が入るところでブレークポイントを入れて処理をそこで止める。
  • 確認したい変数にマウスを合わせると値が表示される。

って感じで簡単にできるのだけど、Webアプリケーションとなるとこれが一気に難しくなる。

  • 変数に値が入るところで exit 入れたりして処理を止める。(ループがネストしていると大変、、、)
  • 変数を画面に出力するように print_r やら var_dump で処理を入れる。(後で消すのを忘れて本番にそのままいっちゃったり、、、)

こんな感じでとても原始的な上に後でめんどくさくなるやり方をするパターンが多い。というのもWebアプリでは処理はサーバ側で実行されるので、サーバ側で制御してあげないといけない。ローカルPCで Visual Studio を使うようにはいかないのだな。

ということで、DBG + DBGListener + DBGクライアント(PHPSimpleDebugger) を使った手法の説明がメインでした。簡単な図で表すと、
dbg.jpg

      1. ブラウザからリクエストにデバッグ用変数をくっつけて送信。
      2. デバッグ用変数に含まれているクライアントにデバッグ情報を送信。
      3. DBGListnerがデバッグ情報を受けてDBGクライアントを起動。
      4. DBGクライアントからデバッグ実行。
      5. DBGListener経由でサーバにデバッグ命令を送信。
      6. デバッグ命令を元にブラウザにレスポンスを返す。

試してないのでちょっと間違ってるかもしれないけど、要はサーバとクライアントでデバッグ用のポートを別途用意して、デバッグ情報や制御をそこで行うと。これでIDEライクなデバッグができるという訳。昔DBGを試してみたことはあったのだけど、リモートではうまく動かなかったのでそこで諦めてたんだよね。SSHでトンネル貼れば本番環境でもデバッグできそうだし。早速会社で試してみようっと。

あとDBG以外にもいろいろ面白いのがありました。

  • Pear::Var_dump
    var_dumpの出力結果を奇麗に表示してくれるPEARライブラリ。
  • dbug
    こちらも同じ。JavaScriptで折りたたみとかできるみたい。
  • Xdebug
    DBGと同じぐらい高機能なデバッグモジュール。
  • Gubed
    PHPで書かれたデバッグライブラリ。Firefoxのエクステンションと連動するらしい。
  • WinCacheGrind
    Xdebugで出力されたプロファイリング結果を表示するアプリ。

activeCollabがさくらにインストールできない件について
2006/11/30 23:56 posted by kunkichi

前のエントリでphp5をインストールしたので、やっとactiveCollabを試せると思っていたのに、インストールしてみると、、、

InnoDB storage engine is not supported.

さくらのmysqlってInnoDB非対応なのね、、orz

うーん、どうするかなあ、、、

【追記】
InnoDBじゃなくてMyISAMでは動かないのかなぁと思って、本家サイトのフォーラムをのぞいてみるとFAQ化していた様子、、、自分にorz

It should work, but I strongly recommend using InnoDB because activeCollab uses transaction to keep data in sync and recover from errors. Its that important that I’d say that InnoDB is requirement, but you can use MyISAM at your own risk.

To use MyISAM do what gog said in the previous post (open install/installation/templates/sql/mysql_schema.php and replace every occurance of ENGINE=InnoDB with ENGINE=MyISAM).

うーん、一人で使うつもりだから、とりあえずソースいじって使ってみるかな。

さくらでphp5(pearエラー対応)
2006/11/30 20:01 posted by kunkichi

さくらインターネットでphp5をインストールする手順はたくさんの人が書いているけど、それらを参考にphp-5.2.0をインストールしてみたところ、make installでpearのエラーが発生する。

ということでググってみたところ、琥瑠璃どっとこむ:さくらのレンタルサーバーへPHP5.2.0をインストールでやっぱり指摘されていたので、それに従いインストール。

うちのconfigureオプションはこんな感じ。
# export PHP_PEAR_CACHE_DIR="$HOME/local/php-5.2.0/pear/cache"
 
# ./configure ¥
--prefix=$HOME/local/php-5.2.0 ¥
--program-suffix=5 ¥
--with-pear=$HOME/local/php-5.2.0/share ¥
--with-config-file-path=$HOME/local/etc/php5.ini
--enable-force-cgi-redirect ¥
--enable-mbstring=all ¥
--enable-mbregex ¥
--enable-mbstr-enc-trans ¥
--enable-versioning ¥
--enable-trans-sid ¥
--with-mysql ¥
--with-openssl=/usr ¥
--with-soap=yes ¥
--with-zlib=/usr ¥
--with-gd=/usr/local ¥
--with-jpeg-dir=/usr ¥
--with-freetype-dir=/usr ¥
--with-ttf ¥
--with-png-dir=/usr ¥
--with-curl ¥
--with-iconv=/usr/local

ちょっと冗長なところもありますが、細かいことは気にしないタイプなので、爆。

これでactiveCollabを試してみたいと思います。

このページの先頭へ