<?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>La Geek Attitude &#187; WebDev&#8217;</title>
	<atom:link href="http://blog.kevingomez.fr/tag/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kevingomez.fr</link>
	<description>Et vous, vous l'avez ?</description>
	<lastBuildDate>Sun, 24 Apr 2011 07:56:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Réécrire et adapter le decorator &#171;&#160;login_required&#160;&#187; de Django</title>
		<link>http://blog.kevingomez.fr/2009/03/11/reecrire-et-adapter-le-decorator-login_required-de-django/</link>
		<comments>http://blog.kevingomez.fr/2009/03/11/reecrire-et-adapter-le-decorator-login_required-de-django/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 19:44:06 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[WebDev']]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/?p=609</guid>
		<description><![CDATA[Hey la compagnie ! Pour mon dernier site web (coming soon &#8230;), j&#8217;ai décidé d&#8217;étendre mes connaissances en Python au développement web, et plus particulièrement à Django. Je ne m&#8217;étenderai pas sur ce choix, ce dernier n&#8217;étant fondé que sur des conseils d&#8217;utilisateurs de django (ceci dit je ne regrette pas du tout de les [...]]]></description>
			<content:encoded><![CDATA[<p>Hey la compagnie !</p>
<p><img class="alignright size-full wp-image-614" title="django-logo-negative-small" src="http://geek-attitude.fr.nf/wp-content/uploads/2009/03/django-logo-negative-small.png" alt="django-logo-negative-small" width="200" height="91" />Pour mon dernier site web (coming soon &#8230;), j&#8217;ai décidé d&#8217;étendre mes connaissances en Python au développement web, et plus particulièrement à Django. Je ne m&#8217;étenderai pas sur ce choix, ce dernier n&#8217;étant fondé que sur des conseils d&#8217;utilisateurs de django (ceci dit je ne regrette pas du tout de les avoir écoutés =D).</p>
<p>Parmi les &laquo;&nbsp;raccourcis&nbsp;&raquo; que met en place django, on retrouve le decorator &laquo;&nbsp;login_required&nbsp;&raquo; qui permet de restreindre l&#8217;accès à une vue aux utilisateurs authentifiés et de rediriger les autres vers la page de connexion. Sur le papier, c&#8217;était exactement ce qu&#8217;il me fallait. Mais en pratique, j&#8217;avais quelques améliorations à apporter =p</p>
<p>En effet, j&#8217;utilise dans tout le reste du site une fonction de redirection maison qui fait transiter le visiteur via une page dédiée à l&#8217;affichage d&#8217;un message explicitant la redirection (ex : &laquo;&nbsp;Vous devez être connecté pour voir cette page&nbsp;&raquo;, &laquo;&nbsp;Connexion réussie&nbsp;&raquo;, etc.). Mon but est donc de retrouver le même comportement avec le decorator de django, comportement qui est d&#8217;après mes recherches impossible d&#8217;obtenir &#8230;</p>
<p>Soit, je vais coder moi-même un decorator répondant à mes besoins <img src="./wp-includes/images/smilies/icon_cool.gif" alt=":cool:" /></p>
<pre class="brush: python; title: ; notranslate">
#-*- encoding:utf-8 -*-

from django.shortcuts import render_to_response

def if_logged_in(f, message='Vous devez être connecté pour pouvoir voir cette page.'):
    &quot;&quot;&quot; Décorator pour refuser l'accès à une page aux users non connectés &quot;&quot;&quot;

    def wrap(request, *args, **kwargs):
        if not request.user.is_authenticated():
            return redirection(request, '/connexion/', message)
        return f(request, *args, **kwargs)

    wrap.__doc__ = f.__doc__
    wrap.__name__ = f.__name__

    return wrap

def redirection(request, REDIR_URL, REDIR_MESSAGE='Erreur !', REDIR_TIME=4):
    &quot;&quot;&quot;
    Fonction permettant de rediriger un user
    les variables locales à la fonction pourront être utilisées dans le template
    &quot;&quot;&quot;

    return render_to_response('redirection.html', locals())
</pre>
<p>Pour ce qui est de l&#8217;utilisation, elle est identique à celle de n&#8217;importe quel decorator, y compris &laquo;&nbsp;login_required&nbsp;&raquo; <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Enjoy !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2009/03/11/reecrire-et-adapter-le-decorator-login_required-de-django/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MP3 Finder :: pour la V2 hip hip hip</title>
		<link>http://blog.kevingomez.fr/2008/05/17/mp3-finder-pour-la-v2-hip-hip-hip/</link>
		<comments>http://blog.kevingomez.fr/2008/05/17/mp3-finder-pour-la-v2-hip-hip-hip/#comments</comments>
		<pubDate>Sat, 17 May 2008 14:58:30 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[WebDev']]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[moteur de recherche]]></category>
		<category><![CDATA[MP3]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/?p=471</guid>
		<description><![CDATA[Bien que la V2 (bêta) du MP3 Finder soit en ligne depuis quelques semaines maintenant, je me décide enfin à en parler sur mon blog Parmi les nouveautés coté utilisateur (je vous parle même pas des changements dans le code et sa structure ) : un nouveau design, libre et créé par Arcsin un espace [...]]]></description>
			<content:encoded><![CDATA[<p>Bien que la V2 (bêta) du <a href="http://mp3-search.fr.nf/">MP3 Finder</a> soit en ligne depuis quelques semaines maintenant, je me décide enfin à en parler sur mon blog <img onclick="grin('mdr:');" src="http://geek-attitude.fr.nf/wp-includes/images/smilies/mdr.gif" alt="mdr:" /></p>
<p>Parmi les nouveautés coté utilisateur (je vous parle même pas des changements dans le code et sa structure <img onclick="grin(':-)');" src="http://geek-attitude.fr.nf/wp-includes/images/smilies/whistle.gif" alt=":-)" /> ) :</p>
<ul>
<li>un nouveau design, libre et créé par <a href="http://arcsin.se/">Arcsin</a></li>
<li>un espace membre</li>
<li>la possibilité de sauvegarder des chansons ou répertoires que vous aimez (les favoris)</li>
<li>la possibilité de créer des playlists avec vos chansons favorites</li>
<li>le partage de favoris</li>
<li>les nouvelles options de recherche (musique, torrents et archives)</li>
</ul>
<p>J&#8217;ajouterai même que le <a href="http://mp3-search.fr.nf/">MP3 Finder</a> compte au moment où j&#8217;écris ces quelques lignes pas moins de 34361 recherches totales, pour 2800 (tout pile !) mots-clés différents <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Conclusion :: bien que le <a href="http://mp3-search.fr.nf/">MP3 Finder</a> soit loin d&#8217;être terminé (toujours en version bêta), je suis assez content de moi <img onclick="grin('xD');" src="http://geek-attitude.fr.nf/wp-includes/images/smilies/he.gif" alt="xD" /></p>
<p>P.S : n&#8217;hésitez pas à vous inscrire et à me dire ce que vous aimeriez voir ajouté/modifié/enlevé sur le <a href="http://mp3-search.fr.nf/">MP3 Finder</a> <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2008/05/17/mp3-finder-pour-la-v2-hip-hip-hip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Air : Introduction et Installation</title>
		<link>http://blog.kevingomez.fr/2008/04/08/air-introduction-et-installation/</link>
		<comments>http://blog.kevingomez.fr/2008/04/08/air-introduction-et-installation/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 19:31:16 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[WebDev']]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[tuto]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/2008/04/10/air-introduction-et-installation/</guid>
		<description><![CDATA[Le 25 février dernier, si ma mémoire est bonne, était officiellement lancée la version finale de AIR, ce fameux outil permettant la création d&#8217;applications de bureau basées sur des technologies web. Introduction En effet, AIR permet aux développeurs qui, comme moi, n&#8217;ont pas beaucoup de connaissances dans la programmation &#171;&#160;logicielle&#160;&#187; de pouvoir construire des applications [...]]]></description>
			<content:encoded><![CDATA[<p><img style="padding-right: 10px; float: left; margin: 0px 5px 0px 0px" src="http://www.fredcavazza.net/wp/wp-content/uploads/Q1-08/on_adobe_air_logo.jpg" alt="" /> Le 25 février dernier, si ma mémoire est bonne, était officiellement lancée la version finale de  AIR, ce fameux outil permettant la création d&#8217;applications de bureau basées sur des technologies web.</p>
<h3>Introduction</h3>
<p>En effet, AIR permet aux développeurs qui, comme moi, n&#8217;ont pas beaucoup de connaissances dans la programmation &laquo;&nbsp;logicielle&nbsp;&raquo; de pouvoir construire des applications de bureau grâce à des langages qu&#8217;ils maîtrisent : HTML/CSS, Javascript, Flash/Flex/ActionScript, etc…<br />
De plus, une fois votre programme compilé, l&#8217;exécutable obtenu tournera sans problème sur n&#8217;importe quel OS, la seule condition étant, évidemment, d&#8217;avoir installé AIR ainsi que son <a href="http://fr.wikipedia.org/wiki/Kit_de_d%C3%A9veloppement">SDK</a> (si vous comptez compiler vos programmes =p ).</p>
<p><span id="more-448"></span></p>
<h3>Installation</h3>
<p>Pour installer AIR lui-même, rien de plus simple. Il suffit de vous rendre sur <a href="http://get.adobe.com/air/">cette page du site d&#8217;Adobe</a>, et de télécharger la version qui correspond à votre système (officiellement, seules les versions Windows et Mac sont disponibles, la version Linux étant encore une version Alpha).</p>
<p>En ce qui concerne le SDK, élément indispensable au développement d&#8217;applications AIR puisqu&#8217;il s&#8217;occupe de la compilation de ces derniers, les choses sont un poil plus laborieuses &#8230;<br />
Je ne détaillerai ici que l&#8217;installation du SDK sous Windows, n&#8217;ayant pas testé la version Linux (encore en Alpha), et ne possédant pas de Mac =p</p>
<p>Tout d&#8217;abord, commençons par <a href="http://www.adobe.com/products/air/tools/sdk/">télécharger le SDK</a>, puis par <strong>dé-zipper le fichier</strong> ainsi obtenu.<br />
<strong>Remarque</strong> : je vous conseille fortement de <strong>placer le contenu de cette archive dans un dossier &laquo;&nbsp;<em>AIR</em>&laquo;&nbsp;</strong> (par exemple), et se trouvant <strong>à la racine de votre disque dur principal</strong> (il porte le plus souvent la lettre &laquo;&nbsp;<em>C</em>&laquo;&nbsp;). En effet, nous serons très bientôt amené à configurer la variable d&#8217;environnement <em>Path</em>, variable qui représente l&#8217;adresse de de votre SDK =)</p>
<p align="center"><a href="http://hosted.geek-attitude.fr.nf/AirIntroductionetInstallation_14D5C/screen_air_1.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://hosted.geek-attitude.fr.nf/AirIntroductionetInstallation_14D5C/screen_air_1_thumb.jpg" border="0" alt="screen_air_1" width="244" height="196" /></a></p>
<p>Passons maintenant à la configuration de cette fameuse variable d&#8217;environnement. Pour ce faire, il suffit de cliquer-droit sur &laquo;&nbsp;<em>Poste de travail</em>&laquo;&nbsp;, d&#8217;aller dans l&#8217;onglet &laquo;&nbsp;<em>Avancé</em>&laquo;&nbsp;, et de cliquer sur le bouton &laquo;&nbsp;<em>Variables d&#8217;environnement</em>&nbsp;&raquo; en bas de la fenêtre.<br />
Dans la liste des variables d&#8217;environnement, <strong>trouvez la variable &laquo;&nbsp;<em>Path</em>&laquo;&nbsp;</strong>, et cliquez sur <strong>&laquo;&nbsp;<em>Modifier</em>&laquo;&nbsp;.</strong><br />
Afin <strong>d&#8217;ajouter l&#8217;adresse du répertoire &laquo;&nbsp;<em>bin</em>&laquo;&nbsp;</strong> du SDK, il vous faut placer votre curseur <strong>à la fin du champ</strong> &laquo;&nbsp;<em>Valeur de la variable</em>&laquo;&nbsp;, <strong>d&#8217;entrer un <span style="text-decoration: underline;">point-virgule</span></strong>, ainsi que le <strong>chemin <span style="text-decoration: underline;">complet</span></strong> vers le répertoire &laquo;&nbsp;<em>bin</em>&nbsp;&raquo; (dans mon cas : &laquo;&nbsp;<em>C:\AIR\bin\</em>&laquo;&nbsp;). Pour que les changements soient pris en compte par Windows, vous devez <strong>redémarrer votre PC</strong>.</p>
<p align="center"><a href="http://hosted.geek-attitude.fr.nf/AirIntroductionetInstallation_14D5C/screen_air_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://hosted.geek-attitude.fr.nf/AirIntroductionetInstallation_14D5C/screen_air_2_thumb.jpg" border="0" alt="screen_air_2" width="244" height="196" /></a></p>
<p>Et maintenant, le moment de vérité, celui de la vérification du bon déroulement de l&#8217;installation :p Pour ceci, ouvrez un terminal MS-DOS ( &laquo;&nbsp;<em>Exécuter &#8230;&nbsp;&raquo;</em> -&gt; &laquo;&nbsp;<em>cmd</em>&nbsp;&raquo; ), puis entrez la commande &laquo;&nbsp;<em>adl</em>&laquo;&nbsp;.<br />
Si le terminal vous insulte ou vous dit que la commande n&#8217;est pas reconnue, bon courage, il ne vous reste plus qu&#8217;à relire ce tuto car vous avez sûrement dû faire une bourde quelque part <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Dans la cas contraire, vous serez impatient de lire le prochain billet traitant de AIR et d&#8217;y apprendre comment coder un programme (vous aurez même droit à un programme d&#8217;exemple : un client Twitter <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p>Enjoy !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2008/04/08/air-introduction-et-installation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cheat Sheets en vrac !</title>
		<link>http://blog.kevingomez.fr/2008/03/09/cheat-sheets-en-vrac/</link>
		<comments>http://blog.kevingomez.fr/2008/03/09/cheat-sheets-en-vrac/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 14:25:07 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[Geekeries]]></category>
		<category><![CDATA[WebDev']]></category>
		<category><![CDATA[cheat sheets]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/2008/03/09/cheat-sheets-en-vrac/</guid>
		<description><![CDATA[Les &#171;&#160;Cheat Sheets&#160;&#187;, ou littéralement &#171;&#160;feuilles de triche&#160;&#187;, sont très connues parmi les développeurs, et servent d&#8217;aide-mémoire lors des longues nuits passées à coder =) Au vu de mon âme généreuse et pleine de bonté, le fait que je partage avec vous quelques unes des cheat sheets que j&#8217;utilise ne vous étonnera pas j&#8217;espère Si [...]]]></description>
			<content:encoded><![CDATA[<p>Les &laquo;&nbsp;Cheat Sheets&nbsp;&raquo;, ou littéralement &laquo;&nbsp;feuilles de triche&nbsp;&raquo;, sont très connues parmi les développeurs, et servent d&#8217;aide-mémoire lors des longues nuits passées à coder =)</p>
<p>Au vu de mon âme généreuse et pleine de bonté, le fait que je partage avec vous quelques unes des cheat sheets que j&#8217;utilise ne vous étonnera pas j&#8217;espère <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Si vous êtes intéressé par une mini liste d&#8217;à peine 17 cheat sheets, alors ce billet est pour vous ! =D</p>
<p><span id="more-401"></span></p>
<h3>HTML</h3>
<p><a href="http://www.ilovejackdaniels.com/cheat-sheets/html-character-entities-cheat-sheet/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="4" src="http://hosted.geek-attitude.fr.nf/2008/03/4.jpg" width="104" height="104"></a>&nbsp; Tableau des entités HTML </p>
<p><a href="http://www.scottklarr.com/media/cheatsheets/html/16.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="16" src="http://hosted.geek-attitude.fr.nf/2008/03/16.jpg" width="104" height="104"></a> Balises usuelles</p>
<p><a href="http://floele.flyspray.org/htmlcheatsheet.pdf"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="2" src="http://hosted.geek-attitude.fr.nf/2008/03/2.jpg" width="104" height="104"></a></p>
<h3>CSS</h3>
<p><a href="http://www.infobulles.ch/share/webmaster/aide-memoire/aide-memoire_css_fr.pdf"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="1" src="http://hosted.geek-attitude.fr.nf/2008/03/1.jpg" width="104" height="104"></a> en français</p>
<h3>Javascript</h3>
<p><a href="http://www.ilovejackdaniels.com/cheat-sheets/javascript-cheat-sheet/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="js" src="http://hosted.geek-attitude.fr.nf/2008/03/js.jpg" width="104" height="104"></a> Généralités</p>
<p><a href="http://www.visibone.com/regular-expressions/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="13" src="http://hosted.geek-attitude.fr.nf/2008/03/13.jpg" width="104" height="104"></a> Expressions régulières</p>
<h3>jQuery</h3>
<p><a href="http://colorcharge.com/wp-content/uploads/2007/12/jquery12_colorcharge.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="9" src="http://hosted.geek-attitude.fr.nf/2008/03/9.jpg" width="104" height="104"></a> Méthodes</p>
<h3>Scriptaculous</h3>
<p><a href="http://www.slash7.com/cheats/scriptaculous_fx1.pdf"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="18" src="http://hosted.geek-attitude.fr.nf/2008/03/18.jpg" width="104" height="104"></a> Effets</p>
<h3>Prototype</h3>
<p><a href="http://www.snook.ca/archives/javascript/prototype_1_5_0_cheatsheet/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="20" src="http://hosted.geek-attitude.fr.nf/2008/03/20.jpg" width="104" height="104"></a></p>
<h3>MooTools</h3>
<p><a href="http://mediavrog.net/blog/2007/06/15/mootools/mootools-cheat-sheet/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="25" src="http://hosted.geek-attitude.fr.nf/2008/03/25.jpg" width="104" height="104"></a></p>
<h3>PHP</h3>
<p><a href="http://www.dreamincode.net/forums/showtopic35660.htm"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="5" src="http://hosted.geek-attitude.fr.nf/2008/03/51.jpg" width="104" height="104"></a> </p>
<p><a href="http://www.dreamincode.net/forums/showtopic39907.htm"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="5" src="http://hosted.geek-attitude.fr.nf/2008/03/51.jpg" width="104" height="104"></a></p>
<p><a href="http://www.phpguru.org/downloads/PCRE%20Cheat%20Sheet/PHP%20PCRE%20Cheat%20Sheet.pdf"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="12" src="http://hosted.geek-attitude.fr.nf/2008/03/12.jpg" width="104" height="104"></a> Expressions régulières</p>
<h3>MySQL</h3>
<p><a href="http://www.ilovejackdaniels.com/cheat-sheets/mysql-cheat-sheet/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="q" src="http://hosted.geek-attitude.fr.nf/2008/03/q.jpg" width="104" height="104"></a> </p>
<h3>Twitter</h3>
<p><a href="http://hosted.geek-attitude.fr.nf/2008/03/tweet-sheet-big.gif"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="tweet_sheet_big" src="http://hosted.geek-attitude.fr.nf/2008/03/tweet-sheet-big-thumb.gif" width="61" height="104"></a> Commandes usuelles</p>
<h3>Google</h3>
<p><a href="http://www.adelaider.com/google-cheat-sheet/?cheatsheet&amp;page=1"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="p1" src="http://hosted.geek-attitude.fr.nf/2008/03/p1.png" width="74" height="104"></a></p>
<p><a href="http://www.adelaider.com/google-cheat-sheet/?cheatsheet&amp;page=2"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="p2" src="http://hosted.geek-attitude.fr.nf/2008/03/p2.png" width="74" height="104"></a> </p>
<p>Enjoy ! =p</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2008/03/09/cheat-sheets-en-vrac/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Et une Class de g&#233;n&#233;ration de nuages de tags, une !</title>
		<link>http://blog.kevingomez.fr/2008/02/22/et-une-class-de-gnration-de-nuages-de-tags-une/</link>
		<comments>http://blog.kevingomez.fr/2008/02/22/et-une-class-de-gnration-de-nuages-de-tags-une/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 10:24:30 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[WebDev']]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[tag cloud]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/2008/02/22/et-une-class-de-gnration-de-nuages-de-tags-une/</guid>
		<description><![CDATA[Alors que certaines rumeurs sur la mort de la Geek Attitude parcourent en ce moment même la toile, je rétablis la vérité en clarifiant les choses : je ne suis pas mort, mais très occupé ! mdr: Je veux pour preuves l&#8217;avancée significative qu&#8217;a subit le dev&#8217; d&#8217;Inova, celui de la V2 du MP3 Finder, [...]]]></description>
			<content:encoded><![CDATA[<p>Alors que certaines rumeurs sur la mort de la Geek Attitude parcourent en ce moment même la toile, je rétablis la vérité en clarifiant les choses : je ne suis pas mort, mais très occupé ! mdr:</p>
<p>Je veux pour preuves l&#8217;avancée significative qu&#8217;a subit le dev&#8217; d&#8217;Inova, celui de la V2 du MP3 Finder, du site de présentation de mon TPE ( sarcastic: ), ainsi que la création de plusieurs class PHP, dont une class de génération de nuages de tags =D</p>
<p>Cette dernière permet, d&#8217;une manière très simple, d&#8217;ajouter des tags, et d&#8217;afficher juste après le tag cloud. Voici un code illustrant ce que je viens de dire :</p>
<p><code lang="php"><br />
//quoi de mieux qu'un exemple ? =)<br />
$tags = array(<br />
	'test', 'test', 'test', 'test', 'test',<br />
	'ajax', 'ajax', 'ajax',<br />
	'tt', 'jhk', 'jjjj', 'jjjj',<br />
	'yop' => 5, 'moi' => 10<br />
);</p>
<p>$tag_gen = new tags($tags);</p>
<p>$tag_gen->add_tags('mon_tag', 3);<br />
$tag_gen->add_tags(<br />
	array(<br />
		'mon_autre_tag', 'mon_autre_tag',<br />
		'mon_autre_tag', 'mon_autre_tag',<br />
		'youhou !'<br />
	)<br />
);<br />
echo $tag_gen->generate_tag_cloud();<br />
</code></p>
<p>Simple n&#8217;est-ce pas ? ^^</p>
<p>Comme d&#8217;habitude, vous pouvez <a href="http://geek-attitude.fr.nf/portfolio/projets/tags_cloud_generator.html" target="_blank">télécharger cette fameuse class sur le portfolio</a> :-°</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2008/02/22/et-une-class-de-gnration-de-nuages-de-tags-une/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Inova-Blog, ça avance !</title>
		<link>http://blog.kevingomez.fr/2007/08/29/inova-blog-ca-avance/</link>
		<comments>http://blog.kevingomez.fr/2007/08/29/inova-blog-ca-avance/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 10:55:11 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[WebDev']]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Inova]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/2007/08/29/inova-blog-ca-avance/</guid>
		<description><![CDATA[Je vous parlais il y a quelques temps d&#8217;un projet vieux de maintenant plus d&#8217;un an, qui avait été un peu laissé de côté au profit d&#8217;autres projets, mais qui maintenant revient sur le devant de la scène (bien plus que vous ne pouvez le penser :-°) : je veux bien évidemment parler de Inova-Blog [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous parlais il y a quelques temps d&#8217;un projet vieux de maintenant plus d&#8217;un an, qui avait été un peu laissé de côté au profit d&#8217;autres projets, mais qui maintenant revient sur le devant de la scène (bien plus que vous ne pouvez le penser :-°) : je veux bien évidemment parler de <a href="http://geek-attitude.fr.nf/2007/06/24/inova-blog-bientot-une-nouvelle-version/">Inova-Blog</a> !</p>
<p>J&#8217;annonçais dans mon billet que le code source avait été refait, ce qui était vrai. Mais ayant quelque peu progressé en PHP depuis, il a encore été refait  mdr:</p>
<p>Un nouveau système de template a été codé (bien plus rapide que l&#8217;ancien), la gestion des plugins est maintenant implémentée, la création de pages à la volée est aussi de la partie, etc &#8230;</p>
<p>Je suis d&#8217;ailleurs en ce moment même en train d&#8217;implémenter une autre fonction, et pas des moins utile : les trackbacks  <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Donc qui sait, une version alpha sera peut-être disponible dans les prochains mois, voire même dans les prochaines semaines (tout dépend de la masse de devoirs que j&#8217;aurais en fait  xD )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2007/08/29/inova-blog-ca-avance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Un antispam en CSS : simple et efficace</title>
		<link>http://blog.kevingomez.fr/2007/07/25/un-antispam-en-css-simple-et-efficace/</link>
		<comments>http://blog.kevingomez.fr/2007/07/25/un-antispam-en-css-simple-et-efficace/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 14:31:26 +0000</pubDate>
		<dc:creator>Kévin G.</dc:creator>
				<category><![CDATA[WebDev']]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://geek-attitude.fr.nf/2007/07/25/un-antispam-en-css-simple-et-efficace/</guid>
		<description><![CDATA[C&#8217;est la hantise de tous les bloggeurs, forumeurs, et autres agents du web, je veux bien sûr parler dur spam ! C&#8217;est toujours sacrément frustrant d&#8217;installer tout un tas d&#8217;antispam différents pour lutter contre ce fléau, et de s&#8217;apercevoir qu&#8217;ils ne marchent pas, ou pas entièrement. Et quand on tombe enfin sur un système qui [...]]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est la hantise de tous les bloggeurs, forumeurs, et autres agents du web, je veux bien sûr parler dur spam !<br />
C&#8217;est toujours sacrément frustrant d&#8217;installer tout un tas d&#8217;antispam différents pour lutter contre ce fléau, et de s&#8217;apercevoir qu&#8217;ils ne marchent pas, ou pas entièrement.<br />
Et quand on tombe enfin sur un système qui marche, il devient obsolète et est cassé par les bots deux mois après l&#8217;avoir installé !</p>
<p>Il y a heureusement des exceptions. Akismet est par exemple très performant, bien qu&#8217;il laisse passer quelques billets indésirables. Mais son code a l&#8217;inconvénient d&#8217;être incompréhensible par le commun des mortels, ce qu&#8217;il le rend difficile à améliorer soi-même (j&#8217;adore trifouiller les systèmes que j&#8217;utilise  :jap: )</p>
<p>Partant du principe qu&#8217;une simple ruse est souvent  la meilleure des défenses, j&#8217;ai décidé de vous retranscrire le contenu <a href="http://www.modernbluedesign.com/web-design-blog/fighting-spam-with-css/">du billet montrant comment combattre le spam grâce au CSS</a></p>
<p>On sait que pour parvenir à leurs fins, les bots (ou robots) remplissent tous les champs présents dans un formulaire, histoire d&#8217;être certain que ce dernier sera traité. Pour repérer un bot, il nous suffira donc d&#8217;ajouter un champ vide par défaut (que l&#8217;on appellera ici &laquo;&nbsp;info&nbsp;&raquo;), puis de le cacher via un attribut CSS.<br />
Si le champ info est vide, alors l&#8217;utilisateur n&#8217;est pas un robot, si il a été rempli, c&#8217;est certainement qu&#8217;un vilain bot est venu vous spammer.</p>
<p>Passons maintenant à la réalisation du piège à bot  diable:<br />
Tout d&#8217;abord,  le formulaire :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;mapage.php&quot; method=&quot;post&quot;&gt; &lt;label for=&quot;pseudo&quot;&gt;Pseudo: &lt;/label&gt;

&lt;input id=&quot;pseudo&quot; name=&quot;pseudo&quot; type=&quot;text&quot; /&gt; &lt;label for=&quot;mail&quot;&gt;Email: &lt;/label&gt;

&lt;input id=&quot;mail&quot; name=&quot;mail&quot; type=&quot;text&quot; /&gt; &lt;label for=&quot;text&quot;&gt;Comment: &lt;/label&gt;

&lt;input id=&quot;text&quot; name=&quot;reaction&quot; type=&quot;text&quot; /&gt; &lt;input class=&quot;input&quot; name=&quot;info&quot; type=&quot;text&quot; /&gt; &lt;input type=&quot;submit&quot; value=&quot;Envoyer&quot; /&gt; &lt;/form&gt;
</pre>
<p>Vous noterez l&#8217;attribution de la class &laquo;&nbsp;input&nbsp;&raquo; à notre champ anti-bot. Cela nous permettra de ne cacher que ce champ grâce au seul code CSS qui suit :</p>
<pre class="brush: css; title: ; notranslate">
.input {
    display: none;
}
</pre>
<p>Cette simple instruction va cacher le champ, mais il restera visible dans la source de la page. Le robot, qui ne voit que la source, tombera dans la panneau et remplira le champ : il sera piégé !</p>
<p>Maintenant, voyons la partie traitement du formulaire :</p>
<pre class="brush: php; title: ; notranslate">
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(empty($_POST['info']))
    {
        //on continue le traitement du formulaire
    }
    else
    {
        //bot signalé
        die('A bas les bots !! Mouahahaha !!!!!');
    }
}
else
{
    die('Non mais tu veux faire quoi sur cette page ?');
}
</pre>
<p>Et voilà, le tour est joué et vos problème de spam envolés  <img src='http://blog.kevingomez.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Simple n&#8217;est-ce pas ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kevingomez.fr/2007/07/25/un-antispam-en-css-simple-et-efficace/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

