cmf: a pain in the f @ phpday 05-14-2011
DESCRIPTION
TRANSCRIPT
![Page 1: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/1.jpg)
Long story short, a true tale about an hopeless DevTeam
CMF: a pain in the F
David Funaro & Alessandro NadalinMay, 14 2011
domenica 15 maggio 2011
![Page 2: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/2.jpg)
let us introduce
The Problem™
domenica 15 maggio 2011
![Page 3: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/3.jpg)
There comes the boss< there's a new project
domenica 15 maggio 2011
![Page 4: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/4.jpg)
There comes the boss
< seems easy, let's use Joomla!
domenica 15 maggio 2011
![Page 5: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/5.jpg)
Don't open that door!
domenica 15 maggio 2011
![Page 6: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/6.jpg)
The 80/20 dilemma
CMS
domenica 15 maggio 2011
![Page 7: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/7.jpg)
80% is cool at all
domenica 15 maggio 2011
![Page 8: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/8.jpg)
but as
the requirements grows
domenica 15 maggio 2011
![Page 9: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/9.jpg)
(you always knew that)
domenica 15 maggio 2011
![Page 10: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/10.jpg)
the project becomes a mess
domenica 15 maggio 2011
![Page 11: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/11.jpg)
There comes the boss< can I haz fotonic menthal scanner in the website
domenica 15 maggio 2011
![Page 12: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/12.jpg)
There comes the boss
< can't do boss Joomla! is not meant...
domenica 15 maggio 2011
![Page 13: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/13.jpg)
There comes the boss< STFU NOOB DO THAT OR BLA BLA BLA
domenica 15 maggio 2011
![Page 14: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/14.jpg)
what if
domenica 15 maggio 2011
![Page 15: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/15.jpg)
There comes the boss
< seems complex,no Joomla this time,
let's use a framework!
domenica 15 maggio 2011
![Page 16: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/16.jpg)
There comes the boss< STFU NOOB WE SHOULD GO LIVE NEXT WEEK BLA BLA
domenica 15 maggio 2011
![Page 17: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/17.jpg)
The 20/80 dilemma
Framework
domenica 15 maggio 2011
![Page 18: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/18.jpg)
20% is cool at all
domenica 15 maggio 2011
![Page 19: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/19.jpg)
the 80%is reallyfunny
domenica 15 maggio 2011
![Page 20: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/20.jpg)
but has a cost
Time To Market
domenica 15 maggio 2011
![Page 21: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/21.jpg)
again, what if
domenica 15 maggio 2011
![Page 22: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/22.jpg)
There comes the boss
< seems complex,no Joomla this time,
when should it go live?
domenica 15 maggio 2011
![Page 23: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/23.jpg)
There comes the boss< salesguy just told the client tomorrow
domenica 15 maggio 2011
![Page 24: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/24.jpg)
There comes the boss
< ok, let's use a CMF
domenica 15 maggio 2011
![Page 25: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/25.jpg)
unfortunately, there is no stableCMF in the PHP ecosystem
domenica 15 maggio 2011
![Page 26: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/26.jpg)
so it has a cost
initial development
domenica 15 maggio 2011
![Page 27: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/27.jpg)
investment=
know how (team) + quality (framework) +
velocity (that customers pretend)
=
CMF
domenica 15 maggio 2011
![Page 28: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/28.jpg)
"Our" CMF
domenica 15 maggio 2011
![Page 29: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/29.jpg)
Should be able to manage a site editing pages with
different elements.
Target: End User/Site admin
Easily, like a CMS.
domenica 15 maggio 2011
![Page 30: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/30.jpg)
Target: Developer
should be able to plug the CMF with NO PAIN,using the kick-ass framework at the bottom of the CMF.
domenica 15 maggio 2011
![Page 31: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/31.jpg)
domenica 15 maggio 2011
![Page 32: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/32.jpg)
2things
domenica 15 maggio 2011
![Page 33: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/33.jpg)
Pages
• main structure of a web site • organized as a tree• a way to express our contents• usually composed by a series of
containers ( that we'll refer to as boxes )
domenica 15 maggio 2011
![Page 34: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/34.jpg)
Boxes
domenica 15 maggio 2011
![Page 35: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/35.jpg)
Boxes
The way to separate single elements of a page
Loosely coupled HMVC structures
domenica 15 maggio 2011
![Page 36: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/36.jpg)
Entities Pages
domenica 15 maggio 2011
![Page 37: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/37.jpg)
Entities
Boxes {Bridge}
Pages
Boxes let entities be shown inside webpages
domenica 15 maggio 2011
![Page 38: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/38.jpg)
Boxes
We dispose of different types of boxes:• Common• DSL
domenica 15 maggio 2011
![Page 39: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/39.jpg)
Common Box
• Simple o Input field o Textareao Videoo Imageo File o Richtext
• Compositeo Input field + imageo input field + image + richetexo textarea + video
domenica 15 maggio 2011
![Page 40: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/40.jpg)
what about the DSL?
domenica 15 maggio 2011
![Page 41: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/41.jpg)
Domain Specific Language
DSL = ! (Website 1 Website 2 )
domenica 15 maggio 2011
![Page 42: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/42.jpg)
Event
News Users
Books Review
Page
Widget
Event
News
UsersCars
Contract
Widget
Page
Example: Identify DSL
domenica 15 maggio 2011
![Page 43: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/43.jpg)
domenica 15 maggio 2011
![Page 44: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/44.jpg)
News
Page
Widget
domenica 15 maggio 2011
![Page 45: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/45.jpg)
News
Page
Widget
Web Elements = CMF Entities
domenica 15 maggio 2011
![Page 46: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/46.jpg)
Cars
Contract
Books
Review
News
Page
Widget
Web Elements = CMF Entities
domenica 15 maggio 2011
![Page 47: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/47.jpg)
Cars
Contract
Books
Review
News
Page
Widget
DSL
Web Elements = CMF Entities
domenica 15 maggio 2011
![Page 48: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/48.jpg)
back to the CMF
domenica 15 maggio 2011
![Page 49: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/49.jpg)
CMF Stack
• Framework: symfony, for example• CMF entities: Site, Pages, Menus, Users ...• DSL entities: cars, contracts (for Hertz)• Common Boxes : Textarea, image, video, ...• Dsl boxes: Cars image gallery
domenica 15 maggio 2011
![Page 50: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/50.jpg)
Common Boxes + DSL Boxes=
The main tool for the developer to build a page with the CMF
domenica 15 maggio 2011
![Page 51: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/51.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
domenica 15 maggio 2011
![Page 52: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/52.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
domenica 15 maggio 2011
![Page 53: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/53.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
Common Boxes
domenica 15 maggio 2011
![Page 54: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/54.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
Common Boxes
domenica 15 maggio 2011
![Page 55: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/55.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
Common Boxes
domenica 15 maggio 2011
![Page 56: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/56.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
Common Boxes
domenica 15 maggio 2011
![Page 57: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/57.jpg)
Example : page & box compositionm
ost s
old
prod
uct
Richtext
Main product Image
Dsl Boxes
Common Boxes
domenica 15 maggio 2011
![Page 58: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/58.jpg)
The Page-Box Binding Storage
Data can change its structure fastly, according to the domain model.
We need a technology supporting this fast change.
Since we have N box type, to compose a page we shouldlook for a few tables.
We need a technology supporting this kind of lookups.
domenica 15 maggio 2011
![Page 59: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/59.jpg)
so,How will we
manage the data?
domenica 15 maggio 2011
![Page 60: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/60.jpg)
RDBMS, of course
domenica 15 maggio 2011
![Page 61: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/61.jpg)
because different data always have
the same need
domenica 15 maggio 2011
![Page 62: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/62.jpg)
one size fits all
domenica 15 maggio 2011
![Page 63: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/63.jpg)
We tend to think at the way we should store data
not how we're gonna use it
domenica 15 maggio 2011
![Page 64: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/64.jpg)
and we think that the
shit-it-always-happens migration
will be easy
domenica 15 maggio 2011
![Page 65: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/65.jpg)
also if that column is useful for one and one only row
domenica 15 maggio 2011
![Page 66: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/66.jpg)
among milions
domenica 15 maggio 2011
![Page 67: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/67.jpg)
so we know we're gonna facea few well-known problems...
domenica 15 maggio 2011
![Page 68: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/68.jpg)
Data Mapping
Data Structure RDBMS
we have to find a way to re-organize the data-structre to insert our tree inside a table.But is really different! Tree find a node in O(nlogn)
id
name
parent_id
domenica 15 maggio 2011
![Page 69: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/69.jpg)
Data Mapping
Data Structure RDBMS
is better than before, but isn't the best way
domenica 15 maggio 2011
![Page 70: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/70.jpg)
Data Mapping
Data Structure RDBMS
... and NOW??????
?
domenica 15 maggio 2011
![Page 71: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/71.jpg)
The Alien
BUT you always find
something that as a different Behaviour
spend more time to normalize your models
domenica 15 maggio 2011
![Page 72: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/72.jpg)
Unpredictable Tomorrow
User Story evolve continous
Worse than the Alien
domenica 15 maggio 2011
![Page 73: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/73.jpg)
EAVformerly known as:
normalization WTF?!?!?!
or:how to do 70k joins to retrieve an entity of you model
domenica 15 maggio 2011
![Page 74: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/74.jpg)
Overnormalized
user_id | mail_iduser_id | phone_id
user_id | address_id
user_id | mail | phone | address
Large schema is broken into smaller ones
domenica 15 maggio 2011
![Page 75: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/75.jpg)
Overnormalized
user_id | address_id
user_id | phone_id
user_id | mail_id
...
...
...
...
...
LEFT JOIN
LEFT JOIN
LEFT JOIN
domenica 15 maggio 2011
![Page 76: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/76.jpg)
Overnormalized
Users ListLEFT JOIN
LEFT JOIN
LEFT JOIN
LEFT JOINLEFT JOIN
LEFT JOINLEFT JOIN
domenica 15 maggio 2011
![Page 77: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/77.jpg)
Overnormalized
LEFT JOIN
LEFT JOIN
LEFT JOINLEFT JOIN
LEFT JOIN
LEFT JOIN
LEFT JOINLEFT JOINLEFT JOIN
LEFT JOINLEFT JOIN
LEFT JOIN
LEFT JOIN
LEFT JOINLEFT JOIN
LEFT JOIN
LEFT JOINLEFT JOIN
What if you need to show only a single primary address?
Users List
domenica 15 maggio 2011
![Page 78: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/78.jpg)
back to the CMF
domenica 15 maggio 2011
![Page 79: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/79.jpg)
Bind Page with Boxes
Foreing Key -> TextareaBox
domenica 15 maggio 2011
![Page 80: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/80.jpg)
Bind Page with Boxes
Foreing Key -> ?
AND NOW ???
domenica 15 maggio 2011
![Page 81: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/81.jpg)
Mantain the RI#1
domenica 15 maggio 2011
![Page 82: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/82.jpg)
Not Mantain the RI#2
domenica 15 maggio 2011
![Page 83: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/83.jpg)
Maintain or not Maintain the RI; that is the
question
domenica 15 maggio 2011
![Page 84: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/84.jpg)
we have to choose
domenica 15 maggio 2011
![Page 85: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/85.jpg)
have you ever thought
"there should beanother way!"
?
domenica 15 maggio 2011
![Page 86: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/86.jpg)
Can someone help us ?
domenica 15 maggio 2011
![Page 87: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/87.jpg)
NoSQLlets try
world
domenica 15 maggio 2011
![Page 88: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/88.jpg)
• Written in: C/C++ • Main point: Blazing fast• Protocol: Telnet-like• Disk-backed in-memory database, • but since 2.0, it can swap to disk. • Master-slave replication • Simple keys and values, • but complex operations like
ZREVRANGEBYSCORE • INCR• Values can be set to expire (as in a cache)
$ redis-cli set mykey "my binary safe value" => OK $ redis-cli get mykey => my binary safe value
domenica 15 maggio 2011
![Page 89: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/89.jpg)
Best used: • rapidly changing data with
a foreseeable database size (should fit mostly in memory)
For example: • analytics• real-time data collection• caching• MQ• log
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
domenica 15 maggio 2011
![Page 90: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/90.jpg)
very fast
domenica 15 maggio 2011
![Page 91: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/91.jpg)
very fast
Object != key->value
domenica 15 maggio 2011
![Page 92: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/92.jpg)
Not reliable
very fast
Object != key->value
domenica 15 maggio 2011
![Page 93: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/93.jpg)
Not reliable
very fast
Object != key->value
Can I haz otha nozql?
domenica 15 maggio 2011
![Page 94: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/94.jpg)
> j = { name : 'david', surname : 'funaro' };
{ "name" : "david", "surname" : "funaro" }
> db.things.save(t);
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
• Written in: C++ • Main point: Retains some friendly properties
of SQL• Protocol: Custom, binary (BSON) • Master/slave replication • speaks JavaScript• Built-in sharding• Performance over features • After crash, it needs to repair tables
domenica 15 maggio 2011
![Page 95: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/95.jpg)
Best used:• you need dynamic queries• you prefer to define indexes,
not map/reduce functions• you need good performance on
a big DB
For example: • all things that you would do
with MySQL or PostgreSQL, but having predefined columns really holds you back
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
domenica 15 maggio 2011
![Page 96: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/96.jpg)
Document Oriented
domenica 15 maggio 2011
![Page 97: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/97.jpg)
Document Oriented
Schema Free
domenica 15 maggio 2011
![Page 98: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/98.jpg)
Document Oriented
Schema Free
Navigate Object
domenica 15 maggio 2011
![Page 99: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/99.jpg)
Document Oriented
Schema Free
Navigate Object
Can I haz otha nozql?
domenica 15 maggio 2011
![Page 100: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/100.jpg)
• Written in: Erlang • Main point: DB consistency, ease of use• Protocol: HTTP, some say REST• Bi-directional replication => master-master• conflict detection ( 409 Conflict )• MVCC: write operations do not block reads • Previous versions of documents are available • Crash-only (reliable) design • Needs compacting from time to time • Views: embedded map/reduce• jQuery library included
curl -d '{"keys":["bar"]}' -X POST http://host:port/foo/_all_docs?include_docs=true
domenica 15 maggio 2011
![Page 101: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/101.jpg)
Best used: • accumulating occasionally-
changing data• pre-defined queries• versioning is king
For example: • CRM/CMS systems• API
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
domenica 15 maggio 2011
![Page 102: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/102.jpg)
Reliable
domenica 15 maggio 2011
![Page 103: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/103.jpg)
Document Oriented
Reliable
domenica 15 maggio 2011
![Page 104: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/104.jpg)
Document Oriented
Schema Free
Reliable
domenica 15 maggio 2011
![Page 105: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/105.jpg)
Document Oriented
Schema Free
Navigate Object
Reliable
domenica 15 maggio 2011
![Page 106: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/106.jpg)
Document Oriented
Schema Free
Navigate Object
Reliable
Can I haz otha nozql?
domenica 15 maggio 2011
![Page 107: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/107.jpg)
Why do we so hardlyneed a GraphDBlike OrientDB?
domenica 15 maggio 2011
![Page 108: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/108.jpg)
"GraphDBs don't avoid relations but they embrace them in a way that they are not a computational problem anymore, by making them explicit instead of implicit through joins."
Claudio Martella( http://blog.acaro.org/entry/somebody-is-going-to-hate-me-nosparql )
domenica 15 maggio 2011
![Page 109: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/109.jpg)
Easy joins
select from users where city.country.continent = 'Oceania'
domenica 15 maggio 2011
![Page 110: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/110.jpg)
Same link semantics,different objects
select links from menu >> 28:1, 17:5
domenica 15 maggio 2011
![Page 111: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/111.jpg)
Same link semantics,different objects
select from [28:1, 17:5]
28:1
ExternalLinkurl: http://www.google.com
17:5
ProductLinkid: 4
domenica 15 maggio 2011
![Page 112: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/112.jpg)
28:1
ExternalLinkurl: http://www.google.com
17:5
ProductLinkid: 4
$link->render()
domenica 15 maggio 2011
![Page 113: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/113.jpg)
• Written in: Java• Main point: Graph• Protocol: Binary or HTTP• ACID• Disk-persisted or in-memory,• Cluster• 150k inserts per second• Schema-less, *-full, *-mixed• Speaks JSON• Integrated GUI• Documental• SQL commands
curl -X PUT '127.0.0.1:2480/document/demo/1:2' --data "{'@rid': '1:2'}"
domenica 15 maggio 2011
![Page 114: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/114.jpg)
Reliable
domenica 15 maggio 2011
![Page 115: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/115.jpg)
Graph - Documental
Reliable
domenica 15 maggio 2011
![Page 116: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/116.jpg)
Graph - Documental
Schema-*
Reliable
domenica 15 maggio 2011
![Page 117: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/117.jpg)
Graph - Documental
Schema-*
Reliable
Easy traversal
domenica 15 maggio 2011
![Page 118: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/118.jpg)
Graph - Documental
Schema-*
Reliable
Easy traversal
SQL-friendly
domenica 15 maggio 2011
![Page 119: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/119.jpg)
Graph - Documental
Schema-*
Reliable
Easy traversal
SQL-friendly
UberFast ( binary protocol )
domenica 15 maggio 2011
![Page 120: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/120.jpg)
Graph - Documental
Schema-*
Reliable
Easy traversal
SQL-friendly
UberFast ( binary protocol )
Universal ( HTTP protocol )
domenica 15 maggio 2011
![Page 121: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/121.jpg)
is so cool
domenica 15 maggio 2011
![Page 122: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/122.jpg)
but has a problem...
domenica 15 maggio 2011
![Page 123: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/123.jpg)
ver 1.0
domenica 15 maggio 2011
![Page 124: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/124.jpg)
rc1
domenica 15 maggio 2011
![Page 125: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/125.jpg)
but has a couple problems...
domenica 15 maggio 2011
![Page 126: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/126.jpg)
JAVA
domenica 15 maggio 2011
![Page 127: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/127.jpg)
but somebody
domenica 15 maggio 2011
![Page 128: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/128.jpg)
started writing the binary-protocol binding
https://github.com/AntonTerekhov/OrientDB-PHP( beta, 28 April 2010 )
domenica 15 maggio 2011
![Page 129: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/129.jpg)
and others
domenica 15 maggio 2011
![Page 130: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/130.jpg)
domenica 15 maggio 2011
![Page 131: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/131.jpg)
wrote the HTTP one
https://github.com/odino/Orient
domenica 15 maggio 2011
![Page 132: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/132.jpg)
$driver = new Orient\Http\Client\Curl();$orient = new Orient\Foundation\Binding( $driver, '127.0.0.1', '2480', 'admin', 'admin', 'demo');
$response = $orient->query("select from fellas where any() traverse(0,-1) ( @rid = 1:1 )");
$output = json_decode($response->getBody());foreach ($output->result as $friend){ echo $friend->name;
// other fun...}
domenica 15 maggio 2011
![Page 133: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/133.jpg)
you can start playing with a pure
GraphDB now
domenica 15 maggio 2011
![Page 134: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/134.jpg)
High-level PHP Component?
domenica 15 maggio 2011
![Page 135: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/135.jpg)
No
domenica 15 maggio 2011
![Page 136: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/136.jpg)
but we know that ;)
domenica 15 maggio 2011
![Page 137: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/137.jpg)
that's why in DNSEE we will build a basic
Object Graph Mapperfor OrientDB
domenica 15 maggio 2011
![Page 138: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/138.jpg)
...because...
domenica 15 maggio 2011
![Page 139: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/139.jpg)
hey, you remember about our CMF?
domenica 15 maggio 2011
![Page 140: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/140.jpg)
codename:
domenica 15 maggio 2011
![Page 141: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/141.jpg)
codename:
ConGoW
domenica 15 maggio 2011
![Page 142: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/142.jpg)
codename:
contents gone wild
( don't ask why )
ConGoW
domenica 15 maggio 2011
![Page 143: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/143.jpg)
ConGoW
domenica 15 maggio 2011
![Page 144: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/144.jpg)
• soon the real kickstart
ConGoW
domenica 15 maggio 2011
![Page 145: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/145.jpg)
• soon the real kickstart• 10 devs at the starting point
ConGoW
domenica 15 maggio 2011
![Page 146: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/146.jpg)
• soon the real kickstart• 10 devs at the starting point• OSS on GitHub
ConGoW
domenica 15 maggio 2011
![Page 147: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/147.jpg)
• soon the real kickstart• 10 devs at the starting point• OSS on GitHub• Stack
ConGoW
domenica 15 maggio 2011
![Page 148: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/148.jpg)
• soon the real kickstart• 10 devs at the starting point• OSS on GitHub• Stack
oSymfony2
ConGoW
domenica 15 maggio 2011
![Page 149: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/149.jpg)
• soon the real kickstart• 10 devs at the starting point• OSS on GitHub• Stack
oSymfony2oOrient
ConGoW
domenica 15 maggio 2011
![Page 150: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/150.jpg)
• soon the real kickstart• 10 devs at the starting point• OSS on GitHub• Stack
oSymfony2oOrientoDoctrine2
ConGoW
domenica 15 maggio 2011
![Page 151: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/151.jpg)
"My only friend, the end"
domenica 15 maggio 2011
![Page 152: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/152.jpg)
"My only friend, the end"
David Funaro@ingdavidinohttp://davidfunaro.com
domenica 15 maggio 2011
![Page 153: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/153.jpg)
"My only friend, the end"
David Funaro@ingdavidinohttp://davidfunaro.com
Alessandro Nadalin@_odino_
http://odino.org
domenica 15 maggio 2011
![Page 154: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/154.jpg)
"My only friend, the end"
David Funaro@ingdavidinohttp://davidfunaro.com
Alessandro Nadalin@_odino_
http://odino.org
domenica 15 maggio 2011
![Page 155: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/155.jpg)
"My only friend, the end"
David Funaro@ingdavidinohttp://davidfunaro.com
Alessandro Nadalin@_odino_
http://odino.org
http://joind.in/talk/view/3008
domenica 15 maggio 2011
![Page 156: CMF: a pain in the F @ PHPDay 05-14-2011](https://reader033.vdocument.in/reader033/viewer/2022051816/5456565baf79592b448b4df3/html5/thumbnails/156.jpg)
Creditshttp://www.flickr.com/photos/pagedooley/5313217918/sizes/l/in/photostream/
http://www.flickr.com/photos/zoetnet/5520594473/sizes/l/in/photostream/http://www.flickr.com/photos/mhxbhd/3962410821/sizes/o/in/photostream/
http://www.flickr.com/photos/labyrinthx/1955594336/sizes/z/in/photostream/http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
http://www.flickr.com/photos/salim/19426192/sizes/o/in/photostream/http://www.flickr.com/photos/mybluevan/3780363712/sizes/l/in/photostream/
http://farm4.static.flickr.com/3064/3086258014_f1925639e0.jpg
domenica 15 maggio 2011