SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
CakePHPハンズオン
ケイクで始める快適WEB開発


          2009/03/07 yandod
                              1
Thanks

会場を提供してくれたグリーさん
見守ってくれるサポーターさん達
会場までPCを持ってきてくださったみなさん




                        2
自己紹介

名前 安藤祐介 yandod
PHPについて喋ったり、書いたりしています
CakePHPエヴァンジェリスト
猫好き/ゴルフ好き/カレー好き/CakePHP好き




                            3
アジェンダ


 CakePHPとは
 チュートリアルをやってみよう
   セットアップ
   CakePHPの基本1 (Controller)
   CakePHPの基本2 (Model View)‫‏‬
 応用テクニック
   CakePHPのさまざまな機能

                               4
CakePHPとは



            5
公式サイト




        http://www.cakephp.org/
                                  6
コンセプト




全てのレベルのPHPユーザが
素早く安定したウェブアプリ
ケーションを開発が行える事
つまり


初心者でも手軽に開発がで
  きる親しみやすさ
上級者がとことん使いこんで
  いけるだけの拡張性

      この2つを両立
具体的な特徴

面倒なインストール・設定作業はほぼ皆無
小さなプログラムだけで機能を実現できる
PHP4/PHP5に両対応
サーバやコマンドライン、ライブラリの知識は丌要
Ruby on Railsにとてもよく似たMVCモデル




                              9
主な開発者




Larry E. Masters   Garrett J. Woodworth   Nate Abele
     PhpNut                gwoo             _nate_


   20名弱のチームで2005年頃から開発中

                                                       10
CakePHPの歴史

2005/03 ‚Cake‛ が公開される
2005/07 phpnutが ‛CakePHP‛ を公開
2005/08 _nate_ がチームに加入
2005/09 gwooがチームに加入
2006/05 CakePHP1.0 1.1
2008/01 CakePHP1.2-beta
2009/12 CakePHP1.2.0

                                11
2007年頃から日本国内でも爆発的に普及




     着実にユーザ層が拡大中
                       12
東京でのCakePHP勉強会




   30人 → 50人 → 70人 → 140人
                            13
各国でのイベントも活発




              14
感謝の気持ちも忘れずに




ケイクはあなたを待ってます

                15
チュートリアルをやってみよう
定番のブログチュートリアルを1.2で




                     16
チュートリアルの流れ

ダウンロード・セットアップ
データベース・テーブル作成
設定ファイル編集
基本のコーディング作業




                17
今回の元ネタ




  http://book.cakephp.org/ja/complete/219
                                            18
チュートリアルの目的

多くの人が仕様を理解しているブログが題材
(一覧表示・投稿・編集・削除)
アプリケーション作成の流れの把握
細かい機能や拡張は後回しでOK!




                       19
ダウンロード




         20
ダウンロード




         21
ダウンロード




         寄付はまたの機会に。
                      22
セットアップ

取得した圧縮ファイルを展開
展開したファイルをPHPが動作する場所へ
ディレクトリ構造を確認しておきましょう




                       23
CakePHPのディレクトリ構造


            設定ファイル
            コントローラー(よく使う)
            モデル(よく使う)



            ビュー(よく使う)

            フレームワーク本体


                            24
index.phpへアクセス




         上の通りの表示があればOK
                         25
なんかおかしい例




    mod_rewriteが動いていないとこうなる
                              26
対処方法
 (推奨)httpd.conf を変更し、apache再起動
 #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
 #LoadModule rewrite_module modules/mod_rewrite.so
                                                         コメント解除
 LoadModule setenvif_module modules/mod_setenvif.so



 Apacheの設定が変更できない場合は core.php
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
                                                         コメント解除


    後者の場合は今後のURLに常にindex.phpを付ける事に
      /pages/home → index.php/pages/home

                                                                  27
データベーステーブルの作成 (10.1.2)‫‏‬
CREATE TABLE posts (
   id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
   title VARCHAR(50),
   body TEXT,
   created DATETIME DEFAULT NULL,
   modified DATETIME DEFAULT NULL
);
INSERT INTO posts (title,body,created)‫‏‬
   VALUES ('タイトル', 'これは、記事の本文です。', NOW());
INSERT INTO posts (title,body,created)‫‏‬
   VALUES ('またタイトル', 'そこに本文が続きます。', NOW());
