<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.creaone.fr/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Creaone.fr</title>
  <link>http://blog.creaone.fr/</link>
  <atom:link href="http://www.blog.creaone.fr/feed/rss2" rel="self" type="application/rss+xml"/>
  <description>L’expérience est une lanterne que l’on porte sur le dos et qui n’éclaire jamais que le chemin parcouru. Confucius</description>
  <language>fr</language>
  <pubDate>Thu, 19 Nov 2015 10:31:36 +0000</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>

  
  <item>
    <title>Chainer les requêtes Django</title>
    <link>http://blog.creaone.fr/post/2014/03/04/Chainer-les-requ%C3%AAtes-Django</link>
    <guid isPermaLink="false">urn:md5:fd28b21512af79173adc3ad74ee8a3b5</guid>
    <pubDate>Tue, 04 Mar 2014 11:59:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>django</category><category>manager</category><category>python</category><category>queryset</category>
    <description>    &lt;br /&gt;&lt;pre class=&quot;line-pre&quot;&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC1&quot;&gt;from datetime import datetime&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC2&quot;&gt;from django.db.models import Manager&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC3&quot;&gt;from django.db.models.query import QuerySet&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC5&quot;&gt;    class TodoMixin(object):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC6&quot;&gt;        def is_done(self):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC7&quot;&gt;            return self.filter(done=is_true))&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC8&quot;&gt;            #ecrire ici vos nouvelles méthodes&lt;br /&gt;        def order_by_user(self):&lt;br /&gt;            return self.order_by(user)&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC10&quot;&gt;    class  TodoQuerySet(QuerySet, TodoMixin):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC11&quot;&gt;        pass&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC13&quot;&gt;    class  TodoManager(Manager,  TodoMixin):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC14&quot;&gt;        def get_query_set(self):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC15&quot;&gt;            return TodoQuerySet(self.model, using=self._db)&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC17&quot;&gt;    class Todo(models.Model):&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC18&quot;&gt;        done = models.BooleanField()&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;file-chainer-les-requetes-django-LC19&quot;&gt;        objects = TodoManager()&lt;/div&gt;&lt;/pre&gt;
&lt;p&gt;L'implémentation permet de passer de :&lt;/p&gt;
&lt;pre&gt;Todo.objects.filter(done = True)&lt;/pre&gt;
&lt;p&gt;à&lt;/p&gt;
&lt;pre&gt;Todo.objects.is_done()&lt;/pre&gt;
&lt;p&gt;Très pratique côté template.&lt;/p&gt;
&lt;p&gt; Et il est possible de chainer de la facon suivante :&lt;/p&gt;
&lt;pre&gt;Todo.objects.is_done().order_by_user()&lt;/pre&gt;</description>

    

      </item>
  
  <item>
    <title>Terminal léger : Tilda + dvtm</title>
    <link>http://blog.creaone.fr/post/2013/01/21/Terminal-l%C3%A9ger-%3A-Tilda-dvtm</link>
    <guid isPermaLink="false">urn:md5:e8dadf5f100989f98da590e5fb5117d6</guid>
    <pubDate>Mon, 21 Jan 2013 22:53:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Linux Ubuntu</category>
        <category>console</category><category>debian</category><category>linux</category><category>puf</category><category>terminal</category><category>tilda</category>
    <description>Utilisant intialement Yakuake je viens de trouver le duo gagnant &lt;a hreflang=&quot;fr&quot; href=&quot;http://doc.ubuntu-fr.org/tilda&quot;&gt;Tilda&lt;/a&gt; et &lt;a href=&quot;http://www.brain-dump.org/projects/dvtm/&quot;&gt;dtvm&lt;/a&gt;. Contrairement à Yukuake les paquets à installer sont léger et ne contraint pas à installer des librairies dépendantes de l'environnement graphique KDE.    &lt;h1&gt;Installation&lt;/h1&gt;
&lt;ol&gt;&lt;li&gt;sudo apt-get install tilda dtvm&lt;/li&gt;
&lt;li&gt;ALT + F2  puis taper tilda&lt;/li&gt;
&lt;li&gt;Dans les préférences de Tilda choisir dvtm au chargement&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;DVTM&lt;/h1&gt;
&lt;p&gt;Pour créer une nouvelle fenêtre dvtm, utiliser le raccourci &lt;strong&gt;CTRL + G  puis C&lt;/strong&gt;.  Vous pouvez créer autant de fenêtre que vous désirez. Consulter la man page de dtvm pour découvrir les autres commandes. &lt;/p&gt;
&lt;p&gt;Via la souris il est possible de passer d'une fenêtre à l'autre. Si la séparation en fenêtre ne suffit pas &lt;strong&gt;CTRL + SHIFT + T&lt;/strong&gt; permet de créer un nouvel onglet dans Tilda.&lt;/p&gt;
&lt;p&gt;Amusez-vous bien.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.brain-dump.org/projects/dvtm/screenshot2.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.brain-dump.org/projects/dvtm/screenshot2.png&quot; width=&quot;600px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Alternative low cost à la Scie plongeante Festool TS55</title>
    <link>http://blog.creaone.fr/post/2012/11/12/Alternative-%C3%A0-la-Scie-plongeante-Festool-TS55</link>
    <guid isPermaLink="false">urn:md5:3602426239baab09cb5da14ca638f454</guid>
    <pubDate>Tue, 20 Nov 2012 10:16:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Bricolage</category>
        
    <description>&lt;p&gt;&lt;a href=&quot;http://blog.creaone.fr/public/1093506_1.jpg&quot; title=&quot;Scie Plongeante Scheppach CS55&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.1093506_1_s.jpg&quot; alt=&quot;Scie Plongeante Scheppach CS55&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Scie Plongeante Scheppach CS55, nov. 2012&quot; /&gt;&lt;/a&gt;Amateur, passionné de bricolage, vous avez sans doute croisé la scie plongeante Festool TS55. Elle vous semble idéale, seulement voilà, selon le modèle elle coûte entre 410€ et 575 €. Vous avez bien regardé la concurrence Dewalt DWS520KR , Mafell MT55CC  ou encore Bosh GKT55GCE, Makita SP6000K, tout ceci est encore bien cher. Après essai d'un modèle FESTO ancêtre Festool j'ai  pu terminer ma cuisine encastrée à l'aide d'une scie plongeante &lt;strong&gt;Scheppach CS55&lt;/strong&gt;. Je vous propose mon avis très personnel.&lt;/p&gt;    &lt;p&gt;Peu rassuré au départ, on peut trouver cette scie plongeante sous divers nom : &lt;strong&gt;Scheppach&lt;/strong&gt;, Kity, Woodstar, Redstone. Évidemment le prix varie selon l’appellation et le magasin. Pour ma part j'ai acquis cette machine chez &lt;a href=&quot;http://www.weldom.fr/weldom/scie-circulaire-plongeante-160mm-1200w.html&quot; hreflang=&quot;fr&quot;&gt;Weldom&lt;/a&gt; pour 139 € nue. De plus, en ce moment pour l'ouverture d'une carte (gratuite),  Weldom offre 10%&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.creaone.fr/public/kity.jpg&quot; title=&quot;Scie plongeante Kity&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.kity_t.jpg&quot; alt=&quot;Scie plongeante Kity&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://blog.creaone.fr/public/redstone.jpg&quot; title=&quot;Scie plongeante Redstone&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.redstone_t.jpg&quot; alt=&quot;Scie plongeante Redstone&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;La documentation jointe au produit est ridicule&lt;/strong&gt;. Tout y est mal expliqué, les illustrations contiennent des erreurs dans la numérotation des pièces. Le &lt;strong&gt;produit est réellement vendu nu&lt;/strong&gt;, Vous ne trouverez aucun accessoire à l'intérieur malgré les photos de l'emballage et les illustrations sur internet.&lt;/p&gt;


&lt;p&gt;Il existe plusieurs pack d'options nommé &amp;quot;Paquet d'accessoires&amp;quot; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paquet d'accessoires I : 2 colliers à vis, 1 entretoise, 1 dispositif anti-retour (butée) ( 39 €)&lt;/li&gt;
&lt;li&gt;Paquet  d'accesoires II : 1 dispositif anti-basculement (15 €) (non dispo chez Weldom), idéal pour la coupe d'angle&lt;/li&gt;
&lt;li&gt;Rail de guidage 1400 mm ( 50 € )&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Effectivement pour &lt;strong&gt;le produit complet on passe alors à environ 250 €.&lt;/strong&gt; Je trouve assez dommage de fournir le rail de guidage sans les serres joints, j'ai eu la bonne surprise de découvrir un rail sans accessoires. Il est toujours possible de placer des serre-joints classiques sur le rail, cela fonctionne très bien, mais c'est loin d'être pratique pour le passage du bloc moteur de la scie. Enfin 39 € pour deux serres joints et une entretoise pour prolonger avec un autre rail c'est assez cher. Après achat de cette option et après réflexion il est très facile de se confectionner un kit se rapprochant de Festool pour 25 €.
L'entretoise est une simple barre de métal, les serres joints sont remplaçables par des modèles à serrage à une main comme par exemple des &lt;a href=&quot;http://www.wolfcraft.fr/fr/produits/p/ehz_serre_joints_a_une_main/ehz_serre_joints_a_une_main/s/p/index.html&quot; hreflang=&quot;fr&quot;&gt;Wolfcraft&lt;/a&gt; . Si le temps me le permet et si vous êtes intéressés je ferais un autre article sur le sujet.&lt;/p&gt;


&lt;h2&gt;Qualité et réglages&lt;/h2&gt;

&lt;p&gt;Je ne suis pas expert du matériel, mais j'ai noté un léger jeu sur la table de la scie. Une fois posée sur le rail, un débattement est perceptible. Il y a des cales pour corriger le jeu mais cela me semble inefficace. Après déballage faire attention que tous les vis soient correctement serrés. La lame est une version 160 mm à 24 dents au carbure de tungstène. J'aurais préféré une version 48 dents pour une découpe plus précise surtout sur du mélaminé revêtu. Comptez environ 30 € pour une lame 48 dents de marque bosch. La descente de la lame est souple  comme pour le modèle Festo que j'ai testé. La nuissance sonore est identique, le casque est obligatoire surtout si l'exposition est prolongée. Le réglage de profondeur est aisée mais si encore une fois le serrage se fait sur une cale plastique peu convaincante. Je n'ai pas encore testé la coupe d'angle (45 ° max). La table de la scie est en aluminium, des encoches laissent supposer que d'autres fonctions de guidage sont possibles.&lt;/p&gt;


&lt;p&gt;Le rail seulement disponible en 1400 mm est en aluminium. On aurait aimé plusieurs version (800 mm, 2000mm etc) . Sur la partie inférieure des caoutchoucs sont collés. Les caoutchoucs  sont mal collés et un peu court dans mon cas. Lors de la première utilisation le joint caoutchouc qui déborde doit être découpé à l'aide de la scie. Ce procédé est identique à tous les rails de guidage. Pour comparaison, les joints fournis par Festool me semblent plus efficaces, car plus adhérents, même après 15 ans.&lt;/p&gt;


&lt;p&gt;J'ai volontairement présenté les points négatifs du produit, aussi il est étonnant de penser que ce produit est une bonne affaire. Bien au contraire, &lt;strong&gt;les découpes sont rapides, efficaces, les éclats sur la partie inférieure sont inexistants&lt;/strong&gt;, bien heureusement, et très faible sur la partie supérieure (changer la lame pour une 48 dents). La machine, malgré ses 5.5 kilos, se déplace aisément sur le rail. La qualité de finition et de réglage n'égale certes pas une festool, heureusement mais pensez bien que pour 250 € il est tout à fait possible de faire du bon travail avec cette machine.  Si vous n'êtes pas un professionnel mais que l'utilisation d'un rail de guidage vous semble un vrai plus, &lt;strong&gt;cette machine est très intéressante&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;Sécurité&lt;/h2&gt;

