<?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>Awelty : société de création de site - Référencement - Amiens, Somme, Picardie &#187; Développement Web</title>
	<atom:link href="http://www.awelty.fr/category/developpement-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.awelty.fr</link>
	<description>Agence web à Amiens</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:49:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>La destinée d&#8217;un développeur, pour Agenda Culturel</title>
		<link>http://www.awelty.fr/agenda-culturel/la-destinee-dun-developpeur-pour-agenda-culturel/</link>
		<comments>http://www.awelty.fr/agenda-culturel/la-destinee-dun-developpeur-pour-agenda-culturel/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 13:05:04 +0000</pubDate>
		<dc:creator>Clément</dc:creator>
				<category><![CDATA[Actualité Awelty]]></category>
		<category><![CDATA[AgendaCulturel.fr]]></category>
		<category><![CDATA[Développement Web]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/?p=4730</guid>
		<description><![CDATA[Des sons flous et distordus me parviennent péniblement, la voix des médecins et du personnel infirmier ne sont que des bruits sourds et incompréhensibles. Mes esprits me reviennent difficilement, je suis allongé. La lumière transperçant progressivement la rétine de mes yeux est une douleur impalpable, tandis que les voix se font plus claires, rythmées au [...]]]></description>
			<content:encoded><![CDATA[<p>Des sons flous et distordus me parviennent péniblement, la voix des médecins et du personnel infirmier ne sont que des bruits sourds et incompréhensibles. Mes esprits me reviennent difficilement, je suis allongé. La lumière transperçant progressivement la rétine de mes yeux est une douleur impalpable, tandis que les voix se font plus claires, rythmées au son de l&#8217;électrocardiogramme. <span style="color: #808080;">«<em> … bip, bip &#8230; corticoïdes en intraveineuse, il va y passer … bip &#8230;</em> »</span>.</p>
<p style="text-align: center;"><a href="http://www.awelty.fr/agenda-culturel/la-destinee-dun-developpeur-pour-agenda-culturel/"><img class="alignnone size-full wp-image-4757" title="de-vinci-homme" src="http://www.awelty.fr/wp-content/uploads/2010/06/de-vinci-homme.jpg" alt="de-vinci-homme" width="540" height="182" /></a></p>
<p>Mes facultés psychomotrices me reviennent alors que je sors de cette obscurité. Mon système nerveux semble lui aussi se réveiller, entraînant une douleur insupportable dans ma poitrine. Je ne distingue que des silhouettes, pâles et hasardeuses. Leurs voix sourdes se chevauchent, je ne comprends pas. Qui sont ces gens ? Que m&#8217;est-il arrivé ?&#8230;</p>
<p>Je ressens dans le bras la brève douleur d&#8217;une aiguille. Avant de n&#8217;avoir pu dire quoi que ce soit, je m&#8217;enfonce à nouveau dans une plénitude sombre et apaisante, la lumière s&#8217;éteint progressivement. Le calme est revenu.</p>
<p>Cette sérénité m&#8217;a semblé de courte durée. C&#8217;est avec difficulté que je me réveille, quittant avec nostalgie ce relatif bien-être. Je suis toujours allongé, et comprends alors que je suis dans un hôpital. La douleur dans ma poitrine semble avoir disparu. Ma vision troublée se précise peu à peu, je distingue une silhouette, penchée vers moi.</p>
<p>Mal rasé, cernes apparentes, le Dr Greg House me lance : « Inutile de parler, vous ne pouvez pas. On vous a diagnostiqué une rare anomalie cardiaque appelée <em>dévelopiasis PHPstasé</em>, vous avez un pré-compilateur PHP dans le ventricule droit. Vous êtes resté dans le coma trois jours à la suite d&#8217;un conflit de variable, il a fallu vous opérer pour passer le <em>register_globals</em> à <em>off</em>. Ne vous en faites pas, vous allez vous en sortir ».</p>
<p>Après quelques semaines en <em>safe_mode ON</em>, le temps de m&#8217;acclimater à cette nouvelle, je décidais que je devais vivre avec cette condition. Mon destin était scellé, je devais devenir développeur Web. Je fus alors accueilli par Awelty, me permettant ainsi de vivre ma nouvelle vie.</p>
<p><span style="color: #808080;"><em>&#8230; To be continued &#8230;</em></span></p>
<p>Trêve d&#8217;histoires burlesques, me voici, Clément, 26 ans après moi-même, nouveau venu dans la famille Awelty qui m&#8217;a intégré au début de ce mois de juin 2010. Je suis votre nouveau développeur Web, en charge principalement d&#8217;<a href="http://www.agendaculturel.fr">Agenda Culturel</a>.</p>
<p>J&#8217;ai créé mes premières pages Web en 1999, ai plus récemment créé <a href="http://www.pebkac.fr">Pebkac.fr</a> et un <a href="http://www.clementlange.fr">blog éponyme</a>, et j&#8217;ai officié en agence Web à Amiens pendant 3 ans pour le compte de clients. C&#8217;est avec un grand plaisir et beaucoup d&#8217;enthousiasme que je rejoins à présent Awelty et plus spécifiquement Agenda Culturel, et ce sont donc beaucoup de bonnes choses qui s&#8217;annoncent pour la suite du programme, en terme de code et de développement. Et nous avons commencé plutôt fort, avec le <a href="http://www.awelty.fr/agenda-culturel/agenda-culturel-record-de-trafic-pour-la-fete-de-la-musique/">record de trafic enregistré</a> ces derniers jours pour la Fête de la musique !</p>
<p>Geek avec une vie sociale, vivant à Amiens, technophile avéré et programmeur depuis de nombreuses années, je suis également passionné par tout ce qui a un moteur et 2 ou 4 roues, ainsi que par la langue anglaise.<span style="color: #808080;"> <em>(… sayin&#8217; hi to Colin … <img src='http://www.awelty.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</em></span> .</p>
<p>Alors&#8230; il ne me reste plus qu&#8217;à vous dire : à bientôt sur <a href="http://www.agendaculturel.fr">Agenda Culturel</a> ! <img src='http://www.awelty.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Des sons distordus me parviennent péniblement, la voix des médecins et du personnel infirmier ne sont que des bruits sourds et incompréhensibles. Mes esprits me reviennent difficilement, je suis allongé. La lumière transperçant progressivement la rétine de mes yeux est une douleur impalpable, tandis que les voix se font plus claires, rythmées au son de l&#8217;électrocardiogramme.</span><span style="font-family: Arial,sans-serif;"><em> « … bip, bip &#8230; Corticoïdes en intraveineuse, il va y passer … bip &#8230; »</em></span><span style="font-family: Arial,sans-serif;">.</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Mes facultés psychomotrices me reviennent alors que je sors de cette obscurité. Mon système nerveux semble lui aussi se réveiller, entraînant une douleur insupportable dans ma poitrine. Je ne distingue que des silhouettes, pâles et hasardeuses. Leurs voix sourdes se chevauchent, je ne comprends pas. Qui sont ces gens ? Que m&#8217;est-il arrivé ?&#8230;</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Je ressens dans le bras la brève douleur d&#8217;une aiguille. Avant de n&#8217;avoir pu dire quoi que ce soit, je m&#8217;enfonce à nouveau dans une plénitude sombre et apaisante, la lumière s&#8217;éteint progressivement. Le calme est revenu.</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Cette sérénité m&#8217;a semblé de courte durée. C&#8217;est avec difficulté que je me réveille, quittant avec nostalgie ce relatif bien-être. Je suis toujours allongé, et comprends alors que je suis dans un hôpital. La douleur dans ma poitrine semble avoir disparu. Ma vision troublée se précise peu à peu, je distingue une silhouette, penchée vers moi.</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Mal rasé, cernes apparentes, le Dr Greg House me lance : « Inutile de parler, vous ne pouvez pas. On vous a diagnostiqué une rare anomalie cardiaque appelée <em>dévelopiasis PHPstasé</em>, vous avez un pré-compilateur PHP dans le ventricule droit. Vous êtes resté dans le coma trois jours à la suite d&#8217;un conflit de variable, il a fallu vous opérer pour passer le <em>register_globals</em> à <em>Off</em>. Ne vous en faites pas, vous allez vous en sortir ».</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Après quelques semaines en <em>safe_mode ON</em>, le temps de m&#8217;acclimater à cette nouvelle, je décidais que je devais vivre avec cette condition. Mon destin était scellé, je devais devenir développeur Web. Je fus alors accueilli par Awelty, me permettant ainsi de vivre ma nouvelle vie.</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Trêve d&#8217;histoires burlesques, me voici, Clément, 26 ans après moi-même, nouveau venu dans la famille Awelty que j&#8217;ai intégrée au début de ce mois de juin 2010. Je suis votre nouveau développeur Web, en charge principalement d&#8217;Agenda Culturel.</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Je créée des sites Internet depuis 1999, ai plus récemment créé Pebkac.fr et un blog éponyme, et j&#8217;ai officié en agence Web à Amiens pendant 3 ans pour le compte de clients. C&#8217;est avec un grand plaisir et beaucoup d&#8217;enthousiasme que je rejoins à présent Awelty et plus spécifiquement Agenda Culturel, et ce sont donc beaucoup de bonnes choses qui s&#8217;annoncent pour la suite du programme, en terme de code et de développement. Et nous avons commencé plutôt fort, avec un record de trafic enregistré ces derniers jours pour la fête de la musique !</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Geek avec une vie sociale, technophile avéré et programmeur depuis de nombreuses années, je suis également passionné par tout ce qui a un moteur et 2 ou 4 roues, ainsi que par la langue anglaise /* <em>… sayin&#8217; hi to Colin … <img src='http://www.awelty.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em> */ .</span></p>
<p style="margin-bottom: 0cm;">
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Alors&#8230; il ne me reste plus qu&#8217;à vous dire : à bientôt sur Agenda Culturel ! <img src='http://www.awelty.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/agenda-culturel/la-destinee-dun-developpeur-pour-agenda-culturel/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Encore des nouveautés sur Agenda Culturel !</title>
		<link>http://www.awelty.fr/agenda-culturel/encore-des-changements-sur-agenda-culturel/</link>
		<comments>http://www.awelty.fr/agenda-culturel/encore-des-changements-sur-agenda-culturel/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:09:48 +0000</pubDate>
		<dc:creator>Arnaud-K</dc:creator>
				<category><![CDATA[AgendaCulturel.fr]]></category>
		<category><![CDATA[Développement Web]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/?p=3632</guid>
		<description><![CDATA[Pour continuer dans les améliorations et les nouvelles fonctionnalités, je vais commencer par vous parler des alertes événements (à ne pas confondre avec les alertes enlèvement). En effet, vous pouvez, après inscription, vous abonner aux alertes d'un événement culturel.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="aligncenter size-full wp-image-3631" title="capture-tableau-de-bord" src="http://www.awelty.fr/wp-content/uploads/2010/03/capture-tableau-de-bord.jpg" alt="" width="540" height="220" />Pour continuer dans les améliorations et les nouvelles fonctionnalités, je vais commencer par vous parler des <strong>alertes événements</strong> (à ne pas confondre avec les alertes enlèvements). En effet, vous pouvez, après inscription, <strong>vous abonner aux alertes d&#8217;un événement culturel</strong>. Vous recevrez donc des mails :</p>
<ul>
<li>deux jours avant le début de l&#8217;événement pour être sûr de ne pas l&#8217;oublier</li>
<li>si la date, le lieu ou l&#8217;horaire de l&#8217;événement a été modifié</li>
<li>si l&#8217;événement est signalé comme annulé sur le site.</li>
<li>être alerté de la programmation d&#8217;un festival dès qu&#8217;elle est mise en ligne sur le site</li>
</ul>
<p>Vous pouvez aussi <strong>vous abonner aux alertes d&#8217;un artiste ou d&#8217;un organisateur</strong>. Grâce à cela, vous recevrez un mail dès qu&#8217;un (ou plusieurs) événement est ajouté pour un artiste ou organisateur. Vous n&#8217;aurez donc plus d&#8217;excuse si vous ratez le dernier concert des <a title="BB Brunes" href="http://www.agendaculturel.fr/bb-brunes">BB Brunes</a>, si vous n&#8217;êtes pas au courant du programme de l&#8217;<a title="Olympia" href="http://www.agendaculturel.fr/olympia">Olympia</a> ou si vous ne savez pas qui sera aux <a title="Solidays 2010" href="http://75.agendaculturel.fr/festival/agenda,solidays-2010,43388.html">Solidays 2010</a> !</p>
<p>Enfin vous pouvez également <strong>vous abonner aux actualités des départements de votre choix</strong> qui présentent les temps forts du département ou les opérations spéciales (pour des invitations, par exemple).</p>
<p>Dans les changements effectués (et mis en ligne ce matin) on retrouve <strong>un nouveau tableau de bord</strong> (plus clair) qui permet de modifier toutes ses infos personnelles et de gérer tous ses abonnements aux diverses newsletters et alertes. De plus, <strong>la page d&#8217;inscription a aussi été simplifiée</strong> : on peut maintenant s&#8217;inscrire en ne donnant qu&#8217;une adresse email ! Un mot de passe est généré et vous est envoyé par mail (il est modifiable dans le nouveau tableau de bord).</p>
<p>En attendant le développement des alertes pour les villes (et qui vous permettra de recevoir l&#8217;agenda de votre ville une fois par semaine) n&#8217;hésitez pas à vous abonner aux alertes déjà disponibles et à organiser vos <a href="http://www.agendaculturel.fr">sorties culturelles</a> parmi les<strong> plus de 15 000 événements en cours ou à venir sur Agenda Culturel !</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/agenda-culturel/encore-des-changements-sur-agenda-culturel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Afficher des statistiques géographiques avec Google Geomap</title>
		<link>http://www.awelty.fr/developpement-web/afficher-des-statistiques-geographiques-avec-google-geomap/</link>
		<comments>http://www.awelty.fr/developpement-web/afficher-des-statistiques-geographiques-avec-google-geomap/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 15:42:21 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Développement Web]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/?p=1500</guid>
		<description><![CDATA[On peut avoir besoin de faire figurer des informations numériques sur une carte. Si tout le monde ou presque sait aujourd&#8217;hui utiliser un tableur pour créer des graphiques, il n&#8217;en va pas de même pour colorer des régions du globe (pays, continents, villes) en fonction d&#8217;une liste de valeurs.
Bien sur, il existe des solutions SIG [...]]]></description>
			<content:encoded><![CDATA[<p>On peut avoir besoin de faire figurer des informations numériques sur une carte. Si tout le monde ou presque sait aujourd&#8217;hui utiliser un tableur pour créer des graphiques, il n&#8217;en va pas de même pour colorer des régions du globe (pays, continents, villes) en fonction d&#8217;une liste de valeurs.</p>
<p>Bien sur, il existe des solutions SIG (Système d&#8217;Informations Géographiques) gratuites (Google Maps, Yahoo Maps, etc), mais elles sont davantage prévues pour localiser de l&#8217;information que pour présenter des valeurs ou des tendances.</p>
<p>C&#8217;est en observant le code source des pages de Google Analytics que j&#8217;ai découvert Geomap, une mini-application Flash™ contrôlée par javascript permettant de &laquo;&nbsp;colorier&nbsp;&raquo; des pays en fonction d&#8217;une valeur.</p>
<h2>Exemple d&#8217;implémentation de la carte geomap</h2>
<div id="map_canvas">chargement de la carte</div>
<p>Sur cette carte sont représentés les 30 principaux pays d&#8217;origine des utilisateurs d&#8217;e-monsite (les valeurs sont volontairement faussées pour la France, afin de lisser le dégradé). Bien que la carte elle-même soit une animation Flash™, il est seulement question ici de javaScript. Il n&#8217;est donc pas nécessaire de savoir utiliser Adobe Flash™.</p>
<p>Avant de pouvoir utiliser la librairie proposée par Google, vous devez intégrer son API Javascript: <a title="Api Javascript Google" href="http://www.google.com/jsapi">http://www.google.com/jsapi</a>. N&#8217;hésitez pas à vous aider de la <a title="documentation google geomap" href="http://code.google.com/intl/fr/apis/visualization/documentation/gallery/geomap.html">documentation fournie par Google</a> (en anglais), et du <a title="exemple d'utilisation de google geomap" href="http://www.awelty.fr/wp-content/uploads/2009/07/geomap_exemple.js">script largement commenté</a> qui affiche la carte ci-dessus.<br />
<script src="http://www.google.com/jsapi" type="text/javascript"></script><script src="http://www.awelty.fr/wp-content/uploads/2009/07/geomap_exemple.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/afficher-des-statistiques-geographiques-avec-google-geomap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De l&#8217;intérêt de la POO</title>
		<link>http://www.awelty.fr/developpement-web/interet-de-la-poo/</link>
		<comments>http://www.awelty.fr/developpement-web/interet-de-la-poo/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 06:37:00 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/interet-de-la-poo/</guid>
		<description><![CDATA[Depuis la démocratisation de php5, il est possible d&#8217;appréhender les projets web d&#8217;un point de vue &#171;&#160;Objet&#160;&#187;. Certes, ça n&#8217;est pas une révolution, et cette approche était déjà permise, dans une moindre mesure, avec php4. Le but ici n&#8217;est pas de promouvoir la POO à tout prix, simplement d&#8217;expliquer pourquoi ça peut être utile et [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1054" class="wp-caption alignnone" style="width: 570px"><img class="size-full wp-image-1054" title="Programmation PHP Orientée Objet sous Eclipse" src="http://www.awelty.fr/wp-content/uploads/2009/07/poo.gif" alt="Programmation PHP Orientée Objet sous Eclipse" width="560" height="180" /><p class="wp-caption-text">Programmation PHP Orientée Objet sous Eclipse</p></div>
<p>Depuis la démocratisation de php5, il est possible d&#8217;appréhender les projets web d&#8217;un point de vue &laquo;&nbsp;Objet&nbsp;&raquo;. Certes, ça n&#8217;est pas une révolution, et cette approche était déjà permise, dans une moindre mesure, avec php4. Le but ici n&#8217;est pas de promouvoir la POO à tout prix, simplement d&#8217;expliquer pourquoi ça peut être utile et comment ça peut être fun.</p>
<p>D&#8217;abord, la POO (Programmation Orientée Objet), ça n&#8217;a pas de particularité technique. En effet, il s&#8217;agit plus d&#8217;une manière de concevoir que d&#8217;une façon de coder. A ce titre,  on pourrait envisager de &laquo;&nbsp;coder objet&nbsp;&raquo; avec presque n&#8217;importe quel langage, et inversement, utiliser un langage objet sans avoir besoin de l&#8217;exploiter comme tel.</p>
<p>La POO donc, ça consiste entre autres, à se représenter un programme, un script, une application, dans l&#8217;espace plutôt que dans le temps. Grosso-modo, il s&#8217;agit de penser en terme d&#8217;objets, capables d&#8217;interagir entre eux, et pas de lignes de codes qui s&#8217;enchaineraient les unes après les autres.</p>
<p>La POO, ça permet de donner un semblant de <del>vie</del> comportement à des entités de données, de variables, de valeurs&#8230; qu&#8217;on appellera du coup des objets. A l&#8217;instant où j&#8217;écris ce billet, j&#8217;ai à l&#8217;écran une zone de texte pour le titre, une autre pour le texte, et un bouton pour enregistrer. Je peux dès lors considérer qu&#8217;un billet est un objet, doté d&#8217;un titre, d&#8217;un texte, et capable de s&#8217;enregistrer lorsqu&#8217;on lui demandera de le faire.</p>
<p>Sans entrer dans les détails, cette vision des choses offre de nombreux avantages, au nombre desquels on peut citer:</p>
<ul>
<li>la POO encourage le travail collaboratif.</li>
<li>la POO simplifie la maintenance.</li>
<li>la POO accroît la stabilité.</li>
<li>la POO assouplit le code.</li>
<li>la POO rend le travail plus agréable.</li>
</ul>
<p>En contrepartie:</p>
<ul>
<li>la POO est chronophage.</li>
<li>la POO consomme des ressources.</li>
<li>la POO n&#8217;aime pas l&#8217;approximation.</li>
</ul>
<p>Cependant, chacun de ces points est discutable, et s&#8217;il faut retenir quelque chose à propos de la POO, c&#8217;est qu&#8217;elle n&#8217;apporte rien qu&#8217;on ne se donne pas la peine d&#8217;implémenter. A contrario, elle offre un cadre de travail efficace, et encourage la réflexion, en délestant le programmeur de fastidieuses tâches de codage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/interet-de-la-poo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Découvrez des plugins pour JQuery</title>
		<link>http://www.awelty.fr/developpement-web/plugins-jquery/</link>
		<comments>http://www.awelty.fr/developpement-web/plugins-jquery/#comments</comments>
		<pubDate>Tue, 26 May 2009 08:18:00 +0000</pubDate>
		<dc:creator>Arnaud-K</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/plugins-jquery/</guid>
		<description><![CDATA[Pour prolonger mon précédent billet présentant la librairie JQuery, je vous propose de découvrir quelques plugins (que l&#8217;on pourrait traduire par &#171;&#160;modules complémentaires&#160;&#187;) utilisés sur des sites créés par Awelty.
Un plugin JQuery est une extension de la librairie JQuery. Un plugin peut être comparé à une fonction prédéfinie. En général, un plugin sert à ne [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour prolonger mon précédent billet <a href="http://www.awelty.fr/developpement-web/initiation-jquery-librairie-javascript/">présentant la librairie JQuery</a>, je vous propose de découvrir quelques plugins (que l&#8217;on pourrait traduire par &laquo;&nbsp;modules complémentaires&nbsp;&raquo;) utilisés sur des sites créés par Awelty.</p>
<p style="text-align: justify;">Un plugin JQuery est une extension de la librairie JQuery. Un plugin peut être comparé à une fonction prédéfinie. En général, un plugin sert à ne remplir qu&#8217;une seule fonction, un seul objectif. On en compte plus de 1 000, la plupart peuvent être trouvés dans la partie <a href="http://plugins.jquery.com/">plugins du site officiel de JQuery</a> (en anglais).</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1180" title="shadowbox" src="http://www.awelty.fr/wp-content/uploads/2009/05/shadowbox.jpg" alt="shadowbox" width="500" height="170" /></p>
<p style="text-align: justify;">Le premier plugin est <a href="http://www.shadowbox-js.com/">Shadowbox</a>,il est utilisé sur <a href="http://www.coconews.com">Coconews</a> et <a href="http://www.e-monsite.com">E-monsite</a>. Shadowbox permet l&#8217;affichage d&#8217;information mis en avant du reste du site. Il permet de mettre en avant une image (en grand format), une autre page, une vidéo&#8230; dans un cadre qui sera centré à l&#8217;écran et qui recouvrira la page en cours. Sa grande souplesse permet de l&#8217;utiliser sur un site comme E-monsite, car il faut qu&#8217;il fonctionne sur tous les sites membres.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1181" title="droppy" src="http://www.awelty.fr/wp-content/uploads/2009/05/droppy.jpg" alt="droppy" width="500" height="170" /></p>
<p style="text-align: justify;">Ensuite, il y a le plugin <a href="http://onehackoranother.com/projects/jquery/droppy/">Droppy</a> qui permet de créer très facilement des menus déroulants. Il peut gérer plusieurs niveaux de sous-menus (jusqu&#8217;à trois apparemment). Il est facilement personnalisable en CSS. Il est également utilisé sur <a href="http://www.e-monsite.com">E-monsite</a>.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1182" title="jcarousel.jpg" src="http://www.awelty.fr/wp-content/uploads/2009/05/jcarousel.jpg.png" alt="jcarousel.jpg" width="500" height="170" /></p>
<p style="text-align: justify;">Le plugin <a href="http://sorgalla.com/jcarousel/">JCarousel</a> permet de créer une galerie de photos (horizontale ou verticale) et de les faire défiler dans zone limitée. Il est également simple à mettre en place. La structure des blocs générés ne facilite pas forcément la personnalisation graphique. Ce plugin a été utile sur le site du <a href="http://www.festival-de-saint-riquier.fr/">Festival de Saint-Riquier</a> et sur <a href="http://www.coconews.com">Coconews</a>.</p>
<p style="text-align: justify;">Enfin, en bref, je peux également citer le plugin <a href="http://malsup.com/jquery/cycle/">Cycle</a> qui permet de faire des diaporamas avec des animations personnalisées, <a href="http://www.jqueryui.com">JQueryUI</a> qui propose plein de fonctionnalités différentes telles un datepicker (un calendrier permettant de sélectionner une date), des curseurs à glissière&#8230;, <a href="http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/">Tooltip</a> qui permet de créer des info-bulles personnalisables et enfin <a href="http://www.fyneworks.com/jquery/star-rating/">Rating</a> qui permet de créer un système de notation personnalisé.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/plugins-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiation à JQuery, une librairie JavaScript</title>
		<link>http://www.awelty.fr/developpement-web/initiation-jquery-librairie-javascript/</link>
		<comments>http://www.awelty.fr/developpement-web/initiation-jquery-librairie-javascript/#comments</comments>
		<pubDate>Mon, 18 May 2009 11:47:00 +0000</pubDate>
		<dc:creator>Arnaud-K</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/initiation-jquery-librairie-javascript/</guid>
		<description><![CDATA[La librairie JavaScript JQuery est une librairie légère (à partir de 19 Kio), compatible avec tous les navigateurs et qui supporte le CSS3. Son utilisation est bien sûr entièrement gratuite.

Mais à quoi ça sert ?
Ce n&#8217;est pas par hasard si le slogan de JQuery est : &#171;&#160;Write less, do more&#160;&#187; (que l&#8217;on peut littéralement traduire [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">La librairie JavaScript <a hreflang="en" href="http://www.jquery.com">JQuery</a> est une librairie légère (à partir de 19 Kio), compatible avec tous les navigateurs et qui supporte le CSS3. Son utilisation est bien sûr entièrement gratuite.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1186" title="jquery" src="http://www.awelty.fr/wp-content/uploads/2009/05/jquery.png" alt="jquery" width="500" height="177" /></p>
<h4 style="margin: 10px 0pt; text-align: justify;">Mais à quoi ça sert ?</h4>
<p style="text-align: justify;">Ce n&#8217;est pas par hasard si le slogan de JQuery est : &laquo;&nbsp;Write less, do more&nbsp;&raquo; (que l&#8217;on peut littéralement traduire par : &laquo;&nbsp;Ecrivez moins, faîtes-en plus&nbsp;&raquo;). JQuery permet donc de faire du JavaScript plus facilement et plus rapidement. Cette librairie est également utile pour réaliser de légers effets graphiques ou bien encore des animations (certains sites faits avec JQuery ressemblent beaucoup à des sites en flash).</p>
<h4 style="margin: 10px 0pt; text-align: justify;">Comment ça fonctionne ?</h4>
<p style="text-align: justify;">La première chose à faire est de télécharger la dernière version (à l&#8217;heure actuelle 1.3.2) de JQuery (<a hreflang="en" href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js">disponible ici</a>). Il faut ensuite lier JQuery à votre page HTML comme n&#8217;importe quel fichier externe JavaScript :</p>
<pre style="text-align: justify;">&lt;script src="js/jquery-1.3.2.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p style="text-align: justify;">Ensuite, pour faire un premier effet (agrandir un bloc par exemple), il faut insérer ce script dans votre page (ou dans un fichier externe, selon votre préférence) :</p>
<pre style="text-align: justify;">$(document).ready(function() {  $('a#agrandir').click(function() {
$("#bloc1").animate( { width:"90%" }, 1000 )  });});</pre>
<p style="text-align: justify;">Quelques explications :</p>
<ul style="text-align: justify;">
<li>la première ligne permet de demander au navigateur d&#8217;exécuter le code JavaScript lorsque la page est chargée (équivalent à l&#8217;attribut onload).</li>
<li>la deuxième ligne permet de détecter si le lien ayant pour id agrandir (a#agrandir) a été cliqué (équivalent à l&#8217;attribut onclick)</li>
<li>la troisième ligne permet d&#8217;animer le bloc ayant pour id bloc1 jusqu&#8217;à ce qu&#8217;il ait une largeur de 90% (l&#8217;animation durera 1000 millisecondes, soit une seconde).</li>
</ul>
<p style="text-align: justify;">Une documentation en français de JQuery existe, elle est disponible <a hreflang="fr" href="http://jquery.jarodxxx.com/">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/initiation-jquery-librairie-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programmation Orientée Objet avec PHP 5</title>
		<link>http://www.awelty.fr/developpement-web/programmation-orientee-objet-php-5/</link>
		<comments>http://www.awelty.fr/developpement-web/programmation-orientee-objet-php-5/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 09:02:00 +0000</pubDate>
		<dc:creator>Arnaud-K</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Coconews.com]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/programmation-orientee-objet-php-5/</guid>
		<description><![CDATA[La dernière version de PHP (version 5 ) offre davantage de possibilités pour la Programmation Orientée Objet (POO). Connaissant déjà cette méthode de programmation (avec d&#8217;autres langages tels JAVA ou C++), j&#8217;ai eu envie de m&#8217;y plonger et de voir ce que peut apporter la POO à un langage de programmation web (php dans mon [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">La dernière version de PHP (version 5 ) offre <strong>davantage de possibilités pour la Programmation Orientée Objet</strong> (POO). Connaissant déjà cette méthode de programmation (avec d&#8217;autres langages tels JAVA ou C++), j&#8217;ai eu envie de m&#8217;y plonger et de voir ce que peut apporter la POO à un langage de programmation web (php dans mon cas). J&#8217;ai donc commencé à programmer quelques fonctionnalités en objet pour les 3 portails de Coconews  : <a href="http://guadeloupe.coconews.com">Guadeloupe</a>, <a href="http://martinique.coconews.com">Martinique</a> et <a href="http://guyane.coconews.com">Guyane</a>. J&#8217;ai utilisé la POO pour développer la zone privilège (bientôt en ligne) et le support par ticket.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1215" title="poo" src="http://www.awelty.fr/wp-content/uploads/2009/04/poo.png" alt="poo" width="500" height="168" /></p>
<p style="text-align: justify;">La POO est, comme son nom l&#8217;indique, basée sur la notion d&#8217;objet. <strong>Un objet possède des attributs</strong> (repésentant l&#8217;état de l&#8217;objet) <strong>et des méthodes </strong>(représentant des opérations applicables à l&#8217;objet). Toute la façon d&#8217;imaginer, de penser le code est remis en question par rapport au php classique (dit &laquo;&nbsp;procédural&nbsp;&raquo;). Il faut un petit temps d&#8217;adaptation pour faire du code réellement en objet. La difficulté provient du fait que l&#8217;on a parfois du mal à imaginer certaines notions virtuelles sous forme d&#8217;objet.</p>
<p style="text-align: justify;">Ce qui est appelée &laquo;&nbsp;classe&nbsp;&raquo;, est tout ce qui définit un objet. Un objet est unique (on parle ici d&#8217;<strong>instance ou d&#8217;occurence de classe</strong>) mais deux objets peuvent être instanciés à partir de la même classe. Donc la première chose à faire en POO, c&#8217;est de créer une classe (après avoir analyser le problème et savoir ce que l&#8217;on veut faire exactement. Voici sommairement la syntaxe à respecter pour créer une première classe (contenu du fichier MaClasse.class.php) :</p>
<pre style="text-align: justify;">class MaClasse {
	private $id;
	private $attribut;
	public function __construct($id= null, $attribut= null)
	{
		if(!empty($id)) {
			$this-&gt;id = $id;
		}
		if(!empty($attribut)) {
			$this-&gt;attribut = $attribut;
		}
	}

	public function affiche()
	{
		echo "L'attribut vaut $this-&gt;attribut";
	}
}</pre>
<h4 style="color: #ff6f00; text-align: justify;">Quelques explications sur la classe créée ci-dessus :</h4>
<ul style="text-align: justify;">
<li>Une des premières règles de la POO est que le nom de la classe doit commencer par une majuscule. Après avoir indiqué le nom de la classe, on définit les attributs de cette classe (ici les attributs sont id et attribut. La première fonction (__construct) est appelé <strong>le constructeur de la classe</strong>. C&#8217;est grâce à cette fonction que l&#8217;on peut créer un objet de cette classe en faisant simplement &laquo;&nbsp;new()&nbsp;&raquo; (voir ci-après).</li>
</ul>
<ul style="text-align: justify;">
<li>La variable $this est une variable spécifique à la POO, elle permet d&#8217;indiquer que c&#8217;est cet objet qui est modifié. $this-&gt;id correspond à l&#8217;attribut id de l&#8217;objet sur lequel on travaille.</li>
</ul>
<ul style="text-align: justify;">
<li>La deuxième fonction (affiche) est une <strong>méthode de l&#8217;objet</strong>, ici c&#8217;est une méthode toute simple qui permet d&#8217;afficher, avec une phrase, la valeur de l&#8217;attribut nommé attribut.</li>
</ul>
<p style="text-align: justify;">Une fois la classe créée, il faut pouvoir s&#8217;en servir et créer des objets de cette classe :</p>
<pre style="text-align: justify;">include("MaClasse.class.php");$objet = new MaClasse(1, 10);$objet-&gt;affiche();</pre>
<p style="text-align: justify;">La première ligne permet d&#8217;inclure le fichier contenant la classe. La deuxième instruction permet de<strong> créer un nouvel objet grâce à l&#8217;appel au constructeur</strong> avec le mot &laquo;&nbsp;new&nbsp;&raquo;. Après cette ligne, on a donc un objet MaClasse (nommé &laquo;&nbsp;$objet&nbsp;&raquo;) dont les attributs id et attribut ont respectivement 1 et 10 comme valeur. Enfin la dernière ligne affiche : &laquo;&nbsp;<em>L&#8217;attribut vaut 10</em>&laquo;&nbsp;.</p>
<p style="text-align: justify;">Voici donc le nécessaire pour débuter avec la POO en PHP. Malgré le temps d&#8217;adapation à la philosophie de la POO, cette technique de programmation fait gagner du temps. En effet, on se trouve, à la fin, avec un code <strong>plus compréhensible</strong> (surtout sur des gros projets), <strong>plus facilement réutilisable</strong> et surtout <strong>plus facilement maintenable</strong>.</p>
<p style="text-align: justify;">Enfin, je mets quelques liens qui m&#8217;ont permis de débuter avec la Programmation Orientée Objet en PHP. Je préfère apprendre avec des exemples concrets, donc la plupart de ces liens vous en présenteront :</p>
<ul style="text-align: justify;">
<li><a href="http://www.apprendre-php.com/forums/topic-75-poo-une-calculatrice-comme-exercice-de-pratique.html">Exemple : calculatrice</a> (apprendre-php.com, forum)</li>
<li><a href="http://www.clubic.com/forum/programmation/classes-en-php-et-methode-d-utilisation-id457962-page1.html">Classe sur des comptes utilisateurs</a> (clubic.com, forum)</li>
<li><a hreflang="en" href="http://nettuts.com/php/how-to-create-an-object-oriented-blog-using-php/">Créer un blog en POO</a> (nettuts.com, tutoriel)</li>
<li><a hreflang="en" href="http://nettuts.com/tutorials/php/real-world-oop-with-php-and-mysql/">POO et MySQL</a> (nettuts.com, tutoriel)</li>
<li><a hreflang="en" href="http://classes.scriptsphp.org/article.PHP-5-et-les-exceptions">Gestion des exceptions en PHP5</a> (scriptsphp.org, blog)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/programmation-orientee-objet-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Live Maps et Google Maps</title>
		<link>http://www.awelty.fr/developpement-web/microsoft-live-maps-et-google-maps/</link>
		<comments>http://www.awelty.fr/developpement-web/microsoft-live-maps-et-google-maps/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 10:08:00 +0000</pubDate>
		<dc:creator>Arnaud-K</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[api google map]]></category>
		<category><![CDATA[api live map]]></category>
		<category><![CDATA[géolocalisation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/microsoft-live-maps-et-google-maps/</guid>
		<description><![CDATA[<p>Pour le développement de <a href="http://www.coconews.com">Coconews</a>, j'ai dû utiliser un outil de géolocalisation. Mon choix se serait logiquement tourné vers <a href="http://code.google.com/intl/fr-FR/apis/maps/">l'API de Google Maps</a> (que je connaissais déjà) si Google Maps permettait la géolocalisation dans les Antilles françaises (<a href="http://guadeloupe.coconews.com">Guadeloupe</a>, <a href="http://martinique.coconews.com">Martinique</a> et <a href="http://guyane.coconews.com">Guyane</a> dans mon cas).</p> <p><img title="Microsoft Maps et Google Maps, mar. 2009" style="margin: 0 auto; display: block;" alt="" src="/public/blog/microsoftVSgoogle.jpg" /></p> <p>J'ai donc été obligé de trouver une solution alternative&#160;: l'<a href="http://dev.live.com/Virtualearth/sdk/">API Live Maps</a> de Microsoft (l'outil est également nommé Virtual Earth). Cette API proposant une bonne géolocalisation des Antilles françaises, j'ai donc pu l'utiliser sur Coconews. </p> <p>J'ai trouvé que la documentation et les exemples que propose Microsoft pour l'utilisation des Live Maps étaient moins complets que ce qui est proposé par Google. Microsoft propose une vue supplémentaire : Bird's view (littéralement "vue d'oiseau"). C'est une simple vue aérienne mais avec un décalage de 45° (voir l'image ci-dessous).  Il faut également souligner que ce sont les données de l'IGN qui sont utilisées dans les Live Maps. Enfin il est à noter que, contrairement aux Google Maps, l'utilisation des Live Maps ne nécessite aucune inscription.</p> <p><img title="Bird's View Live Maps, mar. 2009" style="margin: 0 auto; display: block;" alt="" src="../public/blog/bird-view.png" /></p> <p>Pour insérer les Live Maps sur Coconews, je n'ai pas rencontré de grosses difficultés. Le plus dur a été de trouver des ressources et des exemples sur Internet. Il y en a assez peu et presque tout est en anglais. Les deux principales ressources que j'ai utilisées sont disponibles <a hreflang="en" href="http://dev.live.com/Virtualearth/sdk/">ici</a> et <a hreflang="en" href="http://msdn.microsoft.com/en-us/library/bb429619.aspx">là</a>. Je n'ai pas utilisé l'outil de Géolocalisation direct (trouver la latitude et la longitude à partir d'une adresse) proposé par Microsoft car celui-ci ralentissait l'affichage de la carte et n'était pas toujours très pertinent. J'ai donc utilisé l'outil que propose Yahoo qui m'a permis de récupérer les coordonnées de chaque villes de Guadeloupe, Martinique et Guyane (plus d'informations disponibles sur ce billet de Tony : <a hreflang="fr" href="../index.php?post/2008/09/24/Afficher-les-villes-a-proximite-dune-ville-de-reference-par-rapport-a-une-distance-en-km-en-SQL-/-PHP">[PHP/SQL] Géolocalisation et distance entre des villes</a>). J'ai également constaté que l'affichage de la carte est parfois plus lent avec Firefox qu'avec Internet Explorer.</p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour le développement de <a href="http://www.coconews.com">Coconews</a>, j&#8217;ai dû utiliser un outil de géolocalisation. Mon choix se serait logiquement tourné vers <a href="http://code.google.com/intl/fr-FR/apis/maps/">l&#8217;API de Google Maps</a> (que je connaissais déjà) si Google Maps permettait la géolocalisation dans les Antilles françaises (<a href="http://guadeloupe.coconews.com">Guadeloupe</a>, <a href="http://martinique.coconews.com">Martinique</a> et <a href="http://guyane.coconews.com">Guyane</a> dans mon cas).</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1251" title="microsoftVSgoogle.jpg" src="http://www.awelty.fr/wp-content/uploads/2009/03/microsoftVSgoogle.jpg.png" alt="microsoftVSgoogle.jpg" width="500" height="168" /></p>
<p style="text-align: justify;">J&#8217;ai donc été obligé de trouver une solution alternative : l&#8217;<a href="http://dev.live.com/Virtualearth/sdk/">API Live Maps</a> de Microsoft (l&#8217;outil est également nommé Virtual Earth). Cette API proposant une bonne géolocalisation des Antilles françaises, j&#8217;ai donc pu l&#8217;utiliser sur Coconews.</p>
<p style="text-align: justify;">J&#8217;ai trouvé que la documentation et les exemples que propose Microsoft pour l&#8217;utilisation des Live Maps étaient moins complets que ce qui est proposé par Google. Microsoft propose une vue supplémentaire : Bird&#8217;s view (littéralement &laquo;&nbsp;vue d&#8217;oiseau&nbsp;&raquo;). C&#8217;est une simple vue aérienne mais avec un décalage de 45° (voir l&#8217;image ci-dessous).  Il faut également souligner que ce sont les données de l&#8217;IGN qui sont utilisées dans les Live Maps. Enfin il est à noter que, contrairement aux Google Maps, l&#8217;utilisation des Live Maps ne nécessite aucune inscription.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1253" title="bird-view" src="http://www.awelty.fr/wp-content/uploads/2009/03/bird-view.png" alt="bird-view" width="500" height="168" /></p>
<p style="text-align: justify;"><span id="more-139"></span>Pour insérer les Live Maps sur Coconews, je n&#8217;ai pas rencontré de grosses difficultés. Le plus dur a été de trouver des ressources et des exemples sur Internet. Il y en a assez peu et presque tout est en anglais. Les deux principales ressources que j&#8217;ai utilisées sont disponibles <a hreflang="en" href="http://dev.live.com/Virtualearth/sdk/">ici</a> et <a hreflang="en" href="http://msdn.microsoft.com/en-us/library/bb429619.aspx">là</a>. Je n&#8217;ai pas utilisé l&#8217;outil de Géolocalisation direct (trouver la latitude et la longitude à partir d&#8217;une adresse) proposé par Microsoft car celui-ci ralentissait l&#8217;affichage de la carte et n&#8217;était pas toujours très pertinent. J&#8217;ai donc utilisé l&#8217;outil que propose Yahoo qui m&#8217;a permis de récupérer les coordonnées de chaque villes de Guadeloupe, Martinique et Guyane (plus d&#8217;informations disponibles sur ce billet de Tony : <a hreflang="fr" href="../index.php?post/2008/09/24/Afficher-les-villes-a-proximite-dune-ville-de-reference-par-rapport-a-une-distance-en-km-en-SQL-/-PHP">[PHP/SQL] Géolocalisation et distance entre des villes</a>). J&#8217;ai également constaté que l&#8217;affichage de la carte est parfois plus lent avec Firefox qu&#8217;avec Internet Explorer.</p>
<p style="text-align: justify;">Côté code, pour simplement afficher la carte (centrée sur Pointe-à-Pitre) il faut d&#8217;abord charger l&#8217;API JavaScript de microsoft (entre les balises &lt;head&gt; et &lt;/head&gt; de la page html):</p>
<p style="text-align: justify;"><code>&lt;script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2"&gt;&lt;/script&gt;</code></p>
<p style="text-align: justify;">Ensuite pour afficher la carte, il faut insérer le JavaScript suivant :</p>
<p style="text-align: justify;"><code>&lt;script type="text/javascript"&gt;<br />
var map = null;<br />
function chargeLaCarte()<br />
{<br />
map = new VEMap('blocCarte');<br />
map.LoadMap(new VELatLong(16.2448, -61.5297), 10 ,'h' ,false);<br />
}<br />
&lt;/script&gt;</code></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Enfin, dans la page html il faut dire au navigateur de charger la carte au chargement de la page (attribut onload de la balise &lt;body&gt;) et prévoir le bloc dans lequel la carte sera affichée :</p>
<p style="text-align: justify;"><code>&lt;body onload="chargeLaCarte();"&gt;<br />
&lt;div id='blocCarte' style="position:relative; width:400px; height:400px;"&gt;&lt;/div&gt;<br />
&lt;/body&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/microsoft-live-maps-et-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Mise en cache d&#8217;un tableau de données SQL</title>
		<link>http://www.awelty.fr/developpement-web/php-mise-en-cache-d-un-tableau-de-donnees-sql/</link>
		<comments>http://www.awelty.fr/developpement-web/php-mise-en-cache-d-un-tableau-de-donnees-sql/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:00:00 +0000</pubDate>
		<dc:creator>Tony Samson</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[cache php]]></category>
		<category><![CDATA[mise en cache]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serialize]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/php-mise-en-cache-d-un-tableau-de-donnees-sql/</guid>
		<description><![CDATA[Pour faire suite à mon billet sur l&#8217;optimisation PHP/SQL d&#8217;un site web, voici une méthode pour mettre en cache des données issues d&#8217;une requête SQL de type SELECT.
Php propose deux fonctions aussi puissantes qu&#8217;utiles (mais aussi méconnues) : serialize et unserialize.

Serialialize compresse (linéarise) un tableau Php
Unserialize le décompresse (ou délinéarise), tout simplement.

A partir de là, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour faire suite à mon billet sur l&#8217;<a href="/index.php?post/2008/04/09/Des-pistes-pour-optimiser-les-performances-dacces-dun-site-web">optimisation PHP/SQL d&#8217;un site web</a>, voici une méthode pour mettre en cache des données issues d&#8217;une requête SQL de type SELECT.</p>
<p>Php propose deux fonctions aussi puissantes qu&#8217;utiles (mais aussi méconnues) : serialize et unserialize.</p>
<ul>
<li><a href="http://fr.php.net/serialize">Serialialize</a> compresse (<em>linéarise</em>) un tableau Php</li>
<li><a href="http://fr.php.net/manual/fr/function.unserialize.php">Unserialize</a> le décompresse (ou <em>délinéarise</em>), tout simplement.</li>
</ul>
<p style="text-align: justify;"><strong>A partir de là, l&#8217;idée paraît s&#8217;imposer d&#8217;elle même : </strong>pour certaines requêtes qui sont énormément exécutées et/ou qui sont très lourdes (par exemple les données d&#8217;un membre utilisées sur toutes les pages d&#8217;un site), pourquoi ne pas mettre en cache le tableau issu d&#8217;un mysql_fetch_array() ? Ainsi, une fois que la requête a été exécuté on n&#8217;accède plus à la base de donnée, on récupère le tableau de données dans un fichier texte puis on le décompresse.</p>
<p>La première fonction permet, tout simplement, d&#8217;écrire dans un fichier (en le créant, le cas échéant) :</p>
<p><code>&lt;?<br />
function maj_fichier($file,$valeur)<br />
{<br />
$fp = fopen("$file","w+"); // ouverture du fichier en écriture (on le créé s'il n'existe pas)<br />
fputs($fp, $valeur); // on écrit dans le fichier<br />
fclose($fp);<br />
}<br />
?&gt;</code></p>
<p>La seconde &#8211; et c&#8217;est la fonction qui nous intéresse &#8211; est la fonction de mise en cache :</p>
<p>(pour l&#8217;utiliser vous aurez besoin de la fonction maj_fichier() ci-dessus et de la fonction requete_sql disponible sur <a href="/index.php?post/2008/07/23/4-fonctions-php-pour-effectuer-des-requetes-SQL">ce billet</a>)</p>
<p><code>&lt;?<br />
function MiseEnCache($nomFichier,$table,$where,$champs)<br />
{</code></p>
<p>if(file_exists($nomFichier)) // si les variables sont en cache<br />
{<br />
$requete = unserialize(lire_fichier($nomFichier)); // on utilise le fichier cache (unserialize = decompresser le tableau)<br />
}<br />
else // sinon on fait la requete sql<br />
{<br />
$requete = requete_sql($table, $champs, $where);<br />
maj_fichier($nomFichier, serialize($requete)); // on place le resultat du tableau dans un fichier (serialize = compresser le tableau)<br />
}</p>
<p>return $requete;<br />
}<br />
?&gt;</p>
<p>Exemple d&#8217;utilisation :</p>
<p><code>&lt;?<br />
$req_membre=MiseEnCache("/cache/membres/membre-".$id_membre.".txt","membres", "id='$id_membre'", "prenom,nom,date_inscription,login");</code></p>
<p>echo&nbsp;&raquo;Bienvenue &laquo;&nbsp;.$req_membre[prenom].&nbsp;&raquo; &laquo;&nbsp;.$req_membre[nom].&nbsp;&raquo; !&nbsp;&raquo;;<br />
?&gt;</p>
<p style="text-align: justify;">Cet exemple permet de pouvoir afficher sur toutes les pages le prénom et le nom du membre en effectuant la requête qu&#8217;une seule fois ! Malin n&#8217;est-ce pas ?</p>
<p style="text-align: justify;">Mais bien sur vous-vous dites : et si le membre modifie son nom, l&#8217;information sera erronée ?</p>
<p style="text-align: justify;">La réponse est simple : il suffit de supprimer le fichier texte lors de la modification des informations pour le régénérer avec les bonnes !!</p>
<p style="text-align: justify;">Il y a néanmoins une limitation à l&#8217;utilisation de ce procédé : ne l&#8217;utilisez pas pour des données sensibles (mot de passe, email, etc.) car un fichier texte est beaucoup plus facilement accessible pour un pirate qu&#8217;une base de données&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/php-mise-en-cache-d-un-tableau-de-donnees-sql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Créer un contrôle javascript universel en Javascript / jQuery</title>
		<link>http://www.awelty.fr/developpement-web/jquery/</link>
		<comments>http://www.awelty.fr/developpement-web/jquery/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 16:10:00 +0000</pubDate>
		<dc:creator>Tony Samson</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[astuces]]></category>
		<category><![CDATA[controle formulaire]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/jquery/</guid>
		<description><![CDATA[En plus de la création des formulaires en HTML, pour laquelle j&#8217;ai déjà donné une astuce dans un précédent billet, il y a un autre aspect long et peu intéressant dans la conception de formulaires : les contrôles javascript. Ces derniers permettent de vérifier que le formulaire a été dûment rempli par l&#8217;internaute avant d&#8217;enregistrer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">En plus de la <a href="http://www.awelty.fr/developpement-web/php-astuce-pour-faire-des-pages-de-formulaires-et-gagner-du-temps/">création des formulaires en HTML</a>, pour laquelle j&#8217;ai déjà donné une astuce dans <a href="http://www.awelty.fr/developpement-web/php-astuce-pour-faire-des-pages-de-formulaires-et-gagner-du-temps/">un précédent billet</a>, il y a un autre aspect long et peu intéressant dans la conception de formulaires : les contrôles javascript. Ces derniers permettent de vérifier que le formulaire a été dûment rempli par l&#8217;internaute avant d&#8217;enregistrer ou d&#8217;envoyer par E-mail les données saisies.</p>
<p style="text-align: justify;">En général, pour chaque formulaire sur un site on créé une fonction spécifique. Ce qui peut s&#8217;avérer rapidement une grosse perte de temps.</p>
<p style="text-align: justify;">La problématique est donc posée : <strong>comment gagner du temps tout en effectuant des contrôles sur les formulaires </strong>en bonne et due forme <strong>?</strong></p>
<p style="text-align: justify;">Il suffit d&#8217;avoir une seule et même fonction pour l&#8217;ensemble des formulaires. C&#8217;est là que l&#8217;utilisation de jQuery devient très intéressante. En effet, avec jQuery il est possible d&#8217;agir sur les éléments de la page ayant le même <a href="http://jquery.developpeur-web2.com/documentation/selecteurs.php">sélecteur</a>.</p>
<p style="text-align: justify;">Nous allons donc définir une classe spécifique aux éléments de formulaire obligatoires. De plus, nous allons indiquer un élément <em>title</em> aux champs formulaires afin de pouvoir les réutiliser dans notre fonction :</p>
<p style="text-align: justify;"><code>&lt;input name="nom" id="nom" class="obligatoire" title="Nom" type="text"&gt;</code></p>
<p style="text-align: justify;">Ainsi, tous les éléments ayant la classe &laquo;&nbsp;obligatoire&nbsp;&raquo; devront être remplis. La fonction javascript suivante se charge du contrôle :</p>
<p style="text-align: justify;"><code>function VerifForm(){<br />
var count=1;<br />
var message="";<br />
$(".obligatoire").map(function(){</code></p>
<p style="text-align: justify;">if($(this).val()==&nbsp;&raquo;)<br />
{<br />
message += &laquo;&nbsp;\n &#8211; &laquo;&nbsp;+$(this).attr(&laquo;&nbsp;title&nbsp;&raquo;);<br />
count++;<br />
}<br />
});</p>
<p style="text-align: justify;">message += &laquo;&nbsp;\n\n&nbsp;&raquo;+&nbsp;&raquo;Puis validez de nouveau le formulaire&nbsp;&raquo;;</p>
<p style="text-align: justify;">if(count==2) { alert(&laquo;&nbsp;Veuillez remplir ce champ :\n&nbsp;&raquo;+message);<br />
return false; }<br />
else if(count&gt;2) { alert(&laquo;&nbsp;Veuillez remplir ces champs\n&nbsp;&raquo;+message);<br />
return false; }<br />
else { return true; }</p>
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">Ainsi, si le champ &laquo;&nbsp;nom&nbsp;&raquo; n&#8217;est pas rempli, une alerte javascript (qui peut être modifiée par une alerte ajax, avec par exemple le plugin <a href="http://famspam.com/facebox/">facebox</a>) indiquera que le champ n&#8217;est pas rempli.</p>
<p style="text-align: justify;">Il ne faut pas oublier d&#8217;appeler cette fonction dans la balise &lt;form&gt; : onsubmit=&nbsp;&raquo;return VerifForm();&nbsp;&raquo;</p>
<p style="text-align: justify;">Cette fonction est basique et doit être améliorée pour prendre en compte d&#8217;autres éléments de formulaire tels que les cases checkbox, les boutons radio, etc. De plus, il serait judicieux de définir des classes différentes pour contrôler les adresses email, les numéros de téléphone, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