INSERT INTO posts (title,body,created)‫‏‬
   VALUES ('タイトルの逆襲', 'こりゃ本当に面白そう!うそ。', NOW());




                                                  28
データベース設定での注意

余計な問題を避ける為に極力 UTF8を使う。
テーブル名やカラム名はCakePHPのルールに従うと
楽ができます。
好きな名前を使っても、追加の設定を行えば対応で
きます。




                             29
設定ファイル (database.php)の作成(10.1.3)‫‏‬
var $default = array(
'driver' => 'mysql',
'persistent' => 'false',
'host' => 'localhost',
'port' => '',
'login' => 'cakeBlog',
'password' => 'c4k3-rUl3Z',
'database' => 'cake_blog_tutorial',
'schema' => '',
'prefix' => '',
'encoding' => 'utf8'//日本語ではencodingを指定しましょう。
);



   app/config/database.php.default をコピーして作成
                                               30
追加の設定(あとちょっとだけ)‫‏‬

app/config/core.php の Seculity.saltを変更
app/tmp 以下のディレクトリを書き込み可能に
(Linuxなどの場合)‫‏‬
 Apacheのmod_rewriteが有効になっていない場合は
App.baseUrl の行のコメントを解除




                                         31
基本のコーディング作業

処理の入り口を担当するController
データベースとのやりとりやロジックを担当するModel
画面を表示するView



MVCのパーツを順次作成するのが
     基本のサイクル

                              32
Modelの作成
<?php
class Post extends AppModel
{
   var $name = 'Post';
}
?>


                 app/model/post.php として作成



         ※Modelは標準では単数形の名前になります。


                                            33
Controllerの作成
<?php
class PostsController extends AppController {
var $name = 'Posts';
         var $scaffold;
}
?>


        app/controller/posts_controller.php として作成



                 $scaffoldによりこれだけで動く!


                                                    34
/posts/ の実行結果




 登録・一覧・更新・削除が可能 (管理程度ならこれでOK)‫‏‬
                                 35
Controllerへのアクションの追加
<?php
class PostsController extends AppController {
var $name = 'Posts';
          //var $scaffold; //丌要なので消す
function index() {
          $this->set('posts', $this->Post->find('all'));
}
}
            Viewに対してpostsという名前でデータを渡す
?>



   Index メソッドを追加した事により、/posts/index へアク
       セスされた場合に実行する処理を定義できます


                                                           36
Viewの作成

<h1>ほげほげブログ</h1>
<?php echo date(‘Y-m-d’); ?>

        app/views/posts/index.ctp として作成
           (UTF-8で保存する事を忘れずに)




         /posts/index へアクセスされた場合に
              表示する画面を作成します


                                          37
/posts/index の実行結果




                     38
(重要)CakePHPの基本ルール

/posts/update にアクセスされた場合
→ PostsControllerのupdate メソッドを実行し
  views/posts/update.ctp を表示
/mypage/home にアクセスされた場合
→ MypageControllerのhome メソッドを実行し
  views/mypage/home.ctp を表示

      ルールを把握してスムーズな作業を!

                                    39
Viewの作成2 (10.1.8)‫‏‬

<h1>ほげほげブログ</h1>
<table>
 <tr><th>Id</th><th>Title</th><th>Created</th></tr>
<?php foreach ($posts as $post): ?>
 <tr>
   <td><?php echo $post['Post']['id']; ?></td>
   <td><?php echo $html->link($post['Post']['title'],
     quot;/posts/view/quot;.$post['Post']['id']); ?></td>
   <td><?php echo $post['Post']['created']; ?></td>
 </tr>
<?php endforeach; ?>
</table>

         Controllerでセットした名前の変数を表示する
                                                        40
/posts/index の実行結果




   /posts/view/{id} へのリンク




 PostsControllerにviewアクションはないのでリンク先はエ
                     ラー画面

                                        41
Controllerへのアクションの追加
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
          $this->set('posts', $this->Post->find('all'));
}
          function view($id = null) {
          $this->Post->id = $id;
          $this->set('post', $this->Post->read());
}
}
?>



                    /posts/view 時の処理を追加
                                                           42
Viewの追加 view.ctp

<h1><?php echo $post['Post']['title']?></h1>

<p><small>Created:
<?php echo $post['Post']['created']?>
</small></p>