&lt;p&gt;Sur divers forums, on rappelle l'extraordinaire arrêt de la lame  en 1 sec sur le modèle Festool TS55 REBQ-Plus-FS. D'un point de vue général les scies plongeantes  semblent plus sûres car dès relâchement du levier, la lame remonte pour devenir invisible. Malgré cela, travaillez en prenant votre temps et assurez vous toujours d'avoir un espace de travail suffisant.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.creaone.fr/public/cuisine.jpg&quot; title=&quot;Cuisine&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.cuisine_m.jpg&quot; alt=&quot;Cuisine&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Cuisine, nov. 2012&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>En vrac</title>
    <link>http://blog.creaone.fr/post/2012/11/07/En-vrac</link>
    <guid isPermaLink="false">urn:md5:d28678f5e52d058b248a4c50fe0e9ab1</guid>
    <pubDate>Wed, 07 Nov 2012 03:09:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Liens</category>
        
    <description>    &lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=mQhIMFy-stM#!&quot; hreflang=&quot;en&quot;&gt;Explication vidéo en anglais du Gangnam Style&lt;/a&gt;  - Bouleversant&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.temesis.com/post/2012/10/15/Barometre-cac-40&quot;&gt;Baromètre qualité web des sites du CAC 40&lt;/a&gt; - Réaliser à l'aide d'Opquast Barometers. Test effectué sur plusieurs critères portant sur l'accessibilité, la performance, l'utilisabilité, le référencement.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.stevesouders.com/blog/2012/10/09/webperfdays-performance-tools/&quot; hreflang=&quot;en&quot;&gt;Outil Webperf&lt;/a&gt; - Listing assez intéressant des services et outils gravitant autour du concept de la webperf&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alsacreations.com/tuto/lire/1459-jquery-mobile-par-lexemple-la-kiwiparty.html&quot; hreflang=&quot;fr&quot;&gt;Turoriel JQueryMobile&lt;/a&gt; - Nicolas Hoffman&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.djangoproject.com/weblog/2012/oct/25/15-alpha-1/&quot; hreflang=&quot;en&quot;&gt;Sortie de Django 1.5 alpha 1&lt;/a&gt; - On se rapproche du support de python 3. La classe User sera enfin manipulable, quelques autres améliorations présentes dans &lt;a href=&quot;https://docs.djangoproject.com/en/dev/releases/1.5-alpha-1/&quot; hreflang=&quot;en&quot;&gt;la documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.fr.twitter.com/2012/10/les-bonnes-pratiques-pour-les.html&quot; hreflang=&quot;fr&quot;&gt;Les 4 bonnes pratiques Twitter&lt;/a&gt; - Orienté pour les journalistes, applicable par tous&lt;/li&gt;
&lt;/ul&gt;</description>

    

      </item>
  
  <item>
    <title>Avis livre : Css maintenables avec Sass et Compass</title>
    <link>http://blog.creaone.fr/post/2012/11/02/Avis-livre-%3A-Css-maintenables-avec-Sass-et-Compass</link>
    <guid isPermaLink="false">urn:md5:ad0b65cc89604ade21ac3b57725a836b</guid>
    <pubDate>Fri, 02 Nov 2012 02:48:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Livres</category>
        
    <description>&lt;p&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.41Qo18u09QL._SL500_AA300__s.jpg&quot; alt=&quot;CSS maintenables : Couverture du livre&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;CSS maintenables : Couverture du livre, nov. 2012&quot; /&gt;Dérouler du code CSS pour ne pas dire pisser du CSS,  ajouter quelques propriétés ici et là, surcharger une feuille de style, tout le monde sait faire ou presque. Si vous travaillez à plusieurs, reprenez le travail d'une précédente agence, ou travaillez seul sur un ancien projet vous êtes confronté au problème de maintenance des CSS : c'est inévitable. Vous suivez les normes du W3C, vous vous référez aux bonnes pratiques et pourtant rien ne semble plus pénible que d'intervenir sur votre feuille de style, pas de panique, c'est NORMAL.
Vous avez besoin de &lt;strong&gt;méthodes métiers, d'organisation, d'un process solide.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Je pense que le livre CSS Maintenables de Kaelig Deloumeau répond à ce besoin. Dans la critique suivante je vais tenter de donner mon avis sur cet ouvrage.&lt;/p&gt;    &lt;p&gt;Ce livre ne s'adresse pas à tout le monde, il est destiné principalement aux intégrateurs / développeurs à cinq pattes avec quelques bleus. Mieux vaut avoir été confronté aux css de 300ko pour comprendre toute l'importance du livre. Ce livre est bien dans l'air du temps puisque sans vraiment le dire on vous explique &lt;strong&gt;comment industrialiser vos développements et procédures de travail.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Le titre est un peu trompeur, on ne traite pas uniquement de Sass &amp;amp; Compass on parle également de méthode daisy, oocss, 960 grids et plus généralement de bonnes pratiques métiers. C'est donc plutôt CSS maintenables &amp;quot;procédures et outils&amp;quot;&lt;/p&gt;


&lt;p&gt;Le livre est simple à lire mais je reste avec l'idée qu'il y a beaucoup de répétitions &amp;gt; Exemple : Du code est présenté puis 10 pages plus loin replacé puis expliqué. Les points les plus intéressants sont les études de cas. Les exemples et les contre-exemples sont formidables. Autre reproche le concept de &amp;quot;framework&amp;quot; est assez mal expliqué, toutes les solutions présentées sont dans le même sac &amp;quot;framework&amp;quot; et il est évident que l'auteur a une grande préférence pour Sass &amp;amp; Compass. A la lecture il n'est pas aisé de comprendre l'intérêt/ différence de Sass et de Compass.&lt;/p&gt;


&lt;p&gt;Enfin, même si j'ai grandement apprécié l'ouvrage, il manque un approfondissement de Sass &amp;amp; Compass comme le titre le suggère, mais l'auteur  à prévu une &lt;a href=&quot;http://www.kaelig.fr/bettersassdocs/&quot; hreflang=&quot;fr&quot; title=&quot;Documentation sass en anglais&quot;&gt;documentation en ligne&lt;/a&gt;.&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Comparatif web performance des candidats 2012 - les images</title>
    <link>http://blog.creaone.fr/post/2012/03/09/Comparatif-web-performance-des-candidats-2012-images</link>
    <guid isPermaLink="false">urn:md5:3fbc27f9514a3af76fc1da8b1db55325</guid>
    <pubDate>Wed, 28 Mar 2012 10:57:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>benchmark</category><category>candidats 2012</category><category>comparatif</category><category>performance</category><category>webperf</category>
    <description>Bien que tous les candidats souhaitent s'adresser au plus grand nombre de citoyens, voyons voir si leur site web le leur permet vraiment. Ici je propose de vous focaliser sur la partie &amp;quot;images&amp;quot;. Si vous voulez comprendre brièvement les différentes étapes de la web performance &lt;a href=&quot;http://blog.creaone.fr/post/2012/02/21/Comparatif-web-performance-des-candidats-2012-prelude&quot;&gt;l'article &amp;quot;prélude&amp;quot;&lt;/a&gt; est pour vous.&lt;br /&gt;    &lt;h2&gt;Le protocole&lt;/h2&gt;
&lt;p&gt;
Tous les résultats sont issus de l'extraction des images de la page d'accueil des candidats 2012, le 10 mars 2012.
&lt;/p&gt;
&lt;p&gt;Les images retenues sont au formats PNG, GIF et JPG.
&lt;/p&gt;
&lt;p&gt;
L'outil d'extraction utilisé est l'extension &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/image-picker/&quot; lang=&quot;en&quot;&gt;Image Picker 1.0&lt;/a&gt; pour Firefox. Le logiciel d'optimisation utilisé est &lt;a href=&quot;http://imageoptim.com/&quot; lang=&quot;en&quot;&gt;ImageOptim pour MacOs&lt;/a&gt;. Tous les optimisations effectuées sont automatiques.
&lt;/p&gt;
&lt;h2&gt;Les données brutes&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;td&gt;Candidats&lt;/td&gt;
&lt;td&gt;Nombre d'image&lt;/td&gt;
&lt;td&gt;Avant optimisation&lt;/td&gt;
&lt;td&gt;Après optimisation&lt;/td&gt;
&lt;td&gt;Gain en &lt;acronym title=&quot;Kilo octet&quot;&gt;Ko&lt;/acronym&gt;&lt;/td&gt;
&lt;td&gt;Ratio poids/images&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Arthaud&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;1074 ko&lt;/td&gt;
&lt;td&gt;637 ko&lt;/td&gt;
&lt;td&gt;437 ko&lt;/td&gt;
&lt;td&gt;30 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bayrou&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;2706 ko&lt;/td&gt;
&lt;td&gt;2233 ko&lt;/td&gt;
&lt;td&gt;473 ko&lt;/td&gt;
&lt;td&gt;34 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cheminade&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;391 ko&lt;/td&gt;
&lt;td&gt;382 ko&lt;/td&gt;
&lt;td&gt;9 ko&lt;/td&gt;
&lt;td&gt;20 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dupont&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;467 ko&lt;/td&gt;
&lt;td&gt;427 ko&lt;/td&gt;
&lt;td&gt;40 ko&lt;/td&gt;
&lt;td&gt;22 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eva Joly&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;1129 ko&lt;/td&gt;
&lt;td&gt;994 ko&lt;/td&gt;
&lt;td&gt;135 ko&lt;/td&gt;
&lt;td&gt;34 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hollande&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;3834 ko&lt;/td&gt;
&lt;td&gt;288 ko&lt;/td&gt;
&lt;td&gt;3548 ko&lt;/td&gt;
&lt;td&gt;7 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lepage&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;563 ko&lt;/td&gt;
&lt;td&gt;430 ko&lt;/td&gt;
&lt;td&gt;133 ko&lt;/td&gt;
&lt;td&gt;14 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Le Pen&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;1437 ko&lt;/td&gt;
&lt;td&gt;1322 ko&lt;/td&gt;
&lt;td&gt;115 ko&lt;/td&gt;
&lt;td&gt;34 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Melenchon&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;804 ko&lt;/td&gt;
&lt;td&gt;666 ko&lt;/td&gt;
&lt;td&gt;138 ko&lt;/td&gt;
&lt;td&gt;12 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Poutou&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;849 ko&lt;/td&gt;
&lt;td&gt;720 ko&lt;/td&gt;
&lt;td&gt;129 ko&lt;/td&gt;
&lt;td&gt;12 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sarkozy&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;901 ko&lt;/td&gt;
&lt;td&gt;846 ko&lt;/td&gt;
&lt;td&gt;55 ko&lt;/td&gt;
&lt;td&gt;23 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Villepin&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;4323 ko&lt;/td&gt;
&lt;td&gt;3336 ko&lt;/td&gt;
&lt;td&gt;987 ko&lt;/td&gt;
&lt;td&gt;73 ko&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Au vue &lt;a href=&quot;http://www.slideshare.net/SergeyChernyshev/image-optimization-pipeline&quot;&gt;des statistiques 2011&lt;/a&gt; il apparait que le poids total moyen des images pour un site est de &lt;strong&gt;600ko pour 75 éléments&lt;/strong&gt;. Ce qui nous donne un &lt;strong&gt;ratio 8ko / image&lt;/strong&gt;. Je ne connais pas l'écart type mais cela donne déjà une idée pour faire vos propres comparaisons.&lt;/p&gt;
&lt;h2&gt;Analyse&lt;/h2&gt;
&lt;h3&gt;Avant Optimisation automatique&lt;/h3&gt;
&lt;p&gt;
Pour être raccord avec le monde politique, &lt;strong&gt;carton rouge pour le candidat François Hollande&lt;/strong&gt;, l'optimisation est tout simplement ahurissante. En regardant de plus près on s'aperçoit que &lt;strong&gt;deux images .png de 18 px x 53px sont à l'origine de 3.6 Mo&lt;/strong&gt;. Je ne sais pas quel logiciel est utilisé pour générer ceci. Il est fort probable que les serveurs du candidat soient dimensionnés pour envoyer une grande quantité d'informations, mais imaginez un seul instant une connexion depuis un modem 56ko. En plus, c'est du gachis. Pour information &lt;strong&gt;après optimisation on passe de 3.6 Mo à 1.4 ko
&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
Parmis les ogres, nous retrouvons le site de François Baryrou avec 2.7mo, Arthaud avec 1mo, Le Pen avec 1.4mo, Eva Joly avec 1.1mo et enfin  Villepin avec 4.3 mo de données images. Pour revenir aux statistiques globale de 600ko au mieux c'est deux fois plus que la moyenne mondiale au pire sept fois plus.
&lt;/p&gt;
&lt;h3&gt;Après optimisation automatique&lt;/h3&gt;
&lt;h4&gt;Les gains&lt;/h4&gt;
&lt;p&gt;
Enorme surprise, un des pires devient le meilleur. Le site de François Hollande réalise un énorme gain avec 3.5 mo économisés. Hormis Cheminade tous les candidats peuvent profiter largement de cette optimisation qui prend 10 minutes.
&lt;strong&gt;Le top 4 des meilleurs gains et donc des mauvais élèves:&lt;/strong&gt; Hollande, Villepin, Bayrou, Arthaud
&lt;/p&gt;
&lt;h4&gt;Les ratios après optimisations&lt;/h4&gt;
&lt;p&gt;
Pour Hollande, le ratio tombe à 7ko par image. C'est le seul candidat capable d'accrocher la moyenne mondiale. Ensuite dans les bons résultats, on retrouve Melenchon, Poutou et Lepage.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Mais que nous indique le ratio ?&lt;/strong&gt; &lt;br /&gt;
Au vue des résultats on s'aperçoit que malgré les optimisations jpg, png &amp;quot;simples&amp;quot; certains ratios indiquent que des efforts supplémentaires peuvent être faits, notamment sur le choix de résolution/qualité des jpg. Villepin apparait ici avec le plus mauvais ratio : 73ko par image.
&lt;/p&gt;
&lt;h3&gt;Les &amp;quot;bons&amp;quot; candidats&lt;/h3&gt;
&lt;p&gt;
La réponse est malheureusement aucun, tous peuvent faire plus d'efforts sur la réduction du poids de leurs images. La taille des images a un inpact important mais le nombre d'images aussi. Pour le bien être de tous les utilisateurs il semble raisonnable de limiter le nombre d'images à une soixantaine. Si malgré cela vous devez afficher un nombre important d'images au format jpeg vous pouvez utiliser la version &amp;quot;progressif&amp;quot; voir fournir une image réduite et charger la vraie image plus tard. Vous allez augmenter le poids de votre page mais accélerer le rendu. (A tester au cas par cas)
&lt;/p&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;em&gt;
Via wget impossible de limiter les images à la page d'accueil tout en récupérant les images utilisées dans le css, si vous avez une solution élégante je suis preneur.
&lt;/em&gt;</description>

    

      </item>
  
  <item>
    <title>Comparatif web performance des candidats 2012 - Prélude</title>
    <link>http://blog.creaone.fr/post/2012/02/21/Comparatif-web-performance-des-candidats-2012-prelude</link>
    <guid isPermaLink="false">urn:md5:c9d38c7f9228f9e32ac823d201bb9efc</guid>
    <pubDate>Tue, 27 Mar 2012 23:48:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>candidats</category><category>performance</category><category>webperf</category>
    <description>&lt;img title=&quot;Drapeau français, mar. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Drapeau français&quot; src=&quot;http://blog.creaone.fr/public/779945_flag_french.jpg&quot; /&gt;Prenant une place de plus en plus importante, nouveau critère inpactant le référencement, la web performance est aujourd'hui un sujet brûlant.  Passer les étapes désormais élémentaires à savoir &amp;quot;être présent sur internet&amp;quot; et &amp;quot;avoir un site agréable et joli&amp;quot;, on cherche désormais &lt;strong&gt;un site rapide&lt;/strong&gt;. Quantifiables et donc monétisables, les sites d'e-commerce sont aujourd'hui capables d'estimer  assez précisément le coût de chaque millisecondes  perdues. Assez rare pour le souligner, l'amélioration significative de la performance peut être en partie gérée par des processus automatique simple, c'est à dire apporter beaucoup avec très peu d'efforts contrairement à d'autres disciplines comme l'accessibilité, la sécurité ... &lt;strong&gt;Le gain est immédiat&lt;/strong&gt;, c'est &lt;strong&gt;aisément percevable par la cible&lt;/strong&gt;, le &lt;strong&gt;retour sur investissement est facilement calculable&lt;/strong&gt;, ce qui explique l'engouement grandissant pour cette discipline.    &lt;h2&gt;La web performance c'est quoi ?&lt;/h2&gt;
