<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Are you agile ? &#187; php</title>
	<atom:link href="http://www.areyouagile.com/category/technologies/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.areyouagile.com</link>
	<description>Nudge, Nudge, wink wink, n&#039;en dites pas plus</description>
	<lastBuildDate>Sun, 29 Jan 2012 10:46:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Elgg, REST API</title>
		<link>http://www.areyouagile.com/2009/10/elgg-rest-api/</link>
		<comments>http://www.areyouagile.com/2009/10/elgg-rest-api/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:57:05 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=212</guid>
		<description><![CDATA[Petit retour sur Elgg. A l&#8217;occasion d&#8217;une petite (mini) mission je me suis penché sur l&#8217;API REST. L&#8217;objectif étant de brancher Elgg et son moteur (engine/lib) en utilisant son API REST à un service WS Soap tiers pour l&#8217;alimenter. En quelques mots : brouillon mais prometteur. Pour rentrer plus précisément sur le sujet je devais [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 4px;" title="Elgg Rest Api" src="http://www.areyouagile.com/media/image/elgg_logo.jpg" alt="" width="119" height="98" /></p>
<p>Petit retour sur Elgg. A l&#8217;occasion d&#8217;une petite (mini) mission je me suis penché sur l&#8217;API REST. L&#8217;objectif étant de brancher Elgg et son moteur (engine/lib) en utilisant son <a title="Elgg Rest Api" href="http://docs.elgg.org/wiki/API" target="_blank">API REST</a> à un service WS Soap tiers pour l&#8217;alimenter. En quelques mots : brouillon mais prometteur.</p>
<p>Pour rentrer plus précisément sur le sujet je devais générer des groupes dynamiquement en puisant les infos dans un WebService SOAP externe. Ce que mon proto met en avant : il est tout à fait possible d&#8217;&#8221;exposer&#8221; (selon la terminologie elgg) toutes les fonctions liées aux entités de Elgg. C&#8217;est à dire que l&#8217;on rend accessible via une API REST les fonctionnalités des briques de Elgg. Pour cela il faut créer un plugin (du moins je m&#8217;y suis pris ainsi). Créer un plugin c&#8217;est deux coups de cuillère à pot :  un fichier manifest.xml qui dit qui/licence/version, un fichier start.php qui permet de générer ses fonctions et surtout de les enregister au sein du fonctionnement de Elgg. Je n&#8217;ai pas creusé l&#8217;aspect MVC du produit mais après si je regarde les autres plugins tout semble couler assez de source : dossier view, dossier action, etc. Le fait de manipuler les librairies Elgg depuis son infrastructure rend tout plus simple : on accède à toutes les librairies tous les objets/entités, toutes les fonctions. Y&#8217;a plus qu&#8217;à.</p>
<p>Il ressort cependant que l&#8217;API n&#8217;est pas très propre au niveau du codage et que pas mal de petits bugs sont présents.J&#8217;adore à ce sujet le passage du wiki :</p>
<blockquote><p><strong>Note: Elgg&#8217;s REST API has many bugs so developers need to beware that development with it will take longer than expected as you run up against these bugs</strong></p></blockquote>
<p>Par exemple dans mon code, j&#8217;ai eu besoin de faire un accès direct  à  la base de données (ce qui n&#8217;est pas vraiment conseillé&#8230;) l&#8217;API de l&#8217;entité &#8220;group&#8221; ne fonctionnant pas pour l&#8217;attribut <a title="Owner Guid bug " href="http://community.elgg.org/mod/groups/topicposts.php?topic=41488&amp;group_guid=23300" target="_blank">owner_guid</a>.  Enfin j&#8217;ai aussi par exemple supprimé des validations de paramètres dans  l&#8217;API REST qui fonctionnaient de manières incohérentes. Enfin si il semble dans la documentation que les questions  de sécurité soient bien prises en charge, j&#8217;ai eu la surprise de noter  que suite à mon installation on pouvait déclencher la fonctionnalité  sans aucune restriction via un url / méthode GET (alors que j&#8217;avais préparé un  script mettant en place des headers/entêtes http spécifiques pour  palier à cette question d&#8217;authentification). Alors soit c&#8217;est un leurre (la sécurité de l&#8217;API). Soit j&#8217;ai raté un épisode et j&#8217;ai pas compris ou activé la sécurisation de l&#8217;API (la bonne hypothèse probablement). A fouiller donc.</p>
<p>Ces divers désagréments ne sont cependant pas bloquants. Elgg et son &#8220;engine&#8221; et API REST sont très prometteurs. Le code va aller en  s&#8217;améliorant, il est déjà correct. Les questions de sécurité peuvent être traitées à un autre niveau : sécurisation des urls REST via Apache par exemple.</p>
<p>Pour tout cela il s&#8217;agit de développement php/mysql relativement classique, donc efficace et productif. Il faut cependant mettre un bémol sur cette productivité en raison de la jeunesse de la plate-forme Elgg et des anomalies qu&#8217;on y trouve toujours encore régulièrement.</p>
<p>quelques urls intéressants :<br />
des exemples de codes et infos concernant l&#8217;API :<br />
<a href="http://trac.elgg.org/elgg/browser/trunk/mod/apitest/start.php?rev=430" target="_blank">http://trac.elgg.org/elgg/browser/trunk/mod/apitest/start.php?rev=430</a><br />
<a href="http://www.danielansari.com/wordpress/2008/12/how-to-use-the-rest-api-in-elgg-11/" target="_blank">http://www.danielansari.com/wordpress/2008/12/how-to-use-the-rest-api-in-elgg-11/</a></p>
<p>Quelques bouts de code :</p>
<p><a title="elgg plugin dev" href="http://docs.elgg.org/wiki/Plugin_development" target="_blank">le plugin</a> :fichier start.php</p>
<pre>&lt;?php</pre>
<pre>function haras_init()
 {
 /** j'expose ma fonction  au travers de l'api REST */
 expose_function(
 'group.create', //method
 'createGroup', //function
 array (
  "user_guid" =&gt; array('type'=&gt;'string'),
 "montrucnumber" =&gt; array('type'=&gt;'string')
   ), // parameters
 elgg_echo('group.create'),  // description
 "GET", // call_method
 false, // auth token
 true // anonymous   &lt;-- sûrement cette ligne mes questions sur l'authentification <img src='http://www.areyouagile.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <img src='http://www.areyouagile.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
  );
  }</pre>
<pre>function getMontruc($montruc)
 {</pre>
<pre>  /** je récupère l'objet vers le service SOAP tiers */</pre>
<pre>}</pre>
<pre>function createGroup($user_guid, $numtruc)
 {</pre>
<pre>[...]

 $montruc = getMontruc($numtruc)</pre>
<pre>/** je crée dynamiquement un groupe */</pre>
<pre> $group = new ElggGroup();

 $user = get_entity((int)$user_guid);

 $group-&gt;name = $montruc-&gt;name;
 $group-&gt;description = $description;
 $group-&gt;access_id = 2;
 $group-&gt;membership = ACCESS_PUBLIC;
 $group-&gt;files_enable = get_input('files_enable', 'yes');
 $group-&gt;pages_enable = get_input('pages_enable', 'yes');
 $group-&gt;forum_enable = get_input('forum_enable', 'yes');

 $group-&gt;save();

 $group-&gt;join($user); // toujours créer un utilisateur après la création du groupe

 /** l'API ne fonctionne pas je dois manipuler
 // sale mais nécessaire, api bugguée
 $dblink = get_db_link('write');
 $query = "update elggentities set owner_guid =" . $user_guid . " where guid=" . $group-&gt;guid;
 $result = execute_query("$query", $dblink); 

 return 'group ' . $group-&gt;name . ' ' . $group-&gt;owner_guid . ' created';  // ouh là là le proto
 }</pre>
<pre>/** très important, on enregistre le service/handler auprès de Elgg */
 register_elgg_event_handler('init','system','haras_init');</pre>
<pre>?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/10/elgg-rest-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mon &#8220;PHP TREE Map Opensource&#8221;</title>
		<link>http://www.areyouagile.com/2009/10/mon-php-tree-map-opensource/</link>
		<comments>http://www.areyouagile.com/2009/10/mon-php-tree-map-opensource/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 18:36:52 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=196</guid>
		<description><![CDATA[Les choses ont bien changées depuis une dizaine d&#8217;années. PHP n&#8217;était pas vraiment ma tasse de thé à la fin du siècle précédent. Une auberge espagnole, un bazar sans nom, qui ne donnait pas confiance. On y trouvait de tout mais aussi beaucoup de n&#8217;importe quoi. Mais les choses ont bien changées. Il me semble [...]]]></description>
			<content:encoded><![CDATA[<p>Les choses ont bien changées depuis une dizaine d&#8217;années. <strong>PHP</strong> n&#8217;était pas vraiment ma tasse de thé à la fin du siècle précédent. Une auberge espagnole, un bazar sans nom, qui ne donnait pas confiance. On y trouvait de tout mais aussi beaucoup de n&#8217;importe quoi. Mais les choses ont bien changées. Il me semble que PHP est arrivé à l&#8217;âge adulte aux alentours de 2004, 2005. Aujourd&#8217;hui j&#8217;esquisse un sourire quand je vois certains de ces développeurs Java, C# ou autre, qui se gaussent de ce language du peuple, se faire complètement dépasser par son succès. Car aujourd&#8217;hui PHP est fiable, puissant, et il est la source de nombreux logiciels phares des entreprises modernes. Il accompagne l&#8217;émancipation de l&#8217;opensource, et son spectre d&#8217;action s&#8217;étend de plus en plus à des logiciels métiers à forte valeur ajoutée. Il reste encore une <em>terra incognita</em> au main de Java ou autres, mais peu à peu son rayon d&#8217;action en fait une technologie incontournable dont la prise en main est aisée et la productivité garantie (si l&#8217;on ne cherche pas à réinventer la roue). Même des grandes comptes assez inattendus (comme dans le milieu banquaire par exemple) ont franchi le pas. J&#8217;attends donc avec impatience que les <strong>Liferay, Alfresco, Pentaho, OpenBravo</strong> et consort trouvent leur alter ego php.</p>
<p>Ps : ci-joint un arbre des solutions PHP que je viens de réaliser, un dessin valant mieux qu&#8217;un long discours.</p>
<p style="text-align: center;">
<div class="mceTemp mceIEcenter" style="text-align: center;">
<dl class="wp-caption aligncenter" style="width: 644px;">
<dt class="wp-caption-dt"><img title="Php Tree Map Opensource" src="http://www.areyouagile.com/media/image/phptree.jpg" alt="Php Tree Opensource" width="634" height="603" /></dt>
<dd class="wp-caption-dd">Php Tree Map Opensource</dd>
</dl>
</div>
<p style="text-align: center;">
<p>Si vous souhaitez m&#8217;éclairer sur une solution opensource, fiable,  php, qui complète ce diagramme je suis preneur !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/10/mon-php-tree-map-opensource/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Elgg, plate-forme opensource de réseaux sociaux</title>
		<link>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/</link>
		<comments>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 07:48:36 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[réseau social]]></category>
		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=175</guid>
		<description><![CDATA[Depuis 2 ou 3 jours je test sous l&#8217;impulsion de Yves (a qui je laisse la paternité de la sentence suivant : &#8220;On ne fait d&#8217;elgg sans casser des oeufs&#8221;) Elgg, la plate-forme opensource de réseaux sociaux. Inutile d&#8217;expliquer pourquoi les réseaux sociaux sont en plein boum, mais c&#8217;est le cas. Du coup, grande force [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 4px;" title="Elgg" src="http://www.areyouagile.com/media/image/elgg_logo.gif" alt="" width="121" height="72" /> Depuis 2 ou 3 jours je test sous l&#8217;impulsion de <a href="http://www.viadeo.com/recherche/profil/?memberId=0021mbw2bo3j4pmw" target="_blank">Yves</a> (a qui je laisse la paternité de la sentence suivant : &#8220;On ne fait d&#8217;elgg sans casser des oeufs&#8221;) <a href="http://www.elgg.org" target="_blank">Elgg</a>, la plate-forme opensource de réseaux sociaux. Inutile d&#8217;expliquer pourquoi les réseaux sociaux sont en plein boum, mais c&#8217;est le cas. Du coup, grande force de la communauté opensource, qui peut en irriter certains sur le plan idéologique, elle a décidé (la communauté) de sortir sa propre plate-forme (la meilleure R&amp;D étant de lorgner chez le voisin). Elgg donc.</p>
<p>Basé sur PHP, a première vue le code parait surprenant, on ne voit pas immédiatement dans l&#8217;arborescence projet où se trouve quoi, et à quoi sert tel ou tel dossier. Tout ce qui se conçoit clairement se déploie clairement, et cette première impression reste mitigée. Je vous en dirais plus lorsque j&#8217;aurai vraiment essayé de toucher au code. Je suppose que cela est du au modèle de données : apparemment il a été prévu un modèle très malléable : j&#8217;introduis un nouveau type d&#8217;élément (une entité), je lui donne telle ou telle propriété avec telle ou telle valeur. Du coup demain si j&#8217;ai un élément de type nouveau, pas de problème, pas de modification de la structure des tables, ça roule. Bon, pour l&#8217;instant mon analyse est très superficielle donc sujette à caution. Je compte creuser et vous informer. Je ne sais pas si ce modèle n&#8217;a pas un impact sur les performances aussi, que je trouve un chouïa poussives (ils ont cependant prévu l&#8217;utilisation de <a href="http://www.danga.com/memcached/" target="_blank">memcached</a> ou autre pour optimiser celles-ci). Idem pour le design, et le système de templates, je n&#8217;ai rien vu de concret jusqu&#8217;à présent. Enfin, un dernier petit point : l&#8217;installation se fait cahin-caha : il faut nécessairement activer le <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html" target="_blank">mod_rewrite</a> de Apache. J&#8217;aurais préféré avoir le choix d&#8217;utiliser le rewrite ou non, cela pourrait faciliter le debug.</p>
<p>Bref il me faut creuser, car c&#8217;est malgré tout très prometteur (ah j&#8217;oubliais aussi de signaler  une API REST qui permet à l&#8217;accès à toutes les fonctions de l&#8217;outil, même si un warning indique qu&#8217;elle peut encore secouer un peu).</p>
<p>J&#8217;ai pu assez (très) rapidement monter une plate-forme, activer tout un tas de plugins à la facebook, twitter, pages, blog, albums photos, fichiers, etc. C&#8217;est du PHP/MySQL/Apache, donc cela reste simple (dans le bon sens du terme), efficace et productif. Aujourd&#8217;hui avec l&#8217;évolution des pratiques des internautes, et plus globalement des gens (voir des <em>mobilonautes</em> ou des <em>iphonautes</em>)  il parait évident que c&#8217;est le genre d&#8217;outil à déployer : communauté d&#8217;utilisateurs d&#8217;un logiciel, d&#8217;un produit, événementiel : par exemple un festival de musique, ou la convention des maraichers, ou l&#8217;université d&#8217;été du xxx (mettez le parti qui vous embauche)  : 3 mois avant la plate-forme est disponible, on chat, on blog avec les intervenants, avec les organisateurs, etc. durant l&#8217;événement c&#8217;est un vecteur en temps réel de l&#8217;actualité,<em> a posteriori</em>, c&#8217;est un outil de rétrospective (fichiers liés, blogs,images, etc.).</p>
<p>Bref, pas mal de projets assez excitants autour en perspective, j&#8217;espère du moins. Si vous souhaitez tester un peu la plate-forme vous pouvez aller chez <a href="http://www.elgg.org" target="_blank">Elgg.org</a> ou me demander de vous créer un compte pour <a href="http://elgg.areyouagile.com" target="_blank">elgg.areyouagile.com</a> (en me contactant pablo point pernot arboase gmail point com). C&#8217;est la plate-forme de test dont je vous parlais. Attention actuellement vu de l&#8217;extérieur elle paraît très creuse car nous avons ajouté un pluggin (walledgarden) qui interdit l&#8217;accès du public aux infos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pourquoi eZPublish plutôt que Typo3 ?</title>
		<link>http://www.areyouagile.com/2009/09/hello-world/</link>
		<comments>http://www.areyouagile.com/2009/09/hello-world/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 09:32:59 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ezpublish]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://localhost/aya/?p=1</guid>
		<description><![CDATA[Lors des appels d&#8217;offres auxquels je suis confronté, on oppose souvent eZPublish &#38; Typo3. Je propose le plus souvent eZPublish. Pourquoi choisir eZPublish plutôt que Typo3 ? Concernant cette question chacun peut défendre sa chapelle avec des arguments techniques et fonctionnels solides.Pour de multiples raisons je préfère aujourd&#8217;hui et de loin eZPublish (cela pourrait changer, [...]]]></description>
			<content:encoded><![CDATA[<p>Lors des appels d&#8217;offres auxquels je suis confronté, on oppose souvent <a href="http://ez.no" target="_blank">eZPublish</a> &amp; <a href="http://typo3.org/" target="_blank">Typo3</a>. Je propose le plus souvent eZPublish. Pourquoi choisir eZPublish plutôt que Typo3 ? Concernant cette question chacun peut défendre sa chapelle avec des arguments techniques et fonctionnels solides.Pour de multiples raisons je préfère aujourd&#8217;hui et de loin eZPublish (cela pourrait changer, mon avis n&#8217;était pas aussi tranché il y a un ou deux ans). Je ne vais pas maintenant détailler pourquoi, mais je peux rapidement mettre en évidence deux défauts qui me paraissent rédhibitoires de Typo3 sur le plan de la productivité.</p>
<p>Typo3 possède un langage de script propriétaire (le typoscript), qu&#8217;il soit bon ou mauvais peu importe, mais il est très long à prendre en main. Si donc une nouvelle équipe est amenée à intervenir sur un projet Typo3, la charge liée à sa montée en compétence est plus lourde que celle du PHP standard de eZPublish. Trouver un développeur est aussi moins simple que de trouver un développeur PHP. Problème de productivité donc. Le deuxième point est aussi lié à typoscript, on doit le modifier dans l&#8217;interface web du backoffice. Ceci interdit l&#8217;utilisation d&#8217;un gestionnaire de source classique type Git ou Subversion. C&#8217;est donc très dommageable, le script ne peut être modifié que par une seule personne à la fois. Problème de productivité encore.</p>
<p>Ces deux défauts ne sont pas anodins. Ils handicapent fortement le TCO (le fameux coût de revient global) d&#8217;une solution comme Typo3. eZPublish quand à lui n&#8217;utilise que des standards : <a href="http://www.php.net" target="_blank">PHP</a>. De fait il est bien plus ouvert même si Typo3 est la solution 100% communautaire.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/09/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