<p><?php echo $post['Post']['body']?></p>




             /posts/view 時の画面を追加
                                               43
/posts/view の実行結果




            表示機能が完成
                      44
Controllerへのアクションの追加(抜粋)‫‏‬

<?php
class PostsController extends AppController {
    function add() {
      if (!empty($this->data)) {
          if ($this->Post->save($this->data)) {
              $this->flash('Your post has been saved.','/posts');
          }
       }
    }
}
?>


                   /posts/add 時の処理を追加
                                                                    45
Viewの追加 add.ctp

<h1>Add Post</h1>
<?php
echo $form->create('Post');
echo $form->input('title');
echo $form->input('body', array('rows' => '3'));
echo $form->end('Save Post');
?>




               /posts/add 時の画面を追加
               FormHelperでフォームを出力
                                                   46
validateの追加 post.php

<?php
class Post extends AppModel
{
var $name = 'Post';
var $validate = array(
  'title' => array('rule' => array('minLength', 1)),
  'body' => array('rule' => array('minLength', 1))‫‏‬
);
}
?>


                                                       47
/posts/add の実行結果




       入力検証付きの登録画面ができた
                         48
Controllerへのアクションの追加(抜粋)‫‏‬

<?php
class PostsController extends AppController {
  function delete($id) {
    $this->Post->del($id);
    $this->flash('The post with id: '.$id.' has been deleted.', '/posts');
  }
}              メッセージを表示後に /postsへ移動する
?>




                  /posts/delete 時の処理を追加
                 画面は存在しないのでViewは丌要
                                                                             49
/posts/delete/{id} の実行結果




      urlに付不したidのレコードが削除される。
     必要であればindexなどの画面にリンクを設置

                               50
Controllerへのアクションの追加(抜粋)‫‏‬

class PostsController extends AppController {
function edit($id = null) {
      $this->Post->id = $id;
      if (empty($this->data)) {
          $this->data = $this->Post->read();
      } else {
          if ($this->Post->save($this->data['Post'])) {
              $this->flash('Your post has been updated.','/posts');
          }
      }
  }




                                                                      51
Viewの追加 edit.ctp

<h1>Edit Post</h1>
<?php
echo $form->create('Post',array(‘action’=>’edit’));
echo $form->hidden(‘id’);
echo $form->input('title');
echo $form->input('body', array('rows' => '3'));
echo $form->input('id', array('type'=>'hidden'));
echo $form->end('Save Post');
?>

             /posts/edit 時の画面を追加
           ほとんどAddと同じだが、少しだけ違う
                                                      52
/posts/edit/{id} の実行結果




           編集機能が動作する
        入力検証も登録時と同じように動作

                           53
できた!

Controllerにアクションを追加
アクション内でModelの処理を呼び出す
ViewでControllerから渡されたデータを表示
Helperなどを利用すると記述内容を削減できる



作業の流れが把握できましたか?

                              54
CakePHPのさまざまな機能達



                   55
まだまだ多くの機能がCakePHPには存在

いつでも使える機能
デバッグ機能・コードシュガー
Controllerから利用する機能
レイアウトの変更・任意のモデル利用・セッション
Modelから利用する機能
データ取得方法・テーブル変更・リレーション
Viewから利用する機能
ヘルパー・エレメント



                          56
いつでも使える機能




            57
デバッグ機能

Core.php 内の設定により有効化
エラーの発生箇所・SQLの実行状況などが確認可能




                           58
コードシュガー

コーディングをちょっと楽にしてくれる裏ワザ
eh
echo htmlspecialchars の代わりに利用可能
pr
<pre>print_r()</pre>の代わりに利用可能
a aa
array(,,,,) array( ‘ ‘ => ‘’, ‘’ => ‘’)の意味




                                             59
シュガーを使うと

array(‘action’ => ‘edit’, ‘method’ => ‘GET’))‫‏‬



aa(‘action’,‘edit’,’method’,’GET’))‫‏‬



echo htmlspecialchars($hoge,ENT_QUOTES);



e(h($hoge));

                煩雑なコードを大胆に短くできる

                                                 60
Controllerで使える機能




                   61
レイアウト変更

画面のヘッダー・フッター部分は layoutに存在
通常時はCake標準の default flash などが使われる
デザインを変更する場合は app/view/layouts/ 以
下に default.ctp などを置く
Defalutなど以外を使う場合は layoutプロパティを設
定する




                                    62
