CakeMatsuriTokyo2009 まとめ

Written by aoki on 2009 年 11 月 1 日 – 2:08 PM -

やはりためになりました、備忘録メモを残します。
Think outside the box.
を実感した一日でした。感謝。

■andoさん

※CakePHP 道とは
Give back much as you take.(貰った分は返す)
Be polite. (礼儀正しく)
Think outside the box. (自分の枠にとらわれない)

※Set::combine
ペアの配列を簡単に作成できる。

$results = $this->Mail->find(’all’);
$mails = Set::Combine($results, ‘{n}.Mail.id’, ‘{n}.Mail.subject’);

■和田氏
※高速化
ClearSilver テンプレート
Lsyncd 連携 rsyncd でディレクトリ監視→ファイル更新
memcached の利用
http://blog.livedoor.jp/kistame228/archives/51219113.html

■飯塚氏
ext.js エクセルコンポーネント
dropbox バックアップバージョン管理
請負契約→準委託契約 安定した収入

■Slywalerさん
※プラグイン
debug_kit
account manageer plugin
テーマ機能
jquery.css

■Akiyanさん

Containable behavior
http://www.studiocanaria.com/articles/cakephp_containable_behavior

当日の資料

■その他
cakeplus i18nプラグイン
model_info プラグイン
github

他にもいっぱいあったのですが、メモしきれず。。。。
少しでも身につけたいものです。
講演者の皆様、スタッフの皆様、本当にありがとう。


Tags:
IT一般, PHP, セミナーなどカテゴリー | コメントはまだありません »

CakePHPカンファレンス東京

Written by aoki on 2009 年 1 月 27 日 – 10:04 PM -

昨年の10月にCakePHPカンファレンス東京に参加した。
実は申込みが間に合わず、あきらめかけていたが、
ライトニングトークというプログラムがあり、5分間しゃべる人の募集枠が残っていた。

5分なら何とかなるかも?と甘い考えで申込みをしたところ、OKが出て参加できることになった。(*^_^*)
スカイツアーズさんのオンライン予約について2日間もかけてまとめることになってしまったが。。。

正式な発表者の方々は若いのにスゴイ人たちで驚いてしまう。(日本はまだ大丈夫!)
鶴岡さんという方などは、突然起きたバグを vi でシャカシャカ直してしまうという天才だ!
ステージでバグに直面するなんて考えても見たくない。天才+強心臓。

さて私の発表は、以下の5点。
1.CakePHPを愛していること。
2.日本語のテーブル名とフィールド名で稼動中のMS SQLサーバーとも連携できたこと
3.Ajaxによるハートビートについて
4.JTB予約サイトとスカイツアーズ予約サイトの比較
5.CakePHP1.2に変更したいが、どうやってお金を頂くか??

イベントページに当日のビデオやアンケート結果が発表されていますので
お時間のある方はご覧になっていただければと思います。

イベントページ:http://conference.cakephp.jp/
ビデオ:http://www.ustream.tv/recorded/811787
アンケート:http://conference.cakephp.jp/CakePHP_Conference_Tokyo_20081129.pdf

実は、カンファレンスの最後で、カンファレンスについてのブログを書くように薦められて、このブログサイトを立ち上げました。

しかし機を逃してしまいカンファレンスの記事を書けずにいたのですが、IT Pro に掲載された(2009/01/27)ので、便乗して書きました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20090122/323305/?ST=oss&P=1


Tags: ,
IT一般, PHP, セミナーなどカテゴリー | 2 件のコメント »

ラオラオベイ ゴルフ&リゾート

Written by aoki on 2009 年 1 月 16 日 – 7:56 AM -

 

ラオラオベイ ゴルフ&リゾート 新サイト

ラオラオベイ ゴルフ&リゾート 新サイト

サイパンの海越えコースを持つゴルフ場。

 

このサイトは東京案内所のオリジナルですが、ゴルフのみ、ゴルフ+ホテルのセット、そして日本からのゴルフツアーがオンラインで予約できます。

WordPressによるページ作成とブログ機能での最新情報の更新を可能にしました。

予約部分はCakePHP1.2にて製作しています。

URL : http://www.laolaobay.jp
ゴルフ予約 : https://www.milxtravel.jp/cp/golfs


Tags: , ,
PHP, カテゴリー | コメントはまだありません »

CakePHP1.2 国際化処理

Written by aoki on 2009 年 1 月 12 日 – 10:44 PM -

CakePHPでも、WordPress のテーマを翻訳するように