&lt;div&gt;La web performance se découpe en plusieurs volets, classiquement on les nomme ainsi :&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;La génération de la page : BACKEND&lt;/li&gt;
&lt;li&gt;La diffusion des données: NETWORK&lt;/li&gt;
&lt;li&gt;Le rendu du document : FRONTEND&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Générer la page&lt;/h3&gt;
&lt;div&gt;&lt;img title=&quot;Serveur, mar. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Serveur&quot; src=&quot;http://blog.creaone.fr/public/419970_front_rack_server.jpg&quot; /&gt;La génération de la page concerne le serveur, on parle de &amp;quot;BACKEND&amp;quot;. Dans les schémas modernes cela fait très souvent appel à un ensemble de langages et de technologies différentes : routage url , appel à la base de données, passage à un moteur de template etc.. C'est le métier du serveur et cela ne nous intéresse pas pour deux raisons : 1. Si nous ne faisons pas partie de l'équipe de développement, nous n'y avons jamais accès 2. Cela ne représente rien face à la performance coté client.&lt;/div&gt;
&lt;div style=&quot;clear:both&quot;&gt; &lt;/div&gt;
&lt;h3&gt;Recevoir les données&lt;/h3&gt;
&lt;div&gt;&lt;img title=&quot;Fibre, mar. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Fibre&quot; src=&quot;http://blog.creaone.fr/public/1198280_glasfibre.jpg&quot; /&gt;Bien que la partie NETWORK soit intéressante, c'est une étape considérée la plupart du temps par les grands comptes. Assez récemment et en pleine expansion pour accélérer le chargement on utilise de plus en plus la méthode des &lt;a href=&quot;http://fr.wikipedia.org/wiki/Content_Delivery_Network&quot;&gt;CDN&lt;/a&gt;. Voyez cela comme des autoroutes de l'information.&lt;/div&gt;&lt;div&gt;Quelques vérités générales pour comprendre la partie NETWORK:&lt;/div&gt;&lt;div&gt;
&lt;ol&gt;&lt;li&gt;Moins vous utilisez le réseau et plus le chargement de votre site est rapide&lt;/li&gt;
&lt;li&gt;Moins il y a de noeud séparants le client du serveur plus le chargement est rapide&lt;/li&gt;
&lt;li&gt;Quand le chemin est déjà connu, on a toujours un peu d'avance&lt;/li&gt;
&lt;li&gt;Quand on parallélise le chargement, les données sont reçues plus rapidement. &lt;em&gt;Au lieu de télécharger élément par élément on télécharge quatre par quatre.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div style=&quot;clear:both&quot;&gt;.&lt;/div&gt;&lt;h3&gt;Afficher la page&lt;/h3&gt;
&lt;div&gt;&lt;img title=&quot;Browser, mar. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Browser&quot; src=&quot;http://blog.creaone.fr/public/250528_web_browser_icons.jpg&quot; /&gt;Une fois la page générée par le serveur, transmise sur le réseau et récupérée sur le poste client, il ne reste plus qu'à l'afficher. C'est une étape complexe pour votre navigateur et stressante pour votre processeur, sachez-le. Plus la page contiendra d'images,  plus votre code sera mal écrit, plus la génération prendra du temps.&lt;/div&gt;&lt;div&gt;Les experts parlent souvent de la loi des 20% / 80%.  Sachez que 80 % des gains peuvent être obtenus côté client, donc penchons nous sur cette partie. En effet comme vous pourrez le constater dans les prochains articles, quelques lignes de code dans un fichier de configuration et une optimisation automatique des images permet de gagner déjà beaucoup&lt;/div&gt;&lt;div&gt;Afin d'éviter les railleries : Oui on commence à s'intéresser aux performances côté client lorsque les performances côté serveur ne posent pas de problème. De mon point de vue, je dirais que passer une seconde à générer la page devient non négligeable (modulo le type de serveur et la particularité du site). On ne demande pas les mêmes performances à un blog et un service web permettant d'effectuer des traitements d'images.  &lt;/div&gt;
&lt;h2&gt;Les français et leur équipement numérique&lt;/h2&gt;
&lt;div&gt;&lt;img title=&quot;Tracteur, mar. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Tracteur&quot; src=&quot;http://blog.creaone.fr/public/1285761_rusty_tractor_3.jpg&quot; /&gt;Contrairement au parc informatique d'une entreprise, le web est un joli bourbier où on ne contrôle ni la diffusion, ni le rendu. C'est d'autant plus vrai aujourd'hui. Au niveau de l'équipement on a historiquement le 56k, l'adsl dégroupé non dégroupé avec tout un panel de débit et de latence, le wifi, le wimax, le satellite, la 2g, la 3g, 4g, la fibre... Pour simplifier le tout, on consomme aujourd'hui l'information sur tout type d'écran, du téléphone à l'écran de télévision en passant désormais par les tablettes. Aucune machine n'a les mêmes capacités de calcul ni les même navigateurs (Internet Explorer, Chrome, Opera, Safari, Firefox etc).&lt;/div&gt;&lt;div&gt;Vous comprendrez que vouloir donner des chiffres, tenter de se fixer des objectifs et finalement vérifier les données n'est pas tâche aisée, mais rien d'impossible. &lt;br /&gt;&lt;br /&gt;Une seule règle : &lt;strong&gt;Testez votre site depuis un modem 56k&lt;/strong&gt;, vous verrez, vous allez vouloir aller à l'essentiel, vous appliquerez  des corrections de bons sens et vos clients seront ravis.&lt;br /&gt;Pour faire simple, &lt;strong&gt;privilégiez toujours les corrections rapides&lt;/strong&gt; comme la compression systématique des données non compressées, la réduction des requêtes http,  la concaténation des fichiers js &amp;amp; css ...  &lt;q&gt;une checklist est en préparation avec des vrais spécialistes.&lt;/q&gt;&lt;br /&gt;&lt;h3&gt;Quelques chiffres ici et là&lt;/h3&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); font-family: arial,helvetica,clean,sans-serif; font-size: 13px; line-height: 13px;&quot;&gt;&lt;q&gt;le débit moyen en France en 2010 était de 8 Mbits en téléchargement et 1 Mbits en envoi et selon l'insee 90% des internautes ont le haut débit&lt;/q&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.techyou.fr/2011/03/17/le-debit-internet-moyen-en-france-8-mbits/&quot;&gt;http://www.techyou.fr/2011/03/17/le-debit-internet-moyen-en-france-8-mbits/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ariase.com/fr/haut-debit/acces-departements.html&quot;&gt;http://www.ariase.com/fr/haut-debit/acces-departements.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rue89.com/2012/03/01/internet-la-campagne-ca-rame-toujours-severe-229806&quot;&gt;http://www.rue89.com/2012/03/01/internet-la-campagne-ca-rame-toujours-severe-229806&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h3&gt;Les candidats et l'accessibilité&lt;/h3&gt;
Dans un autre registre l'Association Valentin Hauy présente à l'aide d'Opquast &lt;a hreflang=&quot;fr&quot; href=&quot;http://petition.avh.asso.fr/barometre/&quot;&gt;un baromètre de l'accessibilité&lt;/a&gt;. Retrouver&lt;a href=&quot;http://blog.temesis.com/post/2012/02/24/Presidentielles-2012-barometre&quot;&gt; l'article complet&lt;/a&gt; sur le blog de Temesis.&lt;/div&gt;&lt;/div&gt;</description>

    

      </item>
  
  <item>
    <title>Stratégie de sauvegarde - Partie 2</title>
    <link>http://blog.creaone.fr/post/2012/01/24/Strat%C3%A9gie-de-sauvegarde-Partie-2</link>
    <guid isPermaLink="false">urn:md5:34d002204183845416948d41d1d684bf</guid>
    <pubDate>Mon, 30 Jan 2012 14:37:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>cloud</category><category>puf</category><category>sauvegarde</category><category>ubuntu</category>
    <description>Rembobinons. &lt;a href=&quot;http://blog.creaone.fr/post/2012/01/05/Strat%C3%A9gie-de-sauvegarde&quot;&gt;Dans la première partie&lt;/a&gt;, nous avons conclu que le plan le plus sûr de stockage de données ressemble à peu près à ceci:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;disque sur la machine locale : original ou copie master ;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;disque de stockage en réseau : copie commune ou partagée ;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;le stockage hors ligne, qui signifie de nos jours stockage à distance dans le nuage (le « Cloud » en anglais) ou sauvegarde en ligne.&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;Extrait du Magazine Full Circle 54 p18 - Allan J. Smithie (version FR)&lt;br /&gt;&lt;/strong&gt;    &lt;p&gt;Il ne s'agit pas simplement de succomber au « tout dans les nuages » à la mode. Une vraie sauvegarde hors site utilise le centre de données de quelqu'un d'autre, qui est lui-même sauvegardé. Cela offre la tranquillité d'esprit maximale, car vous saurez que vos précieuses et éphémères données ne peuvent pas être perdues, même si votre version originale part en fumée ou dans des inondations ou se fait exterminer par un « écran bleu de la mort ».&lt;/p&gt;
