2. Distribution de
contenu scalable
Le multicanal, avec
REST + eZ Publish
Nicolas Pastorino - nfrp@ez.no
Director Community - eZ Systems
@jeanvoye - http://share.ez.no
3. Distribution de
contenu scalable
Le multicanal, avec
PHP Tour 2011 - Lille - 24 Novembre
REST + eZ Publish
Nicolas Pastorino - nfrp@ez.no
Director Community - eZ Systems
#phptour
@jeanvoye - http://share.ez.no
24. Pre-requis à la distribution multicanal
Nicolas Pastorino - IPCse11 24/11/2011 8
25. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Nicolas Pastorino - IPCse11 24/11/2011 8
26. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Nicolas Pastorino - IPCse11 24/11/2011 8
27. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Ne pas transiger sur
l’expérience
2
utilisateur
Nicolas Pastorino - IPCse11 24/11/2011 8
28. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Ne pas transiger sur
l’expérience
2 “The Superman Effect” Aral Balkan, DPC11
utilisateur
Nicolas Pastorino - IPCse11 24/11/2011 8
29. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Ne pas transiger sur
l’expérience
2 “The Superman Effect” Aral Balkan, DPC11
utilisateur
Avoir une seule source
de contenu 3
Nicolas Pastorino - IPCse11 24/11/2011 8
30. Pre-requis à la distribution multicanal
Séparation contenu /
présentation à la 1
source de contenu
Ne pas transiger sur
l’expérience
2 “The Superman Effect” Aral Balkan, DPC11
utilisateur
Avoir une seule source “Les annonceurs de contenu n’ont pas les
de contenu 3 moyens d’avoir une équipe éditoriale par
canal de publication”
Nicolas Pastorino - IPCse11 24/11/2011 8
36. Flux de
contenu
monétisés
Source
/
Unique de
Contenu
CMS
37. Flux de
contenu
monétisés
Applications
Mobiles
Source
/
Smartphones, Tablets
Unique de
Contenu
CMS
38. Flux de
contenu
monétisés
Applications
Mobiles
Source
/
Smartphones, Tablets
Unique de
Contenu
CMS Contenu
Push
Newsletters
3rd party : CRM, ERP
39. Flux de
contenu
monétisés
Applications
Mobiles
Source
/
Smartphones, Tablets
Unique de
Contenu
CMS Contenu
Push
Newsletters
3rd party : CRM, ERP
Print
Publication traditionnelle
40. Flux de
contenu
monétisés
Applications
Mobiles
Source
/
Smartphones, Tablets
Unique de
Contenu
CMS Contenu
Push
Newsletters
3rd party : CRM, ERP
Print
Publication traditionnelle
Social Media
41.
42. "Les consommateurs de media sur plusieurs
canaux ont un degré d’engagement plus élevé que
ceux présents sur un seul canal.
Plus ils regardent la TV, écoutent la radio, passent
du temps en ligne, etc.., plus ils consomment de la
publicité.
La distribution de contenu multicanal aura
également un impact important sur la structure
de revenus des announceurs de contenu. Cette
technologie devient hautement différenciante entre
ces derniers.
47. “Les media ainsi que les grandes marques se doivent de
reconnaître qu’ajouter le canal mobile au “mix multicanal”
ne signifie pas créer un canal annexe.
Les architectes de stratégies mobiles attestent que:
• Le mobile n’est pas l’expérience desktop
minifiée,
• L’environnement de l’utilisateur est un élément
de l’expérience mobile,
• Les utilisateurs mobile ne sont pas simplement
un sous-ensemble des visiteurs - certains sont
nouveaux.”
56. REpresentational
State
Transfer
REST est un ensemble de principes qui définit comment les
standards Web tels que HTTP et les URIs devraient être utilisés
• Donner un ID à toute “chose”
• Lier les “choses” ensemble (“HATEOAS”)
• Utiliser les méthodes standards
• Adopter des représentations multiples pour les ressources
• Communiquer “sans état” ( statelessly )
57. REpresentational
State
Transfer
REST est un ensemble de principes qui définit comment les
standards Web tels que HTTP et les URIs devraient être utilisés
• Donner un ID à toute “chose”
• Lier les “choses” ensemble (“HATEOAS”)
• Utiliser les méthodes standards
• Adopter des représentations multiples pour les ressources
• Communiquer “sans état” ( statelessly )
h"p://www.infoq.com/ar4cles/rest-‐introduc4on
h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
58. REpresentational
State
Transfer
h"p://www.infoq.com/ar4cles/rest-‐introduc4on
h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
59. REpresentational
State
Transfer
Les objectifs de REST incluent :
• Scalabilité des interactions entre composants
• Interfaces Génériques
• Déployement indépendant des composants
• Composants intermédiaires pour réduire la latence, renforcer la
sécurité, encapsuler les systèmes “legacy”
h"p://www.infoq.com/ar4cles/rest-‐introduc4on
h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
61. Au coeur du CMS eZ Publish
API REST Extensible
REST comme fonctionnalité
coeur
Nicolas Pastorino - IPCse11 24/11/2011 20
62. Au coeur du CMS eZ Publish
API REST Extensible
Contrôleur frontal dédié
Nicolas Pastorino - IPCse11 24/11/2011 21
63. At the core of the eZ Publish CMS
Extensible REST API
REST setup
REST
eZP
REST
request
FC
eZ
Publish
web-‐request
Nicolas Pastorino - PHPTour 2011 24/11/2011 22
64. At the core of the eZ Publish CMS
Extensible REST API
REST setup
REST
eZP
REST
request
FC
eZ
Publish
web-‐request
Nicolas Pastorino - PHPTour 2011 24/11/2011 22
65. Au coeur du CMS eZ Publish
API REST Extensible
Mapping
contenu <--> ressource
Nicolas Pastorino - PHPTour 2011 24/11/2011 23
66. Au coeur du CMS eZ Publish
API REST Extensible
Makes data available
Nicolas Pastorino - PHPTour 2011 24/11/2011 24
67. Au coeur du CMS eZ Publish
API REST Extensible
Makes data reusable
Nicolas Pastorino - PHPTour 2011 24/11/2011 24
68. Au coeur du CMS eZ Publish
API REST Extensible
Le contenu est “libéré”
Nicolas Pastorino - PHPTour 2011 24/11/2011 25
69. Au coeur du CMS eZ Publish
API REST Extensible
Motif dʼURI
Nicolas Pastorino - PHPTour 2011 24/11/2011 26
70. Au coeur du CMS eZ Publish
API REST Extensible
Juste un jeton pour déclencher une règle de
ré-écriture
Call +
GET Host / Prefix / Provider / Version / params
ezpRestPrefixFilterInterface
Nicolas Pastorino - PHPTour 2011 24/11/2011 27
71. Au coeur du CMS eZ Publish
API REST Extensible
Juste un jeton pour déclencher une règle de
Prefix
ré-écriture
Provider
ezpRestPrefixFilterInterface
Version
Nicolas Pastorino - PHPTour 2011 24/11/2011 27
72. Au coeur du CMS eZ Publish
API REST Extensible
Juste un jeton pour déclencher une règle de
Prefix
ré-écriture
Provider
ezpRestPrefixFilterInterface
Version
Nicolas Pastorino - PHPTour 2011 24/11/2011 27
73. Au coeur du CMS eZ Publish
API REST Extensible
Juste un jeton pour déclencher une règle de
Prefix
ré-écriture
Provider
ezpRestPrefixFilterInterface
Version
Nicolas Pastorino - PHPTour 2011 24/11/2011 27
82. Configuration des routes - Exemple
class ezpRestRouter extends ezcMvcRouter
{
public function createRoutes()
{
$providerRoutes = ezpRestProvider::getProvider
( ezpRestPrefixFilterInterface::getApiProviderName() )->getRoutes();
$routes = array(
new ezpMvcRailsRoute( '/fatal', 'ezpRestErrorController', 'show' ),
new ezpMvcRailsRoute( '/http-basic-auth', 'ezpRestAuthController', 'basicAuth' ),
new ezpMvcRailsRoute( '/login/oauth', 'ezpRestAuthController', 'oauthRequired' ),
new ezpMvcRailsRoute( '/oauth/token', 'ezpRestOauthTokenController', 'handleRequest'),
// ezpRestVersionedRoute( $route, $version )
// $version == 1 should be the same as if the only the $route had been present
new ezpRestVersionedRoute( new ezpMvcRailsRoute( '/foo', 'myController',
'myActionOne' ), 1 ),
new ezpRestVersionedRoute( new ezpMvcRailsRoute( '/foo', 'myController',
'myActionOneBetter' ), 2 ),
);
return ezcMvcRouter::prefix( '/api', array_merge( $providerRoutes, $routes ) );
}
}
Nicolas Pastorino - PHPTour 2011 24/11/2011 36
103. Recommandation de Contenu
Tracker la
consommation
de contenu
+
Apprendre les
metadonnées
=
Content Recommendation
Nicolas Pastorino - IPCse11 24/11/2011 47
104.
105. Apprentissage des comportements, Cloud-
based, grâce aux :
• Evènements
“Visualisation, Achat, Rating, Partage”
• Modèles
Utilisateurs qui on vu A ont aussi vu B
• Stéréotypes
Affinités calculées sur la base de larges
ensembles de contenu
107. Recommandation de Contenu
Filtrage Hybride
Optimiser la qualité de la recommandation en combinant
les méthodes de qualification des comportements
Nicolas Pastorino - IPCse11 24/11/2011 49
108. Recommandation de Contenu
Filtrage Hybride
Optimiser la qualité de la recommandation en combinant
les méthodes de qualification des comportements
Content-based
filtering
“Content like this”
~
Nicolas Pastorino - IPCse11 24/11/2011 49
109. Recommandation de Contenu
Filtrage Hybride
Optimiser la qualité de la recommandation en combinant
les méthodes de qualification des comportements
Content-based Collaborative
filtering filtering
“Content like this” “Customers who
were interested in
this product also
bought …”
~
Nicolas Pastorino - IPCse11 24/11/2011 49
110. Recommandation de Contenu
Filtrage Hybride
Optimiser la qualité de la recommandation en combinant
les méthodes de qualification des comportements
Content-based Collaborative Community- Stereotype- Context-based
filtering filtering based filtering based filtering filtering
“Content like this” “Customers who “Customers like you Recommendation Recommendation
were interested in also bought …” combines content depends on
this product also cluster with affinity location, time,
bought …” vectors mood, environment
…
Rock
~ ~ Pop
R&B
Nicolas Pastorino - IPCse11 24/11/2011 49
111. Recommandation de Contenu
Filtrage Hybride
Optimiser la qualité de la recommandation en combinant
les méthodes de qualification des comportements
Content-based Collaborative Community- Stereotype- Context-based
filtering filtering based filtering based filtering filtering
“Content like this” “Customers who “Customers like you Recommendation Recommendation
were interested in also bought …” combines content depends on
this product also cluster with affinity location, time,
bought …” vectors mood, environment
…
Rock
~ ~ Pop
R&B
+ A/B testing + near cold-start recommendations
Nicolas Pastorino - IPCse11 24/11/2011 49
113. Recommandation de Contenu
I/O par REST
Connection native par n’importe quel client
HTTP-enabled ( simple avec PHP, extension
native pour le CMS eZ Publish )
Cloud-based : mise à l’échelle facile
Différentes méthodes de tracking
d’évènements : JS, built-in the CMS
Nicolas Pastorino - IPCse11 24/11/2011 50
120. Find me on Twitter : @jeanvoye
Notez cette présentation : http://joind.in/4350
Slides disponibles bientôt à http://slideshare.net/jeanvoye
eZ Community
http://share.ez.no
eZ Publish Community Project
https://github.com/ezsystems/ezpublish
http://share.ez.no/download
Merci !
http://share.ez.no/get-involved
YooChoose, recommendation engine
http://www.yoochoose.com
eZ Systems & eZ Publish Enterprise Edition
http://ez.no