翻訳ファイルを設定して日本語化する方法。

 

CakePHPのインストールフォルダを以下のフォルダとする。

 /var/www/html/cake1.2/app/ 

 

日本語設定フォルダを設定する

/var/www/html/cake1.2/app/locale/jpn/LC_MESSAGES/

 

以下のコマンドでpotファイルを作成

CODE:
  1. cd /var/www/html/cake1.2/app/
  2. find  views/ | grep ctp> /home/hogehoge/list.txt
  3. xgettext --from-code=UTF-8 --keyword=__ -L PHP -f /home/hogehoge/list.txt -o /var/www/html/cake1.2/app/locale/jpn/LC_MESSAGES/default.pot

Poedit でdefault.pot を元に翻訳作業
上記で出来た default.po を以下の場所にセット

/var/www/html/cake1.2/app/locale/jpn/LC_MESSAGES/default.po

コントローラの設定

PHP:
  1. <?php
  2. uses('L10n')
  3. class HogesController extends AppController {
  4. /* beforeFilterに言語設定 */
  5. function beforeFilter (){
  6. $this->L10n = new L10n();
  7. $this->L10n->get("ja")
  8. Configure::write('Config.language', "ja");<span> </span>
  9. }
  10. }
  11. ?>


Tags:
PHPカテゴリー | コメントはまだありません »

cake コマンドを有効にする方法

Written by aoki on 2009 年 1 月 6 日 – 10:38 PM -

あけましておめでとうございます。

新年早々ですが、メモ。

cronなどコマンドベースでcakeを動かしたい時にcakeコマンドが使えると便利です。

これを有効にする方法です。

cakePHPのインストールパスを /var/www/html/cake1.2/ とします。

 

1.まずはcakeファイルに実行権限を付与

CODE:
  1. chomod 755 /var/www/html/cake1.2/cake/console/cake

2.cake コマンドにpathをとおします。

CODE:
  1. vi ~/.bash_profile
  2.  
  3. PATH=$PATH:$HOME/bin:/var/www/html/cake1.2/cake/console:

3.上記を反映させます。

CODE:
  1. source ~/.bash_profile

使い方 -app  を指定した方が安定して動作するようです。

CODE:
  1. cake test sample -app /var/www/html/cake1.2/app/

cronrab で実行させるシェルファイルには、以下のように、パスを通す必要がありました。

CODE:
  1. PATH=/usr/local/bin:/usr/bin:/var/www/html/cake1.2/cake/console/:

Shellの作り方は以下のサイトを参照させていただきました、感謝。 <(_ _)>

http://cakephp.blog16.jp/index.php/2008/09/02/p57


Tags:
PHPカテゴリー | コメントはまだありません »

セッション::コンポーネントとヘルパーの違い CakePHP

Written by aoki on 2008 年 12 月 3 日 – 10:06 PM -

セッション::コンポーネントとヘルパーの違い の備忘録です。

 

コンポーネント ==> コントローラ内で利用(書き込み可)

$this->Session->write("Model.koumoku","fogefoge");

Session の最初の文字は大文字

フィールド名は . (ドット)でつないで配列に登録できる。

 

ヘルパー ==> ビューで利用 (書き込み不可)

$Model = $session->read("Model");

echo $Model["koumoku"];

 

ヘルパーなので $this なし、ssession は小文字


Tags: , , ,
PHPカテゴリー | コメントはまだありません »

コントローラ内でヘルパーを使う方法 CakePHP1.2

Written by aoki on 2008 年 11 月 30 日 – 11:52 AM -

CakePHP1.2 はまだ始めたばかりですが、

結構、CakePHP1.1からの変更点がありますね。

 

PHP:
  1. loadHelper('Html');
  2.  
  3. $html = new HtmlHelper();

1.1では上記にて呼び出せましたが、

1.2では以下の通りとなります。

PHP:
  1. App::import('Helper', 'Html');
  2.  
  3. $html = new HtmlHelper();


Tags: , ,
PHPカテゴリー | コメントはまだありません »

PHP-ExcelReader を CakePHP1.2 で使用する。

Written by aoki on 2008 年 11 月 28 日 – 11:21 AM -

Excelに入力したデータをファイルアップロードにより取り出して加工したいケースがありますよね。CakePHP1.2 をベースに PHP-ExcelReader を利用した方法をメモしました。

PHP-ExcelReader を以下のURLからダウンロードします。
http://sourceforge.net/projects/phpexcelreader/

