<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web活メモ帳 &#187; php</title>
	<atom:link href="http://blog.verygoodtown.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.verygoodtown.com</link>
	<description>WEB開発者が使える世界の情報を発信します。</description>
	<lastBuildDate>Thu, 09 Feb 2012 02:01:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mac OS X LionでPEARをインストールする方法</title>
		<link>http://blog.verygoodtown.com/2012/01/mac-os-x-lion-php-pear/</link>
		<comments>http://blog.verygoodtown.com/2012/01/mac-os-x-lion-php-pear/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 01:00:34 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Mac OSX]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=7802</guid>
		<description><![CDATA[
本日、Mac OS X LionにPEARをインストールする作業を行ったので、自分用にメモです。
※注意
作業に当たって、Xcodeが必要かもしれません。
XcodeのインストールはApp Storeからインストールで [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2012/01/20110118-02.png" alt="20110118 02" title="20110118-02.png" border="0" width="146" height="62" /></p>
<p>本日、Mac OS X LionにPEARをインストールする作業を行ったので、自分用にメモです。</p>
<p><strong style="color:rgb(255,0,0);">※注意</strong><br />
作業に当たって、Xcodeが必要かもしれません。<br />
XcodeのインストールはApp Storeからインストールできます。<br />
<img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2012/01/20110118-01.png" alt="20110118 01" title="20110118-01.png" border="0" width="146" height="159" /></p>
<h3>pearのインストール</h3>
<p>ターミナルから、以下のコマンド実行します。</p>
<pre class="code">
$ sudo php /usr/lib/php/install-pear-nozlib.phar
</pre>
<p>↓下のようなメッセージが表示されてインストールされていきます。</p>
<pre class="code">
Password:
[PEAR] Archive_Tar    - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.9.2
Wrote PEAR system config file at: /private/etc/pear.conf
You may want to add: /usr/lib/php/pear to your php.ini include_path</pre>
<p>これでインストールは完了です。簡単ですね!</p>
<h3>php.iniの作成</h3>
<p>php.iniを作成します。<br />
iniファイルがすでにある場合には、この項目は飛ばしてください。<br />
無い場合には、初期状態のファイルがあるはずなので、以下のコマンドでコピーします。</p>
<pre class="code">
sudo cp /etc/php.ini.default /etc/php.ini
</pre>
<h3>パスの指定</h3>
<p>php.iniにpearのパスを指定します。<br />
include_pathに<strong>/usr/lib/php/pear</strong>を追加します。</p>
<p>追加前</p>
<pre class="code">
include_path = ".:/php/includes"
</pre>
<p>↓</p>
<p>追加後</p>
<pre class="code">
include_path = ".:/php/includes:/usr/lib/php/pear"
</pre>
<p>これで設定は完了です。</p>
<p>ライブラリをインストールするには、通常通りinstallコマンドを実行でOKです。<br />
試しにPagerをインストールしてみます。</p>
<pre class="code">
sudo pear install Pager
</pre>
<p>インストールされたファイルは/usr/lib/php/pearにあるようですね。</p>
<p>以上、Mac OS X LionでPEARをインストールする方法でした！<br />
以下のサイトを参考にさせていただきました。ありがとうございます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2012/01/mac-os-x-lion-php-pear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP4でCSVをパースするライブラリ</title>
		<link>http://blog.verygoodtown.com/2011/12/php4-csv-parser/</link>
		<comments>http://blog.verygoodtown.com/2011/12/php4-csv-parser/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 08:10:40 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[php4]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=7774</guid>
		<description><![CDATA[
php4からCSVを読み込むライブラリをご紹介。
今更php4ですか。。。と、思いますよね。。
私もそう思っていたんですが、受諾開発していると、意外と遭遇するんです^^;
CSV系のライブラリは検索すればすぐ見つかるか [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/12/20111221-01.png" alt="20111221-01" title="20111221-01" width="153" height="80" class="alignnone size-full wp-image-7775" /></p>
<p>php4からCSVを読み込むライブラリをご紹介。</p>
<p>今更php4ですか。。。と、思いますよね。。<br />
私もそう思っていたんですが、受諾開発していると、意外と遭遇するんです^^;</p>
<p>CSV系のライブラリは検索すればすぐ見つかるかな、と思ったんですが、意外とライブラリ探しに時間がかかったのでブログでご紹介します。</p>
<p>このライブラリを使うと<strong>ファイル名を指定したら配列で値を取得</strong>できるので、結構便利ですよ。<br />
※ちなみに、php標準の関数であるfgetcsvでもOKという方は読み飛ばしてくださいませ。</p>
<p>使い方は以下<br />
<span id="more-7774"></span></p>
<h3>CSVReaderクラス</h3>
<p>クラスはCodeigniterの<a href="http://codeigniter.com/wiki" target="_blank">Wiki</a>に<a href="http://codeigniter.com/wiki/CSVReader" target="_blank">CSVReader</a>というクラスがありましのたで<br />
それを使います。</p>
<pre class="brush:php;">
class CSVReader {

    var $fields;            /** columns names retrieved after parsing */
    var $separator = ';';    /** separator used to explode each line */
    var $enclosure = '"';    /** enclosure used to decorate each field */

    var $max_row_size = 4096;    /** maximum row size to be used for decoding */

    /**
     * Parse a file containing CSV formatted data.
     *
     * @access    public
     * @param    string
     * @param    boolean
     * @return    array
     */
    function parse_file($p_Filepath, $p_NamedFields = true) {
        $content = false;
        $file = fopen($p_Filepath, 'r');
        if($p_NamedFields) {
            $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
        }
        while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {
            if( $row[0] != null ) { // skip empty lines
                if( !$content ) {
                    $content = array();
                }
                if( $p_NamedFields ) {
                    $items = array();

                    // I prefer to fill the array with values of defined fields
                    foreach( $this->fields as $id => $field ) {
                        if( isset($row[$id]) ) {
                            $items[$field] = $row[$id];
                        }
                    }
                    $content[] = $items;
                } else {
                    $content[] = $row;
                }
            }
        }
        fclose($file);
        return $content;
    }
}</pre>
<h3>使い方</h3>
<p>使い方はこんな感じです。</p>
<p>■CSVファイル</p>
<pre class="code">
name,address,tel
Aさん,東京都,03-0000-0000
Bさん,千葉県,047-000-000
Cさん,札幌市,011-000-0000
</pre>
<p>■コード</p>
<pre class="brush:php;">
$csv = new CSVReader();
$csv->separator = ','; //区切り文字を指定
$data = $csv->parse_file('./hoge.csv');  //ファイル名を指定
var_dump($data);</pre>
<p>■出力</p>
<pre class="code">array(3) {
  [0]=>
  array(3) {
    ["name"]=>
    string(5) "Aさん"
    ["address"]=>
    string(6) "東京都"
    ["tel"]=>
    string(12) "03-0000-0000"
  }
  [1]=>
  array(3) {
    ["name"]=>
    string(5) "Bさん"
    ["address"]=>
    string(6) "千葉県"
    ["tel"]=>
    string(11) "047-000-000"
  }
  [2]=>
  array(3) {
    ["name"]=>
    string(5) "Cさん"
    ["address"]=>
    string(6) "札幌市"
    ["tel"]=>
    string(12) "011-000-0000"
  }
}
</pre>
<p>1行目をキーにして、配列に変換してくれました。</p>
<p>便利ですね〜。<br />
作者の方には感謝です。</p>
<p>という事でPHP4でCSVをパースするライブラリでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/12/php4-csv-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オープンソースのGoogle Readerクローン「Tiny Tiny RSS」</title>
		<link>http://blog.verygoodtown.com/2011/07/open-source-google-reader-tiny-tiny-rss/</link>
		<comments>http://blog.verygoodtown.com/2011/07/open-source-google-reader-tiny-tiny-rss/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 00:56:04 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=7642</guid>
		<description><![CDATA[
オープンソースのGoogle Readerクローン「Tiny Tiny RSS」
個人的にはRSSリーダーにGoogle Readerを使用しているが、
自前でフィードリーダーを構築したい場合もあるかもしれない。
デー [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110713-01.png" alt="20110713 01" title="20110713-01.png" border="0" width="500" height="261" /></p>
<p>オープンソースのGoogle Readerクローン「<a href="http://tt-rss.org/redmine/" target="_blank">Tiny Tiny RSS</a>」</p>
<p>個人的にはRSSリーダーにGoogle Readerを使用しているが、<br />
自前でフィードリーダーを構築したい場合もあるかもしれない。</p>
<p>データを外部に置きたくない場合や、Googleが嫌い（？）という方、<br />
または自前でフィードリーダーを構築して様々なデバイス用にカスタマイズしたい場合にどうだろうか。</p>
<h3>機能</h3>
<p>マルチユーザモード、国際化、コンテンツフィルタ、記事のスコアリング、モバイル用のインターフェースなど多機能な作りになっている。</p>
<p>ソースコードはPHPで作られており、データベースにはMySQLやPostgreSQLを使用できるようになっている。</p>
<p>実際の動きはデモを見ていただくのが早いだろう。<br />
<a href="http://tt-rss.org/demo/tt-rss.php" target="_blank">デモ</a></p>
<p>Google Readerからエクスポート、インポートも出来るので、移行も簡単だ。</p>
<p>気になった方は試してみてはどうだろう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/07/open-source-google-reader-tiny-tiny-rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cakephpを使って10分でCMSを作る方法</title>
		<link>http://blog.verygoodtown.com/2011/07/cakephp-10-minutes-cms/</link>
		<comments>http://blog.verygoodtown.com/2011/07/cakephp-10-minutes-cms/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 01:00:04 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=7612</guid>
		<description><![CDATA[こんにちわ。
先日cakephpを使って10分でCMSを作る方法を教える必要があったのですが、まとめた資料をブログでもシェアします。
CMSってこんなに簡単に作れるんだ！を体験してもらえたら幸いです。
環境はすでに構築し [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ。<br />
先日cakephpを使って10分でCMSを作る方法を教える必要があったのですが、まとめた資料をブログでもシェアします。<br />
CMSってこんなに簡単に作れるんだ！を体験してもらえたら幸いです。</p>
<p>環境はすでに構築してある前提ですが、ローカルサーバーを立てたい場合には、<br />
以下のサイトが参考になるかと思います。</p>
<ul>
<li><a href="http://www.be-webdesigner.com/technotes/server/install/xampp.htm" target="_blank">XAMPPのインストール for Windows</a></li>
<li><a href="http://www.be-webdesigner.com/technotes/server/install/mamp.htm" target="_blank">MAMPのインストール for Mac</a></li>
</ul>
<p>ではでは、早速言ってみましょう！</p>
<h3>1.CakePHPの最新版をダウンロード</h3>
<p>まずはCakePHPの公式サイトから最新版をダウンロードします。<br />
<a href="https://github.com/cakephp/cakephp/downloads" target="_blank">https://github.com/cakephp/cakephp/downloads</a></p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-01-1.jpg" alt="20110704 01 1" title="20110704-01-1.jpg" border="0" width="582" height="399" /></p>
<p>ダウンロードしたファイルを解凍すると長い名前になっているので、「cakephp」などにリネームしておきます。</p>
<p>そしてFTPソフトでサーバーにアップロードします。アップ先は公開ディレクトリにしてください。</p>
<p>SSHで実行する場合は、以下のコマンドを叩きます。</p>
<pre class="code">
wget https://github.com/cakephp/cakephp/tarball/1.3
tar xvfz 1.3
mv ./cakephp-cakephp-ee16348/ ./cakephp/
</pre>
<h3>1.CakePHPのセットアップ</h3>
<p>それでは、CakePHPが動作するようにセットアップしていきます。</p>
<p>セットアップにはbakeというコマンドを使用します。<br />
これはコマンドラインでMVC　（M=モデル、V＝ビュー、C＝コントローラー）のプログラムを自動で生成してくれる機能です。<br />
爆速でプログラミングできるようになるので、今回はこれを使います。</p>
<p>それでは、まずターミナルを立ち上げて以下のコマンドを実行しましょう。<br />
今回はnewappというディレクトリを作成して、そこに全て格納するようにします。</p>
<p>cakephpへのパスは先ほどダウンロードしたディレクトリです。<br />
適時変更しながら読み進めてくださいね。</p>
<pre class="code">
$ cakephp/cake/console/cake bake <span class="update">← bakeコマンドを実行します。</span>

Welcome to CakePHP v1.3.10 Console
---------------------------------------------------------------
App : public
Path: /home/username/public
---------------------------------------------------------------
What is the full path for this app including the app directory name?
 Example:/home/username/public/myapp
[/home/username/public/myapp] > <span class="update">/home/username/public/newapp
 ←パスを指定します。</span>

Bake Project
Skel Directory: /home/username/public/cakephp/cake/console/templates/skel
Will be copied to: /home/username/public/newapp
---------------------------------------------------------------
Look okay? (y/n/q)
[y] > <span class="update">←空Enter</span>
Do you want verbose output? (y/n)
[n] >  <span class="update">←空Enter</span>
---------------------------------------------------------------
Created: newapp in /home/username/public/newapp
---------------------------------------------------------------

Creating file /home/username/public/newapp/views/pages/home.ctp
Wrote `/home/username/public/newapp/views/pages/home.ctp`
Welcome page created
Random hash key created for 'Security.salt'
Random seed created for 'Security.cipherSeed'
CAKE_CORE_INCLUDE_PATH set to /home/username/public/cakephp in webroot/index.php
CAKE_CORE_INCLUDE_PATH set to /home/username/public/cakephp in webroot/test.php
Remember to check these value after moving to production server
Your database configuration was not found. Take a moment to create one.
---------------------------------------------------------------
Database Configuration:
---------------------------------------------------------------
Name:
[default] >  <span class="update">←空Enter</span>
Driver: (db2/firebird/mssql/mysql/mysqli/odbc/oracle/postgres/sqlite/sybase)
[mysql] >  <span class="update">←空Enter。MySQLを使う。</span>
Persistent Connection? (y/n)
[n] > <span class="update">←空Enter</span>
Database Host:
[localhost] > <span class="update">←DBのホスト名を入力。今回はlocalhostを使用。</span>
Port?
[n] > <span class="update">←空Enter。ポートはデフォルトを使用。</span>
User:
[root] > hoge <span class="update">←DBのユーザー名を指定</span>
Password:
> fuga <span class="update">←DBのパスワードを指定</span>
Database Name:
[cake] > hoge <span class="update">←DB名を指定</span>
Table Prefix?
[n] > <span class="update">←空Enter</span>
Table encoding?
[n] > <span class="update">←空Enter</span>

---------------------------------------------------------------
The following database configuration will be created:
---------------------------------------------------------------
Name:         default
Driver:       mysql
Persistent:   false
Host:         localhost
User:         hoge
Pass:         ************
Database:     hoge
---------------------------------------------------------------
Look okay? (y/n)
[y] > <span class="update">←この内容でOKなら空Enter。</span>
Do you wish to add another database configuration?
[n] > <span class="update">←空Enter。DB設定は１つのみ。</span>

Creating file /home/username/public/newapp/config/database.php
Wrote `/home/username/public/newapp/config/database.php`
</pre>
<p>これで /home/username/public/newapp にアプリケーションがセットアップできました。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-02.jpg" alt="20110704 02" title="20110704-02.jpg" border="0" width="500" height="326" /></p>
<p>↑http://[ドメイン]/newapp/にアクセスして、ページが表示されればひとまずOKです。</p>
<h3>2.テーブルを作成する</h3>
<p>それでは、CakePHPで更新するテーブルを作成します。<br />
今回はPostテーブルという名前で作成します。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-03.jpg" alt="20110704 03" title="20110704-03.jpg" border="0" width="500" height="130" /></p>
<p>↑タイトルと本文だけのシンプルな構造です。</p>
<p>SQLはこんな感じです。</p>
<pre class="code">
CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) character set utf8 NOT NULL,
  `body` text character set utf8 NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
</pre>
<h3>3.アプリケーションのセットアップ</h3>
<p>ここから再度コンソールに戻ってbakeを実行します。<br />
オプションの引数でアプリ名を指定します。</p>
<pre class="code">
$ cakephp/cake/console/cake bake -app newapp
<span class="update">←newappのセットアップを行います</span>

Welcome to CakePHP v1.3.10 Console
---------------------------------------------------------------
App : newapp
Path: /home/username/public/newapp
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> M <span class="update">←モデルを作成します。</span>
---------------------------------------------------------------
Bake Model
Path: /home/username/public/newapp/models/
---------------------------------------------------------------
Possible Models based on your current database:
1. Post
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 1 <span class="update">←Postモデルを作成する</span>
Would you like to supply validation criteria
for the fields in your model? (y/n)
[y] > <span class="update">←空Enter。入力チェックを追加します。</span>

Field: id
Type: integer
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[29] >  <span class="update">←空Enter。idフィールドは入力チェックはしない。</span>

Field: title
Type: string
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[19] >  <span class="update">←空Enter。タイトルを必須項目にする。</span>
Would you like to add another validation rule? (y/n)
[n] > y <span class="update">←続けて入力チェックを追加する</span>

Field: title
Type: string
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[19] > 15 <span class="update">←タイトルの文字数制限を行う。</span>
Would you like to add another validation rule? (y/n)
[n] > <span class="update">←空Enter。次の項目へ。</span>

Field: body
Type: text
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[29] > 19 <span class="update">←本文を必須にする</span>
Would you like to add another validation rule? (y/n)
[n] > <span class="update">←空Enter。次の項目へ。</span>

Field: created
Type: datetime
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[29] > <span class="update">←空Enter。作成日は入力チェックはしない</span>

Field: modified
Type: datetime
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - uuid
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.

[29] > <span class="update">←空Enter。更新日は入力チェックはしない</span>
Would you like to define model associations
(hasMany, hasOne, belongsTo, etc.)? (y/n)
[y] > n <span class="update">←モデルのアソシエーション。今回は使用しない</span>

---------------------------------------------------------------
The following Model will be created:
---------------------------------------------------------------
Name:       Post
DB Table:   `posts`
Validation: Array
(
    [title] => Array
        (
            [notempty] => notempty
            [maxlength] => maxlength
        )

    [body] => Array
        (
            [notempty] => notempty
        )

)

---------------------------------------------------------------
Look okay? (y/n)
[y] > <span class="update">←上記プレビューの内容で良ければ空Enter</span>

Baking model class for Post...

Creating file /home/username/public/newapp/models/post.php
Wrote `/home/username/public/newapp/models/post.php`
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n <span class="update">←自動テストは今回は作成しない</span>
</pre>
<p>これでModelの設定は完了です。<br />
次にControllerを設定します。</p>
<pre class="code">
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> C <span class="update">←コントローラーを作成</span>
---------------------------------------------------------------
Bake Controller
Path: /home/username/public/newapp/controllers/
---------------------------------------------------------------
Possible Controllers based on your current database:
1. Posts
Enter a number from the list above,
type in the name of another controller, or 'q' to exit
[q] > 1 <span class="update">←Postを選択</span>
---------------------------------------------------------------
Baking PostsController
---------------------------------------------------------------
Would you like to build your controller interactively? (y/n)
[y] >  <span class="update">←空Enter。対話式で作成します。</span>
Would you like to use dynamic scaffolding? (y/n)
[n] >  <span class="update">←空Enter。scaffoldは使用しない。</span>
Would you like to create some basic class methods
(index(), add(), view(), edit())? (y/n)
[n] > y <span class="update">←Postデータの一覧や追加変更処理を自動生成する</span>
Would you like to create the basic class methods for admin routing? (y/n)
[n] >  <span class="update">←空Enter。URLにadminを使用しない。</span>
Would you like this controller to use other helpers
besides HtmlHelper and FormHelper? (y/n)
[n] >  <span class="update">←空Enter。Htmlヘルパーを使用しない。</span>
Would you like this controller to use any components? (y/n)
[n] >  <span class="update">←空Enter。コンポーネントを使用しない。</span>
Would you like to use Session flash messages? (y/n)
[y] >  <span class="update">←空Enter。flashコンポーネントを使用する。</span>

---------------------------------------------------------------
The following controller will be created:
---------------------------------------------------------------
Controller Name:
	Posts
---------------------------------------------------------------
Look okay? (y/n)
[y] >  <span class="update">←上記プレビューの内容で良ければ空Enter</span>

Creating file /home/username/public/newapp/controllers/posts_controller.php
Wrote `/home/username/public/newapp/controllers/posts_controller.php`
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n <span class="update">←自動テストは今回は作成しない</span>
</pre>
<p>これでコントローラーも完了です。<br />
最後にViewファイルを作ります。</p>
<pre class="code">
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> V <span class="update">←Viewを選択</span>
---------------------------------------------------------------
Bake View
Path: /home/username/public/newapp/views/
---------------------------------------------------------------
Possible Controllers based on your current database:
1. Posts
Enter a number from the list above,
type in the name of another controller, or 'q' to exit
[q] > 1 <span class="update">←Postを選択</span>
Would you like bake to build your views interactively?
Warning: Choosing no will overwrite Posts views if it exist. (y/n)
[n] > y <span class="update">←上書きを許可</span>
Would you like to create some CRUD views
(index, add, view, edit) for this controller?
NOTE: Before doing so, you'll need to create your controller
and model classes (including associated models). (y/n)
[y] >  <span class="update">←空Enter。一覧や追加変更ページを自動生成する</span>
Would you like to create the views for admin routing? (y/n)
[n] >  <span class="update">←空Enter。URLにadminを含むページを作成しない。</span>

Creating file /home/username/public/newapp/views/posts/index.ctp
Wrote `/home/username/public/newapp/views/posts/index.ctp`

Creating file /home/username/public/newapp/views/posts/view.ctp
Wrote `/home/username/public/newapp/views/posts/view.ctp`

Creating file /home/username/public/newapp/views/posts/add.ctp
Wrote `/home/username/public/newapp/views/posts/add.ctp`

Creating file /home/username/public/newapp/views/posts/edit.ctp
Wrote `/home/username/public/newapp/views/posts/edit.ctp`
---------------------------------------------------------------

View Scaffolding Complete.
</pre>
<p>これで表示画面も設定が終わりました。</p>
<p>１点だけ、ファイルを修正する必要があります。</p>
<p>Postモデルのタイトルチェックで追加した文字数制限ですが、<br />
制限したい文字数を記述する必要があるので直接ファイルを書き換えます。</p>
<p>newapp/models/post.phpを開いたら、16行目近辺を以下のように修正します。</p>
<pre class="brush:php;">
'maxlength' => array(
				'rule' => array('maxlength'),
               ・・・
</pre>
<p>↓</p>
<pre class="brush:php;">
'maxlength' => array(
				'rule' => array('maxlength', 255),
</pre>
<p>これでデータの登録更新処理部分は完了です。</p>
<p>ひとまずブラウザから以下のURLにアクセスして動作を確認してみてください。<br />
http://[ドメイン]/newapp/posts/</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-04.jpg" alt="20110704 04" title="20110704-04.jpg" border="0" width="500" height="286" /></p>
<p>↑上のような画面が生成されていればOKです。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-05.jpg" alt="20110704 05" title="20110704-05.jpg" border="0" width="500" height="273" /></p>
<p>↑更新画面もばっちりできています。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-06.jpg" alt="20110704 06" title="20110704-06.jpg" border="0" width="500" height="381" /></p>
<p>↑エラー画面もばっちりです。<br />
実際にデータが登録できる事も確認してみてください。</p>
<h3>ログイン画面を作る</h3>
<p>まだこれで終わりではないですよ。<br />
そうです。管理者だけが更新できるようにするためのログイン画面が必要ですね。</p>
<p>ここはbakeだけでは作れないので、手を動かします。<br />
まずはログインできるユーザー情報を格納するテーブルを作ります。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-07.jpg" alt="20110704 07" title="20110704-07.jpg" border="0" width="500" height="122" /></p>
<p>SQL</p>
<pre class="code">
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(255) character set utf8 NOT NULL,
  `password` varchar(255) character set utf8 NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
</pre>
<p>先ほどのPostと同様にUserでもbakeして、controller、model、viewを作成します。<br />
内容は先ほどと同じでOKです。</p>
<pre class="code">
$ cakephp/cake/console/cake bake -app newapp
</pre>
<p>それぞれのファイルを作成したら<br />
users_controller.phpを以下のように編集します。</p>
<p>newapp/controllers/users_controller.php</p>
<pre class="brush:php;">
class UsersController extends AppController {
	var $name = 'Users';
	$components = array('Auth');

	function login(){
	}
	function logout(){
	    $this->Auth->logout();
	}
}
</pre>
<p><strong>ログイン画面を作成</strong></p>
<p>app/views/usersフォルダ内にlogin.ctpファイルを作成します。<br />
以下の内容をコピーしてください。</p>
<p>newapp/views/users/login.ctp</p>
<pre class="brush:php;">
 if  ($session->check('Message.auth')) $session->flash('auth');
 echo $form->create('User', array('action' => 'login'));
 echo $form->input('username');
 echo $form->input('password');
 echo $form->end('Login');
</pre>
<p><strong>ログアウト画面を作成</strong></p>
<p>同時にlogout.ctpも作成します。</p>
<p>newapp/views/users/logout.ctp</p>
<pre class="brush:html;">
<h3>ログアウトしました。</h3>
</pre>
<p>これでログインフォームが出来ました。<br />
次に、ログインするためのユーザー名とパスワードをDBに設定します。</p>
<p>その際にパスワードは暗号化する必要があるのですが、<br />
以下の手順で簡単に暗号化したパスワードを知る事ができますよ。</p>
<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/07/20110704-08.jpg" alt="20110704 08" title="20110704-08.jpg" border="0" width="499" height="475" /></p>
<p>SQL</p>
<pre class="code">
INSERT INTO  `users` (
`id` ,
`username` ,
`password` ,
`created` ,
`modified`
)
VALUES (
NULL ,  'test',  'cd2409a5830bc21d461a2911da440ea877fab27b',  '2011-07-05 00:00:00',  '2011-07-05 00:00:00'
);
</pre>
<p>最後にpost_controller.phpに認証が必要ないアクションを指定します。<br />
indexとviewアクションは一般ユーザーが見れて良いページなので<br />
この２つのアクションだけ認証が必要ないようにします。</p>
<p>以下のコードをpost_controller.phpに追加してください。</p>
<p>newapp/controllers/posts_controller.php</p>
<pre class="brush:php;">
var $components = array('Auth');

function beforeFilter()
{
    $this->Auth->allow('index', 'view');
}
</pre>
<p>これで完了です！</p>
<p>さあ、http://[ドメイン]/newapp/posts/　にアクセスしてみてください。<br />
ログイン画面が出て、ユーザー名とパスワードを入力するとページが開けるようになりました。</p>
<p>以上で終了です。<br />
簡単に設置できるよう、色々はしょっている部分もあります。ご了承ください。<br />
何かわからない事や質問などありましたらお気軽にコメントくださいね。</p>
<h3>読むべきサイトやブログ記事</h3>
<p>もっと色々な機能が知りたい方やCakePHPを触ってみたい方は以下のサイトやブログを参考にすると色々勉強になると思います。私もいつもお世話になっております。</p>
<ul>
<li><a href="http://book.cakephp.org/ja" target="_blank">CakePHP マニュアル</a></li>
<li><a href="http://cakephp.jp/modules/newbb/" target="_blank">コミュニティ</a></li>
<li><a href="http://d.hatena.ne.jp/cakephper/" target="_blank">cakephperの日記(CakePHP, MongoDB)</a></li>
<li><a href="http://d.hatena.ne.jp/hiromi2424/" target="_blank">24時間CakePHP</a></li>
<li><a href="http://weble.org/category/cakephp" target="_blank">WEBLE</a></li>
<li><a href="http://www.1x1.jp/blog/category/cakephp" target="_blank">Shin x blog</a></li>
<li><a href="http://1-byte.jp/2011/03/09/10_things_you_must_know_about_cakephp/" target="_blank">CakePHP開発者が知るべき10のこと</a></li>
<li><a href="http://fresh.pure-white.jp/cakephp" target="_blank">Fresh! &raquo; CakePHPで作る会員管理システム</a></li>
<li><a href="http://mark-story.com/tags/view/cakephp" target="_blank">Mark Story</a></li>
</ul>
<p>書籍ではこの本がおすすめです。cakephp1.2が対象なのですが、基礎的な部分からテストのやり方など<br />
とてもためになる情報が満載です。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=msyk5569-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4839930651&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>また、手前味噌ですが当ブログの<a href="http://blog.verygoodtown.com/tag/cakephp/" target="_blank">CakePHPタグ</a>もぜひどうぞ。</p>
<p>以上、cakephpを使って10分でCMSを作る方法でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/07/cakephp-10-minutes-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>サイトやブログ、SNSのトピック監視ツール「Tattler」</title>
		<link>http://blog.verygoodtown.com/2011/03/open-source-topic-monitoring-app-tattler/</link>
		<comments>http://blog.verygoodtown.com/2011/03/open-source-topic-monitoring-app-tattler/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 01:00:18 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[GPL License]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=6669</guid>
		<description><![CDATA[
継続的に調べものをする際に使えそうだったのでご紹介。
「Tattler」はWEBサイトやブログ、SNSのトピックスを監視するためのツールです。
フィルタリングを細かく設定できるようなので、時間の節約になるかもしれません [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/03/20110321-01.jpg" alt="20110321-01" title="20110321-01" width="499" height="173" class="alignnone size-full wp-image-6670" /></p>
<p>継続的に調べものをする際に使えそうだったのでご紹介。</p>
<p>「<a href="http://tattlerapp.com/" target="_blank">Tattler</a>」はWEBサイトやブログ、SNSのトピックスを監視するためのツールです。</p>
<p>フィルタリングを細かく設定できるようなので、時間の節約になるかもしれません。</p>
<p>定期的に同じページを見ている方には便利そうですね。</p>
<p>システムはDrupalというオープンソースのCMS上で動作するようになっており、<br />
PHP 5.2以上、MySQL 5の環境があれば動作します。</p>
<p>ダウンロードは下のリンクからどうぞ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/03/open-source-topic-monitoring-app-tattler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHPでjQueryを使って画像をトリミングするコンポーネント</title>
		<link>http://blog.verygoodtown.com/2011/01/jquery-image-upload-crop/</link>
		<comments>http://blog.verygoodtown.com/2011/01/jquery-image-upload-crop/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 01:10:18 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[crop]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=6344</guid>
		<description><![CDATA[
CakePHPで画像をトリミングするコンポーネントがBakeryにありましたので、ご紹介。

アップロードした画像から必要な部分だけをトリミングできるようになります。
UIにはjQueryのプラグインを使って実装してい [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/01/20110130-03.jpg" alt="20110130-03" title="20110130-03" width="500" height="234" class="alignnone size-full wp-image-6345" /></p>
<p>CakePHPで画像をトリミングするコンポーネントが<a href="http://bakery.cakephp.org/articles/klagoggle_myopenid_com/2010/08/25/jquery-image-upload-crop" target="_blank">Bakery</a>にありましたので、ご紹介。<br />
<span id="more-6344"></span><br />
アップロードした画像から必要な部分だけをトリミングできるようになります。<br />
UIにはjQueryのプラグインを使って実装しているようです。</p>
<p>使用にはGDライブラリが必要になりますが、一般的なサーバーにはインストールされていると思います。<br />
コンポーネントを使用するには、リサイズ用のコンポーネントと一緒にヘルパーを設定して、フォームを作成していくようです。</p>
<pre class="brush:php;">
var $helpers = array('Cropimage')
var $components = array('JqImgcrop');
</pre>
<p>これは便利そうですね。<br />
詳しい使い方はBakeryを参照ください！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/01/jquery-image-upload-crop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>複数店舗を管理できるオープンソースのEコマースシステム「Axis」</title>
		<link>http://blog.verygoodtown.com/2011/01/open-source-free-ecommerce-software-axis-commerce/</link>
		<comments>http://blog.verygoodtown.com/2011/01/open-source-free-ecommerce-software-axis-commerce/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 01:10:22 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[GPL License]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=6260</guid>
		<description><![CDATA[
「Axis」は複数店舗を管理できるオープンソースのショッピングカートシステムです。
管理画面がかなり充実しており、
割引システムや送料計算、投票モジュールなどが組み込まれています。
デザイン的にもjQueryやExt  [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/01/20110126-01.jpg" alt="20110126-01" title="20110126-01" width="500" height="150" class="alignnone size-full wp-image-6261" /></p>
<p>「<a href="http://axiscommerce.com/" target="_blank">Axis</a>」は複数店舗を管理できるオープンソースのショッピングカートシステムです。</p>
<p>管理画面がかなり充実しており、<br />
割引システムや送料計算、投票モジュールなどが組み込まれています。<br />
デザイン的にもjQueryやExt JSを使用する事でリッチな管理画面になっています。</p>
<p>おっ、と思わせる作りになってるのが良いですね。<br />
動作にはPHPとMySQLが必要との事です。<br />
興味の有る方はダウンロードしてみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/01/open-source-free-ecommerce-software-axis-commerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCの音楽をモバイル端末で再生できるサーバーをPHPとMySQLで作れる「Streeme」</title>
		<link>http://blog.verygoodtown.com/2011/01/html5-based-open-source-personal-music-server-streeme/</link>
		<comments>http://blog.verygoodtown.com/2011/01/html5-based-open-source-personal-music-server-streeme/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 01:10:14 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[MIT license]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=6235</guid>
		<description><![CDATA[
「Streeme」を使うと、PCの音楽をモバイル端末で再生する音楽用のwebサーバーを作る事が出来ます。
動作にはPHPとMySQL、FFMPEGが必要との事。
個人用との事ですが、使ってみると面白そうですね。

再生 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/01/20110125-01.jpg" alt="20110125-01" title="20110125-01" width="500" height="265" class="alignnone size-full wp-image-6237" /></p>
<p>「<a href="http://code.google.com/p/streeme/" target="_blank">Streeme</a>」を使うと、PCの音楽をモバイル端末で再生する音楽用のwebサーバーを作る事が出来ます。</p>
<p>動作にはPHPとMySQL、FFMPEGが必要との事。<br />
個人用との事ですが、使ってみると面白そうですね。</p>
<p><span id="more-6235"></span></p>
<h3>再生プレイヤーはHTML5</h3>
<p>音楽の再生にはHTML5が使用できれば可能との事。AndoroidやiPhoneなどHTML5が使えるブラウザであれば動作させる事ができるようです。<br />
もちろん、デスクトップのSafariからなんかもOKですね。</p>
<p>Windows、Mac、Linux、VMWareで使う場合のインストール方法が<a href="http://code.google.com/p/streeme/wiki/InstallingStreemeStartPage" target="_blank">Wiki</a>に掲載されていました。<br />
見てみると、apacheのhttpd.conf、php.ini、my.confなどを操作できる環境が必須のようです。</p>
<p>中の仕組みどうなっているんですかね・・・<br />
時間が出来たらソースを見てみたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/01/html5-based-open-source-personal-music-server-streeme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJSを使用した高機能Webメールクライアントが作れる「dracmail」</title>
		<link>http://blog.verygoodtown.com/2011/01/dracmail-webmail-interface-built-with-php-extjs-mysql-imap/</link>
		<comments>http://blog.verygoodtown.com/2011/01/dracmail-webmail-interface-built-with-php-extjs-mysql-imap/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 01:30:06 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[BSD License]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[webメール]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=6009</guid>
		<description><![CDATA[
「dracmail」はPHP, ExtJS, MySQLで作られたオープンソースのWebメールクライアントです。
リッチなUIが魅力的ですね。
IMAPにも対応しているそうです。

特徴
- リッチなユーザインタフェー [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.verygoodtown.com/wordpress/wp-content/uploads/2011/01/20110112-01.jpg" alt="20110112-01" title="20110112-01" width="500" height="244" class="alignnone size-full wp-image-6011" /></p>
<p>「<a href="http://dracmail.net/" target="_blank">dracmail</a>」はPHP, ExtJS, MySQLで作られたオープンソースのWebメールクライアントです。<br />
リッチなUIが魅力的ですね。<br />
IMAPにも対応しているそうです。<br />
<span id="more-6009"></span></p>
<h3>特徴</h3>
<p>- リッチなユーザインタフェース<br />
- WYSIWYGエディタ（TinyMCE）<br />
- HTMLメール<br />
- IMAP<br />
- 既存メールのインポート<br />
- MySQLのキャッシュ<br />
- メッセージの並び替え<br />
- メッセージの移動、削除<br />
- 下書き<br />
- 添付ファイル</p>
<h3>デモ</h3>
<p>こちらにデモ用のユーザー名とパスワードが記載されています。<br />
リンクから動作確認ができるようになっていますので簡単に試してみる事が可能です。</p>
<p><a href="http://dracmail.net/?page=demo" target="_blank">http://dracmail.net/?page=demo</a></p>
<p>インストールにはPHP5.3以上、MySQL5.1以上、Apache2.2以上が必要との事です。</p>
<p>Gmailなどの外部サービスに情報を置きたくない場合に使えるかもしれませんね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/01/dracmail-webmail-interface-built-with-php-extjs-mysql-imap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブラウザ情報を検出するライブラリ「Browser.php」</title>
		<link>http://blog.verygoodtown.com/2011/01/browser-php/</link>
		<comments>http://blog.verygoodtown.com/2011/01/browser-php/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 00:20:05 +0000</pubDate>
		<dc:creator>linja</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[browser]]></category>

		<guid isPermaLink="false">http://blog.verygoodtown.com/?p=5934</guid>
		<description><![CDATA[「Browser.php」はphpから簡単にブラウザやOSの情報を検出できるPHPスクリプトです。
どのようなブラウザなのか、PCなのかモバイルなのか、モバイルならばiPhoneやiPadのアクセスなのかなどを知ることが [...]]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/" target="_blank">Browser.php</a>」はphpから簡単にブラウザやOSの情報を検出できるPHPスクリプトです。</p>
<p>どのようなブラウザなのか、PCなのかモバイルなのか、モバイルならばiPhoneやiPadのアクセスなのかなどを知ることが出来ます。<br />
<span id="more-5934"></span></p>
<h3>使用例</h3>
<p>Firefoxのバージョン2以上を検出するコードは以下のようになります。</p>
<pre class="brush:php;">
$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX &#038;&#038; $browser->getVersion() >= 2 ) {
	echo 'FireFoxのバージョン2以上です';
}
</pre>
<h3>使いどころ</h3>
<p>日本語のファイル名をダウンロードする時とかにブラウザ判別を良く利用しています。<br />
IEはShift_JISでそれ以外はUTF-8とかじゃないと、ファイル名が文字化けしてしまいます。</p>
<p>日本語のエンコード方法が違うみたいなんですよね・・・</p>
<p>そういったトラブルを防ぐためにも、覚えておいても良いかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.verygoodtown.com/2011/01/browser-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

