<?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/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.areyouagile.com</link>
	<description>Quelques billets autour des nouvelles technologies, de l&#039;opensource et des méthodes agiles, accompagnement projet technique et fonctionnel, avant-vente, etc. buzzness is bizness</description>
	<lastBuildDate>Wed, 25 Aug 2010 19:37:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.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>Eclipse, haine et amour</title>
		<link>http://www.areyouagile.com/2009/09/eclipse-haine-et-amour/</link>
		<comments>http://www.areyouagile.com/2009/09/eclipse-haine-et-amour/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 19:14:33 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=160</guid>
		<description><![CDATA[Là là, làlàlà impitoyyaabllleeuuuu ! Non, désolé, mais cela ressemble fort à un post inutile (que les gens sensés s&#8217;arrêtent ici svp)*. Je ne cesse d&#8217;utiliser et de ne pas utiliser Eclipse. Je tergiverse devant l&#8217;éternelle question ultime du développeur dont la vie se résume à quelques bits : mais bon sang mais bien sûr [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 4px;" title="Eclipse" src="http://www.areyouagile.com/media/image/eclipse.png" alt="" width="200" height="132" />Là là, làlàlà impitoyyaabllleeuuuu !</p>
<p>Non, désolé, mais cela ressemble fort à un post inutile (que les gens sensés s&#8217;arrêtent ici svp)*. Je ne cesse d&#8217;utiliser et de ne pas utiliser Eclipse. Je tergiverse devant l&#8217;éternelle question ultime du développeur dont la vie se résume à quelques bits : mais bon sang mais bien sûr quel éditeur (de code) vais-je donc utiliser ? Dans l&#8217;opensource (comme on dit &#8220;chez les restaurateur&#8221;) l&#8217;empreinte mémoire, c&#8217;est à dire la place prise en mémoire par un processus, c&#8217;est très important. On regarde de haut un outil gourmand. Et bon sang Eclipse, et Java plus généralement, sont de sacrés consommateurs de mémoire. D&#8217;où ma résistance (souvent enfoncée) à Eclipse (faut-il rappeler que je ne développe que très rarement en Java, mais surtout en PHP, voire en Python**). Cette &#8220;lourdeur mémoire&#8221; est à mon avis un des éléments fondateurs de ce désamour qui existe depuis longtemps entre l&#8217;Opensource et Java. Mais bon, Eclipse a tout pour séduire : références croisées d&#8217;un simple clique, découpage des objets (outline), lucène, tout un tas de plugins puissants et j&#8217;en passe, cerise sur le gâteau avec XDebug embarqué le tatonnement pas à pas dans le code est un délice. Mais je m&#8217;égare, ma machine râme, pédale, crachote, je fais un <a href="http://en.wikipedia.org/wiki/Top_(Unix)" target="_blank"><em>top</em> </a>(* commande unix/linux qui indique les processus en cours et leurs consommations CPU et mémoire), et je m&#8217;étouffe ! P***n java, p****n Eclipse. Ni une, ni deux, je bascule sur gedit (avec ctags). Là c&#8217;est léger, c&#8217;est rapide. Et puis j&#8217;erre dans le code, le teint pâle, le regard morne, où sont donc passés toutes ces fonctionnalités pratiques et efficaces, en un mot productives&#8230; Allez essayons Eclipse, l&#8217;éternel recommencement***.</p>
<address> </address>
<address>* ma femme regarde Desperate Housewives à côté, c&#8217;est ce qui a du inspirer ce titre<br />
</address>
<address>** faire du Java et ne pas utiliser Eclipse là c&#8217;est un scandale</address>
<address>*** merci aux plus malins de ne pas m&#8217;indiquer d&#8217;acheter une meilleure machine ou de la mémoire, j&#8217;y ai déjà pensé.</address>
<address>
</address>
<address>
</address>
<address> </address>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/09/eclipse-haine-et-amour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