レイアウトの変更例


class PostsController extends AppController {
  function help() {
    $this->layout = ‘custom’;
  }
}




 app/view/layouts/custom.ctp をヘッタ・フッタとして利用

                                                63
app/views/layouts/custom.ctp の内容


<html>
<head>
<title><?php echo $title_for_layout; ?></title>
</head>
<?php echo $content_for_layout; ?>
</html>



    $content_for_layout にviewの処理結果が入っている




                                                  64
実行結果




                  あとは自由にCSSなどを設定すればOK



Copyright © YusukeAndo. 2009 - . All rights reserved.
任意のモデルの利用

 Controllerが利用するModelは任意に変更可能
 複数形などになじまない場合は任意で設定
 大量に設定しすぎるのは考えもの

class PostsController extends AppController {
  var $uses = array(‘Toukou’,’Tomodaci’);
}



        Toukou.php Tomodaci.php をModelとして使用

                                                66
セッション

 Controllerの機能を拡張するComponentの機能を通
 じてセッションを利用する事ができる
 標準設定では非常に短時間でデータが消える点に注
 意 (core.php のsefurity.levelで設定)‫‏‬


$this->Session->write(‘セッション名’,データ);


$this->Session->read(‘セッション名’);


    複数の画面でデータを引き継ぐような場合に利用する

                                       67
Modelで使える機能




              68
対象テーブル・主キーの指定

 モデル名を元に自動でテーブルを決定
 例) モデル名:Book 対象テーブル:books
 idという名称のカラムを主キーとして認識
 上記のルール外のテーブル、主キーを指定した
 い場合はモデルのプロパティに設定を行う
 対象テーブルにNULLを指定する事でDBを使用
 しないモデルとする事も可能




                             69
対象テーブル・主キーの指定例
class User extends AppModel {
   var $name = ‘User';
   var $useTable = ‘user_account’;   使用するテーブル名

   var $primaryKey = ‘login_id’;     主キーのカラム名
}



  暗黙的なルールに従うよりも把握しやすい場合も
   既存のテーブルでCakeを使う場合の必須TIPS




                                                 70
データ取得

 配列化したパラメータを元に自動でクエリを実
 行し、データを取得する
 取得対象カラム、ORDER LIMITなどが指定可能
 自力で構築したWHERE句の指定も可能
 全ての引数には初期値あり

find(‘all’,オプション)




                              71
データ取得

class PostsController extends AppController {
 function hoge() {
       $param = array(
         'conditions' => aa(
           'id >',1
         ),
         'order' => 'title DESC'
       );
       $data = $this->Post->find('all',$param);
       $this->set('posts',$data);
       $this->render('index');
   }}
パラメータの渡し方によってさまざまなクエリを実行する事が可能
                                                  72
実行例




→パラメータを元にWHERE句等を生成して実行
                          73
Viewで使える機能




             74
ヘルパー

View中で共通で行うさまざまな処理をまとめたもの
標準でHtml Form のヘルパーが利用可能
その他のヘルパーを利用する際はControllerの
helpersプロパティに使いたいヘルパーを指定する
例えばRSSを出力したりもできる
http://book.cakephp.org/ja/view/483/




                                       75
ヘルパーの使用例

class PostsController extends AppController {
  $helpers = array(‘Html’,’Form’,’Text’);
}


<style>
.highlight{
  background-color:#FFFF00;
}
</style>
<p><?php echo $text->highlight($post['Post']['body'],quot;本文
quot;)?></p>



                                                           76
実行例




→CSSを利用して反転表示を実現
                   77
機能の利用方法の情報源

公式マニュアル
http://book.cakephp.org/ja
APIドキュメント
 http://api.cakephp.org/
ユニットテストケース
https://svn.cakephp.org/repo/trunk/cake/1.2.x.x/cake/tests/cases/libs/

各種書籍・ブログ




                                                                         78
過去の勉強会資料・書籍

http://puyo2.upper.jp/cake/
 「CakePHPのModelを使う」
 「 CakePHPのHelperを使う」
 「 CakePHP1.1 to 1.2」
 書籍「CakePHPガイドブック」


           より詳細な説明あり
                              79
チュートリアルを拡張してみる



                 80
チュートリアルを拡張してみよう