&lt;p&gt;Nous connaissons tous les problèmes avec la solution de sauvegarde traditionnelle : soit ce n'est pas fait régulièrement, soit quelqu'un envoie la mauvaise génération de bandes vers le coffre hors site. Ou votre DVD de données reste pendant six mois sur le dessus de l'armoire alors que vous auriez dû l'apporter chez grand-maman. Le « Cloud » est peut être la mode  de l'année pour l'instant, mais cela ne signifie pas que vous devez ignorer, disons, la multitude de nuages disponibles. La sauvegarde dans le nuage est devenue une industrie en soi. Votre seule réelle difficulté est de choisir quel nuage et quel fournisseur répondent à vos besoins. Tout le monde semble offrir du stockage dans le nuage, ce qui n'est pas la même chose qu'un service de sauvegarde dans le nuage.&lt;/p&gt;
&lt;p&gt;Peut-être que nous devrions commencer par examiner une check-list pour vous aider à prendre la décision.&lt;/p&gt;
&lt;h2&gt;Le coût&lt;/h2&gt;
&lt;p&gt;C'est par là que je commence toujours. Y a-t-il des frais initiaux ? Quelle est la redevance mensuelle ou annuelle ? &lt;/p&gt;
&lt;p&gt;Quel volume de stockage puis-je obtenir pour mon argent ? Quel niveau de service - c'est la performance et le temps de disponibilité - est-ce que je paie ? Quel écart de prix y a-t-il entre ce service et les bandes de stockage ?&lt;/p&gt;
&lt;p&gt;La sauvegarde dans le nuage est un marché encombré et immature pour l'instant, avec des pourvoyeurs qui réclament notre attention. Pour le chef de famille moyen, il existe des offres de lancement avec des forfaits de base à un coût nul, mais c'est un leurre car le but est de nous en vendre plus ultérieurement. J'aime l'espace de stockage gratuit. On dirait que tous le fournissent, donc nous devons affiner nos critères.&lt;/p&gt;
&lt;h2&gt;Les logiciels&lt;/h2&gt;
&lt;p&gt;Tous les services d'expérience offrent un client logiciel dédié pour gérer les processus de transfert de fichiers. Tous prétendent être multi-plateformes, du moment où ça signifie Windows et Mac. Beaucoup ont maintenant un client Linux disponible.&lt;/p&gt;
&lt;p&gt;J'aime l'idée des transferts par un navigateur, appelé aussi « ne PAS avoir à utiliser un programme propriétaire pour accéder au service ». C'est là qu'Ubuntu One marque des points, même s'il s'agit de stockage de base dans le nuage plutôt que d'une      véritable sauvegarde dans le nuage pour l'instant.&lt;/p&gt;
&lt;h2&gt;La facilité d'utilisation&lt;/h2&gt;
&lt;p&gt;Nous voulons aussi la facilité d'utilisation, ce qui signifie : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;une configuration et une installation simples et terminées en quelques étapes après le téléchargement du logiciel ;&lt;/li&gt;
&lt;li&gt; une sauvegarde en ligne qui peut fonctionner en tâche de fond pendant  que nous poursuivons notre activité normale, sans monopoliser toute notre bande passante ; un réglage pour la vitesse d'upload (ou téléversement) est essentiel ; &lt;/li&gt;
&lt;li&gt;une définition aisée des fichiers inclus et exclus pour chaque jeu de    sauvegarde, jusqu'au plus bas niveau de granularité comme le nom ou le type de fichier, en utilisant des caractères joker ; &lt;/li&gt;
&lt;li&gt;un planificateur qui doit permettre des sauvegardes automatiques à une fréquence et une heure de la journée que vous avez&lt;br /&gt;fixées, de préférence à la minute près ; des données qui peuvent être restaurées facilement et sur-le-champ, avec une certaine notion de versioning des jeux de sauvegarde ;&lt;/li&gt;
&lt;li&gt;une gestion centralisée et facile de toutes nos sauvegardes, établie avec suffisamment de méta-données pour les distinguer les unes des autres.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Le cryptage&lt;/h2&gt;
&lt;p&gt;De nos jours, nous devrions prendre très au sérieux la sécurité des données. Merci Sony et le DoD [Ndt : le Département de la Défense américain]. Une vraie sauvegarde de tous vos éléments importants va inclure vos trucs personnels, bancaires, et la  correspondance. Personne ne veut subir un vol d'identité. &lt;/p&gt;
&lt;p&gt;En ce qui concerne le « Cloud », il existe plusieurs façons de faire cela, la meilleure étant de mettre en oeuvre une &lt;strong&gt;version solide de chiffrement à 128 bits au minimum sur votre client&lt;/strong&gt;,     avant qu'il ne quitte votre machine pour voyager dans les airs. De préférence, cela devrait inclure une signature aveugle afin que personne chez le fournisseur ne possède votre clé qui pourrait compromettre vos données, soit lors d'un travail de    l'intérieur, soit en tant que victime d'un hacker externe. Vous devez être votre propre policier. &lt;/p&gt;
&lt;h2&gt;La performance&lt;/h2&gt;
&lt;p&gt;Nous avons absolument besoin de vitesse et de fiabilité. La plate-forme d'installation des prestataires doit également être évolutive, elle ne doit pas ralentir ou planter à chaque fois que la côte est américaine se réveille et se connecte en masse à 8h   du matin. La théorie doit aussi fonctionner dans la pratique, comme Amazon S3 l'a découvert plus tôt cette année. &lt;/p&gt;
&lt;p&gt;Le service doit également maintenir un &lt;strong&gt;miroir de nos données pour la résilience et le basculement&lt;/strong&gt;, en tant que protection contre la perte de données due aux sabotages, incendies, vols, inondations, virus ou autres catastrophes. Autrement dit, votre  service dans le Cloud ne doit pas conserver les boîtes de bandeschezgrandmaman. C'est ce que nous appelons dans les affaires un test de conformité. &lt;/p&gt;
&lt;h2&gt;La commodité&lt;/h2&gt;
&lt;p&gt;Maintenant les choses deviennent intéressantes, on distingue les hommes des garçons, les moutons des chèvres, et les métaphores mélangées des clichés. Il se peut que le choix déterminant soit l'un de ces éléments : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;les capacités de partage de fichiers ; être capable de définir des partages, des « endroits », des « aperçus » ou des liens publics au&lt;strong&gt; niveau de granularité du fichier,&lt;/strong&gt; avec une certaine sécurité à &lt;strong&gt;plusieurs niveaux en fonction de permissions&lt;/strong&gt; que vous seul êtes en mesure de fixer à  partir de votre console de gestion ; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;l'accès web à distance aux données&lt;/strong&gt;, à tout moment. Idéalement c'est le client basé sur un navigateur qui vous permet un accès sécurisé à vos données (peut-être sans toutes les capacités du client dédié) depuis n'importe quelle machine ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vraie disponibilité des données 24h/24,&lt;/strong&gt; 365j/an. Voir « La performance » ; &lt;/li&gt;
&lt;li&gt;des rapports d'état pour la vérification et les audits. Nous avons besoin que la confiance soit démontrée par une information de gestion appropriée.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rien de très nouveau dans tout cela ; en fait, les plus classiques des applications de sauvegarde et des services d'hébergement web couvrent tous ces aspects ; le moment est venu de mettre les deux ensemble dans le Cloud. Avec ces considérations à l'esprit, vous pouvez maintenant regarder les différents services offerts et juger par vous-même comment ils se comparent. &lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Femme d'Ubuntu</title>
    <link>http://blog.creaone.fr/post/2012/01/05/Femme-d-Ubuntu</link>
    <guid isPermaLink="false">urn:md5:2648056c8e1f59798827f45941b39272</guid>
    <pubDate>Thu, 05 Jan 2012 01:11:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Linux Ubuntu</category>
        <category>puf</category><category>ubuntu</category>
    <description>&lt;p&gt;&lt;a title=&quot;Ubuntu Women&quot; href=&quot;http://blog.creaone.fr/public/ubuntu-women-cof-2010.png&quot;&gt;&lt;img title=&quot;Ubuntu Women, janv. 2012&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;Ubuntu Women&quot; src=&quot;http://blog.creaone.fr/public/.ubuntu-women-cof-2010_t.jpg&quot; /&gt;&lt;/a&gt;Cet été, l'équipe d'&lt;a href=&quot;http://ubuntu-women.com/&quot;&gt;Ubuntu Women&lt;/a&gt; a élu, comme chaque année, ses chefs de projets. Parmi ceux-ci, il y a deux nouvelles venues, Cheri Francis et Jessica Ledbetter, ainsi qu'une responsable en place, Elizabeth Krumbach. Nous avons posé à ces dirigeantes des questions concernant leur travail jusqu'à ce jour et les objectifs actuels du projet d'UbuntuWomen. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extrait du Magazine Full Circle 53 p43 - Elizabeth Krumbach&lt;/strong&gt;&lt;/p&gt;    &lt;h2&gt;Cheri Francis&lt;/h2&gt;
