桜上水日記#2

桜上水在住のフリーのプログラマ/システムエンジニアの徒然なる日記風テキスト

第49回PHP勉強会@関東

30日(土)にPHP勉強会に参加したのでそのまとめと感想(コメントアウト部)。

会場: 株式会社コンテンツワン 1Fセミナールーム


Lithiumラボ #1 ID:yandod (@yando)

レポート&資料

/* 今回聞きたかった内容 その1 */

"The Origin of Lithium" at NYPHP

Lithiumとは

// 会場内でPHP5.3を使ってる人が6/25名ほど。少ないとおっしゃってましたが、個人的に多い!と感じました。未だ5.2系クラスタ…

Lithiumの本質は?

PHP5.3 / 拡張性

インストール

PHP5.3(XAMPP最新版でOK)

MongoDB / CouchDBが現状ではおススメ(MySQL等はまだBuggy?)

http://rad-dev.org/lithium/

DB設定:app/config/connections.php

チュートリアル:http://rad-dev.org/lithium/wiki/drafts/

セットアップ

app/config/connections.php

use \lithium\data\Connctions:
Connections::add('default'. database', array(

twig等のテンプレートエンジンも使用可能

拡張性:Librariesクラスを使って追加、変更が可能

Libraries::add('Lithium');

フィルタ機能

基底クラス Object StaticObjectに備わる applyFileer methodで対象のmethodと処理を指定

処理はクロージャ

lithium/data/source/databases/adapter/mysql ←DB処理を行うClassファイル

protected _execute()関数でSQL文を実行、値を返している

\lithium\data\Connecitons::get('default')->applyFilter('_execute',
function($self, $params, $chain){
echo $params ['sql']."
";
return $chain->next($self, $params, $chain);
});

/* PHP5.3から引数にfunction()が指定できるらしい。クロージャ,javascriptっぽい
* ちゃんと中身調べないとPHP5.3の機能なのかLithiumの機能なのか分かりにくい? */

参考URL:

  • rad-dev.org
  • blog.candycane.jp

PHPでBrainF*ckとあと小ネタ ID:msakamoto-sf

Dio様&やる夫でBrainF*ck

/* 一発ネタだねえwwww */


NetBeansでAgavi使って携帯サイト開発 ID:MugeSo

/* おもろいUIのプレゼンでした
* ソースの公開はなし */

// NetBeansでCakePHP使って、ってのはないんかな?


Datasourceをオススメします ID:kaz_29

発表資料・サンプルコード等

/* 今回聞きたかった内容 その2 */

Datasourceの例

CSV Datasources // csvの1行目がカラム名ぽく使えるかも?

Twitter Datasources // ←使ってる!

MongoDB Datasources

等々

- 自作する場合

必要なMethod

  • listSources()
  • describe()
  • caluculate()
// 次の案件はCSV Datasources使うべきだ!

MongoDB + PHP + CakePHP ID:Ichikaway (@cakephper)

資料等

/* 今回聞きたかった内容 その3 */

内容

  1. MongoDB
  2. PHP + MongoDB
  3. MongoDB + CakePHP

// Windows版のMongoDBってあんのかしら?

1.MongoDB

// ネーミングがRDBとは違うよ

Table = Collection

Row = document

Mongo向きではない

join, transaction

特徴

全てのtable(=collection)にnameカラムがある

Performance

事例:
Business insider
http://www.businessinsider.com/how-we-use/mongodb-2009-11
6-70万PV/day

Schema less // RDBとは考え方が違うよ!

  • Document/ bson
    • Binary data
  • different schema in same collection
  • Natural data sctructure

blog sample(データ構造)

blog={ name: blog,
title:aaa,
user:bbb,
comment:[1,2,3],
tag:[a,b,c]
}

Demo

2.PHP + MongoDB

- Pecl Mongo

  • Connect
$mongo = new Mongo(localhost:27017);
$db = $mongo->selectDB('blog');
  • Select collection
$collection = $db->selectCollection('posts');
  • Find
$collection->find($cond, $field)->sort()->もにゅもにゅ
  • InsertData
$collection->insert($data)

// $data=配列を用意しておく

3.MongoDB + CakePHP

Datasourceで実装済み (MongoDBサイトからPHP→githubから取得可能)

質疑応答

MySQLの4-5倍, CouchDBの2倍のperformance

チューニング手法(単純にファイルサイズが減る)として、カラム名を短く

/* Cake+MongoDB、試してみねばなあ。
* 問題はテストにWindows環境しか用意できない点。要調査。


Closing

あとでblogに書きましょう!

Blogに書くまでが勉強会!


謝辞

会場を提供下さいました、株式会社コンテンツワン様、ありがとうございました。

また、発表・運営・ご参加の皆様。お疲れ様&ありがとうございました。残念ながら二次会は参加できませんでしたが、大変勉強になる会でした。次回も是非参加したいです!

-

-

Calendar
Categories
New Entries
Archives
Profile
Other