デザインの変更
CSSの入れ替え
検索機能の追加
Modelの機能の活用
RSS出力機能の追加
View、Helperの利用
コメント投稿機能の追加
MVCの追加



                  81
まとめ



      82
まとめ

CakePHPはいつでも始められる
さまざまな機能を活用することでコード量を大きく減ら
す事ができる
必要な情報はマニュアル・API・ネットからゲットする
‚Give back as much as you take‛
ブログに書く、誰かに教えてあげるなど自分が得た以
上のものを誰かに不えてあげましょう



                                  83
質疑応答




   ご静聴ありがとうございました。




                     84

Contenu connexe

Tendances

Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)zetamatta
 
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションUbuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションubon
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdfXMourinho
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload51 lecture
 
Voices of Panchayat Presidents - Newsletter - Issue No.33
Voices of Panchayat Presidents - Newsletter - Issue No.33Voices of Panchayat Presidents - Newsletter - Issue No.33
Voices of Panchayat Presidents - Newsletter - Issue No.33hrfmedia
 
Voices of Panchayat Presidents - Newsletter - Issue No.37
Voices of Panchayat Presidents - Newsletter - Issue No.37Voices of Panchayat Presidents - Newsletter - Issue No.37
Voices of Panchayat Presidents - Newsletter - Issue No.37hrfmedia
 
DS-026-知識管理的導入策略與步驟
DS-026-知識管理的導入策略與步驟DS-026-知識管理的導入策略與步驟
DS-026-知識管理的導入策略與步驟handbook
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715Kazunori Sato
 
PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストMakio Tsukamoto
 
Voices of Panchayat Presidents - Newsletter - Issue No.25
Voices of Panchayat Presidents - Newsletter - Issue No.25Voices of Panchayat Presidents - Newsletter - Issue No.25
Voices of Panchayat Presidents - Newsletter - Issue No.25hrfmedia
 

Tendances (20)

15.12.11
15.12.1115.12.11
15.12.11
 
Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)
 
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションUbuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
 
01.09.11
01.09.1101.09.11
01.09.11
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
 
1242982622API2 upload
1242982622API2 upload1242982622API2 upload
1242982622API2 upload
 
Voices of Panchayat Presidents - Newsletter - Issue No.33
Voices of Panchayat Presidents - Newsletter - Issue No.33Voices of Panchayat Presidents - Newsletter - Issue No.33
Voices of Panchayat Presidents - Newsletter - Issue No.33
 
Voices of Panchayat Presidents - Newsletter - Issue No.37
Voices of Panchayat Presidents - Newsletter - Issue No.37Voices of Panchayat Presidents - Newsletter - Issue No.37
Voices of Panchayat Presidents - Newsletter - Issue No.37
 
13.01.11
13.01.1113.01.11
13.01.11
 
01.12.11
01.12.1101.12.11
01.12.11
 
25.08.11
25.08.1125.08.11
25.08.11
 
29.09.11
29.09.1129.09.11
29.09.11
 
DS-026-知識管理的導入策略與步驟
DS-026-知識管理的導入策略與步驟DS-026-知識管理的導入策略與步驟
DS-026-知識管理的導入策略與步驟
 
07.07.11
07.07.1107.07.11
07.07.11
 
09.06.11
09.06.1109.06.11
09.06.11
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715
 
22.12.11
22.12.1122.12.11
22.12.11
 
PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテスト
 
Voices of Panchayat Presidents - Newsletter - Issue No.25
Voices of Panchayat Presidents - Newsletter - Issue No.25Voices of Panchayat Presidents - Newsletter - Issue No.25
Voices of Panchayat Presidents - Newsletter - Issue No.25
 
22.09.11
22.09.1122.09.11
22.09.11
 

En vedette

Cartelería Semanal Digital del 25 de marzo al 1 de abril
Cartelería Semanal Digital del 25 de marzo al 1 de abrilCartelería Semanal Digital del 25 de marzo al 1 de abril
Cartelería Semanal Digital del 25 de marzo al 1 de abrilGuadalinfo Red Social
 
A+felicidade+anda+por+ai
A+felicidade+anda+por+aiA+felicidade+anda+por+ai
A+felicidade+anda+por+aiAna simões
 
Connectivitat dels centres edu cat1x1 a internet
Connectivitat dels centres edu cat1x1 a internetConnectivitat dels centres edu cat1x1 a internet
Connectivitat dels centres edu cat1x1 a internetBaix
 
