<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog ntic de revolunet</title>
	<atom:link href="http://blog.revolunet.com/index.php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.revolunet.com</link>
	<description>Blog des Nouvelles Technologies de l'Information et de la Communication</description>
	<lastBuildDate>Mon, 08 Feb 2010 11:23:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Symbian : l&#8217;open source comme ultime recours ?</title>
		<link>http://blog.revolunet.com/index.php/general/symbian-lopen-source-comme-ultime-recours</link>
		<comments>http://blog.revolunet.com/index.php/general/symbian-lopen-source-comme-ultime-recours#comments</comments>
		<pubDate>Mon, 08 Feb 2010 11:04:30 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[actu informatique]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=412</guid>
		<description><![CDATA[Nokia aura mis près de 10 ans à se décider à open sourcer le code de son OS mobile : Symbian. Bousculé par l&#8217;arrivée de l&#8217;iPhone, puis par la déferlante de produits sous Android à partir de 2009, Nokia décide enfin d&#8217;ouvrir intégralement le code source de Symbian, pour booster le développement de l&#8217;OS et des d&#8217;applications [...]]]></description>
			<content:encoded><![CDATA[<p>Nokia aura mis près de 10 ans à se décider à open sourcer le code de son OS mobile : Symbian. Bousculé par l&#8217;arrivée de l&#8217;iPhone, puis par la déferlante de produits sous Android à partir de 2009, Nokia décide enfin d&#8217;ouvrir intégralement le code source de Symbian, pour booster le développement de l&#8217;OS et des d&#8217;applications tierces par les développeurs.</p>
<p>Car la donne a changé depuis l&#8217;arrivée de l&#8217;iPhone et des mobiles sous Android : aujourd&#8217;hui, le logiciel du téléphone, et surtout les applications que l&#8217;on peut installer, comptent tout autant que le le mobile lui-même. A quoi sert un matériel très évolué si le logiciel interne ne l&#8217;est pas ou est trop fermé ? En arrivant sur un marché ou déjà deux géants s&#8217;affrontent déjà depuis plusieurs années, avec 100000 applications dans l&#8217;AppStore et près de 50000 dans l&#8217;android market, et un android qui s&#8217;impose chez tous les fabricants, comment pourra faire Nokia pour lutter ?</p>
<p>Nokia fait d&#8217;excellents téléphones (6230, N900&#8230;), mais Symbian, qui équipe la plupart de leur gamme, n&#8217;est pas à la hauteur et aura beaucoup de mal a conquérir les développeurs. Je ne vois plus qu&#8217;une alliance Google-Nokia pour sauver cette marque et lui offrir enfin un OS digne de ce nom.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/symbian-lopen-source-comme-ultime-recours/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appels illimités vers le Maroc</title>
		<link>http://blog.revolunet.com/index.php/actu-informatique/appels-illimites-vers-le-maroc</link>
		<comments>http://blog.revolunet.com/index.php/actu-informatique/appels-illimites-vers-le-maroc#comments</comments>
		<pubDate>Tue, 22 Dec 2009 12:15:19 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[Iliad - Free]]></category>
		<category><![CDATA[actu informatique]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=408</guid>
		<description><![CDATA[Free l&#8217;a fait ! 
Les appels vers le Maroc sont maintenant inclus en illimité dans le forfait ADSL les appels vers le Maroc ! Allez vite dans votre interface de gestion pour accepter les nouvelles CGV pour profiter de cette nouvelle offre !!
Cela fait un joli cadeau de fin d&#8217;année, en plus des dernières annonces [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Free l&#8217;a fait ! </strong></p>
<p>Les appels vers le Maroc sont maintenant inclus en <strong>illimité </strong>dans le forfait ADSL les appels vers le Maroc ! Allez vite dans votre <a href="http://subscribe.free.fr/login/" target="_blank">interface de gestion</a> pour accepter les nouvelles CGV pour profiter de cette nouvelle offre !!</p>
<p>Cela fait un joli cadeau de fin d&#8217;année, en plus des dernières annonces fracassantes de notre FAI préféré :</p>
<ul>
<li>Obtention de la nouvelle licence 3G</li>
<li>Jeux vidéos sur la Freebox</li>
<li>La gestion des enregistrements à distance</li>
<li>Les point d&#8217;accès Free WiFi</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/actu-informatique/appels-illimites-vers-le-maroc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Astuces Django</title>
		<link>http://blog.revolunet.com/index.php/developpement/astuces-django</link>
		<comments>http://blog.revolunet.com/index.php/developpement/astuces-django#comments</comments>
		<pubDate>Fri, 11 Dec 2009 00:46:07 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=393</guid>
		<description><![CDATA[Suite à mon quickstart Django, me revoici avec quelques astuces pour continuer.
Pour tester/développer avec Django, je rappelle qu&#8217;il vaut mieux utiliser le serveur de dev intégré, puis passer à Apache, nginx ou autre pour la production par la suite.
Il est important de lire pour commencer les principes de la philosophie Django ainsi que le &#8216;django coding style&#8217;
Ne [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-396" title="tips" src="http://blog.revolunet.com/wp-content/uploads/2009/12/tips.jpg" alt="tips" width="150" height="152" />Suite à mon <a href="http://blog.revolunet.com/index.php/general/bien-demarrer-avec-django" target="_blank">quickstart Django</a>, me revoici avec quelques astuces pour continuer.</p>
<p>Pour tester/développer avec Django, je rappelle qu&#8217;il vaut mieux utiliser le serveur de dev intégré, puis passer à Apache, nginx ou autre pour la production par la suite.</p>
<p>Il est important de lire pour commencer les principes de la <strong><a href="http://docs.djangoproject.com/en/dev/misc/design-philosophies/" target="_blank">philosophie Django</a> </strong>ainsi que le <a href="http://docs.djangoproject.com/en/dev/internals/contributing/#coding-style" target="_blank">&#8216;django coding style&#8217;</a></p>
<p><strong>Ne hardcodez pas vos paths</strong></p>
<ul>
<li>dans votre settings.py :</li>
<li>
<div class="codesnip-container" >BASE_DIR = os.path.dirname(__file__)</div>
</li>
<li>utilisez ensuite os.path.join avec settings.BASE_DIR ailleurs si besoin</li>
<li>Pour importer les settings de votre projet, utilisez toujours
<div class="codesnip-container" >from django.conf import settings</div>
</li>
</ul>
<p><strong>Utilisez un fichier local_settings.py</strong></p>
<ul>
<li>Créez un fichier local_settings.py qui contiendra uniquement les settings relatifs au déploiment de votre application : settings de base de données, smtp, debug&#8230; Vous n&#8217;aurez plus que celui la à modifier pour un nouveau déploiement.</li>
</ul>
<p><strong>Mettre en production avec Apache</strong></p>
<ul>
<li>Pour une installation classique avec <strong>Apache</strong>, utilisez de préférence <strong><a href="http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango" target="_blank">mod_wsgi</a>. <span style="color: #ff0000;">N&#8217;utilisez pas le serveur de dev intégré en production!</span></strong></li>
</ul>
<p><strong>Debug AJAX plus pratique</strong></p>
<ul>
<li>Si vous faites de l&#8217;Ajax, utilisez <strong><a href="https://addons.mozilla.org/fr/firefox/addon/1843" target="_blank">Firebug</a> et le middleware </strong><a href="http://www.djangosnippets.org/snippets/650/" target="_blank"><strong>AJAXSimpleExceptionResponse</strong></a></li>
</ul>
<p><strong>Queysets : filters et excludes dynamiques</strong></p>
<ul>
<li>Utilisez les dictionnaires pour filtrer dynamiquement vos querysets :</li>
</ul>
<div class="codesnip-container" >filtres = {}<br />
filtres['date__gte'] = datetime.datetime.today() &#8211; datetime.timedelta(dasy=7)<br />
filtres['titre__icontains'] = &#8216;python&#8217;<br />
excludes={}<br />
excludes['epuise'] = True<br />
qs = model.Livres.objects.exclude(**excludes).filter(**filtres)</div>
<p><strong>Créez des applications modulaires</strong></p>
<ul>
<li>Placez vos app dans un sous dossier &#8216;apps&#8217;</li>
<li>Utiliser des objets génériques : le <a href="http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/" target="_blank">ContentType framework</a></li>
</ul>
<p><strong>Utilisez un script pour mettre à jour vos modèles</strong></p>
<ul>
<li>Django ne gérant pas nativement les ALTER sur votre base de données, vous devez sauvegarder (manage.py dumpdata), reset votre base (manage.py reset) puis recréer votre base (manage.py syncdb) et recharger les données (manage.py loaddata).</li>
<li>Utilisez plutot un <a href="http://www.chrisdpratt.com/2008/02/27/a-django-snippet-to-refresh-your-database/" target="_blank">script qui automatisera cette tache</a></li>
</ul>
<p><strong>Utilisez des décorateurs dans vos vues</strong></p>
<ul>
<li><strong>@login_required </strong>pour restreindre la vue aux utilisateurs loggés</li>
<li><strong>@user_passes_test(lambda u: u.has_perm(&#8217;polls.can_vote&#8217;)) </strong>pour restreindre la vue selon un test particulier</li>
<li>créez vos propres décorateurs</li>
</ul>
<p><strong>Ne définissez qu&#8217;une fois vos urls</strong></p>
<ul>
<li>Utilisez les <a href="{% url arch-summary 1945 %}" target="_blank">named-urls</a> pour ne plus harcoder vos urls
<ul>
<li>Dans urls.py :  
<div class="codesnip-container" >(r&#8217;^articles/list/(\d)+&#8217;, apps.main.list, name=&#8221;list-view&#8221;)</div>
</li>
<li>Dans une vue :
<div class="codesnip-container" >return HttpResponseRedirect(reverse(&#8217;list-view&#8217;, args=[2007]))</div>
</li>
<li>Dans un template :
<div class="codesnip-container" >&lt;a href=&#8221;{% url list-view 2007 %}&#8221;&gt;ma vue&lt;/a&gt;</div>
</li>
</ul>
</li>
<li>Utilisez <a href="http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_absolute_url" target="_blank">get_absolute_url()</a> sur vos modèles pour affecter une url à chacun de vos objets</li>
</ul>
<p><strong>Des questions que vous vous posez surement :</strong></p>
<ul>
<li><a href="http://www.b-list.org/weblog/2006/jun/28/django-tips-difference-between-blank-and-null/" target="_blank">La différence entre null et blank</a> dans vos modèles</li>
<li>Comment toujours passer des variables à mes templates : les <a href="http://docs.djangoproject.com/en/dev/ref/templates/api/#id1" target="_blank">template contexts</a></li>
</ul>
<p><strong>De bons examples de coding-styles : </strong></p>
<ul>
<li><a href="http://code.google.com/p/django-basic-apps/" target="_blank">http://code.google.com/p/django-basic-apps/</a></li>
<li><a href="http://groups.google.com/group/django-hotclub" target="_blank">http://groups.google.com/group/django-hotclub</a></li>
</ul>
<p><strong>Différents cas de figures sur les formulaires Django</strong> : <a href="http://uswaretech.com/blog/2010/01/doing-things-with-django-forms/">http://uswaretech.com/blog/2010/01/doing-things-with-django-forms/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/developpement/astuces-django/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bien démarrer avec django</title>
		<link>http://blog.revolunet.com/index.php/general/bien-demarrer-avec-django</link>
		<comments>http://blog.revolunet.com/index.php/general/bien-demarrer-avec-django#comments</comments>
		<pubDate>Wed, 02 Dec 2009 11:21:53 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=381</guid>
		<description><![CDATA[Cela fait maintenant presque deux ans que j&#8217;utilise intensivement le framework Django pour toutes mes applications web, et j&#8217;ai enfin réuni assez d&#8217;éléments pour pouvoir vous livrer un petit &#8216;QuickStart&#8217; qui vous permettra de démarrer rapidement.
Contrairement à d&#8217;autres frameworks web, Django n&#8217;est pas orienté CMS ou HTML. Vous pouvez tout autant créer un site HTML/Ajax, une [...]]]></description>
			<content:encoded><![CDATA[<p>Cela fait maintenant presque deux ans que j&#8217;utilise intensivement le framework <a href="http://www.djangoproject.com/" target="_blank">Django</a> pour toutes mes applications web, et j&#8217;ai enfin réuni assez d&#8217;éléments pour pouvoir vous livrer un petit &#8216;QuickStart&#8217; qui vous permettra de démarrer rapidement.</p>
<p>Contrairement à d&#8217;<a href="http://drupal.org/" target="_blank">autres</a> <a href="http://www.zope.org/" target="_blank">frameworks</a> <a href="http://www.symfony-project.org/doc/1_4/" target="_blank">web</a>, Django n&#8217;est pas orienté CMS ou HTML. Vous pouvez tout autant créer un site HTML/Ajax, une API RESTFUL http ou une application en ligne de commande.</p>
<p>Django permet de coder toute la partie serveur de votre application, mais pour la partie &#8216;client&#8217;, c.a.d. le HTML par exemple, vous devrez vous débrouiller tout seul ou utiliser un autre framework, <a href="http://jquery.com/" target="_blank">jQuery</a> par exemple, ou <a href="http://extjs.com/" target="_blank">ExtJs</a>.</p>
<p><img class="alignleft size-full wp-image-389" title="django" src="http://blog.revolunet.com/wp-content/uploads/2009/12/django.jpg" alt="django" width="120" height="177" /></p>
<p style="padding-left: 120px;"><strong> Pourquoi Django ? </strong></p>
<p style="padding-left: 120px;">Open Source<br />
Portable<br />
Langage Python<br />
Prototypage rapide<br />
Evolutivité<br />
Abstration <a href="http://fr.wikipedia.org/wiki/Mapping_objet-relationnel" target="_blank">ORM<br />
</a> Supporté par <a href="http://fr.wikipedia.org/wiki/Google_App_Engine" target="_blank">Google AppEngine</a> (avec restrictions)<br />
Excellente <a href="http://docs.djangoproject.com/en/dev/" target="_blank">documentation</a></p>
<p><strong>Fonctionnalités principales :</strong></p>
<ul>
<li><strong>ORM :</strong> permet une abstraction de la base de données et du SQL, ce qui fait que vos applications peuvent tourner sur : SQLlite, MySQL, SQLserver, Oracle, PostGres&#8230;</li>
<li><strong>Admin automatique : </strong>une fois vos modèles définis, ils sont de suite accessible dans l&#8217;interface d&#8217;admin automatique, et vous pouvez toute de suite créer objets</li>
<li><strong>Templates : </strong>une gestion des templates très poussée, avec gestion des héritages, des filtres et &#8216;customs tags&#8217;.</li>
<li><strong>Shell intégré : </strong>Tout votre code est également accessible directement depuis un shell intégré</li>
<li><strong>Gestion des utilisateurs : </strong>Toute la partie utilisateurs, comptes, login, sécurité et permissions est déjà disponible sans efforts</li>
</ul>
<p><strong>Inconvénients :</strong></p>
<ul>
<li>Peu d&#8217;hébergeurs mais cela évolue : <a href="http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts">http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts</a></li>
<li>C&#8217;est surtout  un avantage, mais le projet évoluant très vite, vous devrez coder avec et pour une version spécifique de Django. Et vous ne mettrez à jour django pour tel projet seulement après avoir consulté cette page : <a href="http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges">http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges</a></li>
</ul>
<p>A noter que Django est une librairie python, vous pouvez n&#8217;utiliser que les fonctions dont vous avez besoin, même en &#8217;standalone&#8217;  (hors du web).  Et vous pouvez tout modifier, étendre et améliorer à souhait.</p>
<p>La première chose à faire avant de se lancer dans Django est déjà de connaitre un minimum le langage python et sa &#8216;magie&#8217;. Le livre &#8216;<a href="http://openbookproject.net//thinkCSpy/" target="_blank">Think like a computer scientist</a>&#8216; est à lire, <a href="http://hetland.org/writing/instant-python.html" target="_blank">Instant Python</a> pour les préssés, et &#8220;<a href="http://www.swaroopch.com/notes/Python_fr:Table_des_Mati%C3%A8res" target="_blank">A byte of python</a>&#8221; (en francais).</p>
<h2><strong>C&#8217;est parti</strong></h2>
<p>Installez <a href="http://python.org/download/" target="_blank">python </a>(2.5 ou 2.6) sur votre machine, et récupérez la <a href="http://www.djangoproject.com/download/" target="_blank">dernière version de Django</a>. Le repertoire &#8216;django&#8217; de cette archive doit se trouver dans le dossier &#8216;lib/site-packages&#8217; de votre installation de Python. Si vous souhaitez utiliser MySQL comme serveur, installez <a href="http://sourceforge.net/projects/mysql-python/" target="_blank">python-mysqldb</a>. Sinon, SQLlite fera très bien l&#8217;affaire pour démarrer !</p>
<p>Pour tester si votre installation de python/django est correcte :</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 272px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">juju@devserver:/var/www/django$ python</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 272px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 272px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 272px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Type &#8220;help&#8221;, &#8220;copyright&#8221;, &#8220;credits&#8221; or &#8220;license&#8221; for more information.</div>
<div class="codesnip-container" >juju@xxxxxxx:/home/juju$ python<br />
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)<br />
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2<br />
Type &#8220;help&#8221;, &#8220;copyright&#8221;, &#8220;credits&#8221; or &#8220;license&#8221; for more information.<br />
&gt;&gt;&gt;import django<br />
&gt;&gt;&gt;print django.VERSION<br />
(1, 0, 2, &#8216;final&#8217;, 0)<br />
&gt;&gt;&gt;</div>
<p>Si vous avez une erreur lors de l&#8217;import, alors votre dossier &#8216;django&#8217; n&#8217;est pas dans votre dossier python\lib\site-packages, vérifiez.</p>
<p>Si l&#8217;install est correcte, alors vous pouvez créer votre premier projet django.</p>
<p><strong>Exemple sur windows :</strong></p>
<p>Ouvrez un shell, et placez vous dans votre dossier de travail, puis lancez la commande django-admin.py startproject</p>
<div class="codesnip-container" >cd c:\dev\django<br />
c:\dev\django&gt;c:\Python25\lib\site-packages\django\bin\django-admin.py startproject projet1</div>
<p>Un dossier &#8216;projet1&#8242; a été crée et contient les fichier de base :</p>
<ul>
<li><strong>settings.py :</strong> configuration du projt, base de données, emails&#8230;</li>
<li><strong>urls.py : </strong>la configuration des urls de votre projet</li>
<li><strong>manage.py : </strong>la commande qui permet de lancer le serveur, mettre a jour les bases et effectuer des opérations de maintenance.</li>
<li><strong>__init__.py :</strong> ce fichier permet simplement à Python d&#8217;interpréter le dossier en tant que &#8216;module&#8217;</li>
</ul>
<p>Pour développer un projet Django, utilisez le &#8217;serveur de dev&#8217; intégré (commande manage.py runserver), mais pour la production, vous devrez mettre en place <a href="http://code.djangoproject.com/wiki/django_apache_and_mod_wsgi" target="_blank">Apache+WSGI</a>, <a href="http://www.alrond.com/en/2007/mar/01/start-django-with-nginx/" target="_blank">Nginx</a> ou <a href="http://code.djangoproject.com/wiki/ServerArrangements" target="_blank">un autre serveur</a>.</p>
<p>Lancez le serveur pour vérifier que votre projet est bien crée :</p>
<div class="codesnip-container" >cd c:\dev\django<br />
c:\dev\django&gt;manage.py runserver<br />
Validating models&#8230;<br />
0 errors found<br />
Django version 1.0-alpha-SVN-8225, using settings &#8216;projet1.settings&#8217;<br />
Development server is running at http://127.0.0.1:8000/<br />
Quit the server with CTRL-BREAK.</div>
<p>Maintenant vous pouvez ouvrir votre browser à cette adresse : <a href="http://127.0.0.1:8000/" target="_blank">http://127.0.0.1:8000/</a></p>
<p>Modifiez le fichier settings.py, puis suivez le <a href="http://docs.django-fr.org/intro/tutorial01.html#creation-des-modeles" target="_blank">premier tutorial</a> pour commencer à faire joujou.</p>
<p>Je reviens prochainement  pour la suite.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/bien-demarrer-avec-django/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Premiers pas Git : team workflow</title>
		<link>http://blog.revolunet.com/index.php/actu-informatique/linux/premiers-pas-git-team-workflow</link>
		<comments>http://blog.revolunet.com/index.php/actu-informatique/linux/premiers-pas-git-team-workflow#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:39:25 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=348</guid>
		<description><![CDATA[GIT est un logiciel de gestion de version, crée par Linus Torvalds, qui permet à plusieurs développeurs de travailler ensemble sur les mêmes projets, et de gérer toute l&#8217;évolution du code du projet (le workflow) voir même le déploiement et la maintenance des applications.
L&#8217;utilisation de GIT peut être assez déroutante au premier abord, notamment pour les habitués à SVN, mais [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">GIT est un<a href="http://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions" target="_blank"> logiciel de gestion de version</a>, crée par <a href="http://fr.wikipedia.org/wiki/Linus_Torvalds" target="_blank">Linus Torvalds</a>, qui permet à plusieurs développeurs de travailler ensemble sur les mêmes projets, et de gérer toute l&#8217;évolution du code du projet (le workflow) voir même le déploiement et la maintenance des applications.</p>
<p style="text-align: left;">L&#8217;utilisation de GIT peut être assez déroutante au premier abord, notamment pour les habitués à SVN, mais on devient très vite accro à la gestion des branches de GIT , qui permet d&#8217;organiser correctement son propre code, celui d&#8217;une équipe et de suivre l&#8217;évolution du projet. GIT possède son propre vocabulaire, j&#8217;espère vous éclairer un peu avec ces premiers pas. Pour tous les détails, consultez les livres online : <a href="http://progit.org/book/" target="_blank">Pro Git</a> et <a href="http://alx.github.com/gitbook" target="_blank">GIT community Book</a>.</p>
<p style="text-align: left;">Quelques avantages de git :</p>
<ul>
<li>Souplesse dans la gestion des branches</li>
<li>Décentralisé</li>
<li>Pas de serveur, un accès SSH suffit</li>
<li>Un seul dossier .git à la racine du projet</li>
<li>Le développeur peut créer ses propres branches locales</li>
<li>Espace disque et transferts réseau très limités</li>
</ul>
<div class="mceTemp">
<dl class="wp-caption alignleft" style="width: 451px;">
<dt class="wp-caption-dt"><a href="http://progit.org/book/ch3-2.html"><img title="pro git example" src="http://progit.org/figures/ch3/18333fig0317-tn.png" alt="pro git example" width="441" height="234" /></a></dt>
</dl>
</div>
<p>A contrario de SVN, les branches sont stockées dans le même répertoire de travail, et vous switchez de l&#8217;une à l&#8217;autre grâce la commande &#8216;git checkout&#8217;. cette commande remplace/supprimer et déplace les fichiers à la demande. Pour pouvoir changer de branche, tous les changements doivent être commités.</p>
<p>Dans un cas classique, plusieurs développeurs vont travailler sur le même projet, chacun sur sa branche, et l&#8217;un d&#8217;eux (le &#8216;dictator&#8217;) sera chargé de réintégrer toutes les modifs dans le &#8216;master&#8217; (via des &#8216;merge&#8217;). Une fois ces modifs publiées, chaque développeur pourra alors les réintégrer dans son propre code. Ce workflow est un exemple de base, de nombreux cas plus évolués sont possibles.</p>
<p>Si vous avez besoin de centraliser votre repository, vous pouvez utiliser un simple serveur avec accès SSH pour vos users, ou <a href="http://GitHub.com" target="_blank">GitHub.com</a> qui offre des repos gratuits pour les projets open source et 12$/mois pour 5 repos privés si besoin. L&#8217;avantage de cette dernière solution est sa facilité de mise en oeuvre ainsi que l&#8217;accès à l&#8217;excellente interface web de GitHub qui permet de consulter le code, les commits, d&#8217;avoir des stats, un systeme de wiki, but tracker&#8230; De plus, GitHub propose une fonction de Click&amp;Fork qui permet de forker nimporte quel projet en un clic. La mise à jour du code peut ensuite se faire dans les deux sens&#8230; ce qui est parfait pour le modèle open source.</p>
<p>Une fois l&#8217;installation de git effectuée, récupérez un projet :</p>
<p>pour un projet hébérgé sur un serveur SSH :</p>
<div class="codesnip-container" ># git clone jul@revolunet.com:/var/git/KillerApp.git</div>
<p>pour un projet hébérgé sur GitHub :</p>
<div class="codesnip-container" ># git clone git://github.com/julienb/KillerApp.git</div>
<p>Dans les deux cas,  cela crée un dossier KillerApp.git avec le projet et la branche &#8216;master&#8217; uniquement.</p>
<div class="codesnip-container" ># git branch<br />
* master</div>
<p>Si vous voulez rappatrier d&#8217;autres branches du serveur distant (origin), il faut les ajouter manuellement ;</p>
<div class="codesnip-container" ># git checkout &#8211;track -b juju origin/juju<br />
# git checkout &#8211;track -b gary origin/gary</div>
<p>Ceci crée les branches locales, qui sont &#8216;linkées&#8217; à leurs branches remotes respectives</p>
<p>On va passer dans la branche &#8216;juju&#8217;</p>
<div class="codesnip-container" ># git checkout juju</div>
<div class="codesnip-container" ># git branch<br />
gary<br />
* juju<br />
master</div>
<p>l&#8217;étoile indique qu&#8217;on travaille dans la branche &#8216;juju&#8217;</p>
<p>Pour créer une nouvelle branche locale &#8216;newfeature&#8217; depuis la <strong>branche actuelle</strong> et se déplacer dedans :</p>
<div class="codesnip-container" ># git checkout -b newfeature<br />
# Switched to a new branch &#8220;newfeature &#8220;</div>
<p>Attention, la branche est issue par defaut de la branche en cours, et pas du &#8216;master&#8217;</p>
<p>Pour changer de branche :</p>
<div class="codesnip-container" ># git checkout juju</div>
<div class="codesnip-container" ># git branch<br />
gary<br />
* juju<br />
master<br />
newfeature</div>
<p>Pour repasser dans la branche newfeature :</p>
<div class="codesnip-container" ># git checkout newfeature</div>
<p>Une fois dans votre branche de dev, faites des git commit dès que nécessaire. Les fichiers modifies/ajoutes doivent etre ajoutés a l&#8217;index GIT via :</p>
<div class="codesnip-container" ># git add fichier.py fichier2.py</div>
<p>ou, pour ajouter automatiquement tous les fichiers :</p>
<div class="codesnip-container" ># git commit -a </div>
<p>Il faut savoir que GIT est complètement <strong>décentralisé </strong>et que les branches locales/remote ne sont pas forcement synchronisées (&#8217;trackées&#8217;). Dans notre exemple, la branche &#8216;newfeature&#8217; n&#8217;existe qu&#8217;en local et ne pourra pas etre &#8216;pushée&#8217; sur le remote, sauf si on spécifie manuellement un lien vers un repo distant.</p>
<p>Une fois la &#8216;newfeature&#8217; codée, le développeur doit la réintégrer dans sa branche;  il doit bien sur d&#8217;abord commit son code, puis faire un merge :</p>
<p>Il passe d&#8217;abord dans sa branche :</p>
<div class="codesnip-container" ># git checkout juju</div>
<p>Puis merge le code de sa &#8216;newfeature&#8217;</p>
<div class="codesnip-container" ># git merge newfeature</div>
<p>Maintenant, la branche juju contient le code de newfeature et il a été commit automatiquement (en local).</p>
<h2><strong>Envoi de notre nouveau code sur le repository distant</strong></h2>
<h3><strong><strong>Envoyer sur la branche &#8216;juju&#8217;</strong></strong></h3>
<div class="codesnip-container" ># git checkout juju</div>
<p>Il peut envoyer son code sur le remote (cela pushera la branche juju vers la branche remote &#8216;juju&#8217;) :</p>
<div class="codesnip-container" ># git push</div>
<p>Un responsable se chargera alors de merger la branche juju dans la branche master et de mettre a jour le master sur le repo central.</p>
<h3><strong>Envoyer sur la branche &#8216;master&#8217; directement</strong></h3>
<p>Éventuellement, le développeur peut intégrer ses modifs directement dans la branche &#8216;master&#8217; :</p>
<p>Il passe sur la branch master :</p>
<div class="codesnip-container" ># git checkout master</div>
<p>Il récupère déjà le code du master actuel :</p>
<div class="codesnip-container" ># git pull</div>
<p>Puis merge sa branche dedans :</p>
<div class="codesnip-container" ># git merge juju</div>
<p>Puis envoi sur le remote :</p>
<div class="codesnip-container" ># git push</div>
<h2><strong>Récupération de code sur le repository distant</strong></h2>
<p>Si le developpeur veut réintégrer dans <strong>sa branche</strong> les mises à jour de ses collègues :</p>
<div class="codesnip-container" ># git checkout juju</div>
<p>récupérer toutes les branches distantes configurées :</p>
<div class="codesnip-container" ># git fetch</div>
<p>merger le code du master dans la branch actuelle</p>
<div class="codesnip-container" ># git merge origin/master</div>
<p>La branche &#8216;juju&#8217; est alors mise à jour avec le nouveau code issu de &#8216;master&#8217; (le trunk)</p>
<h2>Quelques commandes utiles :</h2>
<ul>
<li>Lister les branches sur le repo distant :</li>
</ul>
<div class="codesnip-container" ># git branch -r</div>
<ul>
<li>Créer une nouvelle branche &#8216;daniel&#8217;  locale, la créer aussi sur le remote, et la tracker : (double &#8211; before &#8216;track&#8217;)</li>
</ul>
<div class="codesnip-container" ># git push origin origin:refs/heads/daniel<br />
# git fetch origin<br />
# git checkout &#8211;track -b daniel origin/daniel<span style="font-family: monospace; line-height: 16px; font-size: 12px; white-space: pre; "><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px; "></div>
<p></span></span></p>
<ul>
<li>Sauvegarder en mémoire les modifs depuis le dernier checkout pour les réappliquer dans une autre branche. Attention, &#8216;git stash&#8217; reset votre branch au dernier commit (HEAD) :</li>
</ul>
<div class="codesnip-container" ># git stash # enregistre vos modifs<br />
# git checkout -b newfeature #crée une nouvelle branche<br />
# git stash apply # re-apply les modifs dans la nouvelle branche &#8216;newfeature&#8217;</div>
<ul>
<li><strong>Créer</strong> un nouveau repository local vide : (double &#8211; before &#8216;bare&#8217;)</li>
</ul>
<div class="codesnip-container" ># mkdir /pub/my-repo.git<br />
# cd /pub/my-repo.git<br />
# git &#8211;bare init</div>
<ul>
<li>Express local commit :</li>
</ul>
<div class="codesnip-container" ># git commit -a -m &#8220;killer feature ready&#8221;</div>
<ul>
<li>Afficher un diff des modifications</li>
</ul>
<div class="codesnip-container" ># git diff &#8211;color</div>
<ul>
<li>Afficher un logdes commits</li>
</ul>
<div class="codesnip-container" ># git log</div>
<h2><strong>Tips :</strong></h2>
<ul>
<li>Créez un fichier <a href="http://www.kernel.org/pub/software/scm/git-core/docs/gitignore.html" target="_blank">.gitignore</a> pour ignorer des fichiers/dossiers (ce fichier peut etre different par branche)</li>
<li>Utilisez <a href="http://www.revolunet.com/snippets/snippet/afficher-la-branche-git-en-cours-dans-votre-prompt-shell" target="_blank">ce script dans votre .bashrc</a> pour afficher la branche dans votre prompt</li>
<li>Consultez <a href="http://stackoverflow.com" target="_blank">stackoverflow.com</a> il y a <a href="http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks" target="_blank">pleins</a> <a href="http://stackoverflow.com/questions/tagged?tagnames=git&amp;sort=votes&amp;pagesize=30" target="_blank">d&#8217;idées</a> <a href="http://stackoverflow.com/questions/tagged?tagnames=github&amp;sort=votes&amp;pagesize=30" target="_blank">intéressantes</a></li>
<li>SVN GIT Crach course : <a href="http://git.or.cz/course/svn.html">http://git.or.cz/course/svn.html</a></li>
<li><a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/" target="_blank">GIT magic</a></li>
<li><a href="http://osteele.com/archives/2008/05/my-git-workflow#fn1" target="_blank">Exemple de workflow, avec des graphiques instructifs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/actu-informatique/linux/premiers-pas-git-team-workflow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test du Sanyo Xacti CA9</title>
		<link>http://blog.revolunet.com/index.php/general/test-du-sanyo-xacti-ca9</link>
		<comments>http://blog.revolunet.com/index.php/general/test-du-sanyo-xacti-ca9#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:07:10 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[geek style]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=327</guid>
		<description><![CDATA[Si vous êtes à la recherche d&#8217;un camescope pratique, économique et performant, alors le nouveau Xacti CA9 est peut etre fait pour vous. Principal point fort de cette gamme : la simplicité d&#8217;utilisation, la polyvalence et la robustesse. Le nouveau Xacti CA9 de Sanyo conserve le mode &#8216;torche&#8217; propre à la série des Xacti et [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_329" class="wp-caption alignleft" style="width: 210px"><img class="size-full wp-image-329" title="Sanyo Xacti CA9" src="http://blog.revolunet.com/wp-content/uploads/2009/07/clipboard01.jpg" alt="Sanyo Xacti CA9" width="200" height="197" /><p class="wp-caption-text">Sanyo Xacti CA9</p></div>
<p>Si vous êtes à la recherche d&#8217;un camescope pratique, économique et performant, alors le nouveau Xacti CA9 est peut etre fait pour vous. Principal point fort de cette gamme : la simplicité d&#8217;utilisation, la polyvalence et la robustesse. Le nouveau Xacti CA9 de Sanyo conserve le mode &#8216;torche&#8217; propre à la série des Xacti et apporte son lot de nouveautés :</p>
<ul>
<li>Films en HD 720p, MP4, AVC, h264  (jusqu&#8217;a 9mbit/s)</li>
<li>Photos en 9MP</li>
<li>Etanche jusqu&#8217;à 1.5m !</li>
<li>Simplicité d&#8217;utilisation</li>
<li>Cartes SD ou SDHC jusqu&#8217;a 32Go</li>
<li>Zoom optique 5x</li>
<li>Prises de photos possible pendant que l&#8217;on filme</li>
<li>Flash pour les photos (uniquement)</li>
<li>Stabilisateur (assez décevant)</li>
<li>Détection des visages</li>
</ul>
<p>Camescope idéal pour les geeks et autres bloggers, il enregistre directement en MP4/h264, ce qui permet de produire des films directement  lisibles dans un player Flash comme<a href="http://flowplayer.org/" target="_blank"> FlowPlayer</a> sans aucun conversion. Récupérez la carte SD, transférez sur votre FTP et la vidéo sera directement lisible par vos amis sur Internet.</p>
<p>L&#8217;utilisation est simple et intuitive, très peu de boutons et un petit joystick permettent d&#8217;accéder à toutes les fonctions et réglages, notamment le montage, découpage et assemblage de scènes si besoin. L&#8217;appareil est petit et léger, robuste et étanche, ce qui permet de l&#8217;emmener à la plage sans se soucier des grains de sable ! La qualité de la finition et des materiaux est excellente, il faudra simplement faire attention à l&#8217;écran rotatif qui est le seul point fragile.</p>
<p>La qualité des images est bonne sans être exceptionnelle et vous n&#8217;avez le choix pour la vidéo qu&#8217;entre 3 résolutions : 640&#215;480 en 30 ou 60 images/seconde et 1280&#215;720 en 30 img/secondes. Différents modes et filtres vous permettront d&#8217;adapter votre prise de vue à la scene si besoin.</p>
<p>Enfin, à 450€ environ, cet appareil bien pensé rassemble toutes les qualités d&#8217;un bon camescope de base, avec en plus l&#8217;érgonomie et la solidité des Xacti. Seul point noir, l&#8217;autonomie, d&#8217;environ 70 minutes, qui vous obligera à investir dans une batterie supplémentaire au cas ou. (40 € environ). Si vous avez besoin d&#8217;une qualité d&#8217;image plus professionnelle ou d&#8217;un zoom plus puissant, les modèles Xacti supérieurs comme le <a href="http://www.sanyo.de/products/digital_imaging/digital_movie/fullHD/product.asp?lg=F&amp;PID=19&amp;product=VPC-HD1010" target="_blank">HD1010</a> ou le <a href="http://www.sanyo.de/products/digital_imaging/digital_movie/fullHD/product.asp?lg=F&amp;PID=21&amp;product=HD2000" target="_blank">HD2000</a> vous l&#8217;offriront pour un peu plus cher.</p>
<p>Vous pouvez voir une <a title="Xacti CA9 video example" href="/wp-content/uploads/flowplayer/example/index.html" target="_blank">vidéo de test ici en cliquant ici</a> (HD 720p, dans FlowPlayer)</p>
<p>Et quelques photos : le <a href="/wp-content/uploads/2009/07/sany0018.jpg" target="_blank">chat</a>, la <a href="/wp-content/uploads/2009/07/sany0036.jpg" target="_blank">macro</a>, un <a href="/wp-content/uploads/2009/07/sany0095.jpg" target="_blank">paysage</a>, une <a href="/wp-content/uploads/2009/07/sany0117.jpg" target="_blank">cascade</a>. (non je ne donnerai pas l&#8217;adresse de ceslieux magiques)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/test-du-sanyo-xacti-ca9/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Outrage</title>
		<link>http://blog.revolunet.com/index.php/general/outrage</link>
		<comments>http://blog.revolunet.com/index.php/general/outrage#comments</comments>
		<pubDate>Fri, 22 May 2009 14:31:29 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Iliad - Free]]></category>
		<category><![CDATA[actu informatique]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=323</guid>
		<description><![CDATA[Alors que dans les médias la classe politique s&#8217;insurge contre la baisse du pouvoir d&#8217;achat, certaines décisions, comme celle de bloquer la concurrence dans le secteur de la téléphonie mobile, vont à contre-sens.
En plus d&#8217;enrichir les actionnaires plutôt que les consommateurs, fermer un marché freine la stimulation économique et le développement de nouveaux services, toujours [...]]]></description>
			<content:encoded><![CDATA[<p>Alors que dans les médias la classe politique s&#8217;insurge contre la baisse du pouvoir d&#8217;achat, certaines décisions, comme celle de bloquer la concurrence dans le secteur de la téléphonie mobile, vont à contre-sens.</p>
<p>En plus d&#8217;enrichir les actionnaires plutôt que les consommateurs, fermer un marché freine la stimulation économique et le développement de nouveaux services, toujours au détriment du consommateur.</p>
<p>Depuis des années, Free se bat pour enfin obtenir une licence de téléphonie mobile 3G, dont l&#8217;obtention est <a href="http://www.numerama.com/magazine/9195-Free-pourrait-etre-prive-de-licence-3G.html" target="_blank">retardée</a>, <a href="http://www.numerama.com/magazine/9210-La-4eme-licence-3G-serait-cedee-par-blocs-sur-decision-de-l-Elysee.html" target="_blank">refusée</a>, et <a href="http://www.numerama.com/magazine/9431-Pas-de-licence-3G-pour-Free-avant-2009.html" target="_blank">re-retardée</a> maintes fois. Or <a href="http://www.numerama.com/magazine/10557-Telephonie-mobile-Free-veut-diviser-la-facture-par-deux-en-2011.html" target="_blank">Free s&#8217;est engagé à faire économiser</a> jusqu&#8217;a 30% de leur facture annuelle de téléphone mobile à 40 Millions d&#8217;utilisateurs Francais.</p>
<p>Et on a vu ce que Free a réussi dans l&#8217;ADSL en France : développer un marché extraordinaire en un temps record, innover, apporter de nouveaux services et usages, démocratiser internet et stimuler la concurrence. On peut se demander ce que serait aujourdhui  l&#8217;Internet en France sans Free ? </p>
<p>Il est donc plus que nécessaire pour le consommateur que Free obtienne enfin cette licence pour enfin rendre le téléphone mobile plus accessible, faire baisser les couts, notamment ceux, scandaleux, des SMS.</p>
<p>D&#8217;après Numerama, le dossier de l&#8217;attribution des licences pourrait trainer jusqu&#8217;en Juin 2010, date à partir de laquelle le cout de déploiement technique triplera, car les 3 opérateurs actuels n&#8217;auraient alors plus à céder une partie de leurs fréquences au nouvel entrant : <a href="http://www.numerama.com/magazine/12970_3-4eme-licence-3G-le-dossier-Free-bientot-enterre.html" target="_blank">http://www.numerama.com/magazine/12970_3-4eme-licence-3G-le-dossier-Free-bientot-enterre.html</a></p>
<p>Suivez bien ce dossier !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/outrage/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test QNAP TS409 Pro</title>
		<link>http://blog.revolunet.com/index.php/general/test-qnap-ts409-pro</link>
		<comments>http://blog.revolunet.com/index.php/general/test-qnap-ts409-pro#comments</comments>
		<pubDate>Fri, 03 Apr 2009 10:37:50 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[actu informatique]]></category>
		<category><![CDATA[geek style]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=293</guid>
		<description><![CDATA[Afin de centraliser et sécuriser mes données, j&#8217;ai investi dans un NAS QNAP TS409 Pro qui n&#8217;est plus une nouveauté mais qui a maintenant un rapport qualité prix assez raisonnable (550€TTC). Ce boitier permet de connecter quatres disque durs SATA, pour moi 4 Seagate de 1.5Tb chacun et  permet de créer tout type de RAID [...]]]></description>
			<content:encoded><![CDATA[<p>Afin de centraliser et sécuriser mes données, j&#8217;ai investi dans un<a href="http://www.qnap.com/fr/pro_detail_feature.asp?p_id=85" target="_blank"> NAS QNAP TS409 Pro</a> qui n&#8217;est plus une nouveauté mais qui a maintenant un rapport qualité prix assez raisonnable (550€TTC). Ce boitier permet de connecter quatres disque durs SATA, pour moi 4 Seagate de 1.5Tb chacun et  permet de créer tout type de RAID logiciel, pour moi ce sera du RAID5 ce qui porte la capacité à 4.3To pour un prix final proche des 1000€ TTC quand même. La base du système est un linux optimisé sur lequel on peut se connecter très facilement si besoin, ce qui en fait une solution très ouverte et évolutive.</p>
<p>La série de disques durs seagate utilisés, des &#8216;Barracuda&#8217;, a posé de nombreux problèmes, à <a href="http://techreport.com/discussions.x/16276" target="_blank">Seagate</a>, qui a <a href="http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207957&amp;NewLang=en&amp;Hilite=" target="_blank">changé non-stop de firmware</a> mais aussi aux fabricant de NAS comme <a href="http://www.qnap.fr" target="_blank">QNAP</a>. J&#8217;ai du attendre presque 2 mois pour qu&#8217;un<a href="http://forum.qnap.com/viewtopic.php?f=144&amp;t=12586" target="_blank"> firmware compatible soit enfin releasé</a> mais cela a finalement été fait et bien fait grâce au support technique très réactif  de QNAP. Une fois ces problèmes materiels résolus, la création du RAID5 a duré près de 30h, entre le formatage et la synchronisation. Il faut dire que le CPU de ce QNAP est assez misérable (500Mhz) ce qui vous pénalisera si vous avez par exemple de gros rsync a faire.</p>
<p><a href="http://www.xbitlabs.com/articles/networking/display/qnap-ts109proii_6.html" target="_blank">L&#8217;interface web de gestion du QNAP</a> est claire et efficace, on yretrouve toutes les fonctions de configuration, mais aussi une section &#8220;Download Station&#8221; qui permet de lancer directement sur le NAS des téléchargements http/ftp/BT. Le boitier est également compatible DLNA pour ceux qui ont des consoles XBOX 360 ou PS3 et souhaitent partager les fichiers. Les principaux protocoles de partage de fichier son supportés : Samba/AFS/NFS/FTP&#8230; D&#8217;autres fonctions sont interessantes : réplication entre plusieurs NAS à distance, serveur Web et MySQL intégrés, bouton &#8220;hotcopy&#8221; pour copier rapidement le contenu d&#8217;un disque USB externe sur le NAS, gestion imprimantes USB (comme la freebox), Corbeille réseau, iTunes station&#8230; </p>
<p>Au niveau des performances, le bilan est assez mitigé :</p>
<ul>
<li>Transfert avec rsync du port USB du QNAP d&#8217;un disque en NTFS vers le RAID5 : 2.5mb/s (cpu a fond)</li>
<li>Transfert avec cp du port USB du QNAP d&#8217;un disque en NTFS vers le RAID5 : 6.5mb/s</li>
<li>Transfert avec rsync entre un linux et le QNAP via ssh : 2.5mb/s (cpu a fond)</li>
<li>Transfert avec rsync entre un linux et le QNAP via NFS : 7.5mb/s</li>
<li>Transfert entre un explorateur windows et le QNAP via samba : 6mb/s</li>
</ul>
<p>Points positifs :</p>
<ul>
<li>Configuration facile et rapide</li>
<li>Fonctionnalités multiples</li>
<li>Linux</li>
</ul>
<p>Point négatifs :</p>
<ul>
<li>Pas de support du ReiserFS</li>
<li>CPU trop lent</li>
<li>seulement 256 de RAM</li>
</ul>
<p>Conclusion : Le QNAP reste un bon NAS, accessible et fonctionnel. Idéal pour le stockage sécurisé, les sauvegardes et le partage réseau.</p>
<p>CF comparatif des NAS 2009 sur clubic : <a href="http://www.clubic.com/article-151126-17-stockage-reseau-nas.html">http://www.clubic.com/article-151126-17-stockage-reseau-nas.html</a> avec tests complets et comparatif des performances. On voit que le TS509, nouveau modele avec un CPU plus puissant et 1Go de RAM est largement devant. donc si vous avez les moyens, foncez sur le TS-509 Pro (environ 800€ TTC sans les disques).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/test-qnap-ts409-pro/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>rsync alternative for low cpus</title>
		<link>http://blog.revolunet.com/index.php/geek-style/rsync-alternative-for-low-cpus</link>
		<comments>http://blog.revolunet.com/index.php/geek-style/rsync-alternative-for-low-cpus#comments</comments>
		<pubDate>Thu, 02 Apr 2009 12:11:54 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[geek style]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=289</guid>
		<description><![CDATA[I had to transfer some +500Gb of data from an NTFS drive, using my QNAP TS409 PRO Nas external USB connector.
Using the integrated &#8220;hot copy button&#8221; or a simple rsync between the two drives, i only reached 2.5mb/s which is a pitty. In fact its the Qnap Cpu which is a pitty. (yes rsync is [...]]]></description>
			<content:encoded><![CDATA[<p>I had to transfer some +500Gb of data from an NTFS drive, using my QNAP TS409 PRO Nas external USB connector.</p>
<p>Using the integrated &#8220;hot copy button&#8221; or a simple rsync between the two drives, i only reached 2.5mb/s which is a pitty. In fact its the Qnap Cpu which is a pitty. (yes rsync is cpu consuming)</p>
<p>So inspired from <a href="http://discuss.joelonsoftware.com/default.asp?design.4.528600.11">http://discuss.joelonsoftware.com/default.asp?design.4.528600.11</a> i wrote a simple bash script to recursively copy a directory tree, but using cp instead of rsync. I can now reach 6.5mb/s which is 3 times faster.</p>
<p>So here it is : <a href="http://www.revolunet.com/static/download/labo/mysync.sh">http://www.revolunet.com/static/download/labo/mysync.sh</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/geek-style/rsync-alternative-for-low-cpus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NeufBox = catastrophe</title>
		<link>http://blog.revolunet.com/index.php/general/neufbox-catastrophe</link>
		<comments>http://blog.revolunet.com/index.php/general/neufbox-catastrophe#comments</comments>
		<pubDate>Tue, 31 Mar 2009 10:14:36 +0000</pubDate>
		<dc:creator>Juju</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[actu informatique]]></category>

		<guid isPermaLink="false">http://blog.revolunet.com/?p=287</guid>
		<description><![CDATA[J&#8217;ai malheureusement décidé de m&#8217;inscrire à Neuf ADSL pour ma nouvelle ligne de téléphone; j&#8217;habite en plein Paris et pourtant le service est déplorable&#8230; Petit temoignage pour vous éviter de vivre la même chose :

Le téléphone est inutilisable, il se désactive régulièrement, il faut carrément RESET la box pour le relancer
Impossible d&#8217;envoyer/recevoir des fax, la [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai malheureusement décidé de m&#8217;inscrire à Neuf ADSL pour ma nouvelle ligne de téléphone; j&#8217;habite en plein Paris et pourtant le service est déplorable&#8230; Petit temoignage pour vous éviter de vivre la même chose :</p>
<ul>
<li>Le téléphone est inutilisable, il se désactive régulièrement, il faut carrément RESET la box pour le relancer</li>
<li>Impossible d&#8217;envoyer/recevoir des fax, la ligne est totalement instable. retour a l&#8217;envoi manuel à la Poste :/</li>
<li>Le débit est minable, même en download</li>
<li>Impossible d&#8217;avoir une IP fixe avec neuf, même pas en option !</li>
<li>Les conseillers au téléphone font des RESET à distance sur la box, sans même vous prévenir, et en effacant votre configuration, obligé de tout reconfigurer&#8230;</li>
</ul>
<p>Dire que j&#8217;avais souscrit à leur offre &#8216;Pros&#8217; <img src='http://blog.revolunet.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Bref, fuyez Neuf (SFR) pour un opérateur plus fiable, FREE par exemple voir Orange si vous êtes pret à payer le prix fort.</p>
<p>Resil et migration en vue pour moi.</p>
<p><strong>EDIT: </strong>Suite à plusieurs appels à la hotline, Neuf a décidé de brider la ligne en question à 5mbits/s. Et depuis c&#8217;est vrai, le telephone est plus stable et le fax marche en envoi/reception. (uptime 24h). Mais 5mb/s en plein Paris c&#8217;est bien décevant pour un service vendu comme du &#8220;Très haut débit&#8221;. Vivement la fibre.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.revolunet.com/index.php/general/neufbox-catastrophe/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