&lt;p&gt;Ubuntu-Women fut l'une des premières salles IRC en rapport avec Ubuntu où moi, nouvelle utilisatrice, j'ai osé entrer. Depuis ce jour, les gens qui la fréquentent me soutiennent un max et sont tout simplement des gens bien. J'essaie de trouver comment « rendre » service au projet en échange et j'espère que, en tant qu'une des responsables, je pourrai le faire. Je travaille dans ma LoCo (Communauté locale) à encourager la  articipation et à rendre le groupe accueillant envers les nouveaux utilisateurs et les personnes qui s'y impliquent. Je crois vraiment en l'aspect communautaire d'Ubuntu et je l'ai vu se manifester en de nombreuses occasions depuis que j'en fais partie.
&lt;/p&gt;
&lt;h2&gt;Les objectifs de Cheri pour Ubuntu Women&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Un projet Journées carrières :&lt;/strong&gt; tenir une série de sessions « un jour dans la vie de … » où l'on parlera d'emplois divers dans le domaine des technologies de l'information et de ce que font certains de nos membres dans la « vraie vie ».&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Publicité :&lt;/strong&gt; augmenter la visibilité du projet, aider des gens qui participent à d'autres projets à se rendre compte que de petits changements peuvent créer un accueil plus chaleureux pour tout le monde (y compris les femmes).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LoCo Outreach [Ndt : augmenter le rayonnement des LoCo] :&lt;/strong&gt; agrandir notre liste des « meilleures pratiques » et servir de ressource pour des LoCo qui voudraient accueillir tout le monde et les encourager à se sentir à l'aise.&lt;/p&gt;
&lt;h2&gt;Elizabeth Krumbach&lt;/h2&gt;
&lt;p&gt;Depuis 2006, je suis membre actif du projet Ubuntu Women où je participe dans tous les secteurs du projet, y compris : la création du canal IRC et l'entretien de la liste des membres y ayant accès, l'administration sur Launchpad, l'administration du site Web, l'administration du wiki et je suis responsable des comptes rendus mensuels de l'équipe. Je me suis impliquée dans la mise sur pied de la série Ubuntu  women dans le magazine Full Circle, j'ai eu l'occasion d'être présente aux Ubuntu Developers Summits (Lucid, Maverick, Oneiric) en rapport avec le projet et j'assisterai au prochain UDS concernant la sortie de la nouvelle version LTS l'année prochaine.&lt;/p&gt;
&lt;h2&gt;Les objectifs d'Elizabeth pour UbuntuWomen&lt;/h2&gt;
&lt;p&gt;Notre site Web est la première chose ayant un rapport avec l'équipe que les gens voient et le thème en est très dépassé. Nous allons continuer notre travail de mise en place du nouveau thème, afin de pouvoir le publier avant la fin de l'année. &lt;/p&gt;
&lt;p&gt;Le programme des mentors que nous avons actuellement est très décontracté - des gens deviennent membres de l'équipe et desmembres de l'équipe leur présentent des gens et des ressources au sein du projet Ubuntu. J'aimerais vraiment que l'on arrive à formaliser le processus afin de pouvoir recueillir davantage de retours pour apprendre comment améliorer notre programme..&lt;/p&gt;
&lt;h2&gt;Jessica Ledbetter&lt;/h2&gt;
&lt;p&gt;Actuellement, je suis développeur et concepteur Web qui crée des applications en Java, Python et Ruby. En plus du développement à temps plein pour une entreprise, je suis aussi développeur sur Peer 2 Peer University (http://p2pu.org/). J'utilise Linux depuis des années et Ubuntu depuis pas mal de cycles. &lt;/p&gt;
&lt;p&gt;Le projet Ubuntu Women fut l'un des premiers canaux IRC sur freenode dont je suis devenue membre. C'était un environnement parfait pour en apprendre davantage sur le projet Ubuntu en entier et aussi pour trouver des façons de s'y impliquer. À cette époque, tout le monde était très accueillant et serviable et ils le sont encore aujourd'hui.Grâce aux membres d'UW, j'ai vu des gens qui étaient motivés pour contribuer à l'animation des sessions en salle de classe, aux projets de codage, pour faire une présentation à des conférences, créer leur propre société et plus. C'est un endroit où tout le monde se sent grandement soutenu.&lt;/p&gt;
&lt;h2&gt;Les objectifs de Jessica pour Ubuntu Women&lt;/h2&gt;
&lt;p&gt;Publicité : Faire connaître l'équipe et tout ce qu'ont fait ses membres ;
coopérer avec/aider d'autres groupes à être plus accueillants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le mentorat :&lt;/strong&gt; Trouver comment augmenter les réalisations de l'équipe et des membres de l'équipe en améliorant le programme des mentors.&lt;/p&gt;
&lt;h2&gt;Licence&lt;/h2&gt;
&lt;em&gt;Vous pouvez adapter, copier, distribuer et transmettre les articles
mais uniquement sous les conditions suivantes : vous devez citer le nom
de l'auteur d'une certaine manière (au moins un nom, une adresse e-mail
ou une URL) et le nom du magazine (« Full Circle Magazine ») ainsi que
l'URL &lt;a href=&quot;http://blog.creaone.fr/post/2012/01/05/www.fullcirclemagazine.org&quot;&gt;www.fullcirclemagazine.org&lt;/a&gt; - &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot;&gt;http://creativecommons.org/licenses/by-sa/3.0/&lt;/a&gt;&lt;/em&gt;</description>

    

      </item>
  
  <item>
    <title>Stratégie de sauvegarde</title>
    <link>http://blog.creaone.fr/post/2012/01/05/Strat%C3%A9gie-de-sauvegarde</link>
    <guid isPermaLink="false">urn:md5:9f0d564b7e893f65d43c23931daaba60</guid>
    <pubDate>Thu, 05 Jan 2012 00:25:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>sauvegarde</category>
    <description>&lt;p&gt;Il n'y a rien de pire pour un mordu d'informatique que l'idée d'une perte
de données, surtout si ce « geek » est un accumulateur de trucs depuis une
ou deux décennies. Nous sommes tous en train d'opter pour le numérique : musique,
albums photographiques, correspondance, tout est si commode, tout, si
éphémère. &lt;/p&gt;
&lt;p&gt;Ce n'est pas bon pour l'état d'esprit de quiconque de savoir que les disques durs
tombent en panne : la gravité, la surtension, les maliciels et la bêtise humaine
font tous bien des ravages. Ce dont on a besoin, c'est un filet de sécurité ; une
stratégie de sauvegarde. Oh, regardez ! il se trouve que j'en ai une…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extrait du Magazine Full Circle 53 p17 - Allan J. Smithie&lt;/strong&gt;&lt;/p&gt;    &lt;h2&gt;Ce qu'il faut sauvegarder&lt;/h2&gt;
&lt;p&gt;
Ne paniquez pas pour les logiciels. La perte d'un programme n'est qu'un désagrément, puisqu'ils peuvent être remplacés facilement, surtout les logiciels Open Source ; c'est beaucoup plus facile que de devoir chercher au fond d'un tiroir la clé (licence ou activation) des programmes propriétaires.&lt;/p&gt;
&lt;p&gt;
Le vrai drame, c'est la perte de données. Les données peuvent être inestimables et, littéralement, irremplaçables. &lt;/p&gt;
&lt;h2&gt;Alors, quels fichiers faut-il sauvegarder ?&lt;/h2&gt;
&lt;p&gt;Les photos, documents, feuilles de calcul, calendriers, courriels (boîtes de courrier ou messages individuels). Et la musique aussi si, comme moi, vous avez une vieille médiathèque rippée d'une bande magnétique.&lt;/p&gt;
&lt;p&gt;C'est d'une importance capitale de savoir où tout se trouve. Il faut absolument faire un inventaire détaillé de votre système - y compris les clés USB et les disques durs externes - en commençant par une recherche basée sur les types de fichier (les extensions). Ne supposez pas que vous ou votre chéri(e) sauvegardez des trucs dans des dossiers spécifiques. Lancez cette recherche et notez où tout se trouve. Faites le ménage et remettez tout en ordre. Rationalisez. Supprimez les doublons. Décidez de ce qui est vital et actuel. Videz la corbeille.&lt;/p&gt;
&lt;p&gt;Vous n'allez pas vouloir les fichiers dans le cache système, les fichiers temporaires, les fichiers swap ou les fichiers page, car il n'est guère possible d'en extraire
quelque chose d'utile et, de toute façon, ils se remplissent de saloperies. S'il y a quelque chose dans le cache que vous voulez garder, copiez-le vers un emplacement plus sûr.&lt;/p&gt;
&lt;p&gt;
Vous aurez besoin de connaître les types de fichiers (décrits la plupart du temps par l'extension du fichier, comme .odt, .pdf, .mpeg, .mp3, .mp4) afin de pouvoir mieux préciser les inclusions et exclusions lorsque vous ferez des sauvegardes.&lt;/p&gt;
&lt;p&gt;Les bases de données (.dbf, .db) peuvent avoir des conditions supplémentaires de sauvegarde pour pouvoir traiter des fichiers verrouillés ou ouverts, des archives et des index. Pensez à votre inscription vitale au club, à une liste de mailing, au catalogue de vos vidéos ; les sauvegardes peuvent être mises hors d'usage si vous faites la sauvegarde pendant qu'ils sont verrouillés (en train d'être modifiés). Mieux vaut les fermer, avec les applications qui se servent des données, pendant que vous faites une sauvegarde.&lt;/p&gt;
&lt;h2&gt;
Où sont les fichiers/données à sauvegarder ?
&lt;/h2&gt;
&lt;p&gt;
Le disque dur local (interne) est l'emplacement numéro un, suivi des disques externes, des disques réseau (serveur), NAS (« Network Attached Storage » - un lieu de stockage lié au réseau), SAN (« Storage Area Network » - un réseau dédié au stockage et des ordinateurs connectés en réseau poste-à-poste. Les clés USB « flash » sont un endroit excellent où garder les plus récentes copies « sneaker-net » des documents [Ndt : Les « sneakers » sont similaires aux baskets et un sneaker-net - qui sonne comme ethernet - est un « réseau » à pied !], suivies de près par les disques durs externes USB ou Firewire. J'ai déjà des
copies « temporaires » ou semi-brouillons de données dupliquées sur plusieurs périphériques. Il y a les téléphones mobiles et les PDA ; des iPhones, des iPad ou des fichiers synchronisés à partir de votre Blackberry ? Faites une liste de tous les types de données et de périphériques dont vous voudriez faire une sauvegarde.
&lt;/p&gt;
&lt;h2&gt;
Contrôle de version
&lt;/h2&gt;
&lt;p&gt;
Jusqu'à quel point vos données sont elles volatiles ? Les informations prioritaires et critiques peuvent changer régulièrement. Voudriez-vous faire une sauvegarde de chaque version ? Vous pouvez avoir besoin de générations de sauvegardes, pour des archives d'audits ou d'inspections, pour satisfaire à la politique de l'entreprise ou du gouvernement concernant la conservation de données, ou juste les travaux en cours ordinaires, pour pouvoir récupérer une génération de modifications si les choses se passent mal. Vous devrez planifier les générations de vos données pour utiliser au mieux le stockage disponible, alors il faudrait que vous décidiez de la meilleure fréquence de sauvegarde des copies et pendant combien de temps les garder. Il y a tout un domaine de l'administration des technologies de l'information qui se concentre sur les sauvegardes, les versions et la conservation. De la lecture en perspective.&lt;/p&gt;
&lt;h2&gt;
L'emplacement de vos sauvegardes
&lt;/h2&gt;
&lt;p&gt;
Le plan de conservation de données le plus sûr ressemble à ceci :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; le disque interne de la machine (l'original ou l'exemplairemaître) ;&lt;/li&gt;
&lt;li&gt;un disque de sauvegarde sur le réseau (exemplaire en commun ou partagé). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remarquez que maintenant que l'on fait de l'informatique en réseau, cela peut être en fait le maître. Alors qu'il est possible que vous ayez RAID (« Redudant
Array of Inexpensive Disks » ou une matrice de disques indépendants), qui est plus solide, il ne faut pas y faire confiance. Ce n'est toujours que des électrons
stockés sous forme de bits sur des plateaux magnétiques qui tournent de façon mécanique.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Stockage hors réseau. Il s'agissait habituellement de bandes magnétiques, mais ce pouvait être n'importe quoi chargé sur demande - bandemagnétique, boîtier de disque, mini-disque, des CD optiques réinscriptibles ou un volume logique que vous aurezmonté. &lt;/li&gt;
&lt;li&gt;Stockage hors site. Ceci pouvait être des médias physiques - un ensemble de disques imagés dans des boîtiers, vos bandes numériques ou desDVDde données. &lt;/li&gt;
&lt;li&gt;Stockage à distance dans le nuage ou sauvegarde en ligne. &lt;/li&gt;
&lt;/ul&gt;Pour une tranquillité d'esprit maximale, vous devrez posséder au moins trois copies des données sur une sélection de divers types de média : local, hors site et nuage.&lt;br /&gt;
&lt;p&gt;Les sauvegardes locales n'incluent pas l'exemplaire de travail sur votre PC. Obtenez un disque externe pour la commodité. Gardez-le dans un emplacement sûr, hors site, loin du PC. Utilisez-le exprès pour des sauvegardes locales planifiées. Idéalement, les sauvegardes dans vos locaux seraient gardées dans un coffre fort à l'épreuve du feu.
&lt;/p&gt;
&lt;p&gt;Hors site veut dire ni chez vous ni dans le bureau où se trouve l'ordinateur. Si vous ne faites rien d'autre, faites un roulement entre deux disques durs externes, en en gardant toujours un dans la maison de votre mère. Ou créez peut-être un accord réciproque avec votre meilleur copain. Je connais des professionnels qui utilisent un coffre à la banque. &lt;/p&gt;
&lt;p&gt;	Ceci vous procure la persistance physique des données, mais pensez maintenant à votre vie privée et à la question de la nécessité du cryptage pour la sécurité de vos données. Si l'endroit de sauvegarde hors site est cambriolé, est-ce que vous risquez quelque chose si les données tombent entre de mauvaises mains ? Des photos de famille ? Non. Les documents juridiques de mon ami, un avocat ? Oui. C'est pourquoi il faut des sauvegardes cryptées. Mais c'est un tout autre sujet.&lt;/p&gt;
&lt;p&gt;Les sauvegardes devraient faire partie intégrante de votre vie. Cela signifie un programme avec un planificateur ou un script qui déclenche l'application de sauvegarde qui copie vos données sur autre chose que la machine ou le périphérique où réside la copie maîtresse.&lt;/p&gt;
&lt;h2&gt;
Transportez les sauvegardes externes hors site
&lt;/h2&gt;
&lt;p&gt;La valeur de votre sauvegarde persiste tant qu'elle reste intacte et à l'épreuve du feu, des inondations, des vols, des tremblements de terre, des affaissements et ainsi de suite. Une fois que vous aurez créé une sauvegarde, il faut penser à la transporter hors site vers l'emplacement alternatif. Ne la laissez pas sur la bibliothèque, sur le frigo ou sous le bureau. Ce n'est pas une sauvegarde utile. Ce qui explique l'attrait du stockage en ligne, c'est-à-dire dans le nuage.&lt;/p&gt;
&lt;p&gt;La sauvegarde et le stockage en ligne sont actuellement une réalité pratique pour la plupart des utilisateurs d'ordinateur et il y a une foule de pourvoyeurs dans l'industrie du stockage dans le nuage.  'espace disque est bon marché, la bande passante est disponible et elle migre automatiquement loin de chez vous. Les meilleurs services dans le nuage fournissent le cryptage intégré.&lt;/p&gt;
&lt;p&gt;
Enfin, les tests. Vérifiez vos sauvegardes en faisant une restauration partielle à partir de toutes les sources. L'existence d'une sauvegarde ne garantit pas forcément qu'elle est utilisable. Les bandes magnétiques et les DVD se dégradent, les disques tombent en panne, les logiciels ne font pas toujours des copies fidèles à 100 %. Testez vos sauvegardes avant d'en avoir besoin en cas d'urgence.&lt;/p&gt;
&lt;p&gt;La restauration est toujours un défi à cause du volume des données et du temps qu'elle prend. Mais, il faut la faire pour vérifier l'intégrité de votre sauvegarde. Même si vous n'essayez jamais une  estauration complète, il faudrait établir ce qu'un demes collègues appelle un « degré de confiance ». Une restauration partielle vous donnera la confiance que cela fonctionnera in fine. Autrement vous ne faites que supposer que cela fonctionnera ! Jusqu'à quel point faites vous confiance à vos suppositions dans d'autres domaines de votre vie ? Exactement.&lt;/p&gt;
&lt;h2&gt;Licence&lt;/h2&gt;
&lt;em&gt;Vous pouvez adapter, copier, distribuer et transmettre les articles mais uniquement sous les conditions suivantes : vous devez citer le nom de l'auteur d'une certaine manière (au moins un nom, une adresse e-mail ou une URL) et le nom du magazine (« Full Circle Magazine ») ainsi que l'URL &lt;a href=&quot;http://blog.creaone.fr/post/2012/01/05/www.fullcirclemagazine.org&quot;&gt;www.fullcirclemagazine.org&lt;/a&gt; - &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot;&gt;http://creativecommons.org/licenses/by-sa/3.0/&lt;/a&gt;&lt;/em&gt;</description>

    

      </item>
  
  <item>
    <title>Django - Dénormalisation d'un queryset</title>
    <link>http://blog.creaone.fr/post/2011/11/23/Django-D%C3%A9normalisation-d-un-queryset</link>
    <guid isPermaLink="false">urn:md5:c9970ed6fbd1c4c625d0a4557e48e9bc</guid>
    <pubDate>Thu, 24 Nov 2011 12:05:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>django</category><category>python</category>
    <description>&lt;p&gt;Dans quelques rares cas, &lt;a href=&quot;https://docs.djangoproject.com/en/1.3/topics/db/queries/&quot; hreflang=&quot;en&quot;&gt; l'ORM de Django&lt;/a&gt; ne suffit plus. Lorsque votre requête est spécifique il existe plusieurs solutions que j'expose &lt;a href=&quot;http://blog.creaone.fr/post/2011/09/15/Django-%3A-Trier-vos-utilisateurs-par-ordre-alphab%C3%A9tique&quot; hreflang=&quot;en&quot;&gt;dans cet article&lt;/a&gt; illustré par le tri de liste.&lt;/p&gt;    &lt;p&gt;Je reprends ici l'exemple de la &lt;strong&gt;dénormalisation&lt;/strong&gt;.  Dans le cas présent nous souhaitons récupérer une liste de critères triée par numéro (1, 2, 3). Si la vie était bien faite, un simple order_by sur l'attribut &amp;quot;numero&amp;quot; suffirait.
Oui à condition que ce dernier soit un &amp;quot;integer&amp;quot; dans la base de données.  Malheureusement l'attribut est un &amp;quot;CharField&amp;quot;  / &amp;quot; Champ texte&amp;quot; et il est strictement interdit de corriger le type de champs (on stocke également des éléments de la formes IMA-2).&lt;/p&gt;


&lt;p&gt;Deux étapes importantes :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Convertir l'attribut &amp;quot;CharField&amp;quot; en attribut &amp;quot;Integer&amp;quot; sur demande&lt;/li&gt;
&lt;li&gt;Créer la méthode de tri&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Convertir l'attribut en entier&lt;/h2&gt;

&lt;p&gt;Le numéro est stocké dans l'attribut &amp;quot;num&amp;quot; de notre modèle, nous souhaiterons le transformer en entier si c'est possible.&lt;/p&gt;


&lt;pre&gt;
    def get_num_in_integer(self):
        try:
             return int(self.num)
        except ValueError:
            return self.num
&lt;/pre&gt;


&lt;h2&gt;Trier / dénormaliser&lt;/h2&gt;
&lt;pre&gt;
criteria = sorted(criteria, key=lambda a: a.get_num_in_integer())
&lt;/pre&gt;


&lt;p&gt;Petite ligne magique permettant de trier une liste de critère en fonction de son numéro, converti en entier à la volée&lt;/p&gt;


&lt;h2&gt;Prudence&lt;/h2&gt;

&lt;p&gt;Très bien, mais garder bien à l'esprit que la&lt;strong&gt; dénormalisation est à effectuer en cas de force majeure&lt;/strong&gt; et surtout à la fin de vos vues, juste avant de passer le bébé au template.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Un queryset est une liste mais une liste n'est pas un queryset&lt;/strong&gt; : Une fois passé dans la moulinette du &amp;quot;sorted&amp;quot; aucune méthode de queryset n'est disponible ! ce n'est plus un queryset mais une liste.. c'est compris ?&lt;/p&gt;


&lt;h2&gt;Utiliser une méthode de queryset sur une liste&lt;/h2&gt;


&lt;p&gt;Le titre est exagéré, il est préférable de dire  &amp;quot;créer une méthode de liste&amp;quot;.&lt;/p&gt;


&lt;h3&gt;Comment faire ?&lt;/h3&gt;

&lt;pre&gt;IRC python-fr (flupke je crois) me répond &lt;q&gt; Il faut sous classer mon ami &lt;/q&gt;&lt;/pre&gt;


&lt;pre&gt;
class MyList(list):
    __slots__ = () #optimisation ah oui ?

    def count(self):
        return len(self)
&lt;/pre&gt;

&lt;pre&gt;
criteria = MyList(criteria)
&lt;/pre&gt;


&lt;p&gt;Et voila côté template je peux ainsi utiliser aveuglement &amp;quot;criteria.count&amp;quot; comme si je manipulais un queryset.&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Django - QuerySetManager - Bonnes pratiques</title>
    <link>http://blog.creaone.fr/post/2011/11/23/Django-QuerySetManager-Bonnes-pratiques</link>
    <guid isPermaLink="false">urn:md5:6e2abc07389155c5d9d627b3a15ed1d4</guid>
    <pubDate>Wed, 23 Nov 2011 12:09:00 +0100</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>django</category><category>manager</category><category>python</category><category>queryset</category>
    <description>&lt;p&gt;J'ai déjà parlé de l'intérêt des &lt;a href=&quot;http://blog.creaone.fr/post/2010/10/21/Django-Managers-Queryset-Manager&quot;&gt;querySetManager&lt;/a&gt; et de leur mise en place dans un projet Django. Désormais avec un peu de recul et l'intervention d'&lt;a href=&quot;http://neokraft.net/&quot; hreflang=&quot;fr&quot;&gt;Olivier Meunier&lt;/a&gt; (l'homme aux milles pseudonymes), il semble plus pertinent d'externaliser la création du manager et du queryset. C'est à dire, pour l'exemple ci-dessous, définir tout ce joyeux code en dehors de la classe &amp;quot;Project&amp;quot;.&lt;/p&gt;    &lt;p&gt;Voici les 3 étapes importantes pour pouvoir utiliser un Querysetmanager&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Création de la classe&lt;/li&gt;
&lt;li&gt;Création du manager&lt;/li&gt;
&lt;li&gt;Création du queryset + définition des méthodes&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;La classe appelle le manager qui appelle le queryset ce qui nous donne &lt;strong&gt;Classe &amp;gt; Manager &amp;gt; Queryset&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;Création de la classe&lt;/h2&gt;
&lt;pre&gt;
from django.db.models.query import QuerySet
from django.db.models import Model, Manager

class Project(Model, ...):
    name = CharField(max_length = 100)
    description = TextField(blank = True, null = True)
    url = URLField(verify_exists = settings.SERVER_WEB_ACCESS)
    ...
    objects = ProjectManager() # Appel du manager
&lt;/pre&gt;


&lt;h2&gt;Création du Manager&lt;/h2&gt;
&lt;pre&gt;
class ProjectManager(Manager):
    def get_query_set(self):
        return ProjectQuerySet(self.model) # Appel du queryset
&lt;/pre&gt;


&lt;h2&gt;Création du Queryset&lt;/h2&gt;
&lt;pre&gt;
class ProjectQuerySet(QuerySet):
    def get_coworkers(self):
        coworkers = []
        for project in self:
           for coworker in project.get_coworkers():
               coworkers.append(coworker.id)
        return User.objects.filter(pk__in = coworkers)
    def get_toto(self):
        return ...
&lt;/pre&gt;




&lt;h2&gt;En pratique&lt;/h2&gt;


&lt;p&gt;On peut désormais utiliser les méthodes &lt;code&gt;get_coworkers()&lt;/code&gt; et &lt;code&gt;get_toto()&lt;/code&gt; sur un queryset Project.&lt;/p&gt;


&lt;p&gt;&lt;code&gt;Project.objects.filter(name__contains=&amp;quot;.net&amp;quot;).get_coworkers()&lt;/code&gt;  --&amp;gt; Récupère l'ensemble des collaborateurs des projets dont le nom contient &amp;quot;.net&amp;quot;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Avis VPC Boost, une bonne expérience client</title>
    <link>http://blog.creaone.fr/post/2011/10/06/Avis-VPC-Boost%2C-une-bonne-exp%C3%A9rience-client</link>
    <guid isPermaLink="false">urn:md5:2343550a0ce234a2f6d37e6a47944a9a</guid>
    <pubDate>Thu, 06 Oct 2011 23:05:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Humeurs</category>
        <category>avis</category><category>boutique</category><category>e-commerce</category><category>vpc boost</category>
    <description>&lt;p&gt;Très souvent, dans un élan de rage, soif de justice, on empoigne le clavier pour dénoncer la boutique en ligne qui nous contriste avec ses délais prolixes et son S.A.V chimérique. Bref une fois n'est pas coutume. Je vais dire du bien d'une boutique, oui je vous assure. Cette expérience est mienne, si vous rencontrez des problèmes avec cette boutique, je suis peiné d'avance mais je ne peux vous aider.&lt;/p&gt;    &lt;p&gt;Pour faire simple et rapide, j'ai acheté un réfrigérateur, un matelas,un four pyrolyse,  et une brosse à dent électrique, tous de grandes marques à prix imbattables. Croyez-moi j'ai regardé toutes les enseignes sérieuses ainsi que les pure players (LaRedoute, Amazon, RueDuCommerce, Conforama)... Je suis bien tombé, il faut le croire à la bonne période, 20 % sur le matelas et frais de port gratuits, sur des produits déjà au plus bas prix constaté, avec petit bonus livraison à domicile et à l'étage !
Ne connaissant pas la boutique &lt;a href=&quot;http://www.vpcboost.com/&quot; hreflang=&quot;fr&quot;&gt;VPC boost&lt;/a&gt; j'ai téléphoné pour avoir un premier contact, surtaxé certes, mais aucune attente. On m'a même rappelé sur mon portable et mon fixe pour me fournir des informations complémentaires. Avec les mails, j'avoue qu'ils sont moins rapides. L'envoi de trois produits sur quatre a été très rapide et soigné ~ 3-4 jours. Surprise, pour la notification d'envoi des produits j'ai reçu un mail, un sms et un appel de mémoire..
En quelques mots je recommande donc vivement cette boutique.&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Django : Trier vos utilisateurs par ordre alphabétique</title>
    <link>http://blog.creaone.fr/post/2011/09/15/Django-%3A-Trier-vos-utilisateurs-par-ordre-alphab%C3%A9tique</link>
    <guid isPermaLink="false">urn:md5:c9b76a17ee2e981cc223833f811cfbfd</guid>
    <pubDate>Thu, 15 Sep 2011 16:36:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>django</category><category>python</category><category>queryset</category>
    <description>&lt;p&gt;Il existe probablement d'autres solutions. Dans cet article je vous donne les clés pour réussir à trier correctement les utilisateurs par nom et prénom. L'exercice est assez simple lorsque l'utilisateur a renseigné correctement son identité, c'est à dire &amp;quot;Nom et Prénom&amp;quot;. Cela devient plus chaotique, quand un seul des champs est renseigné.&lt;/p&gt;    &lt;h2&gt;Liste factice&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;LEGRAND Simon  - simon@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Robert  - robert@mail.com&lt;/li&gt;
&lt;li&gt;PETIT Catherine  - catherine@mail.com&lt;/li&gt;
&lt;li&gt;BONNET Georges  - georges@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Alfred  - alfred@mail.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Alfred et Robert ne se connaissent pas&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;Solution de fortune&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;User.objects.filter(...).order_by('last_name', 'first_name')&lt;/code&gt;
Soyons honnête cette requête suffit dans la majorité des cas. Mais que fait elle ? Elle trie par ordre alphabétique par nom puis prénom. Donc appliquée sur la liste ci-dessus cela nous donne :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;BONNET Georges - georges@mail.com&lt;/li&gt;
&lt;li&gt;LEGRAND Simon - simon@mail.com&lt;/li&gt;
&lt;li&gt;PETIT Catherine - catherine@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Alfred -  alfred@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Robert -  robert@mail.com&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Maintenant imaginons le pire. Mr LEGRAND Simon et Mme Catherine ne renseignent plus leur nom de famille. On obtient ainsi :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Simon - simon@mail.com&lt;/li&gt;
&lt;li&gt;Catherine - catherine@mail.com&lt;/li&gt;
&lt;li&gt;BONNET Georges - georges@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Alfred -  alfred@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Robert -  robert@mail.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Oui mais moi je veux voir Simon et Catherine à leur place c'est à dire en se basant sur le &amp;quot;S&amp;quot; de Simon et le &amp;quot;C&amp;quot; de Catherine.&lt;/p&gt;


&lt;h2&gt;Trois solutions pour trier la liste&lt;/h2&gt;

&lt;p&gt;Trois solutions, un seule retenue. Il n'y a pas de meilleure, tout dépend de votre besoin.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Utiliser Raw Sql pour fusionner la colonne &amp;quot;last_name&amp;quot; et &amp;quot;first_name&amp;quot; et effectuer un tri sur cette fusion&lt;/li&gt;
&lt;li&gt;Créer un nouveau champs dans la DB, celui ci étant la fusion de &amp;quot;last_name&amp;quot; et de &amp;quot;first_name&amp;quot;&lt;/li&gt;
&lt;li&gt;Dénormaliser la requête et utiliser une méthode métier&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Première solution :&lt;/strong&gt; Performance moyenne et obligation d'écrire en SQL. Requête simple si cela provient directement du models &amp;quot;User&amp;quot;, beaucoup plus compliqué si c'est une liste d'utilisateur extraite d'un projet. (project.get_users) .. avec potentiellement une multitude de filtres.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deuxième solution :&lt;/strong&gt; Performance haute, obligation de créer un nouvel attribut dans User Profile, surcharger la méthode save(). Si votre base est en place, vous devez générer cette colonne. Oblige également à passer par get_profile(). Le plus pratique serait de directement modifier la table &amp;quot;User&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt; Troisième solution:&lt;/strong&gt; Performance moyenne, vous devez ajouter une méthode au models User (User redéfini par Meta Class) et écrire la dénormalisation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'ai choisi la troisième solution, l'historique du projet facilitait le choix. En effet User était déjà redéfini par MetaClass donc finalement une méthode, une dénormalisation et c'était dans la poche.&lt;/p&gt;


&lt;h3&gt;La méthode métier sur User&lt;/h3&gt;

&lt;pre&gt;Nommez-la comme vous voulez.&lt;/pre&gt;

&lt;pre&gt;

def get_full_name_inverse(self):
        return ((&amp;quot;%s %s&amp;quot;) % (self.last_name.capitalize(), self.first_name.capitalize())).strip()
&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Cette méthode fusionne le nom et le prénom. Elle supprime les espace en début et fin indésirable. Très important pour le tri !&lt;/li&gt;
&lt;li&gt;Cette méthode ajoute une belle majuscule au nom et au prénom. L'intérêt est uniquement visuel&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;La dénormalisation&lt;/h3&gt;

&lt;pre&gt;
 users = User.objects.filter(...) 
 users = sorted(users, key=lambda a: a.get_full_name_inverse())
&lt;/pre&gt;


&lt;p&gt;Et voici la version qui permet de gérer les caractères accentués.
Merci pour Fabrice pour l'astuce.&lt;/p&gt;
&lt;pre&gt;
import locale
users = User.objects.filter(...) 
locale.setlocale(locale.LC_ALL, &amp;quot;fr_FR.UTF-8&amp;quot;)
users = sorted(users, cmp=locale.strcoll, key=lambda a: a.get_full_name_inverse())
&lt;/pre&gt;


&lt;p&gt;On obtient ainsi la liste suivante :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;BONNET Georges - georges@mail.com&lt;/li&gt;
&lt;li&gt;Catherine - catherine@mail.com&lt;/li&gt;
&lt;li&gt;Simon - simon@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Alfred -  alfred@mail.com&lt;/li&gt;
&lt;li&gt;THOMAS Robert -  robert@mail.com&lt;/li&gt;
&lt;/ol&gt;</description>

    

      </item>
  
  <item>
    <title>Template Tag pour Django extended choices</title>
    <link>http://blog.creaone.fr/post/2011/09/11/Template-Tag-pour-Django-extended-choices</link>
    <guid isPermaLink="false">urn:md5:e2265ef9bc991f23fc4051413dbbc09d</guid>
    <pubDate>Sun, 11 Sep 2011 23:42:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>choices</category><category>django</category><category>templatetag</category>
    <description>&lt;p&gt;Voici un &lt;a href=&quot;https://docs.djangoproject.com/en/dev/howto/custom-template-tags/&quot; hreflang=&quot;fr&quot; title=&quot;Template tag&quot;&gt;simple tag&lt;/a&gt; à copier coller dans votre projet afin d'utiliser très simplement &amp;quot;extended choices&amp;quot; côté template. Cet article est un complément de &lt;a href=&quot;http://blog.creaone.fr/post/2011/08/16/Django-extended-choices&quot; hreflang=&quot;fr&quot; title=&quot;Template tag&quot;&gt;Django Extented Choices&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Edit : 15/10/2011&lt;/strong&gt; Il existe une méthode directement intégrée  à Django : &lt;a href=&quot;https://docs.djangoproject.com/en/dev/ref/models/instances/#extra-instance-methods&quot; hreflang=&quot;en&quot; title=&quot;Template tag&quot;&gt;https://docs.djangoproject.com/en/dev/ref/models/instances/#extra-instance-methods&lt;/a&gt;. (Merci Dom). Cette méthode suffira dans la majorité des cas, sinon voir exemple ci-dessous.&lt;/p&gt;    &lt;h2&gt;Simple tag&lt;/h2&gt;

&lt;pre&gt;
from pdn import constants
@register.simple_tag
def get_constant(constant, value, constant_type=&amp;quot;CHOICES_DICT&amp;quot;):
    try:
        return getattr(getattr(constants, constant), constant_type)[int(value)]
    except AttributeError:
        return &amp;quot;NC&amp;quot;
&lt;/pre&gt;


&lt;h2&gt;Exemple de constates:&lt;/h2&gt;

&lt;pre&gt;
VISIBILITIES = Choices(
    ('PRIVATE', 0, _(u'Privé')),
    ('SHARED', 5, _(u'Partagé')),
    ('PUBLIC', 10, _(u'Public')),
)
&lt;/pre&gt;


&lt;h2&gt;Côté template&lt;/h2&gt;


&lt;p&gt;&lt;em&gt;Ici company.visibility vaut 0&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{% get_constant &amp;quot;VISIBILITIES&amp;quot; company.visibility %} -&amp;gt; Privé &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{% get_constant &amp;quot;VISIBILITIES&amp;quot; company.visibility &amp;quot;CHOICES_DICT&amp;quot; %} -&amp;gt; Privé &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{% get_constant &amp;quot;VISIBILITIES&amp;quot; company.visibility &amp;quot;CHOICES_VARNAMEDICT&amp;quot; %} PRIVATE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;em&gt;PS: Merci à Haypo et Sp4rKy pour la simplification d'écriture&lt;/em&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Annuler un git push</title>
    <link>http://blog.creaone.fr/post/2011/09/08/Annuler-un-git-push</link>
    <guid isPermaLink="false">urn:md5:cd63e0f6a7d857905d697f74d4a7696a</guid>
    <pubDate>Thu, 08 Sep 2011 22:18:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>git</category>
    <description>    &lt;p&gt;Astuce rapide :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtenir le numéro de version des commits grâce à la commande &lt;code&gt;git log -2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Créer une patch entre la dernière version du dépot et la version -1 :&lt;code&gt; git diff &amp;lt;version_anterieure&amp;gt; &amp;lt;version_actuelle&amp;gt; &amp;gt; 01.patch.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Appliquer le patch inversé : &lt;code&gt;patch -p1 -R &amp;lt; 01.patch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;Comiter&amp;quot; puis envoyer de nouveau vers le dépôt central :&lt;code&gt; git ci -a -m &amp;quot;Annulation dernier push&amp;quot;&lt;/code&gt; puis &lt;code&gt;git push&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Note : Il me semble qu'avec  git diff &amp;lt;version_actuelle&amp;gt; &amp;lt;version_anterieure&amp;gt;  &amp;gt; 01.patch, il n'est pas utile d'utiliser la commande -R lors de l'application du patch&lt;/em&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Linutop 4 : Le micro-ordinateur écolo</title>
    <link>http://blog.creaone.fr/post/2011/08/15/Linutop-4-%3A-Le-micro-ordinateur-%C3%A9colo</link>
    <guid isPermaLink="false">urn:md5:32491923b35245955da3eec4004d02ec</guid>
    <pubDate>Thu, 25 Aug 2011 00:14:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Actualités et évènements</category>
        <category>ecolo</category><category>green</category><category>hardware</category><category>linutop</category><category>linux</category><category>puf</category><category>ubuntu</category>
    <description>Linutop, rare spécialiste européen des ordinateurs à faible consommation d'énergie, nous propose aujourd'hui sa dernière machine le LINUTOP 4. Sur la même trajectoire que les précédentes versions testées, le linutop se veut compact, léger, économe et à l'épreuve du temps (pas de pièce mobile). Basé sur un système d'exploitation et une batterie de logiciels libres, le linutop est capable de répondre à divers besoins bureautiques.    &lt;h2&gt;&lt;a title=&quot;Linutop4&quot; href=&quot;http://blog.creaone.fr/public/IMGP5829.jpg&quot;&gt;&lt;img title=&quot;Linutop 4, août 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;Linutop4&quot; src=&quot;http://blog.creaone.fr/public/.IMGP5829_m.jpg&quot; /&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;Prix&lt;/h2&gt;
380 € TTC Linutop 4  + 55 € extension de garantie 3 ans. (Coût sans frais de port)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Pc green, la cible ? &lt;/h2&gt;
Quatre versions ont défilées, la cible du linutop est toujours la même à savoir les bibliothèques,
écoles, universités, musées, administrations, hôtels, hôpitaux, cybercafés voir
même le particulier avec des besoins strictement bureautique. &lt;br /&gt;Sa faible consommation
est un atout certain. Si une bibliothèque souhaite 20 ordinateurs branchés sans
interruption à une prise électrique, cela revient à &lt;strong&gt;2600€&lt;/strong&gt; par an contre &lt;strong&gt;320€&lt;/strong&gt;
pour le linutop 4.. y a pas photo ! si l'ordinateur est uniquement voué au surf
web, il est plus que conseillé d'opter pour un linutop.&lt;br /&gt;
&lt;br /&gt;
Malgré &amp;quot;son caractère verrouillé&amp;quot;, le linutop peut également convenir pour une
utilisation &lt;a href=&quot;http://blog.creaone.fr/post/2007/11/12/Monter-son-serveur-debian-sur-le-linutop&quot;&gt;serveur maison&lt;/a&gt;. Si vous connaissez déjà Linux Ubuntu et que vous aimez jouer l'admistrateur système ce sera un jeu d'enfant. &lt;br /&gt;
&lt;h2&gt;Linutop 4 en quelques pictos&lt;/h2&gt;
En bref voici grâce à quelques pictogrammes les spécificités du
Linutop 4. Vous verrez ainsi ce qu'il fait et ce qu'il ne fait pas en un clin d'oeil.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/oreille.png&quot; alt=&quot;oreille.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;0 db (sauf ajout disque dur interne Sata)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/termo.png&quot; alt=&quot;Température&quot; /&gt;&lt;/td&gt;&lt;td&gt;Température réduite&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/taille.png&quot; alt=&quot;taille.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Encombrement record. 86 fois plus petit qu'un Pc de bureau&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/elec.png&quot; alt=&quot;elec.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Linutop4 14W soit 17€ par an&lt;br /&gt;Pc normal 100W soit 130 € par an&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/os.png&quot; alt=&quot;os.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Système d'exploitation gratuit, open source basé sur Linux Ubuntu Lucid Lynx 10.4&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/post/2011/08/15/public/linutop/bug.png&quot; alt=&quot;bug&quot; /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Pas d'antivirus nécessaire&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/ff.png&quot; alt=&quot;ff.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Idéal pour la navigation Internet et l'envoi d'email.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/abiword.png&quot; alt=&quot;abiword.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Suite logicielle bureautique incluse : OpenOffice 3.2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/chat.png&quot; alt=&quot;chat.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Communiquer avec Pidgin sur les réseaux Jabber, Msn, Aim, Irc ... .&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://blog.creaone.fr/public/linutop/hp.png&quot; alt=&quot;hp.png&quot; /&gt;&lt;/td&gt;&lt;td&gt;Enregistrer votre voix (micro non inclu), écouter votre musique préférée&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;N'est pas inclus avec le linutop&lt;/h3&gt;
&lt;img alt=&quot;&quot; src=&quot;http://blog.creaone.fr/post/2011/08/15/public/linutop/periph.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Attention
aucun périphérique n'est inclu avec le linutop, j'entend par là, pas de
clavier/souris, pas d'écran, pas de micro, pas d'enceinte, pas de
lecteur/graveur, pas de disque dur. Pour le branchement d'un disque dur (SSD par exemple en branchement SATA) un &lt;a href=&quot;http://www.linutop.com/shop/product_info.php?products_id=55&quot;&gt;câble&lt;/a&gt; est disponible en option pour 30€ , oui  moi aussi je trouve ça un poil cher. Contrairement aux versions précédentes vous pouvez trouvez très facilement ce genre de branchement.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Fiche technique&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Poids : &amp;lt; 1kg&lt;/li&gt;
&lt;li&gt;Processeur : Intel ATOM N270 1.6 GHz -&amp;gt; consommation 2.5Watts&lt;/li&gt;
&lt;li&gt;Mémoire : 1024 Mo DDR2  extensible à 2048 Mo&lt;/li&gt;
&lt;li&gt;Stockage : 2go Flash dont 772 Mo disponible&lt;/li&gt;
&lt;li&gt;5 ports Usb2&lt;/li&gt;
&lt;li&gt;1 Port RJ45 GigaLan&lt;/li&gt;
&lt;li&gt;Vidéo : 2 Sorties VGA et DVI - GMA950 Résolution : 1920 x 1440 max Accélération graphique 3D. (Branché en DVI &amp;lt;-&amp;gt; HDMI 1920 x 1200 chez moi, aucune configuration n'a été nécessaire)&lt;/li&gt;
&lt;li&gt; Audio : 1 entrée micro et 2 sorties audio Jack standard 3mm&lt;/li&gt;
&lt;li&gt;1 Port Com t RS232C , branchement avec une station météo par exemple ?&lt;/li&gt;
&lt;li&gt;Branchement interne 2 Sata / 1 Baie 2,5'', 1 PCIe 12V – 3,3A AC adapter 110-240V~ 50/60Hz
&lt;/li&gt;
&lt;li&gt;Rapport détaillé &lt;a href=&quot;http://blog.creaone.fr/public/hardinfo_report.html&quot;&gt;Hardinfo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;h3&gt;Points positifs&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Démarche courageuse&lt;/li&gt;
&lt;li&gt;Consommation énergétique limitée&lt;/li&gt;
&lt;li&gt;Meilleure réactivité du système d'exploitation, en utilisation bureautique, au regard des précédentes versions&lt;/li&gt;
&lt;li&gt;Taille très réduite du produit&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.linutop.com/solutions.fr.html&quot;&gt;Linutop Kiosk &lt;/a&gt;: Permet très facilement de transformer le pc en borne d'accès internet sécurisé, ou en borne d'affichage, sympa pour les agences immobilières par exemple.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Points négatifs&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Prix et option élévés. Comme toute les solutions &amp;quot;vertes&amp;quot; du moment c'est un investissement sur le long terme.  On aimerait trouvé ce genre produit sous la barre des 200 €&lt;/li&gt;
&lt;li&gt;Stockage et mémoire inclus un peu faible, dès lors qu'on utilise la machine pour de la bureautique (surf internet et stockage de documents). &lt;/li&gt;
&lt;li&gt;Faible sifflement dans la prise casque et niveau sonore un peu juste&lt;/li&gt;
&lt;li&gt;Vidéo internet plein écran impossible (test en 1920 x 1200)&lt;/li&gt;
&lt;/ul&gt;
&lt;a title=&quot;Linutop 4 démonté (carte mère)&quot; href=&quot;http://blog.creaone.fr/public/IMGP5816.jpg&quot;&gt;&lt;img title=&quot;Linutop 4 démonté (carte mère), août 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;Linutop 4 démonté (carte mère)&quot; src=&quot;http://blog.creaone.fr/public/.IMGP5816_m.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;</description>

    

      </item>
  
  <item>
    <title>Django extended choices</title>
    <link>http://blog.creaone.fr/post/2011/08/16/Django-extended-choices</link>
    <guid isPermaLink="false">urn:md5:32fb0a7d6294f3707d0827429fe98246</guid>
    <pubDate>Tue, 16 Aug 2011 23:40:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>choices</category><category>constante</category><category>django</category>
    <description>&lt;p&gt;Django extended choices permet de gérer avec simplicité et efficacité les constantes au sein d'une application Django. Cet article fait suite à la &lt;a href=&quot;http://j-mad.com/blog/2011/04/30/django-extended-choices-lapp-qui-te-donne-le-choix-mais-pas-la-date/&quot; hreflang=&quot;fr&quot; title=&quot;Django extended choices&quot;&gt;publication de J-Mad&lt;/a&gt;.&lt;/p&gt;    &lt;h2&gt;Installation&lt;/h2&gt;


&lt;p&gt;&lt;code&gt;git clone https://github.com/twidi/django-extended-choices/tree/master&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;Comment ça marche ?&lt;/h2&gt;

&lt;h3&gt;Avant l'utilisation du plugin&lt;/h3&gt;
&lt;pre&gt;
STATE_ONLINE = 1
STATE_DRAFT = 2
STATE_OFFLINE = 3

STATE_CHOICES = (
    (STATE_ONLINE,  'Online'),
    (STATE_DRAFT,   'Draft'),
    (STATE_OFFLINE, 'Offline'),
)

STATE_DICT = dict(STATE_CHOICES)

class ContentModel(models.Model):
    title      = models.CharField(max_length=255)
    content    = models.TextField()
    state      = models.PositiveSmallIntegerField(choices=STATE_CHOICES, default=STATE_DRAFT)
    related_to = models.ManyToManyField('self', through=&amp;quot;ContentToContent&amp;quot;, symmetrical=False, blank=True, null=True)

    def __unicode__(self):
        return u'Content &amp;quot;%s&amp;quot; (state=%s)' % (self.title, STATE_DICT[self.state])

    def get_related_content(self):
        return self.related_to.select_related().filter(state=STATE_ONLINE)

&lt;/pre&gt;


&lt;h3&gt;Après l'utilisation du plugin&lt;/h3&gt;
&lt;pre&gt;
from extended_choices import Choices
from django.utils.translation import ugettext_lazy as _

STATES = Choices(
    ('ONLINE',  1, _(u'Online')),
    ('DRAFT',   2, _(u'Draft')),
    ('OFFLINE', 3, _(u'Offline')),
)

class ContentModel(models.Model):
    title      = models.CharField(max_length=255)
    content    = models.TextField()
    state      = models.PositiveSmallIntegerField(choices=STATES.CHOICES, default=STATES.DRAFT)
    related_to = models.ManyToManyField('self', through=&amp;quot;ContentToContent&amp;quot;, symmetrical=False, blank=True, null=True)

    def __unicode__(self):
        return u'Content &amp;quot;%s&amp;quot; (state=%s)' % (self.title, STATES.CHOICES_DICT[self.state])

    def get_related_content(self):
        return self.related_to.select_related().filter(state=STATES.ONLINE)
&lt;/pre&gt;


&lt;p&gt;Plus clair non ?&lt;/p&gt;


&lt;h2&gt;Récapitulatif&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vous souhaitez obtenir une liste de tuples, utile pour remplir vos DjangoForm : &lt;code&gt;STATES.CHOICES&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vous souhaitez obtenir la valeur d'une constante : &lt;code&gt;STATES.ONLINE --&amp;gt; 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vous souhaitez obtenir le &amp;quot;label&amp;quot; &lt;code&gt;STATES.CHOICES_DICT[1] --&amp;gt; 'Online' ou 'En ligne' selon la langue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vous souhaitez obtenir le nom de la constante  (voir le patch qui suit) &lt;code&gt;STATES.CHOICES_VARNAMEDICT[1] --&amp;gt; 'ONLINE'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vous souhaitez utiliser une syntaxe &amp;quot;tableau&amp;quot; pour éviter que Aptana  vous engueule (voir également patch qui suit - Merci Mickaël Hoareau) &lt;code&gt;STATES['ONLINE']&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Version patchée&lt;/h2&gt;

&lt;pre&gt;
# -*- coding: utf-8 -*-

class Choices(dict):
    def __init__(self, *choices, **kwargs):
        name = kwargs.get('name', 'CHOICES')
        self.add_choices(name, *choices)

    def add_choices(self, name, *choices):

        CHOICES = []
        CHOICES_DICT = {}
        CHOICES_RDICT = {}
        CHOICES_VARNAMEDICT = {}

        for choice in choices:
            const, value, string = choice
            if not hasattr(self, const):
                setattr(self, const, value)
            else:
                value = getattr(self, const)
            CHOICES.append((value, string))
            CHOICES_DICT[value] = string
            CHOICES_RDICT[string] = value
            CHOICES_VARNAMEDICT[value] = const


        setattr(self, name, tuple(CHOICES))
        setattr(self, '%s_DICT' % name, CHOICES_DICT)
        setattr(self, '%s_RDICT' % name, CHOICES_RDICT)
        setattr(self, '%s_RDICT' % name, CHOICES_RDICT)
        setattr(self, '%s_VARNAMEDICT' % name, CHOICES_VARNAMEDICT)


    def __getitem__(self, key):
        if not hasattr(self, key):
            raise KeyError(&amp;quot;Key Error : '&amp;quot; + str(key) + &amp;quot;' not found&amp;quot;)

        return getattr(self, key)

&lt;/pre&gt;



&lt;p&gt;Utilisation de&lt;a href=&quot;http://blog.creaone.fr/post/2011/09/11/Template-Tag-pour-Django-extended-choices&quot;&gt; django extended choices dans un template&lt;/a&gt;.&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Récursivité au sein d'un template django</title>
    <link>http://blog.creaone.fr/post/2011/07/10/R%C3%A9cursivit%C3%A9-au-sein-d-un-template-django</link>
    <guid isPermaLink="false">urn:md5:f4b222c7e709cc8dce6090d93f1fe07b</guid>
    <pubDate>Mon, 11 Jul 2011 09:36:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Programmation</category>
        <category>django</category><category>récursivité</category><category>template</category>
    <description>&lt;p&gt;Pas de nouveauté fracassante, juste l'exemple d'une syntaxe simple et dépouillée présentant la récursivité du côté des templates. L'exemple présente l'affichage d'une liste de commentaires en cascade. Cf Screenshot. (Valide Django 1.2)&lt;/p&gt;    &lt;h2&gt;Template parent&lt;/h2&gt;


&lt;p&gt;Il suffit simplement de déporter l'affichage des commentaires du côté d'un fichier à inclure. Ici on appelle le fichier _comments.html.&lt;/p&gt;


&lt;p&gt;Dans comments_list.html&lt;/p&gt;


&lt;p&gt;&lt;code&gt;  {% include &amp;quot;checklists/workshops/_comments.html&amp;quot; %}&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;Template enfant&lt;/h2&gt;

&lt;p&gt;Toute la magie se trouve dans le template à inclure. Ici on appelle continuellement _comments tant qu'il y a des enfants (childrens).&lt;/p&gt;


&lt;p&gt;Dans _comments.html&lt;/p&gt;

&lt;pre&gt;
{% if comments %}

{% for comment in comments %}	
	{{ comment.creator.get_full_name }}	
	{{ comment.description }}

	{% with &amp;quot;_comments.html&amp;quot; as filename %}
		{% with comment.get_childrens as comments %}
			{% include filename %}
		{% endwith %}
	{% endwith %}

{% endfor %}

{% endif %}
&lt;/pre&gt;


&lt;h2&gt;Liste de commentaires + html + css&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.creaone.fr/public/comments.png&quot; title=&quot;Liste des commentaires - Template récursif Django&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.comments_m.jpg&quot; alt=&quot;Liste des commentaires - Template récursif Django&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Liste des commentaires - Template récursif Django, juil. 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Turpial, client twitter rapide et complet pour Ubuntu</title>
    <link>http://blog.creaone.fr/post/2011/05/25/Turpial%2C-client-twitter-pour-Ubuntu</link>
    <guid isPermaLink="false">urn:md5:09e17fddd9217f319e31b563ee5717c6</guid>
    <pubDate>Fri, 08 Jul 2011 10:05:00 +0200</pubDate>
    <dc:creator>Samuel MARTIN</dc:creator>
        <category>Linux Ubuntu</category>
        <category>client</category><category>planet-libre</category><category>puf</category><category>python</category><category>turpial</category><category>twitter</category><category>ubuntu</category>
    <description>&lt;p&gt;Bien que complet, je me suis vite lassé de Gwibber et notamment de son extrème lenteur. Le client twitter &lt;em&gt;(écrit en python)&lt;/em&gt; que je vous propose aujourd'hui gère uniquement Twitter et Identica. Rapide, efficace parfaitement intégré à Gnome, c'est LE client desktop qu'il faut installer.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Attention, les manipulations indiquées dans l'article et les liens mentionnés peuvent compromettre la stabilité de votre système, je décline toutes responsabilités. Les paquets présentés ci-dessous ne sont pas officiels !&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;Installation&lt;/h2&gt;


&lt;p&gt;Dans un terminal taper ceci :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt; sudo add-apt-repository ppa:effie-jayx/turpial&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt-get install turpial&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Utiliser turpial&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ALT + F2&lt;/li&gt;
&lt;li&gt;Taper tout simplement : turpial&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Les points positifs&lt;/h2&gt;

&lt;p&gt;Dans le désordre&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notification sonore et visuelle&lt;/li&gt;
&lt;li&gt;Se lance rapidement, l'accès aux préférences, tweets  se fait rapidement. Léger :consommation mémoire approche ~ 50 Mo.&lt;/li&gt;
&lt;li&gt;Changement des préférences twitter directement depuis turpial (Nom, Localisation, Url, Biographie)&lt;/li&gt;
&lt;li&gt;Utilisation Systray -&amp;gt; se masque dans la barre supérieure&lt;/li&gt;
&lt;li&gt;Possibilité de suivre une nouvelle personne&lt;/li&gt;
&lt;li&gt;Recherche globale intégrée&lt;/li&gt;
&lt;li&gt;&amp;quot;Raccourcisseur d'url&amp;quot; intégré et configurable&lt;/li&gt;
&lt;li&gt;Uploader d'image intégré et configurable&lt;/li&gt;
&lt;li&gt;Affichage multicolonnes&lt;/li&gt;
&lt;li&gt;Visualisation lu / non lu&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Les points négatifs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Limité à 3 colonnes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.creaone.fr/public/turpial.jpg&quot; title=&quot;Turpial&quot;&gt;&lt;img src=&quot;http://blog.creaone.fr/public/.turpial_m.jpg&quot; alt=&quot;Turpial&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Turpial, juil. 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>

    

      </item>
  
</channel>
</rss>