França tomás lopes
França   tomás lopesFrança   tomás lopes
França tomás lopesAna Duarte
 
Nuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power pointNuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power pointyonipapa
 
Publicitate pe Neogen
Publicitate pe NeogenPublicitate pe Neogen
Publicitate pe NeogenCalin Fusu
 
White Sales School - Тренды в России
White Sales School - Тренды в РоссииWhite Sales School - Тренды в России
White Sales School - Тренды в РоссииMark&Sales
 
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anos
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anosAula 1 de monitoria de lingua portuguesa 2º anos e 3º anos
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anosReginauro Ortega
 
Ch 5 Stock Market Terminology
Ch 5   Stock Market TerminologyCh 5   Stock Market Terminology
Ch 5 Stock Market Terminologymrhennings
 
Homenagem layane
Homenagem layaneHomenagem layane
Homenagem layaneroneyvo
 
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...Procuramiento de órganos en un servicio de urgencia público chileno. análisis...
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...Cirugias
 

En vedette (20)

Filostrato04
Filostrato04Filostrato04
Filostrato04
 
Cartelería Semanal Digital del 25 de marzo al 1 de abril
Cartelería Semanal Digital del 25 de marzo al 1 de abrilCartelería Semanal Digital del 25 de marzo al 1 de abril
Cartelería Semanal Digital del 25 de marzo al 1 de abril
 
Going GAGA!
Going GAGA!Going GAGA!
Going GAGA!
 
A+felicidade+anda+por+ai
A+felicidade+anda+por+aiA+felicidade+anda+por+ai
A+felicidade+anda+por+ai
 
Connectivitat dels centres edu cat1x1 a internet
Connectivitat dels centres edu cat1x1 a internetConnectivitat dels centres edu cat1x1 a internet
Connectivitat dels centres edu cat1x1 a internet
 
ZENLIGHTENMENT!
ZENLIGHTENMENT!ZENLIGHTENMENT!
ZENLIGHTENMENT!
 
França tomás lopes
França   tomás lopesFrança   tomás lopes
França tomás lopes
 
Nuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power pointNuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power point
 
Publicitate pe Neogen
Publicitate pe NeogenPublicitate pe Neogen
Publicitate pe Neogen
 
White Sales School - Тренды в России
White Sales School - Тренды в РоссииWhite Sales School - Тренды в России
White Sales School - Тренды в России
 
About me...
About me...About me...
About me...
 
Tess Catalogo
Tess CatalogoTess Catalogo
Tess Catalogo
 
Trabalho sobre Energia Solar
 Trabalho sobre Energia Solar Trabalho sobre Energia Solar
Trabalho sobre Energia Solar
 
Projeto de leitura
Projeto de leituraProjeto de leitura
Projeto de leitura
 
Virtual Marketing Pro VMP
Virtual Marketing Pro VMPVirtual Marketing Pro VMP
Virtual Marketing Pro VMP
 
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anos
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anosAula 1 de monitoria de lingua portuguesa 2º anos e 3º anos
Aula 1 de monitoria de lingua portuguesa 2º anos e 3º anos
 
Ch 5 Stock Market Terminology
Ch 5   Stock Market TerminologyCh 5   Stock Market Terminology
Ch 5 Stock Market Terminology
 
Minha mãe é
Minha mãe éMinha mãe é
Minha mãe é
 
Homenagem layane
Homenagem layaneHomenagem layane
Homenagem layane
 
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...Procuramiento de órganos en un servicio de urgencia público chileno. análisis...
Procuramiento de órganos en un servicio de urgencia público chileno. análisis...
 

Plus de Yusuke Ando

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大Yusuke Ando
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CIYusuke Ando
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストYusuke Ando
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Yusuke Ando
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Yusuke Ando
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Yusuke Ando
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツYusuke Ando
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションYusuke Ando
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行Yusuke Ando
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるYusuke Ando
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Yusuke Ando
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard CloudYusuke Ando
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めようYusuke Ando
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」Yusuke Ando
 

Plus de Yusuke Ando (20)

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
 
Dev opschef
Dev opschefDev opschef
Dev opschef
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 
New relic
New relicNew relic
New relic
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard Cloud
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
 

20090307cakephphandson 01