<?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"
	>

<channel>
	<title>Carnet Web de Sébastien De Bollivier</title>
	<atom:link href="http://www.despe974.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.despe974.org</link>
	<description></description>
	<pubDate>Mon, 28 Apr 2008 08:56:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Mini compte-rendu du petit Déjeuner symfony du 23 avril</title>
		<link>http://www.despe974.org/2008/04/28/mini-compte-rendu-du-petit-dejeuner-symfony-du-23-avril/</link>
		<comments>http://www.despe974.org/2008/04/28/mini-compte-rendu-du-petit-dejeuner-symfony-du-23-avril/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 08:56:52 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<category><![CDATA[développement]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=65</guid>
		<description><![CDATA[J&#8217;ai pu assisté à une conférence mené par Fabien Potencier, le 23 avril au Centre Etoile Saint Honore sur le framework dont il est l&#8217;initiateur, symfony auquel il continue d&#8217;y contribuer via sa société Sensio Labs.
Dés mon arrivé, j&#8217;ai été surnommé Mr Jelix (amicalement bien sûr). Mon but n&#8217;était pas vraiment de dire symfony ça [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai pu assisté à une conférence mené par Fabien Potencier, le 23 avril au <a href="http://maps.google.fr/maps?f=q&amp;hl=fr&amp;geocode=&amp;q=+Centre+Etoile+Saint+Honore,+75008&amp;sll=49.26045,-123.11394&amp;sspn=0.213751,0.6427&amp;ie=UTF8&amp;ll=48.875413,2.302258&amp;spn=0.006732,0.020084&amp;z=16&amp;iwloc=addr">Centre Etoile Saint Honore</a> sur le framework dont il est l&#8217;initiateur, <a href="http://www.symfony-project.org/">symfony</a> auquel il continue d&#8217;y contribuer via sa société <a href="http://www.sensiolabs.com/">Sensio Labs</a>.</p>
<p>Dés mon arrivé, j&#8217;ai été surnommé Mr <a href="http://www.jelix.org">Jelix</a> (amicalement bien sûr). Mon but n&#8217;était pas vraiment de dire <a href="http://www.symfony-project.org/">symfony</a> ça pue et <a href="http://www.jelix.org/">jelix</a> c&#8217;est bien mais vraiment de pouvoir poser des questions (pas forcement les plus intelligentes :p) et d&#8217;avoir une présentation de symfony par son auteur et ses contributeurs dans le cadre du choix d&#8217;un framework, une problématique qui se présente de plus en plus dans une offre de plus en plus <a href="http://fr.wikipedia.org/wiki/Liste_de_frameworks_PHP">pléthorique</a>.</p>
<p>A l&#8217;accueil, on vous donne un petit sac avec quelques brochures, un callepin et une clé usb aux couleurs de <a href="http://www.sensiolabs.com/">Sensio Labs</a> et de symfony. Un petit-déjeuner copieux était servi en attendant le début de la conférence.<br />
J&#8217;ai pu discuté un moment avec <a href="http://prendreuncafe.com/blog/">Nicolas Perriault</a> et voir un peu ce que symfony pouvait apporter au niveau des projets et j&#8217;ai pu aussi en apprendre davantage sur le framework.</p>
<p>La conférence était intéressante avec la possibilité de poser des questions à différents interlocuteurs, d&#8217;en savoir un peu plus.<br />
Je n&#8217;avais pas d&#8217;à priori sur symfony mais pour le moment je reste sur mon impression de framework qui peut tout faire (ce qui est déjà très bien) mais que c&#8217;est au sacrifice bien sûr à mon avis des performances (je parle bien sûr de projets qui n&#8217;ont pas le budget serveur de yahoo par exemple), ce qui est normal.<br />
Il ne colle pas vraiment avec mon idée de ce que je me fais d&#8217;un framework mais qui reste une option intéressante.<br />
<a href="http://www.sensiolabs.com/">Sensio Labs</a> propose maintenant un support sur symfony qui ne m&#8217;a pas trop convaincu en tant que développeur par rapport au rapport prix / type de support. Maintenant, c&#8217;est un plus non négligeable pour symfony.</p>
<p>A tester pour vous faire votre propre opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/28/mini-compte-rendu-du-petit-dejeuner-symfony-du-23-avril/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quelques idées reçues sur Jelix</title>
		<link>http://www.despe974.org/2008/04/20/quelques-idees-recues-sur-jelix/</link>
		<comments>http://www.despe974.org/2008/04/20/quelques-idees-recues-sur-jelix/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 09:33:05 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<category><![CDATA[développement]]></category>

		<category><![CDATA[jelix]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=64</guid>
		<description><![CDATA[Jelix est un excellent framework, malheureusement il ne jouis pas encore d&#8217;une réputation comme symfony (j&#8217;ai fait gaffe à bien l&#8217;écrire hein) ou Zend Framework et pour cela, beaucoup de développeurs ou d&#8217;entreprises peuvent se poser la question de son choix.
C&#8217;est pour cela que j&#8217;ai rédigé ce petit billet afin de tordre un peu le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jelix.org">Jelix</a> est un excellent framework, malheureusement il ne jouis pas encore d&#8217;une réputation comme <a href="http://www.symfony-project.org/">symfony</a> (j&#8217;ai fait gaffe à bien l&#8217;écrire hein) ou <a href="http://framework.zend.com/">Zend Framework</a> et pour cela, beaucoup de développeurs ou d&#8217;entreprises peuvent se poser la question de son choix.<br />
C&#8217;est pour cela que j&#8217;ai rédigé ce petit billet afin de tordre un peu le coup aux idées reçues qu&#8217;on pourrait avoir sur Jelix.<br />
<span id="more-64"></span></p>
<h2>Jelix c&#8217;est bien mais y a pas de support ?</h2>
<p>Depuis quelques temps, <a href="http://disruptive-innovations.com/contacts.html">Disruptive Innovations</a>, qui emploi Laurent Jouanneau (le créateur de Jelix), propose du <a href="http://jelix.org/articles/support">support</a>, du conseil et autres services (assistance par téléphone notamment). Ce support est payant mais il y a la possibilité d&#8217;obtenir de l&#8217;aide via les forums et le channel irc. Il est rare de ne pas trouver solution à son problème.</p>
<h2>Il y a plus de développeurs qui connaissent le framework X mais pas le framework Jelix&#8230;</h2>
<p>Si un développeur ne sait pas s&#8217;adapter en peu de temps à un outil, il faut se poser la question de l&#8217;embauche car au final, cela reste un cadre de travail. Qui plus est, l&#8217;apprentissage de Jelix est rapide et ne nécessite pas de compétences supplémentaires autre que la connaissance de php et de quelques design patterns utilisé globalement dans la majorité des frameworks.</p>
<p>De plus, qui nous dit que dans 2 ans, ce sera encore <a href="http://www.symfony-project.org/">symfony</a> ou zend qui sera le framework le plus usité ?</p>
<h2>Y a des sites à forte charges qui l&#8217;utilisent ?</h2>
<p>Il n&#8217;y qu&#8217;à regarder le <a href="http://jelix.org/articles/hall-of-fame">hall of fame</a> de Jelix pour se rendre compte que Jelix est de plus en plus utilisé et pas seulement sur des petits sites.</p>
<p><a href="http://www.over-blog.com/">Over-blog</a> est une plate-forme de blog à fort traffic (plusieurs millions de pages lues par jour) qui utilise Jelix depuis sa version alpha parce qu&#8217;il convenait réellement à leurs besoins.</p>
<p>Il y aussi <a href="http://www.kayuko.com/">Kayuto</a> qui a fait le choix de Jelix pour ses fonctionnalités et sa performance.</p>
<h2>Est-il pérenne ?</h2>
<p>Tout dépend ce qu&#8217;on entend par pérennité. Jelix a l&#8217;avantage d&#8217;être open-source, ce qui fait qu&#8217;on peut y contribuer, et pourquoi pas si on est désaccord avec la tournure du projet faire un fork.<br />
La communauté autour de Jelix s&#8217;agrandit et pas seulement des développeurs individuels mais aussi des entreprises qui contribuent au code de Jelix, ce qui contribue à sa pérennité.</p>
<p>Voyons maintenant la pérennité sous l&#8217;angle des versions.<br />
Un framework qui évolue en version N+1, N+2, N+3 aura des changements d&#8217;API certaines (il n&#8217;y a qu&#8217;à voir les changements occasionnés par le passage de symfony 1.0 à la version 1.1). Un projet que vous réaliser il y a deux ans avec la version N si vous souhaiter le migrer à la version N+1 aura besoin d&#8217;être adapter, migrer.<br />
A cette effet, on peut dire que la pérennité d&#8217;une version N sur l&#8217;API n&#8217;existe pas vraiment, vu qu&#8217;elle évolue au fil des versions.</p>
<p>Si jamais le framework venait à ne plus évoluer ou qu&#8217;il n&#8217;est pas décidé de ne pas migrer sur la version n+1 du framework, il faut savoir que :</p>
<ul>
<li>la documentations sera toujours disponible</li>
<li>le site aussi</li>
<li>au pire il est possible de faire une copie intégrale de la documentation de la version N</li>
</ul>
<p>Qui peut dire demain que Zend Framework ou synfony seront toujours à la mode ? Il peut malheureusement avoir un nouveau framework qui sort dans les mois à venir et vers lesquelles tous les développeurs vont se tourner et ainsi réduire les communautés des différentes framework. Cela s&#8217;est malheureusement déjà vu sur des projets open-source.</p>
<p>Enfin, il est également possible que les équipes dirigeantes d&#8217;un framework peuvent complètement changer et par conséquent la philosophie du projet et ses objectifs.</p>
<p>Pour ces différentes raisons, la question de la pérennité est une mauvaise question. Un framework est un framework. La version que vous aurez choisi marchera toujours à l&#8217;identique dans un an, dans 10 ans, dans 20 ans.<br />
A ce niveau, les différentes versions de Jelix seront maintenues le plus longtemps possible avec les corrections de bugs, de sécurité qui vont bien et à mon sens, les changements d&#8217;API bien que présent sont moins sensibles que ce que j&#8217;ai pu constaté sur d&#8217;autres frameworks.</p>
<h2>Les vraies bonnes questions à se poser</h2>
<ul>
<li>Est-ce qu&#8217;à court terme et à moyen terme, Jelix va répondre aux besoins ?</li>
<li>Est-ce que Jelix va plaire aux développeurs qui l&#8217;utiliseront ?</li>
</ul>
<p>Pour se forger une idée, vous pouvez consulter ma <a href="http://www.despe974.org/2008/04/20/presentation-de-jelix/">présentation</a> de jelix ou bien aller sur le <a href="http://www.jelix.org/">site</a> officiel.</p>
<p>J&#8217;ai rédigé ce billet en espérant qu&#8217;il vous donnera envie de passer sous Jelix. J&#8217;ai repris pas mal de la substance des échanges que j&#8217;ai eu avec Laurent sur Jelix et sur le channel IRC, j&#8217;espère qu&#8217;il m&#8217;en voudra pas de les avoir reprise ici.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/20/quelques-idees-recues-sur-jelix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Présentation de Jelix</title>
		<link>http://www.despe974.org/2008/04/20/presentation-de-jelix/</link>
		<comments>http://www.despe974.org/2008/04/20/presentation-de-jelix/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 22:03:24 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<category><![CDATA[développement]]></category>

		<category><![CDATA[jelix]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=62</guid>
		<description><![CDATA[Avant de commencer un petit tutoriel sur Jelix, je crois bon de commencer par vous le présenter afin d&#8217;avoir les idées un peu plus clair avant de débuter tout développement avec ce dernier.
Jelix est un framework initié par un français Laurent Jouanneau qui a l&#8217;origine si je ne dis pas de bêtise avait bossé sur [...]]]></description>
			<content:encoded><![CDATA[<p>Avant de commencer un petit tutoriel sur <a href="http://www.jelix.org">Jelix</a>, je crois bon de commencer par vous le présenter afin d&#8217;avoir les idées un peu plus clair avant de débuter tout développement avec ce dernier.</p>
<p><a href="http://www.jelix.org">Jelix</a> est un framework initié par un français <a href="http://ljouanneau.com/blog">Laurent Jouanneau</a> qui a l&#8217;origine si je ne dis pas de bêtise avait bossé sur <a href="http://www.copix.org/">Copix</a>.</p>
<p>Cette article va présenter plus en détails les différents API de Jelix et permettre par la suite d&#8217;aborder plus sereinement un petit tutoriel.</p>
<p><span id="more-62"></span></p>
<h2>Fonctionnement</h2>
<p> </p>
<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/jelix-presentation-mvcmodele-vue-controller001.jpg" border="1px" alt="modele_vue_controller.001.jpg" width="320" height="240" /></div>
<p>Jelix est, comme la grande majorité des framework, basé sur le design pattern <a href="http://fr.wikipedia.org/wiki/Modèle-Vue-Contrôleur">MVC</a> afin d&#8217;avoir une séparation logique du code de notre site.<br />
Le modèle est une classe donné qui va interagir avec la base de données (récupération de données, etc&#8230;). La vue est ce que l&#8217;utilisateur va obtenir au final (un flux RSS, une page HTML, un fichier XUL) avec les données qu&#8217;on obtenu préalablement avec le modèle. La vue est dans Jelix assuré par des templates dont la syntaxe est proche de Smarty.<br />
Quand au contrôleur, il est le chef d&#8217;orchestre, il va se charger de mettre les données en relation avec la vue pour générer au final une sortie vers l&#8217;utilisateur.<br />
Jelix intègre une sécurité supplémentaire qui permet de &#8220;typer&#8221; la vue et d&#8217;être sûr du format de sortie.<br />
En effet, Jelix permet via des objets <em>Responses</em> de générer à partir d&#8217;un même modèle un flux RSS, une page HTML, des données JSON, etc&#8230;</p>
<h3>Mécanisme des Urls</h3>
<p>Jelix utilise un point d&#8217;entrée pour appeler les différents modules et les actions associés. Pour ce faire, Jelix se sert de la syntaxe suivante :</p>
<div class="terminal">http://monprojetjelix/index.php?module=monmodule&amp;action=moncontroller:methodeducontroleur</div>
<p>Ces urls peuvent être réécrite soit à l&#8217;aide de mod_rewrite soit à l&#8217;aide de Jelix (voir ci-dessous).</p>
<p> </p>
<h2>Structure du projet</h2>
<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/jelix-presentation-structurestructure.jpg" border="0" alt="structure.jpg" width="283" height="463" /></div>
<p>Sur la figure ci-dessus, on peut voir trois dossiers racines :</p>
<ul>
<li> <strong>lib</strong> : C&#8217;est l&#8217;ensemble des librairies de Jelix</li>
<li> <strong>temp</strong> : c&#8217;est le dossier de cache de votre application</li>
<li> <strong>jactu</strong> : C&#8217;est le dossier de votre application (que vous pouvez appeler comme vous voulez) qui est scindé en plusieurs sous-dossiers : </li>
<li>les modules <em>(répertoire demo par exemple)</em>, permet de séparer les différentes fonctionnalités de votre site (par exemple, un module forum, recherche, profil). Ce découpage facilite la réutilisation de code. Chaque module comporte les dossiers suivants :</li>
<li>les classes <em>(dossier classes)</em> : contient les classes métiers et autres objets. Les fichiers doivent suivre la nomenclature suivante <em>monfichier.class.php</em></li>
<li>les contrôleurs <em>(dossier controllers)</em></li>
<li>les daos <em>(dossier daos)</em></li>
<li>les formulaires <em>(dossier forms)</em></li>
<li>les locales <em>(dossier locales)</em></li>
<li>les templates <em>(dossier templates)</em></li>
<li>les zones <em>(dossier zones)</em></li>
<li>les plugins <em>(répertoire plugins)</em> :</li>
<li>la configuration <em>(répertoire var)</em> : la configuration est simple à éditer, ce sont des fichiers ini qui vont permettre de personnaliser les différentes options du framework (la langue par défaut, les paramètres d&#8217;accès à la base de données). Ce répertoire contient également les fichiers de log que vous pouvez créer ou utiliser le fichier par défaut.</li>
<li>le point d&#8217;entrée <em>(répertoire www)</em> : c&#8217;est ici que les visiteurs atterrissent, ils n&#8217;ont pas accès aux autres ressources directement.</li>
</ul>
<h2>Les API</h2>
<p>Jelix propose des API qui peuvent vous aider à résoudre les problèmes que vous pouvez rencontrer dans vos développements quotidiens.<br />
Certains de ses API sont facultatives et libre à vous de les utiliser ou non. Néanmoins, ce serait passer à côté de la puissance de Jelix.</p>
<h3>Le cache</h3>
<p>Au coeur de Jelix, il existe différents types de fichiers : XML, ini ou même des templates. Sans système de cache, à chaque requête utilisateur le framework serait obligé de lire les fichiers de configuration, de générer les templates, etc&#8230;<br />
Fort heureusement, Jelix intègre un mécanisme de cache intelligent. Ainsi, les fichiers XML, ini, templates et autres sont traduits en code PHP pour la plupart et ensuite mis en cache pour éviter le processus décrit précédemment.<br />
Si vous modifier un de ces fichiers, son cache va être régénérer à la prochaine requête utilisateur.</p>
<h3>Abstraction des chemins d&#8217;accès</h3>
<p>Il est souvent assez pénible de spécifier qu&#8217;on veut accéder à tel classe situé dans deux dossiers supérieurs à la classe qu&#8217;on est train de créer. Sous Jelix, les chemins sont représentés de la manière suivante <em>module~nomdelaressource</em>.</p>
<h3>Url Rewriting</h3>
<p>Pas forcément simple de devoir réécrire toutes les urls de vos différents modules et actions à l&#8217;aide de <a href="http://www.webmaster-hub.com/publication/Mod-rewrite-ou-la-reecriture-des.html">mod_rewrite</a> ! C&#8217;est pour cela que Jelix permet à l&#8217;aide d&#8217;un simple fichier XML de mapper des urls sur vos modules et vos actions et aussi de typer les paramètres.</p>
<h3>jDAO</h3>
<p>C&#8217;est sûrement l&#8217;une des API les plus intéressantes de Jelix. <a href="http://jelix.org/articles/manuel/daos">jDao</a> permet de représenter via un fichier XML (rédiger manuellement ou générer automatiquement à partir de votre base de données) vos différentes tables. Chaque table est représenter par un fichier XML mais il est possible également de combiner plusieurs tables ayant des relations dans un même fichier.<br />
Au coeur de ses fichiers, il est aisé de rajouter des méthodes soit à l&#8217;aide de la syntaxe XML soit à l&#8217;aide de PHP.<br />
L&#8217;immense avantage de cette API est qu&#8217;il est profite du cache géré par Jelix. Le gain de productivité n&#8217;est donc pas mise à mal par une éventuelle perte de performances.<br />
Cette <a href="http://www.ljouanneau.com/blog/2007/10/30/717-pourquoi-jdao">article</a> parle de jDao face à d&#8217;autres ORM comme Doctrine.</p>
<h3>jForms</h3>
<p>C&#8217;est la partie <a href="http://jelix.org/articles/manuel/jforms">formulaire</a> de Jelix. Qui n&#8217;as jamais pesté contre la réalisation d&#8217;un formulaire avec validation client et serveur ?<br />
jForms répond à cette problématique de la façon la plus simple qui soit. On décrit notre formulaire à l&#8217;aide d&#8217;un fichier xml et c&#8217;est terminé (il est possible également de le générer à partir d&#8217;un fichier dao). On aura les différents validateurs (client et serveur) qui seront mise en place en quelques lignes de code.<br />
La prochaine version de jForms proposera un composant WYSIWYG pour la saisie de texte avancé ainsi qu&#8217;un captcha automatisé. Dans un avenir proche, jForms permettra de générer à partir du même fichier XML différents types de formulaires (Ajax, XUL, XForms).</p>
<h3>Générateur de CRUD</h3>
<p>Quoi de plus rébarbatif que la réalisation d&#8217;une page d&#8217;administration ? Pourquoi ne pas bénéficier des autres API ? Grâce à la combinaison des jForms et des jDao, il est possible d&#8217;obtenir une page d&#8217;administration avec toutes les actions possible (Création, Lecture, Mise à jour et Suppression) en seulement quelques lignes de code.</p>
<h3>Les test unitaires</h3>
<p>Les tests unitaires sont de plus en plus usités et c&#8217;est à ce titre que <a href="http://simpletest.org/">SimpleTest</a> a été intégré à Jelix. Chaque module se voit greffer un dossier <em>tests</em> dans lequel on écrit des classes spécifiques qui vont permettre de vérifier que nos différentes classes marchent correctement.<br />
Il suffit ensuite de les lancer soit en ligne de commande soit via une interface web dédié à cette effet. Il est possible bien sûr de lancer les tests individuellement, par module ou tous les tests.</p>
<h3>Internationalisation</h3>
<p>Quoi de plus problématique que la gestion de plusieurs langues au sein d&#8217;un même site internet ? Il faut déjà détecter la langue de l&#8217;utilisateur, passer par plusieurs librairies, fournir un fichier de langues à un traducteur, le retranscrire en fichier adéquate (gettext ou autre), s&#8217;assurer que ça marche bien sur le serveur de production&#8230; C&#8217;est n&#8217;est pas la panacée.<br />
Pour résoudre ces différents problématiques, Jelix utilise des simples fichiers textes de clé valeurs comme par exemple :</p>
<div class="terminal">monsite.titre = Jelix est vraiment trop fort</div>
<p>Il est aisé de fournir ce fichier à un traducteur sans avoir à ensuite le retranscrire en fichiers gettext ou autre. Enfin, la détection de la langue du visiteur qui permet de changer la langue dynamiquement en fonction des paramètres du navigateur du visiteur. Cela permet d&#8217;avoir dés son arrivé sur votre site, une page dans la langue du visiteur.<br />
Pratique non ?</p>
<h3>Template</h3>
<p>Le moteur de template est assuré par <a href="http://jelix.org/articles/manuel/templates">jTpl</a> qui existe en version <a href="http://jelix.org/articles/telechargement/jtpl">stand-alone</a>.<br />
jTpl a une syntaxe très proche de celle utilisé par <a href="http://www.smarty.net/">Smarty</a>, ce qui peut être un inconvénient pour certains développeurs mais la syntaxe est vraiment proche de celle de PHP en plus légère et permet de ne pas surcharger ses templates d&#8217;instruction PHP par forcément utile.<br />
Il existe aussi des <a href="http://jelix.org/articles/manuel/zones">zones</a> qui sont des portions de template qu&#8217;on veut pouvoir inclure au besoin sur les pages de notre choix et gérer de manière autonome du reste d&#8217;un template principal.</p>
<p>Les templates (zones y compris) bénéficient également du système de cache de Jelix.</p>
<h3>Abstraction de la base de données</h3>
<p><a href="http://jelix.org/articles/manuel/bd">jDb</a> est une API qui repose sur PDO et sur les librairies natives d&#8217;accès aux différentes bases de données (MySQL par exemple). Son avantage est de rendre l&#8217;usage de ses différentes librairies transparentes et d&#8217;uniformiser leurs utilisations.<br />
Quelque soit la librairie choisi, vous utiliserez les mêmes fonctions et obtiendrez les mêmes ResultSet.</p>
<h3>Connexion et gestion des droits utilisateur</h3>
<p>Jelix fournit une API pour l&#8217;authentification utilisateur qui s&#8217;appelle <a href="http://jelix.org/articles/manuel/authentification">jAuth</a>. Elle est assez simple à mettre en place et se présente sous la forme d&#8217;un plug-in qu&#8217;il suffit de configurer en quelques lignes. Cela permet d&#8217;avoir simplement une gestion des sessions utilisateurs assez poussés sans effort. Au niveau du contrôleur, une ligne suffit pour indiquer que l&#8217;accés à tel ou tel action (ou l&#8217;ensemble des actions) sont réservés aux utilisateurs connectés.<br />
Pour ce qui est de la gestion des droits utilisateurs, une autre API <a href="http://jelix.org/articles/manuel/droits">jAcl</a> permet de gérer les accès utilisateurs à vos différents modules et actions. Il est possible ainsi de définir des groupes d&#8217;utilisateurs et leurs droits associés.<br />
Cette API est un peu plus compliqué à mettre en place mais va être bientôt remplacé par sa version 2 avec un script de migration si je me trompe pas.</p>
<h2>En conclusion</h2>
<p>Il n&#8217;est évidemment pas possible de passer en revue toutes les fonctionnalités de Jelix, j&#8217;ai présenté assez succinctement les parties les plus intéressantes de ce framework qui mérite d&#8217;être encore plus connu.<br />
Je vous invite à l&#8217;utiliser et pourquoi pas à contribuer si vous vous senter l&#8217;âme d&#8217;un contributeur.<br />
Si vous désirez en savoir plus, je vous invite à venir sur le <a href="http://www.jelix.org">site officiel</a>, à parcourir les <a href="http://jelix.org/forums">forums</a> ou à participer sur le channel <a href="irc://irc.freenode.net/jelix">irc</a> dédié à cette effet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/20/presentation-de-jelix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Les différentes solutions Apache, MySQL, PHP sous Mac</title>
		<link>http://www.despe974.org/2008/04/13/les-differentes-solutions-apache-mysql-php-sous-mac/</link>
		<comments>http://www.despe974.org/2008/04/13/les-differentes-solutions-apache-mysql-php-sous-mac/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 10:25:11 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Php]]></category>

		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=56</guid>
		<description><![CDATA[Il existe sous MacOS X plusieurs façons d&#8217;obtenir un MAMP (Mac Apache MySQL Php) :

	- MAMP
	- XAAMP
	- Utilisation des packages pré-compilés
	- Compilation soi-même

Même si Leopard est fourni désormais avec php 5, certaines librairies sont manquantes et il peut être utile de se faire sa propre installation de zéro.
MAMP

	


MAMP est la solution tout en un qui [...]]]></description>
			<content:encoded><![CDATA[<p>Il existe sous MacOS X plusieurs façons d&#8217;obtenir un MAMP (Mac Apache MySQL Php) :</p>
<p>
	- MAMP<br />
	- XAAMP<br />
	- Utilisation des packages pré-compilés<br />
	- Compilation soi-même
</p>
<p>Même si Leopard est fourni désormais avec php 5, certaines librairies sont manquantes et il peut être utile de se faire sa propre installation de zéro.</p>
<h3>MAMP</h3>
<div style="text-align:center;">
	<img src="http://www.despe974.org/wp-content/uploads/2008/04/mampa203c0dc-ea20-4908-80bf-099af4bfdb2d.jpg" alt="A203C0DC-EA20-4908-80BF-099AF4BFDB2D.jpg" border="0" width="480" height="336" />
</div>
<p>
<a href="http://www.mamp.info/en/index.php">MAMP</a> est la solution tout en un qui ne nécessite aucune connaissance particulière. Un simple glisser-déposer dans le dossier Application et vous avez vos serveurs qui sont prêt à démarrer.<br />
Aucune configuration particulière.<br />
L&#8217;avantage est qu&#8217;en quelques clicks on a une installation complète d&#8217;une solution basé sur Mac MySQL et PHP. Néanmoins, dés lors qu&#8217;on souhaite pousser la solution et par exemple installer une librairie via Pear, on constate que cela ne marche pas vraiment et on se retrouve coincé :/.<br />
MAMP est donc à recommandé pour les personnes qui n&#8217;ont pas de besoins spécifiques et qui peuvent se contenter des librairies fournies.
</p>
<h3>XAMPP</h3>
<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/xampp9e338bf2-2f64-4e23-945b-ab9459cfacec.jpg" alt="9E338BF2-2F64-4E23-945B-AB9459CFACEC.jpg" border="0" width="200" height="59" /></div>
<p>
XAMPP est une solution que j&#8217;ai découverte récemment grâce à un commentaire sur mon blog. Il fonctionne un peu comme MAMP sauf qu&#8217;il fournit également Perl. C&#8217;est encore une version en cours de développement qui est proposé, donc certaines fonctionnalité ne marche pas totalement.<br />
J&#8217;ai notamment eu quelques soucis à faire marcher <em>pear</em> avec certaines librairies ou framework.<br />
A garder de côté pour le moment. Je pense qu&#8217;il aura plus de succès que MAMP d&#8217;ici les mois qui viennent.
</p>
<h3>Utiliser les packages pré-compilés</h3>
<p>A défaut de pouvoir utiliser les différentes solutions toute faites, il faut mettre un peu la main dans la cambouis. Par chance, <a href="http://www.entropy.ch">Marc Liyanage</a> maintient depuis quelques temps des versions compilés de php pour <a href="http://www.entropy.ch/software/macosx/php/">Tiger</a> et <a href="http://www.entropy.ch/phpbb2/viewtopic.php?t=2945">Leopard</a>.<br />
Même si la version Leopard porte la mention bêta, elle fonctionne parfaitement et ne nécessite que quelques lignes de commandes pour pouvoir fonctionner pleinement.<br />
Nous n&#8217;avons besoin que de php car Apple fournit par défaut avec MacOS X un serveur Apache parfaitement fonctionnel. Nous allons donc garder cette version d&#8217;apache qui va nous faciliter la vie.</p>
<p>Avant toute chose il faut télécharger la version qui correspond à votre version de MacOS (voir ci-dessus). Double-cliquer sur le fichier en question pour obtenir un dossier <strong>php5</strong>.<br />
Il faut maintenant ouvrir le Terminal <em>(que l&#8217;on peut trouver dans /Applications/Utilitaires/)</em> pour y taper les lignes suivantes :</p>
<div class="code">
# il faut se rendre dans le dossier où vous avez décompresser php<br />
cd dossier_ou_vous_avez_decompresser_php<br />
# on va copier le dossier décompressé dans la dossier /usr/local<br />
sudo mv php5 /usr/local/
</div>
<p>On a maintenant une installation de php fonctionnelle qui est installé, il ne reste plus qu&#8217;à configurer l&#8217;ensemble.</p>
<div class="code">
# cette commande peut être tapé de n&#8217;importe où<br />
cp /usr/local/php5/lib/php.ini-recommanded /usr/local/php5/lib/php.ini
</div>
<p>Il faut à présent avec l&#8217;éditeur de votre choix modifier le fichier <strong>/etc/apache2/httpd.conf</strong> pour qu&#8217;il utilise la nouvelle version de php fraîchement installé.<br />
Il faut remplacé la ligne suivante</p>
<div class="code">
LoadModule php5_module libexec/apache2/libphp5.so
</div>
<p>par</p>
<div class="code">
LoadModule php5_module /usr/local/php5/libphp5.so
</div>
<p>Afin de pouvoir utiliser nos commandes php à n&#8217;importe quoi sans les préfixer de <em>/usr/local/php5/bin</em>, il faut modifier la variable PATH de notre environnement. Pour cela, à l&#8217;aide du terminal, tapez :</p>
<div class="code">
# on va dans notre répertoire personnel<br />
cd $HOME<br />
nano .bash_profile
</div>
<p>Dans ce fichier, il faut rajouter les lignes suivantes :</p>
<div class="code">
export PATH=$PATH:&#8221;/usr/local/php5/bin&#8221;
</div>
<p>Sauvegarder le fichier. Pour que les modifications soit effectives, il faut fermer votre fenêtre du terminal et en ouvrir une nouvelle. Il vous suffit de taper la commande <em>php &#8211;version</em> afin de vérifier que c&#8217;est la bonne version. Pour cela, il faut vérifier le numéro de version, <em>la 5.2.5</em> et la date de compilation <em>built: Feb 20 2008 12:30:47</em>.<br />
Vous obtiendrez une sortie comme celle-ci :</p>
<div class="code">
BART:~ despe$ php &#8211;version<br />
PHP 5.2.5 (cli) (built: Feb 20 2008 12:30:47)<br />
Copyright (c) 1997-2007 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
</div>
<p>Il ne reste plus qu&#8217;à redémarrer apache en tapant toujours dans le terminal</p>
<div class="code">
apachectl restart
</div>
<p>Pour les allergiques à la ligne de commande, il est possible de passer directement par les préférences systèmes</p>
<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/preference-systemepref-sys-1.jpg" alt="pref_sys_1.jpg" border="0" width="668" height="560" /></div>
<p>Il suffit de cocher, décocher l&#8217;option partage web pour redémarrer Apache.</p>
<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/preference-systemepref-sys-2.jpg" alt="pref_sys_2.jpg" border="0" width="668" height="547" /></div>
<p>Pour accéder à vos sites, ils doivent être stockés dans le dossier <strong>Sites</strong> de votre répertoire personnel.</p>
<h4>Installation de MySQL</h4>
<p>L&#8217;installation de MySQL se trouve <a href="http://dev.MySQL.com/downloads/MySQL/5.0.html#macosx-dmg">ici</a>. Elle est simple à utiliser, il suffit de faire suivant, suivant en lisant néanmoins bien les éventuelles indications.</p>
<p>Une fois, l&#8217;installation terminé, je vous invite à installer le fichier dont l&#8217;extension est <em>prefpane</em>, cela va rajouter un panneau dans les préférences systèmes pour démarrer ou stopper le serveur MySQL.</p>
<p>Une dernière étape est requise pour autoriser votre utilisateur à lancer MySQL. Avec le finder, il faut se rendre dans la dossier <strong>/usr/local/mysql/</strong>. Etant donné que certains dossiers sont masqués par le finder, il faudra utiliser le menu &#8220;Aller&#8221; et &#8220;Aller au dossier&#8221; <em>(avec le clavier POMME+SHIFT+G)</em>.<br />
Une fois dans ce dossier, <em>POMME+I</em> sur le dossier <strong>data</strong>. Les informations de <em>Partage et permissions</em> vont être modifié. Il suffit de cliquer sur le <strong>+</strong> pour rajouter votre utilisateur.<br />
Il faut que ces modifications s&#8217;appliquent au dossier et à ses sous-dossiers. Il faut pour cela cliquer sur l&#8217;icône à côté du <strong>-</strong> et sélectionner <strong>Appliquer aux éléments inclus</strong>.</p>
<p>Enfin, pour pouvoir accéder aux programmes de mysql (le client, mysqladmin, etc&#8230;), il faut modifier le .bash_profile comme nous l&#8217;avons fait pour php.</p>
<div class="code">
# on va dans notre répertoire personnel<br />
cd $HOME<br />
nano .bash_profile<br />
export PATH=$PATH:&#8221;/usr/local/php5/bin&#8221;:&#8221;/usr/local/mysql/bin&#8221;
</div>
<p>Attention, toutefois votre serveur MySQL dispose d&#8217;un compte <em>root</em> sans mot de passe avec tous les accès. Il ne faudra pas oublier de modifier ces paramètres.</p>
<h3>Compilation soi-même</h3>
<p>MacOS X étant un Unix, il est possible de compiler certains logiciels grâce à des gestionnaires de paquet comme <a href="http://www.finkports.info/">FinkPorts</a> ou <a href="http://darwinports.com/">DarwinPorts</a>.<br />
Néanmoins, l&#8217;opération est relativement longue selon le processeur de votre machine et assez compliqué à mettre en oeuvre pour un débutant.<br />
Elle a le mérite d&#8217;exister.<br />
Pour pouvoir utiliser ces outils, il vous faut les outils développeurs fourni sur votre dvd d&#8217;installation de MacOS X.</p>
<p>A quand une version de <a href="http://www.wampserver.com/">WAMPServer</a> pour Mac ? <img src='http://www.despe974.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Références et diverses sources : <a href="http://www.glagla.org/">Olivier Mansour</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/13/les-differentes-solutions-apache-mysql-php-sous-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deux mini-outils indispensable</title>
		<link>http://www.despe974.org/2008/04/11/deux-mini-outils-indispensable/</link>
		<comments>http://www.despe974.org/2008/04/11/deux-mini-outils-indispensable/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 13:12:35 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[développement]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=51</guid>
		<description><![CDATA[
Aujourd&#8217;hui deux mini-outils à l&#8217;honneur : Open In Terminal Here et Open in Textmate qui s&#8217;ajoutent dans la barre du finder et qui vous permet d&#8217;ouvrir un terminal dans le répertoire actuel et d&#8217;ouvrir les fichiers sélectionnés (dossier, groupe de fichiers) dans Textmate directement.
Il suffit de copier les applications dans le dossier Applications et de [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;"><img src="http://www.despe974.org/wp-content/uploads/2008/04/open-in-textmatedf3caddb-d4f0-4144-823f-72eb647e8d8e.jpg" alt="DF3CADDB-D4F0-4144-823F-72EB647E8D8E.jpg" border="0" width="168" height="32" /></div>
<p>Aujourd&#8217;hui deux mini-outils à l&#8217;honneur : <a href="http://jo.irisson.free.fr/?p=59">Open In Terminal Here</a> et <a href="http://henrik.nyh.se/2007/10/open-in-textmate-from-leopard-finder">Open in Textmate</a> qui s&#8217;ajoutent dans la barre du finder et qui vous permet d&#8217;ouvrir un terminal dans le répertoire actuel et d&#8217;ouvrir les fichiers sélectionnés (dossier, groupe de fichiers) dans <a href="http://www.macromates.org">Textmate</a> directement.</p>
<p>Il suffit de copier les applications dans le dossier Applications et de les glisser-déposer sur la barre du finder.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/11/deux-mini-outils-indispensable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Php et Curl pour poster son status twitter sur n&#8217;importe quel site</title>
		<link>http://www.despe974.org/2008/04/10/php-et-curl-pour-poster-son-status-twitter-sur-nimporte-quel-site/</link>
		<comments>http://www.despe974.org/2008/04/10/php-et-curl-pour-poster-son-status-twitter-sur-nimporte-quel-site/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:57:35 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=49</guid>
		<description><![CDATA[Twitter est de plus en plus utilisé (même moi qui au début y trouvait un attrait relatif) et il est assez simple de publier son statut sur la plupart des grandes plate-formes communautaires.
Que se passe-t-il si on a envie d&#8217;afficher son statut si un site qui ne permet pas d&#8217;afficher son statut mais qui permet [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.twitter.com/">Twitter</a> est de plus en plus utilisé (même moi qui au début y trouvait un attrait relatif) et il est assez simple de publier son statut sur la plupart des grandes plate-formes communautaires.</p>
<p>Que se passe-t-il si on a envie d&#8217;afficher son statut si un site qui ne permet pas d&#8217;afficher son statut mais qui permet de modifier sa description ou sa signature ?<br />
Même si la plupart des sites communautaire permet d&#8217;afficher son dernier twit, c&#8217;est un bon cas pratique pour découvrir cURL et son utilisation avec php.</p>
<p>Nous allons voir dans cette article comment faire avec PHP et cURL pour pouvoir le faire de maniére automatisé.</p>
<h2>Pré-requis</h2>
<p>
Il faut avoir PHP compilé avec le support cURL sinon impossible de faire ses manipulations.
</p>
<h2>cURL, c&#8217;est une technique de curling ?</h2>
<p>
cURL est un utilitaire qui existe en ligne de commande et qui permet à l&#8217;instar de wget d&#8217;aller récupérer des pages, images, etc.. sur Internet.<br />
Il sait gérer les formulaires, les cookies, etc&#8230;<br />
cURL se comporte comme un navigateur web sans interface graphique.</p>
<p>PHP supporte cURL et permet son utilisation de maniére totalement transparente et simplifié.</p>
<p>Dans le cadre de notre projet, nous avons besoin de :<br />
- pouvoir nous identifier auprès du site<br />
- pouvoir poster un formulaire de données<br />
- pouvoir récupérer le contenu d&#8217;une page donnée
</p>
<h3>Créeons notre objet</h3>
<p>
Avant de commencer à jouer avec cURL, il faut d&#8217;abord prendre en compte un paramétre important.<br />
PHP s&#8217;execute avec un temps d&#8217;attente maximum de 30 secondes. Nous allons surcharger ce paramétre afin d&#8217;éviter que notre script s&#8217;arrête en plein milieu d&#8217;un envoi d&#8217;information.</p>
<p>En effet, selon le temps de réponse du site, il peut arriver que cela prenne rapidement plus de 30 secondes.<br />
Pour cela, nous allons utiliser la ligne de code suivante afin d&#8217;éviter de rencontrer ce problème :</p>
<pre name="code" class="php">

/* suppression du temps limite */
set_time_limit(0);
</pre>
<p>cURL s&#8217;utilise de la manière suivante :<br />
- on initialise la librairie et on récupéré une instance<br />
- on définit les options<br />
- on exécute l&#8217;action (récupération de page, envoie de données, etc&#8230;)<br />
- on récupère le retour (contenu ou code http)<br />
- on libère l&#8217;instance</p>
<p>Pour initialiser l&#8217;instance, rien de bien compliqué :</p>
<pre name="code" class="php">

$monInstance = curl_init();
</pre>
<p>Voyons maintenant quelles options peuvent nous interresser. Si on fait un petit détour par <a href="http://fr.php.net/manual/fr/function.curl-setopt.php">le manuel de php</a>, on constate qu&#8217;il y a des lignes et des lignes d&#8217;options pas souvent facile à comprendre.</p>
<p>J&#8217;en ai sélectionné quelques unes qui sont indispensables pour les actions que nous allons effectué.</p>
<table>
<thead>
<th>Nom</th>
<th>Type</th>
<th>Description</th>
<th>Exemple</th>
</thead>
<tbody>
<tr>
<td>CURLOPT_RETURNTRANSFER</td>
<td>boolean</td>
<td>par défaut, cURL affiche directement le contenu de la page ou de la ressource souhaité, pour éviter de s&#8217;encombrer d&#8217;affichage surperflu, le contenu de la page sera retourné lors de l&#8217;exécution de l&#8217;action.</td>
<td>true</td>
</tr>
<tr>
<td>CURLOPT_HEADER</td>
<td>boolean</td>
<td>Evite d&#8217;avoir les headers HTTP dans le contenu de la page ou de la ressource</td>
<td>false</td>
</tr>
<tr>
<td>CURLOPT_USERAGENT</td>
<td>chaîne de caractères</td>
<td>Permet de faire passer cURL pour tel ou tel navigateur</td>
<td>Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9</td>
</tr>
<tr>
<td>CURLOPT_TIMEOUT</td>
<td>temps en secondes</td>
<td>le temps de réponse maximal avant de stopper le processus.</td>
<td>60</td>
</tr>
<tr>
<td>CURLOPT_FOLLOWLOCATION</td>
<td>boolean</td>
<td>spécifie si on suit les redirections http ou non.</td>
<td>true</td>
</tr>
<tr>
<td>CURLOPT_MAXREDIRS</td>
<td>entier</td>
<td>le nombres de redirections maximum avant de considérer qu&#8217;il y a un problème.</td>
<td>10</td>
</tr>
<tr>
<td>CURLOPT_COOKIESESSION</td>
<td>boolean</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>CURLOPT_COOKIEJAR</td>
<td>fichier</td>
<td>un fichier pouvant être modifié par l&#8217;utilisateur qui lance apache et qui va contenir les variables des cookies des sites visités</td>
<td>./cookie.txt</td>
</tr>
<tr>
<td>CURLOPT_URL</td>
<td>url</td>
<td>l&#8217;url que l&#8217;on souhaite utiliser</td>
<td>http://www.despe974.org/</td>
</tr>
<tr>
<td>CURLOPT_POST</td>
<td>boolean</td>
<td>permet de dire que les valeurs transmises sont en POST</td>
<td>true</td>
</tr>
<tr>
<td>CURLOPT_POSTFIELDS</td>
<td>chaine de caractères</td>
<td>spécifie les valeurs des différents champs d&#8217;un formulaire (ne pas oublier de spécifier toutes les valeurs du formulaire même les hidden et les submit)</td>
<td>login=tarte&#038;password=bidule</td>
</tr>
</tbody>
</table>
<p>Pour définir une option, il suffit d&#8217;utiliser curl_setopt comme ci-dessous :</p>
<pre name="code" class="php">

curl_setopt($monInstance, NOMDELOPTION, VALEUR);
</pre>
<p>Une fois l&#8217;instance configuré comme nous le souhaitons, il ne reste plus qu&#8217;à lancer notre action (envoi de formulaire, récupération de contenu, etc&#8230;)</p>
<pre name="code" class="php">

$contenu = curl_exec($monInstance);
</pre>
<p>La variable contenu va contenir le code HTML de la page ou le contenu binaire du fichier que vous avez souhaité récupérer.</p>
<p>Pour obtenir plus d&#8217;informations sur comment la requête HTTP s&#8217;est passé, il est possible de récupérer un tableau contenant ces paramètres.</p>
<pre name="code" class="php">

$info = curl_getinfo($monInstance);
</pre>
<p>Enfin, si on ne souhaite plus utiliser notre instance, il faut la libérer avec curl_close. Si vous souhaitez récupérer une autre page, etc&#8230; il est possible d&#8217;utiliser la même instance en changeant l&#8217;option CURLOPT_POST et éventuellement celle qui vous sont nécessaire.</p>
<pre name="code" class="php">

curl_close($monInstance);
</pre>
<p>Voici un exemple par exemple pour se logguer sur le site <a href="http://www.city974.com">City974</a></p>
<pre name="code" class="php">

$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_COOKIESESSION, true);
curl_setopt($monInstance, CURLOPT_COOKIEJAR, './cookie.txt');
curl_setopt($monInstance, CURLOPT_URL, 'http://www.city974.com/ident/identification.php');
curl_setopt($monInstance, CURLOPT_POST, 1);
//remplacer les paramètres par vos informations
curl_setopt($monInstance, CURLOPT_POSTFIELDS, 'pseudo=ahahahaha&amp;mdp=ouioui&amp;retenir=1&amp;Submit=Ok');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
//affiche le contenu pour voir qu'on est loggué
echo $contenu;
curl_close($monInstance);
</pre>
<h3>Récupérer son dernier Twitt</h3>
<p>
Twitter comme tout bon site web 2.0 propose une API assez simple à utiliser.<br />
Il suffit d&#8217;utiliser un cURL avec l&#8217;url adéquate pour récupérer ce qui nous intéresse.
</p>
<p>
L&#8217;url pour récupérer nos tweets sont de la forme http://www.twitter.com/statuses/user_timeline/<em>username</em>.<em>format</em>?count=10 où <em>username</em> est votre nom d&#8217;utilisateur et <em>format</em> le format dans lesquels vous souhaitez récupérer ces informations (xml et json principalement).
</p>
<p>
Voici comment faire avec cURL pour récupérer ce flux.
</p>
<pre name="code" class="php">

$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_URL, 'http://www.twitter.com/statuses/user_timeline/despekiroule.xml?count=10');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
$xml = $curl-&gt;getContent('');
$twitts = new SimpleXMLElement($contenu);
$lastTwitt = $twitts-&gt;status[0]-&gt;text;
</pre>
<h3>Conclusion</h3>
<p>
Nous avons vu de manière succincte comment utiliser cURL pour récupérer et poster des informations dans le cadre précis de pouvoir poster son statut Twitter un peu n&#8217;importe où.<br />
Un exemple plus complet est disponible <a href="http://www.despe974.org/download/twitter_everywhere_demo.zip">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/10/php-et-curl-pour-poster-son-status-twitter-sur-nimporte-quel-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Premier pas avec un serveur chez OVH sous Gentoo</title>
		<link>http://www.despe974.org/2008/04/10/premier-pas-avec-un-serveur-chez-ovh-sous-gentoo/</link>
		<comments>http://www.despe974.org/2008/04/10/premier-pas-avec-un-serveur-chez-ovh-sous-gentoo/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 14:28:49 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=48</guid>
		<description><![CDATA[Cette article va vous présenter les différentes méthodes pour installer un serveur LAMP sous OVH sous la distribution Gentoo 2007.0 (Il ne faut pas confondre la distribution Gentoo et celle qui est customisé par ovh).
Avant-propos
Gentoo est une distribution qu&#8217;on appelle source car elle compile chaque application et permet d&#8217;obtenir un gain sensible de performances et [...]]]></description>
			<content:encoded><![CDATA[<p>Cette article va vous présenter les différentes méthodes pour installer un serveur LAMP sous <a href="http://www.ovh.com">OVH</a> sous la distribution <a href="http://www.gentoo.org">Gentoo</a> 2007.0 (<strong>Il ne faut pas confondre la distribution Gentoo et celle qui est customisé par ovh</strong>).</p>
<h3>Avant-propos</h3>
<p>Gentoo est une distribution qu&#8217;on appelle source car elle compile chaque application et permet d&#8217;obtenir un gain sensible de performances et permet surtout de gérer plus finement les dépendances.<br />
Il est possible d&#8217;opter pour d&#8217;autres distributions plus user-friendly lors de l&#8217;achat de votre serveur.<br />
A vous d&#8217;opter pour celle qui vous correspond le mieux.<br />
Les USE FLAGS qui vous seront présenté plus loin, sont en fait des options que tel ou tel paquet supporte et qu&#8217;on peut activer ou désactiver à notre convenance.</p>
<h3>Pré-requis</h3>
<p>
Pouvoir se connecter en ssh et avoir quelques connaissances en ligne de commande Linux.
</p>
<h3>Premier pas avec le serveur</h3>
<p>Avant de commencer, on va mettre à jour son gestionnaire de paquets. Sous gentoo, il s&#8217;appelle emerge.</p>
<p>Il suffit de taper la commande suivante pour mettre à jour les paquets.</p>
<div class="code">
emerge &#8211;sync
</div>
<p>Dans un second temps, il faut vérifier le fichier /etc/hosts qui est souvent erroné.</p>
<div class="code">
127.0.0.1       localhost<br />
91.1.1.1   2-r0001.ovh.net
</div>
<p>En effet, pour une raison étrange, chaque nom de domaine se voit précédé d&#8217;un 2-nomduserveur.ovh.net.<br />
Il suffit de l&#8217;enlever pour éviter d&#8217;éventuels problèmes.</p>
<h3>Choix des options</h3>
<p>
Avant de lancer la compilation et l&#8217;installation de nos serveurs, il faut spécifier les différentes options que l&#8217;on souhaite activer pour chaque serveur.<br />
Par exemple, les différentes librairies qu&#8217;on souhaite activer pour PHP.</p>
<p>Pour lister les options possibles d&#8217;un paquet il suffit de taper :</p>
<div class="code">
emerge -pv nomdupaquet
</div>
<p>Ces options sont à renseigner dans le fichier <strong>/etc/portage/package.use</strong> sous la forme :</p>
<div class="code">
type-du-paquet/nom_du_paquet_sans_la_version -option_qui_sera_ignoré option_qui_sera_incluse
</div>
<p>Evidemment, certains options peuvent paraître obscures et c&#8217;est pour ça que <a href="http://gentoo-portage.com/">Gentoo Portage</a> est là !<br />
Pour l&#8217;utiliser, rien de plus simple, il suffit de taper le nom du logiciel que vous souhaitez installer, de choisir celui qui correspond.<br />
Vous obtiendrez alors une liste de versions du paquet et tout en bas plusieurs onglets. Il suffit de regarder l&#8217;onglet &#8220;USE FLAGS&#8221; qui présente toutes les options.
</p>
<h4>Apache [<a href="http://gentoo-portage.com/www-servers/apache/USE#ptabs">USE FLAGS</a>]</h4>
<p>Apache utilise deux fichiers pour spécifier ses différentes options.<br />
Dans package.use, on va spécifier les options générales tandis que les make.conf on va définir les modules à compiler (APACHE2_MODULES) et le type de fonctionnement d&#8217;apache (APACHE2_MPMS).</p>
<p>Voici pour exemple ma configuration.</p>
<div class="code">
ww-servers/apache ssl -debug -doc -ldap -selinux -sni -static -suexec threads
</div>
<p><strong>/etc/portage/package.use</strong></p>
<div class="code">
APACHE2_MODULES=&#8221;alias auth_basic authz_host autoindex charset_lite deflate dir dumpio env expires headers log_config log_forensic mime mime_magic negotiation rewrite setenvif speling unique_id userdir vhost_alias filter&#8221;<br />
APACHE2_MPMS=&#8221;worker&#8221;
</div>
<p><strong>/etc/make.conf</strong></p>
<h4>PHP [<a href="http://gentoo-portage.com/dev-lang/php/USE#ptabs">USE FLAGS</a>]</h4>
<p>Voici un exemple de configuration :</p>
<div class="code">
dev-lang/php berkdb cli crypt gdbm iconv ipv6 -ncurses nls pcre readline reflection session spl ssl unicode zlib -adabas apache2 -bcmath -birdstep -bzip2 -calendar -cdb -cgi -cjk -concurrentmodphp ctype curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob exif -fastbuild -fdftk filter -firebird -flatfile -force-cgi-redirect -frontbase -ftp gd -gd-external -gmp -hash -imap inifile -interbase -iodbc -java-external -json -kerberos -ldap -ldap-sasl -libedit -mcve -mhash -msql -mssql mysql mysqli -oci8 -oci8-instant-client -odbc pcntl pdo -pic posix -postgres -qdbm -recode -sapdb sharedext -sharedmem simplexml -snmp soap sockets -solid -spell -sqlite suhosin -sybase -sybase-ct -sysvipc threads -tidy tokenizer -truetype -wddx xml xmlreader xmlrpc xmlwriter -xpm -xsl -yaz -zip -zip-external
</div>
<h4>MySQL [<a href="http://gentoo-portage.com/dev-db/mysql/USE#ptabs">USE FLAGS</a>]</h4>
<p>Voici un exemple de configuration possible :</p>
<div class="code">
dev-db/mysql -berkdb -perl ssl -big-tables -cluster -debug -embedded extraengine -latin1 -max-idx-128 -minimal -selinux -static
</div>
</p>
<h4>Installation des serveurs</h4>
<p>
Il suffit de taper la commande suivante</p>
<div class="code">
emerge apache php mysql
</div>
</p>
<p>Une fois la compilation terminé et qu&#8217;il n&#8217;y a pas d&#8217;erreurs pendant la compilation, il ne reste plus qu&#8217;à enregistrer les serveurs dans la séquence de démarrage.</p>
<div class="code">
rc-update add apache default<br />
rc-update add mysql default
</div>
<p>Maintenant, même en cas de redémarrage du serveur, Apache et MySQL démarreront sans intervention de votre part.</p>
<h3>Configuration des serveurs</h3>
<h4>Apache</h4>
<p>
Selon les modules que vous avez choisi, le fichier <strong>/etc/conf.d/apache2</strong> peut différer.<br />
Il faut s&#8217;assurer néanmoins que sur la ligne <strong>APACHE2_OPTS</strong> la valeur <em>-D PHP5</em> soit présente pour que le module php soit chargé.
</p>
<div class="code">
APACHE2_OPTS=&#8221;-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D USERDIR -D REWRITE&#8221;<br />
SERVERROOT=/usr/lib/apache2<br />
CONFIGFILE=/etc/apache2/httpd.conf<br />
STARTUPERRORLOG=&#8221;/var/log/apache2/startuperror.log&#8221;<br />
#RELOAD_TYPE=&#8221;graceful&#8221;
</div>
<h4>MySQL</h4>
<p><div class="code">
emerge &#8211;config =dev-db/mysql-5.0.19
</div>
<p>En remplaçant bien sur, 5.0.19 par la version que vous avez installé.<br />
Derniére étape pour sécuriser le serveur,</p>
<div class="code">
mysql-secure-installation
</div>
<p>Il suffit juste de répondre aux questions que le programme vous pose pour fermer quelques petits trous qui sont ouverts par défaut.
</p>
<p>
Voilà vous avez un serveur fin prêt à accueillir vos sites. J&#8217;ai passé sous silence d&#8217;autres aspects de la configuration qui sont spécifiques (les Virtual Hosts, optimiser MySQL) vu qu&#8217;il s&#8217;agissait ici des premiers pas avec son serveur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/10/premier-pas-avec-un-serveur-chez-ovh-sous-gentoo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Petit Déjeuner Symfony</title>
		<link>http://www.despe974.org/2008/04/09/petit-dejeuner-symfony/</link>
		<comments>http://www.despe974.org/2008/04/09/petit-dejeuner-symfony/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 08:14:13 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<category><![CDATA[Conférence]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=46</guid>
		<description><![CDATA[Même si c&#8217;est pas mon framework de prédilection (je suis 100% Jelix), je vous relais l&#8217;information.
Symfony est un framework PHP orienté objet développé par Fabien Potencier.
Il reprend des designs patterns comme MVC notamment pour la séparation des couches.
Ce petit déjeuner aura lieu le jeudi 10 Avril au Centre Etoile Saint Honore  (Paris 8ème) à [...]]]></description>
			<content:encoded><![CDATA[<p>Même si c&#8217;est pas mon framework de prédilection (je suis 100% <a href="http://www.jelix.org/">Jelix</a>), je vous relais l&#8217;information.</p>
<p>Symfony est un framework PHP orienté objet développé par <a href="http://www.aide-de-camp.org/">Fabien Potencier</a>.<br />
Il reprend des designs patterns comme MVC notamment pour la séparation des couches.</p>
<p>Ce petit déjeuner aura lieu le jeudi 10 Avril au <a href="http://maps.google.fr/maps?f=q&amp;hl=fr&amp;geocode=&amp;q=+Centre+Etoile+Saint+Honore,+75008&amp;sll=49.26045,-123.11394&amp;sspn=0.213751,0.6427&amp;ie=UTF8&amp;ll=48.875413,2.302258&amp;spn=0.006732,0.020084&amp;z=16&amp;iwloc=addr">Centre Etoile Saint Honore </a> (Paris 8ème) à partir de 8h45.</p>
<p>Prochain rendez-vous le <a href="http://www.sensiolabs.com/en/event/2">mercredi 23 avril</a>.</p>
<p>Pour s&#8217;inscrire c&#8217;est par <a href="http://www.sensiolabs.com/en/event/1">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/09/petit-dejeuner-symfony/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recherche de conférenciers pour le forum PHP 2008</title>
		<link>http://www.despe974.org/2008/04/09/recherche-de-conferenciers-pour-le-forum-php-2008/</link>
		<comments>http://www.despe974.org/2008/04/09/recherche-de-conferenciers-pour-le-forum-php-2008/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 07:44:25 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=45</guid>
		<description><![CDATA[Le forum PHP 2008 , organisé par l&#8217;Afup qui se tiendra du 8 au 9 décembre, est en quête de conférenciers.
Si vous pouvez couvrir un des sujets suivants, contacter les au plus vite :
- Comment gérer un projet PHP (outils, méthodes, &#8230;)
- Assurer la qualité du code
- Le Droit sur Internet
- Monter son entreprise autour [...]]]></description>
			<content:encoded><![CDATA[<p>Le forum PHP 2008 , organisé par l&#8217;<a href="http://www.afup.org">Afup</a> qui se tiendra du 8 au 9 décembre, est en quête de conférenciers.<br />
Si vous pouvez couvrir un des sujets suivants, <a href="http://afup.org/pages/forumphp2008/appel-a-conferenciers.php">contacter</a> les au plus vite :<br />
- Comment gérer un projet PHP (outils, méthodes, &#8230;)<br />
- Assurer la qualité du code<br />
- Le Droit sur Internet<br />
- Monter son entreprise autour de PHP<br />
- La montée en charge<br />
- Connecter des services (web services)<br />
- Les interfaces riches (choix technologie, implémentation, &#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/09/recherche-de-conferenciers-pour-le-forum-php-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conférences sur PHP en avril, mai 2008</title>
		<link>http://www.despe974.org/2008/04/08/conferences-sur-php-en-avril-mai-2008/</link>
		<comments>http://www.despe974.org/2008/04/08/conferences-sur-php-en-avril-mai-2008/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 14:40:47 +0000</pubDate>
		<dc:creator>despe_ki_roule</dc:creator>
		
		<category><![CDATA[Php]]></category>

		<category><![CDATA[Entreprise]]></category>

		<guid isPermaLink="false">http://www.despe974.org/?p=44</guid>
		<description><![CDATA[Quelques conférences dans les mois à venir, auquel je compte y aller, je vous les listes au cas où vous seriez intéresser ou passer à côté de l&#8217;information.

- Apéro PHP le 22 avril à la Panfoulia à partir de 20h00, 20h30. [s'inscrire]


- Industrialiser les développements PHP, le cas eTF1, le 29 avril de 20h00 à [...]]]></description>
			<content:encoded><![CDATA[<p>Quelques conférences dans les mois à venir, auquel je compte y aller, je vous les listes au cas où vous seriez intéresser ou passer à côté de l&#8217;information.</p>
<p>
- <strong>Apéro PHP</strong> le 22 avril <a href="http://www.la-panfoulia.abcsalles.com/">à la Panfoulia</a> à partir de 20h00, 20h30. [<a href="http://www.aperophp.net/apero.php?id=212">s'inscrire</a>]
</p>
<p>
- <strong>Industrialiser les développements PHP, le cas eTF1</strong>, le 29 avril de 20h00 à 21h30 à la <a href="http://maps.google.fr/maps?f=q&#038;hl=fr&#038;geocode=&#038;q=fiap,+jean+monet&#038;sll=47.15984,2.988281&#038;sspn=11.384341,41.132813&#038;ie=UTF8&#038;ll=51.99841,2.988281&#038;spn=10.314135,41.132813&#038;z=5&#038;iwloc=A">FIAP</a>. [<a href="http://www.afup.org/pages/rendezvous/">s'inscrire</a>]
</p>
<p>
- <strong>PHP et Silverlight</strong> animé par <a href="http://blogs.msdn.com/clauer/archive/2008/04/06/conf-rence-d-veloppement-d-applications-riches-avec-php-et-silverlight-paris-14-mai-la-cantine.aspx">Christophe Lauer</a> et Pierre Lagarde, le 14 mai à la Cantine (Paris) à partir de 19h00. [<a href="http://www.afup.org/pages/rendezvous/?id=4">s'inscrire</a>]
</p>
<p>Ca me fait penser qu&#8217;il faudrait que j&#8217;adhère à l&#8217;<a href="http://www.afup.org">AFUP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.despe974.org/2008/04/08/conferences-sur-php-en-avril-mai-2008/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