解凍し、/phpExcelReader/Excel フォルダ内にある
以下の二つのファイルを app/vendors/phpExcelReader/
にアップロードする。

reader.php
oleread.inc

reader.php の31行目は、そのままではエラーになるので
oleread.inc が読み込まれるように変更する。

変更前
require_once 'Spreadsheet/Excel/Reader/OLERead.php';

変更後
require_once 'phpExcelReader/oleread.inc';

コントローラからの呼び出しは以下の様に行った。

PHP:
  1. <?php
  2.  
  3. ini_set('include_path', get_include_path() . PATH_SEPARATOR . APP . 'vendors');
  4. App::import('Vendor', "phpExcelReader", array('file'=>'phpExcelReader/reader.php'));
  5.  
  6.  
  7. class FogesController extends AppController {
  8.  
  9.     var $name = 'Foges';
  10.     var $helpers = array('Html', 'Form', 'Ajax', 'Javascript', 'Xml');
  11.     var $uses =array("Foge",    );
  12.  
  13.     function upload(){
  14.        
  15.             $data = new Spreadsheet_Excel_Reader();
  16.             $data->setOutputEncoding('UTF-8');
  17.             $data->read("fogefoge.xls");
  18.             
  19.             //各シート(5枚目まで)の一列目と2列目のデータを全て表示するテスト。
  20.             for ($j = 0; $j <5; $j++) {
  21.                 for ($i = 1; $i <= $data->sheets[$j]['numRows']; $i++) {
  22.                     echo $data->sheets[$j]['cells'][$i][1];
  23.                     echo $data->sheets[$j]['cells'][$i][2];
  24.                         echo "<hr />";
  25.                 }
  26.             }
  27.     }
  28. }
  29. ?>


Tags: ,
PHPカテゴリー | コメントはまだありません »

CakePHP でハートビート

Written by aoki on 2008 年 11 月 9 日 – 12:03 PM -

「登録フォームで、せっかく入力したデータが消えてしまった。」 という状況(セッション切れ)に問題を抱えたことはありませんか?

これに対して、IPAのサイトで安全にセッションを延長する方法で「ハートビート」という技法があるのを知りました。

http://www.ipa.go.jp/security/awareness/vendor/programming/a05_03_main.html

上記ではフレームを利用してハートビートしているのですが、

これならAjaxで実装できると思い、下記のようなプログラムを行いました。

セッションが切れる15秒前にハートビートをAjaxで呼び出します。

ますは、エレメントを作成
/views/elements/h_beat.thtml

PHP:
  1. <?php
  2. echo $ajax->div("heartBeat",array("style"=>"display:inline"));
  3. echo $ajax->divEnd("heartBeat");
  4.  
  5. //セッションが切れる15秒前に呼び出す。
  6. $limit =15;
  7. switch (Configure::read('Security.level')) {
  8.     case "high":
  9.         $frequency = ( Configure::read('Session.timeout') * 10 ) - $limit;
  10.         break;
  11.     case "medium":
  12.         $frequency = ( Configure::read('Session.timeout') * 100 ) - $limit;
  13.         break;
  14.     case "low":
  15.         $frequency = ( Configure::read('Session.timeout') * 300 ) - $limit;
  16.         break;
  17. }
  18.  
  19. $options =array(
  20.     "url"=>"/contents/heart_beat/",
  21.     "update"=>"heartBeat",
  22.     "frequency"=>$frequency
  23. );
  24. echo $ajax->remoteTimer($options);
  25. ?>

エレメントをレイアウトから呼び出します。
/views/layout/default.thtml

PHP:
  1. ..........
  2.  
  3. echo $javascript-&gt;link("prototype.js")."\n";
  4. echo $this-&gt;renderElement("h_beat");
  5. ?&gt;

※prototype.js が必要です。

Ajax呼び出し先 URLのコントローラを設定します。
今回は(/contents/heartBeat/)とします。
/controllers/contents_controller.php

PHP:
  1. ...
  2. //ヘルパーにAjaxを指定
  3. var $helpers =array("html","javascript","ajax");
  4. ...
  5. アクションを設定
  6. function heartBeat(){
  7. $this-&gt;layout=null;
  8. //セッションID更新、古いセッション削除
  9. $this-&gt;Session-&gt;renew();
  10. }
  11. ...

上記アクションに対するビューを設定
/views/contents/heart_beat.thtml
ファイルの中は空のままでOK。


Tags: ,
PHPカテゴリー | コメントはまだありません »