<?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>Ze Technology &#187; Tutoriaux</title>
	<atom:link href="http://www.ze-technology.com/category/tutoriaux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ze-technology.com</link>
	<description>Ze Blog qui parle de Ze Technology. Univers du libre, programmation, société, business...</description>
	<lastBuildDate>Sat, 17 Dec 2011 08:35:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Lister des fichiers en python&#8230; avec les fonctions POSIX !</title>
		<link>http://www.ze-technology.com/2010/12/17/lister-des-fichiers-en-python-avec-les-fonctions-posix/</link>
		<comments>http://www.ze-technology.com/2010/12/17/lister-des-fichiers-en-python-avec-les-fonctions-posix/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 20:37:47 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=711</guid>
		<description><![CDATA[Je me suis mis depuis quelques mois à Python. Il y a énormément de choses très appréciables dans le langage et sa logique. À vrai dire, plus le temps passe, et moins je lui trouve de points faibles. Sûrement le début d&#8217;une longue série d&#8217;articles, de tous niveaux. Mais en attendant, je vais ici relater [...]]]></description>
			<content:encoded><![CDATA[<p>Je me suis mis depuis quelques mois à Python. Il y a énormément de choses très appréciables dans le langage et sa logique. À vrai dire, plus le temps passe, et moins je lui trouve de points faibles. Sûrement le début d&#8217;une longue série d&#8217;articles, de tous niveaux.</p>
<p>Mais en attendant, je vais ici relater mon premier bout de code un petit peu &laquo;&nbsp;tricky&nbsp;&raquo;. Python propose un lot de méthodes pour accéder aux répertoires/fichiers : os.listdir, walk&#8230;  Mais ces méthodes ont le défaut de retourner une liste construite des éléments. Du coup, lorsque le temps de traitement devient critique, on aimerait bien pouvoir itérer directement sur les descripteurs de fichiers sans attendre une liste de potentiellement 10 000 éléments. Bref, la possibilité d&#8217;accéder aux fonctions Posix <span style="font-family: courier">opendir()</span> et <span style="font-family: courier">readdir()</span>.</p>
<p>Le soucis ? Python ne propose pas ces fonctions. Mais il y a la possibilité d&#8217;accéder à des API du langage C, et dans un environnement Unix, on y retrouve nos chères fonctions si convoitées ! Après avoir étudié cette piste, voilà un snippet fort utile :</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/python
from ctypes import CDLL, c_char_p, c_int, c_long, c_ushort, c_byte, c_char
from ctypes import Structure, POINTER
from ctypes.util import find_library

class c_dir(Structure):
    &quot;&quot;&quot; Defined C struct DIR &quot;&quot;&quot;
    pass

class c_dirent(Structure):
    &quot;&quot;&quot; Directory entry structure equivalent &quot;&quot;&quot;
    _fields_ = (
        ('d_ino', c_long),  # inode number
        ('d_off', c_long),  # offset to the next dirent
        ('d_reclen', c_ushort), # length of this record
        ('d_type', c_byte),  # type of files; os specific
        ('d_name', c_char * 4096) # filename
        )

c_dirent_p = POINTER(c_dirent)
c_dir_p = POINTER(c_dir)
c_lib = CDLL(find_library(&quot;c&quot;))

opendir = c_lib.opendir
opendir.argtypes = [c_char_p]
opendir.restype = c_dir_p

readdir = c_lib.readdir_r
readdir.argtypes = [c_dir_p]
readdir.restype = c_dirent_p

closedir = c_lib.closedir
closedir.argtypes = [c_dir_p]
closedir.restype = c_int

def listdir(path):
    &quot;&quot;&quot;
    A generator to return the names of files in the directory passed in
    &quot;&quot;&quot;
    dir_p = opendir(&quot;.&quot;)
    try:
        while True:
            p = readdir(dir_p)
            if not p:
                break
            yield p.contents.d_name
    finally:
        closedir(dir_p)
</pre>
<p>Attention, <span style="font-family: courier">listdir()</span> retournera les répertoires &laquo;&nbsp;.&nbsp;&raquo; et &laquo;&nbsp;..&nbsp;&raquo; ! Notez l&#8217;utilisation du <span style="font-family: courier">yield</span> pour définir ici un générateur (sujet d&#8217;un autre article). De ce fait, notre fonction s&#8217;utilise comme cela :</p>
<pre class="brush: python; title: ; notranslate">
if __name__ == &quot;__main__&quot;:
    for name in listdir(&quot;.&quot;):
        print name
</pre>
<p>En espérant que ça puisse servir à quelqu&#8217;un d&#8217;autre&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/12/17/lister-des-fichiers-en-python-avec-les-fonctions-posix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développer plus efficacement avec XDebug</title>
		<link>http://www.ze-technology.com/2009/09/03/developper-plus-efficacement-avec-xdebug/</link>
		<comments>http://www.ze-technology.com/2009/09/03/developper-plus-efficacement-avec-xdebug/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 06:41:15 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=199</guid>
		<description><![CDATA[Comme promis, je vous fais part sur Ze-Technology d&#8217;un article que j&#8217;ai eu l&#8217;occasion d&#8217;écrire il y a un an de ça, paru dans le magazine PHP Solutions. Cet article est lié à l&#8217;utilisation de la bibliothèque XDebug afin de développer plus efficacement en PHP. Au programme : configuration de l&#8217;IDE, debugging, profiling. Pour ceux [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ze-technology.com/wp-content/uploads/2009/09/Image-5.png"><img class="aligncenter size-full wp-image-205" title="Développer plus efficacement" src="http://www.ze-technology.com/wp-content/uploads/2009/09/Image-5.png" alt="Développer plus efficacement" width="530" height="145" /></a></p>
<p>Comme promis, je vous fais part sur Ze-Technology d&#8217;un article que j&#8217;ai eu l&#8217;occasion d&#8217;écrire il y a un an de ça, paru dans le magazine PHP Solutions. Cet article est lié à l&#8217;utilisation de la bibliothèque <a href="http://www.xdebug.org/"><em>XDebug</em></a> afin de développer plus efficacement en <em>PHP</em>.</p>
<p>Au programme : configuration de l&#8217;IDE, debugging, profiling. Pour ceux qui utilisent encore des <strong><span style="font-family: courier">echo</span></strong> à tout bout de champs&#8230;</p>
<p><a href="http://www.ze-technology.com/wp-content/uploads/2009/09/developper_plus_efficacement.pdf"><img class="alignleft size-full wp-image-204" title="Télécharger un document" src="http://www.ze-technology.com/wp-content/uploads/2009/09/telecharger.png" alt="Télécharger un document" width="200" height="50" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/03/developper-plus-efficacement-avec-xdebug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Les slides des conférences &#171;&#160;symfony live&#160;&#187;</title>
		<link>http://www.ze-technology.com/2009/06/14/les-slides-des-conferences-symfony-live/</link>
		<comments>http://www.ze-technology.com/2009/06/14/les-slides-des-conferences-symfony-live/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 18:32:10 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Ressource]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=64</guid>
		<description><![CDATA[Et oui, encore et toujours du symfony. Que voulez-vous, ce framework déjà bien avancé et encore très prometteur possède une bonne actualité. Les conférences du premier jour Les conférences du deuxième jour Les slides présentés sont disponibles, une bonne occasion pour les absents comme pour les absents de retracer ce qui a été abordé. Au [...]]]></description>
			<content:encoded><![CDATA[<p>Et oui, encore et toujours du <a href="http://symfony-project.com">symfony</a>. Que voulez-vous, ce framework déjà bien avancé et encore très prometteur possède une bonne actualité.</p>
<ul>
<li><a href="http://www.symfony-project.org/blog/2009/06/11/the-first-day-of-symfony-live-paris-2009">Les conférences du premier jour</a></li>
<li><a href="http://www.symfony-project.org/blog/2009/06/12/the-second-day-of-the-symfony-live-conference-paris-2009">Les conférences du deuxième jour</a></li>
</ul>
<p>Les slides présentés sont disponibles, une bonne occasion pour les absents comme pour les absents de retracer ce qui a été abordé. Au programme, pas mal de sujets, dont les tests unitaires et fonctionnels, déjà abordés au sein de ZT. On y retrouve également l&#8217;avenir avec<strong> <a href="http://symfony-project.com">symfony</a> 2</strong> (qui s&#8217;écrit dorénavant avec une majuscule), des <strong>bonnes pratiques</strong>, ou le retour d&#8217;expérience très formatteur de <strong>Dailymotion</strong>. Et ce n&#8217;est pas tout, je vous invite à vous  rendre directement sur les liens ci-dessus pour profiter de ces précieuses ressources.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/14/les-slides-des-conferences-symfony-live/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tooltips faciles avec BoxOver</title>
		<link>http://www.ze-technology.com/2009/05/04/tooltips-faciles-avec-boxover/</link>
		<comments>http://www.ze-technology.com/2009/05/04/tooltips-faciles-avec-boxover/#comments</comments>
		<pubDate>Mon, 04 May 2009 10:29:00 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://adrien.frenchcomp.net/blog/?p=18</guid>
		<description><![CDATA[Il peut être utile de proposer au sein d&#8217;une application web des petites bulles d&#8217;aides permettant de donner des indications à l&#8217;utilisateur, sans forcément surcharger inutilement la page. J&#8217;ai disposé quelques tooltips au sein de Piwam, pour venir expliquer le fonctionnement de certains champs de formulaire. Il y a plein de manières de faire, avec [...]]]></description>
			<content:encoded><![CDATA[<p>Il peut être utile de proposer au sein d&#8217;une application web des petites bulles d&#8217;aides permettant de donner des indications à l&#8217;utilisateur, sans forcément surcharger inutilement la page. J&#8217;ai disposé quelques <span style="font-style: italic;">tooltips</span> au sein de <a href="http://ze-technology.blogspot.com/search/label/piwam"><a href="http://www.piwam.org">Piwam</a></a>, pour venir expliquer le fonctionnement de certains champs de formulaire.</p>
<p><a href="http://1.bp.blogspot.com/_usAVPNOHnaM/Sf7A2q_ergI/AAAAAAAAABI/FdS90SS5SwI/s1600-h/Image+2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 285px; height: 134px;" src="http://1.bp.blogspot.com/_usAVPNOHnaM/Sf7A2q_ergI/AAAAAAAAABI/FdS90SS5SwI/s400/Image+2.png" alt="" id="BLOGGER_PHOTO_ID_5331911054339255810" border="0" /></a><br />
Il y a plein de manières de faire, avec du Javascript plus ou moins complexe, avec les frameworks / bibliothèques <span style="font-style: italic;">Ajax</span> dernier cris&#8230; Mais la plupart du temps, inutile de se compliquer la vie.BoxOver fonctionne avec un seul fichier Javascript (12 ko) à inclure, et un poil de CSS. L&#8217;exploitation de <a href="http://ze-technology.blogspot.com/search/label/piwam">BoxOver</a> est on ne peut plus simpliste et se fait en HTML simple :</p>
<p>Pour afficher un point d&#8217;interrogation avec une bulle d&#8217;aide qui apparaît lorsque la souris passe dessus, cela nous donne :</p>
<pre class="code">&lt;a href="#" title="header=[titre de la bulle d'aide] body=[le contenu de la bulle d'aide]"&gt;?&lt;/a&gt;</pre>
<p>Facile n&#8217;est-ce pas ? Ce choix fait suite à un essai d&#8217;une <a href="http://hiddenpixels.com/javascript/tooltip-scripts/">grande liste</a> de solutions du genre. Je l&#8217;ai adopté et adapté pour en faire un <span style="font-style: italic;">helper</span> sous <span style="font-style: italic;"><a href="http://symfony-project.com">symfony</a></span> qui me permet de les disposer dans mes vues. <a href="http://boxover.swazz.org/">BoxOver</a> vous permet d&#8217;afficher des <span style="font-style: italic;">tooltips</span> sur tout type d&#8217;élément. <a href="http://boxover.swazz.org/">Le site de BoxOver</a>.
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1394095790770446638-4899987234243907473?l=ze-technology.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/05/04/tooltips-faciles-avec-boxover/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Le lien de la semaine #1</title>
		<link>http://www.ze-technology.com/2009/05/02/le-lien-de-la-semaine-1/</link>
		<comments>http://www.ze-technology.com/2009/05/02/le-lien-de-la-semaine-1/#comments</comments>
		<pubDate>Sat, 02 May 2009 07:37:00 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Graphisme]]></category>
		<category><![CDATA[Lien De La Semaine]]></category>
		<category><![CDATA[Ressource]]></category>
		<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://adrien.frenchcomp.net/blog/?p=11</guid>
		<description><![CDATA[Voici un nouveau concept qui m&#8217;aidera tant bien que mal à tenir ZT un minimum à jour. Chaque semaine, un site web sera mis en avant. Pour ses services, pour sa conception, sa nullité, sa marantitude, son graphisme, son contenu&#8230;. En essayant de ne pas tomber dans les sites ultra-connus qui n&#8217;ont nullement besoin de [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un nouveau concept qui m&#8217;aidera tant bien que mal à tenir <span style="font-weight: bold;">ZT</span> un minimum à jour. Chaque semaine, un site web sera mis en avant. Pour ses services, pour sa conception, sa nullité, sa marantitude, son graphisme, son contenu&#8230;. En essayant de ne pas tomber dans les sites ultra-connus qui n&#8217;ont nullement besoin de se faire connaître davantage. Cette semaine, faisons si vous les voulez bien le tour d&#8217;<a href="http://abduzeedo.com/">Abduzeedo</a>.</p>
<p><a href="http://abduzeedo.com/files/imagecache/Img_450x140/originals/wp_1024_48.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 620px; height: 200px;" src="http://abduzeedo.com/files/imagecache/Img_450x140/originals/wp_1024_48.jpg" alt="" border="0" /></a><br />
Un site web qu&#8217;il est bien pour les graphistes, les webdesigners, et dans une moindre mesure les photographes. On y retrouve 2 ressources fondamentales &#8211; et qui font tout le succès du site :</p>
<ul>
<li>Des <span style="font-style: italic;">tutoriaux</span> d&#8217;une prodigieuse qualité. Photoshop, Fireworks, Illustrator, photographie, techniques générales, vidéos&#8230; tout y passe, avec des rendus de très haute qualité.</p>
</li>
<li>Une rubrique <span style="font-style: italic;">daily inspiration</span>. Chaque jour, on a le droit a un cocktail de ressources (comprenez : site web, affiche, produit de consommation, photo&#8230;) potentiellement source d&#8217;inspiration. De quoi ne jamais tomber en manque de ressources !</li>
</ul>
<p>L&#8217;adresse de ce site au nom inretenable ? <a href="http://abduzeedo.com/">http://abduzeedo.com</a>.
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1394095790770446638-1970827068558860704?l=ze-technology.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/05/02/le-lien-de-la-semaine-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

