<?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>Gilliek</title>
	<atom:link href="http://blog.gilliek.ch/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.gilliek.ch</link>
	<description>Blog personnel</description>
	<lastBuildDate>Sat, 14 Apr 2012 17:34:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>La Metaprogrammation en Ruby</title>
		<link>http://blog.gilliek.ch/programmation/la-metaprogrammation-en-ruby</link>
		<comments>http://blog.gilliek.ch/programmation/la-metaprogrammation-en-ruby#comments</comments>
		<pubDate>Thu, 05 Apr 2012 12:31:50 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[class_eval]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[metaprogrammation]]></category>
		<category><![CDATA[metaprogramming]]></category>
		<category><![CDATA[methode_missing]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/non-classe/letaprogrammation-en-ruby</guid>
		<description><![CDATA[Voici (enfin !) mon premier billet en 2012 ! L'année passée, je vous avais promis quelques articles techniques (notamment sur la programmation). Aujourd'hui, c'est chose promise chose due : on va parler de métaprogrammation en Ruby. Cet article sera accompagné d'un autre qui traitera de la fonction yield(). Et ces deux articles précéderont une série [...]]]></description>
			<content:encoded><![CDATA[<p>Voici (enfin !) mon premier billet en 2012 ! L'année passée, je vous avais promis quelques articles techniques (notamment sur la programmation). Aujourd'hui, c'est chose promise chose due : on va parler de métaprogrammation en Ruby.</p>
<p>Cet article sera accompagné d'un autre qui traitera de la fonction yield(). Et ces deux articles précéderont une série d'autres à propos du célèbre framework Ruby : Ruby On Rails.</p>
<h2>Qu'est-ce que la metaprogrammation ?</h2>
<p>J'imagine que beaucoup d'entre-vous ont ouvert de grands yeux à la lecture de ce mot barbare : "la métaprogrammation". En fait, cela n'a rien de bien compliqué : La métaprogrammation consiste à écrire des programmes qui décrivent eux-mêmes des programmes. Autrement dit, ça permet (entre autres) de générer du code directement au runtime. Comme vous allez pouvoir le constater, c'est vraiment très puissant.</p>
<p>La définition de <a title="Wikipedia - Métaprogrammation" href="http://fr.wikipedia.org/wiki/M%C3%A9taprogrammation">Wikipedia</a> énumère les différentes façons de procéder :</p>
<ul>
<li>l'utilisation de générateur de code (ce que j'ai mentionné juste avant)</li>
<li>la programmation avec des templates</li>
<li>l'utilisation d'un protocole à méta-objets</li>
<li>l'utilisation de macros.</li>
</ul>
<h2>A quoi peut bien servir la metaprogrammation ?</h2>
<p>La métaprogrammation peut servir à grandement simplifier la lecture du code (notamment via le principe Don't Repeat Yourself) ou dans le cas de Rails à simplifier la vie du développeur.</p>
<h2>Deux petits exemples pour la route !</h2>
<p>Admettons que l'on fasse un programme qui gère une base de données client et qui manipule donc plein de chaînes de caractères (String) qui peuvent signifier plein de choses (un numéro de téléphone, une adresse email, un numéro client, etc.). Nous aimerions qu'un objet String dispose de méthodes telephone?, email?, no_client? ... et peut-être même d'autres plus tard ! Comment faire ? Vous vous doutez bien de la réponse : avec la métaprogrammation !</p>
<p>Voici le code : (je vous expliquerai juste après son fonctionnement, donc pas de panique <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<pre class="brush: ruby;">  #!/usr/bin/env ruby

class String
        @@string_checks = {
        'phone?' =&gt; %r{^0[\d]{2}\/[\d]{3}\.[\d]{2}\.[\d]{2}$},
            'email?' =&gt; %r{^.+@.+\.[a-z]{2,4}$},
            'no_client?' =&gt; %r{^[A-Z]{2}[\d]{4}-[\d]{4}-[\d]{4}$}
        }
        def method_missing(method_id)
                kind_of_string = method_id.to_s
                if @@string_checks.has_key?(kind_of_string)
                        if self =~ @@string_checks[kind_of_string]
                                true
                        else
                                false
                        end
                else
                        raise NoMethodError,
                                "Undefined method #{method_id} for \"#{self}\":String"
                end
        end
end

def humanize(bool)
        bool ? "Yes !" : "No !"
end

begin
        # Valid
        tel = "022/123.45.67".phone?
        email = "foo@foo.com".email?
        no_client = "CH1234-4242-4242".no_client?

        puts "Is 022/123.45.67 a valid phone number ? #{humanize(tel)}"
        puts "Is foo@foo.com a valid email address ? #{humanize(email)}"
        puts "Is CH1234-4242-4242 a valid client number ? #{humanize(no_client)}"

        puts "#################################################"

        #Invalid
        tel = "0033/123.12.12.12".phone?
        email = "www.foo.com".email?
        no_client = "42".no_client?

        puts "Is 0033/123.12.12.12 a valid phone number ? #{humanize(tel)}"
        puts "Is www.foo.com a valid email address ? #{humanize(email)}"
        puts "Is 42 a valid client number ? #{humanize(no_client)}"
end</pre>
<p>Alors qu'est-ce que j'ai fait ?</p>
<p>Vous noterez tout d'abord que je définis une classe <strong>String</strong> qui est en fait une classe prédéfinie. En effet, en Ruby il est tout à fait possible de rajouter des choses dans les classes prédéfinies.</p>
<p>Il faut ensuite faire attention à la méthode <strong>method_missing</strong> que j'ai ajouté à la classe <strong>String</strong>. Que fait cette méthode ? Et bien si vous appelez une méthode non définie d'un objet<strong> String</strong>, Ruby va jeter un oeil dans cette méthode pour voir si on y définit quand même la méthode.  Et c'est justement là-dessus que je joue en récupérant l'id de la méthode et cherchant l'expression régulière correspondante au nom de la méthode appelée.</p>
<p>Après, je lève simplement une exception <strong>NoMethodFound</strong> si la méthode appelée n'est pas correct.</p>
<p>Finalement, je fais une méthode <strong>humanize</strong> ... qui n'a rien de spéciale <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Elle ne fait que mettre en forme un booléan. Le reste n'est ensuite que des tests que vous pouvez vous amusez à lancer.</p>
<p>N'est-ce pas beau de pouvoir simplement appeler <em>"foo@foo.com".email?</em> pour vérifier s'il s'agit bien d'un email valide ?</p>
<p>Ainsi, il va gérer la méthode dynamiquement et directement au Runtime <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  De plus, si on veut par la suite ajouter d'autres vérifications pour une String, il suffit d'ajouter ce dont on a besoin dans la hash table <strong>@@string_checks</strong>.</p>
<p>Il y a également d'autres façons d'utiliser la métaprogrammation. On peut générer des méthodes sous forme de chaînes de caractères et utiliser la méthode <strong>class_eval</strong> pour l'évaluer. Regardons ça avec un petit exemple.</p>
<p>On aimerait créer une méthode <strong>attr_accessor_with_backup</strong> qui déclarerait un attribut et ses accesseurs correspondant (getter et setter) et qui garderait un backup de la valeur précédente.</p>
<pre class="brush: ruby;"> #!/usr/bin/env ruby

class Class
        # Store a backup of the previous value in attr_name_backup
        def attr_accessor_with_backup(attr_name)
          # Make sure it's a String
          attr_name = attr_name.to_s
          # Create a getter for attr_name and attr_name_backup
          attr_reader attr_name
          attr_reader attr_name+"_backup"
          # Generate setter for attr_name
          class_eval %Q{
                  def #{attr_name}=(value)
                        # backup previous value
                        @#{attr_name}_backup = #{attr_name}
                        # set the new value
                        @#{attr_name} = value
                  end
          }
        end
end

class WeNeedBackup
        attr_accessor_with_backup :foo
end

begin
        spock = WeNeedBackup.new
        spock.foo = "42"
        puts "foo =&gt; #{spock.foo} and foo_backup =&gt; #{spock.foo_backup}"
        spock.foo = "24"
        puts "foo =&gt; #{spock.foo} and foo_backup =&gt; #{spock.foo_backup}"
        spock.foo = "128"
        puts "foo =&gt; #{spock.foo} and foo_backup =&gt; #{spock.foo_backup}"
end</pre>
<p>Cette fois on ajoute une méthode <strong>attr_accessor_with_backup</strong> dans la classe <strong>Class</strong> (classe dont toutes les classes Ruby sont des sous-classes), qui, rappelons-le, fait exactement comme la méthode prédéfinie <strong>attr_accessor </strong>en plus de stocker un backup de la valeur précédente de l'attribut.</p>
<p>Dans cette méthode on va alors créer des getters pour le nom de l'attribut (<em>attr_name</em>)  et son backup (<em>attr_name_backup</em>) qui contiendra la valeur précédente de <em>attr_name</em>.</p>
<p>Ensuite, il va nous falloir définir dynamiquement un setter pour l'attribut. On va donc utiliser la méthode <strong>class_eval </strong>et lui donner en argument une chaîne de caractères contenant le code de notre setter. Cette méthode s'occupera de sauvegarder la valeur courante de l'attribut dans l'attribut <em>_backup</em> et de mettre à jour la valeur de l'attribut.</p>
<p>Finalement, notre méthode <strong>attr_accessor_with_backup</strong> va générer les méthodes nécessaires directement au runtime.  N'est-ce pas monstrueusement puissant ?</p>
<h2>Conclusion</h2>
<p><strong></strong>Vous l'aurez sans doute constaté, la métaprogrammation permet de faire des tas de choses bien pratiques et peut ainsi simplifier la vie du développeur.</p>
<p>Le framework <strong>Rails </strong>utilise la métaprogrammation pour simplifier l'écriture du code par le développeur. Par exemple, il génère des helpers pour gérer les chemins aux ressources. Par exemple, pour accéder au <em>controller</em> <strong>products</strong>, il suffira d'appeler <strong>products_path </strong>ou <strong>products_url </strong>si on veut un chemin absolu. Si on veut accéder à l'action <strong>new </strong>du <em>controller</em> <strong>products</strong>, il suffira d'appeler <strong>new_product_path</strong> ou <strong>new_product_url</strong>. Ne vous inquiétez pas, nous reviendrons dessus beaucoup plus en détail très prochainement lorsque nous aborderons <strong>Rails</strong>.</p>
<p>J'espère que ce billet vous aura été utile <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/programmation/la-metaprogrammation-en-ruby/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Archlinux] Visionnez les PDF directement depuis Firefox</title>
		<link>http://blog.gilliek.ch/linux/archlinux-visionnez-les-pdf-directement-depuis-firefox</link>
		<comments>http://blog.gilliek.ch/linux/archlinux-visionnez-les-pdf-directement-depuis-firefox#comments</comments>
		<pubDate>Mon, 19 Dec 2011 09:16:00 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=446</guid>
		<description><![CDATA[On va voir une petite astuce qui permet de visionner les PDF directement depuis Firefox, sans avoir à les télécharger et sans avoir besoin d'utiliser Adobe Acrobat Reader. Ca ne fonctionne que pour les systèmes GNU/Linux (What else ?©) et bien que l'intitulé du tutoriel porte le nom "Archlinux", l'astuce fonctionne en principe pour toutes [...]]]></description>
			<content:encoded><![CDATA[<p>On va voir une petite astuce qui permet de visionner les PDF directement depuis Firefox, sans avoir à les télécharger et sans avoir besoin d'utiliser Adobe Acrobat Reader. Ca ne fonctionne que pour les systèmes GNU/Linux (What else ?©) et bien que l'intitulé du tutoriel porte le nom "Archlinux", l'astuce fonctionne en principe pour toutes les distributions; il vous faudra juste chercher le paquet spécifique à votre distribution <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>L'astuce est inspirée de la documentation d'Archlinux : <a href="https://wiki.archlinux.org/index.php/Firefox_Tips_and_Tweaks#Viewing_PDF.2FPS_inside_Firefox">https://wiki.archlinux.org/index.php/Firefox_Tips_and_Tweaks#Viewing_PDF.2FPS_inside_Firefox</a></p>
<p>Les prérequis sont :</p>
<ul>
<li>Une distribution GNU/Linux</li>
<li>Firefox. (pour les utilisateurs de chromium, voir le "edit 2" à la fin de l'article)</li>
<li>Un lecteur PDF (par exemple <strong>Evince</strong>)</li>
</ul>
<p>&nbsp;</p>
<p>Allons-y !</p>
<p>Il faut tout d'abord installer le paquet <strong>mozplugger</strong>. Malheureusement, il ne se trouve pas dans les dépôts d'Archlinux. Vous devrez donc aller le chercher sur <a href="http://aur.archlinux.org/packages.php?ID=9458">AUR</a>. Si vous avez yaourt d'installé :</p>
<pre class="brush: bash;">yaourt -S mozplugger</pre>
<p>Sinon on y va façon geek <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
<pre class="brush: bash;">wget http://aur.archlinux.org/packages/mo/mozplugger/mozplugger.tar.gz</pre>
<p>On décompresse le tout (nécessite l'utilitaire pour décompresser les tar gz, évidemment) :</p>
<pre class="brush: bash;">tar xvzf mozplugger.tar.gz &amp;&amp; cd mozplugger</pre>
<p>On créé le package :</p>
<pre class="brush: bash;">makepkg -s</pre>
<p>Et on l'installe (le nom peut varier en fonction de la version, adaptez-le si ça ne fonctionne pas) :</p>
<pre class="brush: bash;">sudo pacman -U mozplugger-1.14.3-1-x86_64.pkg.tar.xz</pre>
<p>Maintenant que mozplugger est installé, il nous faut virer certains fichiers :</p>
<pre class="brush: bash;">rm ~/.mozilla/firefox/*.default/pluginreg.dat</pre>
<p>Editons maintenant le fichier de configuration de mozplugger (<em>/etc/mozpluggerrc</em>)avec notre éditeur de texte préféré (vim pour ma part ^^). Il ne faut pas oublier de le lancer en root pour avoir les droits de modification sur le fichier <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Une fois le fichier ouvert, on commente la ligne (ligne 288 chez moi) suivante qui se trouve dans la partie <strong>PDF</strong> après la ligne GV() :</p>
<pre class="brush: bash;">#repeat noisy fill exits: evince "$file"</pre>
<p>Et on ajoute juste après :</p>
<pre class="brush: bash;">repeat noisy swallow(evince) fill: evince "$file"</pre>
<p>Note, vous pouvez remplacer evince par un autre lecteur PDF (comme Okular. Ca devrait normalement fonctionner.</p>
<p>Pour finir, on relance Firefox et le tour est joué. Il ne reste plus qu'à ouvrir un PDF pour voir si ça fonctionne bien.</p>
<p>J'espère que cette astuce vous aura été utile. En ce qui me concerne, je trouve vraiment pratique de pouvoir visualiser un PDF sans avoir à le télécharger (ça évite le chaos dans le dossier <em>Downloads</em>).</p>
<p>&nbsp;</p>
<p><strong>Edit 1 : </strong>Vous pouvez vous amusez à modifier le fichier de configuration de mozplugger pour gérer d'autres formats de fichiers (.doc/.docx, etc.). Pour la doc, c'est pas ici : <a href="http://mozplugger.mozdev.org/documentation.html">http://mozplugger.mozdev.org/documentation.html</a></p>
<p><strong>Edit 2 : </strong>Pour les utilisateurs de chromium, c'est par ici : <a href="https://aur.archlinux.org/packages.php?ID=46826">https://aur.archlinux.org/packages.php?ID=46826</a>  je n'ai pas testé, mais en principe ça devrait fonctionner de la même façon <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/linux/archlinux-visionnez-les-pdf-directement-depuis-firefox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La technologie n&#8217;est pas seulement pour les humains !</title>
		<link>http://blog.gilliek.ch/vu-sur-le-net/la-technologie-nest-pas-seulement-pour-les-humains</link>
		<comments>http://blog.gilliek.ch/vu-sur-le-net/la-technologie-nest-pas-seulement-pour-les-humains#comments</comments>
		<pubDate>Sun, 18 Dec 2011 22:21:54 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Vu sur le net]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=441</guid>
		<description><![CDATA[Un lézard joue sur un smartphone - Vidéo humour Les lézards ont eu aussi le droit de jouer Soit dit en passant, l'appli est sympa, mais on s'en lasse vite (je l'avais testée il y a quelques mois)]]></description>
			<content:encoded><![CDATA[<div><object width="480" height="380" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.koreus.com/video/lezard-joue-smartphone" /><embed width="480" height="380" type="application/x-shockwave-flash" src="http://www.koreus.com/video/lezard-joue-smartphone" /></object><br />
<a href="http://www.koreus.com/video/lezard-joue-smartphone.html">Un lézard joue sur un smartphone</a> - <a href="http://www.koreus.com/videos/nouveau/">Vidéo humour</a></div>
<p>Les lézards ont eu aussi le droit de jouer <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Soit dit en passant, l'appli est sympa, mais on s'en lasse vite (je l'avais testée il y a quelques mois)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/vu-sur-le-net/la-technologie-nest-pas-seulement-pour-les-humains/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Interview de Richard Stallman</title>
		<link>http://blog.gilliek.ch/actualites/interview-de-richard-stallman</link>
		<comments>http://blog.gilliek.ch/actualites/interview-de-richard-stallman#comments</comments>
		<pubDate>Sun, 18 Dec 2011 20:13:39 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Richard Stallman]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=439</guid>
		<description><![CDATA[Une interview intéressante de Richard Stallman : http://www.commentcamarche.net/news/5857618-richard-stallman-la-censure-sur-le-web-a-explose-en-france]]></description>
			<content:encoded><![CDATA[<p>Une interview intéressante de Richard Stallman :</p>
<p><a href="http://www.commentcamarche.net/news/5857618-richard-stallman-la-censure-sur-le-web-a-explose-en-france">http://www.commentcamarche.net/news/5857618-richard-stallman-la-censure-sur-le-web-a-explose-en-france</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/actualites/interview-de-richard-stallman/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shaarli me voici !</title>
		<link>http://blog.gilliek.ch/actualites/shaarli-me-voici</link>
		<comments>http://blog.gilliek.ch/actualites/shaarli-me-voici#comments</comments>
		<pubDate>Sun, 18 Dec 2011 12:47:53 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Vu sur le net]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[partage]]></category>
		<category><![CDATA[shaarli]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=432</guid>
		<description><![CDATA[Sebsauvage, un bloggeur que je suis, a récemment développé Shaarli une petite application web écrite en PHP et qui permet de partager des liens. J'ai récemment mis Shaarli en place sur mon serveur et vous pouvez désormais suivre mes "liens en vrac" à l'adresse suivante : http://links.gilliek.ch/]]></description>
			<content:encoded><![CDATA[<p><a href="http://sebsauvage.net/rhaa/">Sebsauvage</a>, un bloggeur que je suis, a récemment développé <a href="http://sebsauvage.net/wiki/doku.php?id=php:shaarli">Shaarli</a> une petite application web écrite en PHP et qui permet de partager des liens. J'ai récemment mis Shaarli en place sur mon serveur et vous pouvez désormais suivre mes "liens en vrac" à l'adresse suivante :</p>
<p style="text-align: center;">
<p style="text-align: center;"><a title="Shaarli" href="http://links.gilliek.ch/">http://links.gilliek.ch/</a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/actualites/shaarli-me-voici/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Personnaliser Unity : La suite</title>
		<link>http://blog.gilliek.ch/linux/personnaliser-unity-la-suite</link>
		<comments>http://blog.gilliek.ch/linux/personnaliser-unity-la-suite#comments</comments>
		<pubDate>Sun, 18 Dec 2011 12:40:58 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[MyUnity]]></category>
		<category><![CDATA[ocelot]]></category>
		<category><![CDATA[oneiric]]></category>
		<category><![CDATA[personnaliser]]></category>
		<category><![CDATA[screenlets]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntu 11.10]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=429</guid>
		<description><![CDATA[Dans un article précédent, je vous avais donné quelques petits trucs pour personnaliser Unity sous Ubuntu 11.10. Je vous avais notamment mentionné Ubuntu Tweak comme étant un outil indispensable et qu'il fallait suivre sa sortie prochaine pour Ubuntu 11.10. Et bien on dirait qu'elle pointe le bout de son nez : La version finale d’Ubuntu Tweak [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un article précédent, je vous avais donné quelques petits trucs pour personnaliser Unity sous Ubuntu 11.10. Je vous avais notamment mentionné Ubuntu Tweak comme étant un outil indispensable et qu'il fallait suivre sa sortie prochaine pour Ubuntu 11.10. Et bien on dirait qu'elle pointe le bout de son nez : <a href="http://www.le-libriste.fr/2011/12/la-version-finale-dubuntu-tweak-0-6-bientot-prete/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+webdevonlinux%2FHrzu+%28Le+Libriste%29">La version finale d’Ubuntu Tweak 0.6 bientôt prête</a></p>
<p>J'ai aussi découvert un nouvel outil pour personnalisé certains paramètres d'Unity : <a href="https://launchpad.net/myunity">MyUnity</a></p>
<p>Pour l'installer, ajoutez le dépôt de MyUnity :</p>
<pre class="brush: bash;">sudo add-apt-repository ppa:myunity/ppa</pre>
<p>Puis, mettez à jour la liste des paquets :</p>
<pre class="brush: bash;">sudo apt-get update</pre>
<p>Et finalement, installez le paquet myunity :</p>
<pre class="brush: bash;">sudo apt-get install myunity</pre>
<p>Il ne vous reste plus qu'à le lancer et à tester les différents paramètres <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>A part ça, comme je l'ai mentionné dans mon dernier article, j'ai migré mon ordinateur de bureau sur Pinguy OS <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Et pour l'instant tout ce passe bien. Et comme promis, un article est en préparation sur le sujet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/linux/personnaliser-unity-la-suite/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Personnaliser Unity sous Ubuntu 11.10</title>
		<link>http://blog.gilliek.ch/linux/personnaliser-unity-sous-ubuntu-11-10</link>
		<comments>http://blog.gilliek.ch/linux/personnaliser-unity-sous-ubuntu-11-10#comments</comments>
		<pubDate>Sun, 04 Dec 2011 15:06:50 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[ccsm]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[ocelot]]></category>
		<category><![CDATA[oneiric]]></category>
		<category><![CDATA[personnaliser]]></category>
		<category><![CDATA[screenlets]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntu 11.10]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=415</guid>
		<description><![CDATA[Depuis quelques temps déjà, j'ai installé Ubuntu 11.10 sur mon ordinateur de bureau. J'avais envie d'un système tout simple où il n'y a pas de tonnes de fichiers de conf à éditer. C'est surtout une machine pour le divertissement et qui est reliée à ma TV (et qui fait donc office de Media Center) alors [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques temps déjà, j'ai installé Ubuntu 11.10 sur mon ordinateur de bureau. J'avais envie d'un système tout simple où il n'y a pas de tonnes de fichiers de conf à éditer. C'est surtout une machine pour le divertissement et qui est reliée à ma TV (et qui fait donc office de Media Center) alors je me suis dis "Fais toi pas ch*** et installe-toi un OS simple" et c'est ainsi que j'avais commencé par une Fedora avec KDE, puis maintenant Ubuntu et à la fin de la journée une Pinguy OS (et oui je suis à la recherche d'un système qui me convient, et je suis assez pénible <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ). Alors pourquoi faire un post sur Ubuntu si j'ai l'intention de la quitter cette après-midi ? Tout simplement parce que je trouve Unity intéressant, et bien qu'il y ait (pour l'instant j'espère) que très peu d'outils pour le personnaliser, on peut en faire quelque chose de sympa à utiliser. Alors je vais partager, en espérant que ça peut servir à quelqu'un, les quelques trucs et astuces auxquels j'ai eu recours <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Cette article va donner suite à plusieurs autres dans le même genre (que j'espère prochainement pouvoir poster) : Configurer Awesome sous Archlinux, Compiz en standalone sur Archlinux, A la découverte de Pinguy OS et quelques autres articles sur des logiciels très utiles que j'ai découvert ces derniers temps et qui sont très prometteurs. Après cette interlude sur "la personnalisation", je vais revenir à des sujets un peu plus techniques sur la programmation (c'est promis <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) notamment sur des patterns, méthodes de développement, C et le frameword Ruby On Rails. Voilà pour la petite parenthèse "Coming soon". Revenons à nos moutons.</p>
<p>Quand on débarque sur Unity, le premier réflexe et d'aller dans les "System Settings" (Paramètres système, pardonnez les traductions mais mon système est en anglais et j'ai la flemme d'installer le pack de langue français <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  Mais vous allez vous en sortir, ne vous inquiétez pas <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ), enfin pour moi. Et la horreur (effroi et toussa) : il n'y a quasi rien o_O Et il y a des gros boutons partout (merde, on est pas aveugle ?!). Vous l'aurez compris, c'est par là que l'on va commencer.</p>
<h2>Changer la taille des icones dans le dock</h2>
<p>Pour cela, il va vous falloir installer <strong>Compiz Config Settings Manager</strong>. Passez par l'Ubuntu Software Center ou tapez la commande suivante dans un Terminal :</p>
<pre class="brush: bash:">sudo apt-get install compizconfig-settings-manager</pre>
<p>Appuyez sur &lt;Super&gt; ou cliquez sur l'icone du "Dash", puis saisissez : <strong>ccsm</strong> ou <strong>compiz </strong>et lancez le Compiz Config Settings Manager. Cherchez <strong>Ubuntu Unity Plugin</strong> et cliquez dessus :</p>
<p style="text-align: center;"><img src="http://blog.gilliek.ch/wp-content/uploads/2011/12/screenshot-ccsm-unity-plugin-1.png" alt="" width="500" height="315" /></p>
<p style="text-align: left;">Une fois dedans, allez dans l'onglet <strong>Experimental</strong> e modifiez le <strong>Launcher Icon Size </strong>(Taille des icones du lanceur, ou quelques choses comme ça) comme vous voulez (par exemple mettez la valeur 32) :</p>
<p style="text-align: center;"><img src="http://blog.gilliek.ch/wp-content/uploads/2011/12/screenshot-ccsm-unity-plugin-1-bis.png" alt="" width="500" height="313" /></p>
<p style="text-align: left;">Compiz Settings Manager permet de régler plein d'autres choses. Je vous laisse découvrir les autres réglages <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Vous pouvez également ajouter plein d'effets sympa à votre bureau. Déchaînez-vous ! <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: left;">Passons maintenant à la suite. Si vous utilisiez les anciennes versions d'Ubuntu sans Unity, vous avez sans doute eu la même réaction que moi en essayant de faire un clique droit sur le panel pour ajouter des applets. Et bien, le panel d'Unity ne supporte pas les applets, mais les AppIndicator. Regardons alors comment personnaliser tout ça afin d'ajouter ses propres indicator.</p>
<h2>Ajouter des indicators dans le panel</h2>
<p>On va ajouter un indicator pour le CPU, la mémoire utilisée et la température du GPU. Pour cela il va falloir ajouter un dépôt :</p>
<pre class="brush: bash;">sudo add-apt-repository ppa:alexeftimie/ppa</pre>
<p style="text-align: left;">Mettez ensuite à jour la liste des pacquets :</p>
<pre class="brush: bash;">sudo apt-get update</pre>
<p style="text-align: left;">Et installez finalement le <strong>sysmonitor</strong> :</p>
<pre class="brush: bash;">sudo apt-get install indicator-sysmonitor</pre>
<p style="text-align: left;">Il vous faut maintenant l'exécuter : Lancez le dash depuis l'icone du dash ou avec la touche &lt;Super&gt; et tapez <strong>sysmonitor</strong> et cliquez sur le <strong>system monitor indicator</strong>. Le tour est joué ! Avec un clique droit dessus, vous pouvez modifier les préférences.</p>
<p style="text-align: left;">Maintenant que vous voyez le principe, je vous donne une liste des indicators (en anglais) que vous pouvez ajouter (le choix est large, vous avez de quoi faire <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) :</p>
<p style="text-align: left;"><a href="http://askubuntu.com/questions/30334/list-of-application-indicators">http://askubuntu.com/questions/30334/list-of-application-indicators</a></p>
<p style="text-align: left;">Bien ! On commence à avoir un bureau assez cool, non ? Continuons avec un petit ajout sympa. on va rajouter une quick list à notre lanceur "Home folder" (le dossier avec la maison dedans^^) dans le dock qui va nous permettre d'accéder directement à nos dossiers principaux.</p>
<h2>Quicklist pour le dock</h2>
<p>Pour commencer, lancez un Terminal et tapez la commande suivante :</p>
<pre class="brush: bash:">gksudo gedit /usr/share/applications/nautilus-home.desktop</pre>
<p>Cela va ouvrir un fichier de configuration avec Gedit. Il vous suffit ensuite de remplacer son contenu par ce qui suit :</p>
<p><em>[Desktop Entry]</em></p>
<p><em>Name=Home Folder</em></p>
<p><em>Comment=Open your personal folder</em></p>
<p><em>Exec=nautilus</em></p>
<p><em>Icon=user-home</em></p>
<p><em>Terminal=false</em></p>
<p><em>StartupNotify=true</em></p>
<p><em>Type=Application</em></p>
<p><em>OnlyShowIn=GNOME;Unity;</em></p>
<p><em>Categories=GNOME;GTK;Core;</em></p>
<p><em>X-GNOME-Bugzilla-Bugzilla=GNOME</em></p>
<p><em>X-GNOME-Bugzilla-Product=nautilus</em></p>
<p><em>X-GNOME-Bugzilla-Component=general</em></p>
<p><em>X-GNOME-Bugzilla-Version=3.0.0</em></p>
<p><em>X-Ubuntu-Gettext-Domain=nautilus</em></p>
<p><em><br />
</em></p>
<p><em>X-Ayatana-Desktop-Shortcuts=Documents;Pictures;Music;Videos;Downloads</em></p>
<p><em><br />
</em></p>
<p><em>[Documents Shortcut Group]</em></p>
<p><em>Name=Documents</em></p>
<p><em>Exec=nautilus Documents</em></p>
<p><em>TargetEnvironment=Unity</em></p>
<p><em><br />
</em></p>
<p><em>[Pictures Shortcut Group]</em></p>
<p><em>Name=Pictures</em></p>
<p><em>Exec=nautilus Pictures</em></p>
<p><em>TargetEnvironment=Unity</em></p>
<p><em><br />
</em></p>
<p><em>[Music Shortcut Group]</em></p>
<p><em>Name=Music</em></p>
<p><em>Exec=nautilus Music</em></p>
<p><em>TargetEnvironment=Unity</em></p>
<p><em><br />
</em></p>
<p><em>[Videos Shortcut Group]</em></p>
<p><em>Name=Videos</em></p>
<p><em>Exec=nautilus Videos</em></p>
<p><em>TargetEnvironment=Unity</em></p>
<p><em><br />
</em></p>
<p><em>[Downloads Shortcut Group]</em></p>
<p><em>Name=Downloads</em></p>
<p><em>Exec=nautilus Downloads</em></p>
<p><em>TargetEnvironment=Unity</em></p>
<p><em><br />
</em></p>
<p>Sauvegardez et ça devrait être bon. Si vous faites un clique droit sur l'icone dans le dock, vous devriez obtenir ceci :</p>
<p style="text-align: center;"><img src="http://blog.gilliek.ch/wp-content/uploads/2011/12/screenshot-quicklist.png" alt="" width="319" height="351" /></p>
<p style="text-align: left;">Ouf ! On souffle un peu. <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  On va maintenant voir comment ajouter des widgets sur le bureau.</p>
<h1></h1>
<h2>Des widgets avec Screenlets</h2>
<p>L'idée est, dans un premier temps, d'ajouter des widgets sur notre bureau. Pour cela, nous allons utiliser screenlets. Commençons donc par l'installer :</p>
<pre class="brush: bash;">sudo apt-get install screenlets</pre>
<p>ou via l'Ubuntu Software Center pour ceux qui sont réticents à la ligne de commande <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Une fois installé, lancez screenlets depuis le dash (&lt;Super&gt;). Vous devriez avoir ça :</p>
<p style="text-align: center;"><img src="http://blog.gilliek.ch/wp-content/uploads/2011/12/screenshot-screenlets-manager.png" alt="" width="778" height="490" /></p>
<p style="text-align: left;">Pour ajouter un widget sur le bureau, cliquez sur celui que vous voulez, puis cochez les cases <strong>Start/Stop </strong>et <strong>Auto start on login</strong>.</p>
<p style="text-align: left;">En faisant un clique droit sur le widget ainsi ajouté sur le bureau, vous pourrez le personnaliser comme bon vous semble.</p>
<p style="text-align: left;">Pour ceux qui connaissent un peu Mac OS, vous avez peut-être déjà vu comment ça fonctionne : on a une touche sur le clavier qui affiche tous les widgets. Une sorte de surcouche qui apparaît à la demande et qui contient les widgets. C'est aussi possible d'obtenir ce résultat avec compiz et screenlets.</p>
<p style="text-align: left;">Réouvrez le <strong>Compiz Config Settings Manager</strong> (ccsm) et activez le plugin <strong>Widget Layer</strong>. Modifiez éventuellement le raccourcis clavier si celui par défaut ne vous convient pas (moi j'utilise la touche F1, mais par défaut il s'agit de la touche F9).</p>
<p style="text-align: left;">Maintenant qu'on a notre Widget Layer, il nous faut ajouter des widgets sur celui ci. Pour cela ajoutez votre widget comme nous l'avons précédemment, puis faites un clique droit dessus. Allez dans WIndow et cliquez sur widget, comme ceci :</p>
<p style="text-align: center;"><img src="http://blog.gilliek.ch/wp-content/uploads/2011/12/screenshot-screenlets-options-widget.png" alt="" width="447" height="382" /></p>
<p style="text-align: left;">Votre widget apparaîtra donc sur votre Widget Layer si vous appuyez sur la touche F9 (ou autre si vous avez changé). Vous pouvez aussi jouer sur les autres paramètres pour que votre widget apparaisse au dessus ou au dessous des fenêtres. Et aussi cochez <strong>Sticky</strong> pour qu'il apparaisse sur tous les bureaux.</p>
<p style="text-align: left;">Voilà c'est terminé <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  On va voir encore quelques trucs et astuces avant de conclure cet article.</p>
<h2>Sushi</h2>
<p>Non non, je ne vais pas vous apprendre à cuisiner des sushis <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  Il s'agit en fait d'un plugin bien utile pour Nautilus, présent par défaut sur Ubuntu. Comment ça fonctionne ? Lorsque vous naviguez dans vos fichiers et dossiers depuis Nautilus, vous pouvez afficher un preview de certains fichiers en appuyant sur la touche &lt;espace&gt; <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Ubuntu Tweak</h2>
<p>Un outil indispensable pour tout utilisateur d'Ubuntu <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Il permet de "tweaker" Ubuntu <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Ajouter des scripts à Nautilus, ajouter des tas de dépôts, nettoyer les caches, modifier certains éléments graphiques (l'image de fond à l'écran de login, la disposition des boutons sur le cadre des fenêtres, et plein d'autres choses. Malheureusement, il n'est pas encore disponible pour Ubuntu 11.10. Mais je vous conseille de suivre sa sortie en version finale sur le site : <a href="http://ubuntu-tweak.com/">http://ubuntu-tweak.com/</a></p>
<p>&nbsp;</p>
<h2>Les raccourcis clavier et la nomenclature sous Unity</h2>
<p>Voici deux liens (en anglais) qui pourront vous aider à vous faire à Unity. Le premier donne les raccourcis clavier et le second la nomenclature utilisée :</p>
<p><a href="http://askubuntu.com/questions/28086/what-are-unitys-keyboard-and-mouse-shortcuts">http://askubuntu.com/questions/28086/what-are-unitys-keyboard-and-mouse-shortcuts</a></p>
<p><a href="http://askubuntu.com/questions/10228/whats-the-right-terminology-for-unitys-ui-elements">http://askubuntu.com/questions/10228/whats-the-right-terminology-for-unitys-ui-elements</a></p>
<h2>Reference</h2>
<p>L'article qui m'a fait découvrir l'astuce de la quicklist et les indicateurs dans le panel : <a href="http://www.tuxgarage.com/2011/04/tweak-unity-to-better-suit-your-needs.html">http://www.tuxgarage.com/2011/04/tweak-unity-to-better-suit-your-needs.html</a></p>
<p>Cet article parle de certaines choses que je n'ai pas mentionnées ici, il pourrait être intéressant à lire (en anglais).</p>
<h2>Conclusion</h2>
<p>J'espère que j'ai été clair dans mes explications et que j'ai pu aider des personnes <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Si quelque chose vous pose problème ou que vous ne comprenez pas une des explications, n'hésitez pas à laisser des commentaires <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: left;">Si quelqu'un utilise Ubuntu en français, je lui serai éternellement reconnaissant s'il pouvait me donner les traductions exactes utilisées en français <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/linux/personnaliser-unity-sous-ubuntu-11-10/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Migration du blog</title>
		<link>http://blog.gilliek.ch/actualites/migration-du-blog</link>
		<comments>http://blog.gilliek.ch/actualites/migration-du-blog#comments</comments>
		<pubDate>Sat, 03 Dec 2011 18:57:47 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Actualités]]></category>

		<guid isPermaLink="false">http://blog.gilliek.ch/?p=402</guid>
		<description><![CDATA[J'ai le plaisir de vous annoncer que le blog est migré sur un nouveau serveur et un nouveau domaine (le domaine qui était prévu à la base http://blog.gilliek.ch). La migration s'est effectuée sans problème J'ai également pris les dispositions nécessaires pour que les anciens liens soient redirigés sur la nouvelle URL. Si vous constatez un [...]]]></description>
			<content:encoded><![CDATA[<p>J'ai le plaisir de vous annoncer que le blog est migré sur un nouveau serveur et un nouveau domaine (le domaine qui était prévu à la base <a href="http://blog.gilliek.ch">http://blog.gilliek.ch</a>). La migration s'est effectuée sans problème <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>J'ai également pris les dispositions nécessaires pour que les anciens liens soient redirigés sur la nouvelle URL.</p>
<p>Si vous constatez un bug ou tout autre problème, merci de me le signaler via les commentaires (je n'ai pas encore mis en place le formulaire de contact).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/actualites/migration-du-blog/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Java et les JFileChooser</title>
		<link>http://blog.gilliek.ch/programmation/java-et-les-jfilechooser</link>
		<comments>http://blog.gilliek.ch/programmation/java-et-les-jfilechooser#comments</comments>
		<pubDate>Tue, 22 Nov 2011 09:11:01 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JFileChooser]]></category>

		<guid isPermaLink="false">http://gilliek.gw-computing.net/?p=388</guid>
		<description><![CDATA[Java des fois, tu me fais ch*** ! Je bosse actuellement sur un logiciel de traitement d'image en Java ( coming soon ) ... et j'ai besoin de manipuler des JFileChooser (pour sélectionner des fichiers et des dossiers).  Avant de pester contre ce foutu Swing d'énoncer mon soucis, je vais dire deux mots sur Swing, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Java des fois, tu me fais ch*** !</strong></p>
<p>Je bosse actuellement sur un logiciel de traitement d'image en Java ( coming soon <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) ... et j'ai besoin de manipuler des JFileChooser (pour sélectionner des fichiers et des dossiers).  Avant <span style="text-decoration: line-through;">de pester contre ce foutu Swing</span> d'énoncer mon soucis, je vais dire deux mots sur Swing, pour ceux qui ne connaîtraient pas.</p>
<p>Swing est une bibliothèque graphique pour Java. Elle permet donc de créer des interfaces graphiques. Ce qui est pratique, c'est que ça fonctionne sur n'importe quel système d'exploitation, donc pas mal pour du développement multiplateforme. (petit troll : et c'est beaucoup plus confortable à utiliser que C et GTK ... bien que je préfère largement le C à Java).</p>
<p>Revenons à nos moutons. Qu'est-ce qui me fait actuellement <strong>ch*** </strong>avec JFileChooser ? Et bien la réponse est simple : son implémentation moisie ! C'est un composant très peu personnalisable. Par exemple, si on veut garder uniquement la fenêtre de navigation sans les boutons, le sélectionneur de type de fichiers et toussa, on s'amuse avec la méthode remove(getComponent(index)) à chercher quel est le bon composant à virer. Ou aussi ce qui est à l'origine de ce post : comment choisir le mode d'affichage par défaut (liste ou détails). Je m'attendais à devoir faire un simple setViewMode(JFileChooser.DETAILS), comme en Qt quoi ... mais non faut faire un hack dégueulasse pour arriver à ses fins ! (Rhaaaaaa)</p>
<p>Après quelques énervements, j'ai trouvé un<a href="http://www.java-forums.org/awt-swing/13733-set-jfilechooser-default-details-view.html#post45562"> topic</a> sur un forum qui m'a bien aidé :</p>
<p>La solution consiste à utiliser SwingUtils, téléchargeable sur le site : <a href="http://tips4java.wordpress.com/2008/11/13/swing-utils/">http://tips4java.wordpress.com/2008/11/13/swing-utils/</a></p>
<p>Il suffit ensuite de mettre le code trouvé sur le topic mentionné précédemment :</p>
<pre class="brush: java;">JFileChooser fileChooser = new JFileChooser();
AbstractButton button = SwingUtils.getDescendantOfType(AbstractButton.class,
      fileChooser, "Icon", UIManager.getIcon("FileChooser.detailsViewIcon"));
button.doClick();</pre>
<p>Et le tour est joué ! Mais je trouve ça vraiment dégueulasse personnellement ...</p>
<p>De manière plus générale, je trouve leur JFileChooser vraiment très pauvre. En plus de ne pas être très confortable à l'utilisation, il n'est pas personnalisable ... c'est vraiment dommage. Il va peut-être falloir que j'en code un moi-même quand j'en aurai le temps ... à suivre ...</p>
<p>&nbsp;</p>
<p><strong>Edit : </strong>Cette solution foire sur Mac OS (ça ne compile pas ...) . De plus, la façon avec laquelle j'ai encore modifié le JFileChooser (avec la méthode remove) fait foirer l'affichage sous Mac OS ...</p>
<p><strong>Edit 2 : </strong>J'ai entamé (et déjà bien avancé) le codage de mon propre FileChooser et pour l'instant ça fonctionne bien <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/programmation/java-et-les-jfilechooser/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Astuce Android : Authentification SSH avec une clef publique</title>
		<link>http://blog.gilliek.ch/android/astuce-android-authentification-ssh-avec-une-clef-publique</link>
		<comments>http://blog.gilliek.ch/android/astuce-android-authentification-ssh-avec-une-clef-publique#comments</comments>
		<pubDate>Mon, 21 Nov 2011 10:01:19 +0000</pubDate>
		<dc:creator>R3v4n</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[clé]]></category>
		<category><![CDATA[clef]]></category>
		<category><![CDATA[DSA]]></category>
		<category><![CDATA[RSA]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://gilliek.gw-computing.net/?p=379</guid>
		<description><![CDATA[(article un peu technique) Si comme moi vous avez des serveurs sur lesquels vous voulez vous authentifier depuis votre smartphone Android, ce post est pour vous Les prérequis pour cette astuce : Un serveur disposant d'un serveur SSH (au début, votre serveur SSH devra autoriser les connexions par mot de passe. Une fois la clé [...]]]></description>
			<content:encoded><![CDATA[<p>(article un peu technique)</p>
<p>Si comme moi vous avez des serveurs sur lesquels vous voulez vous authentifier depuis votre smartphone Android, ce post est pour vous <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Les prérequis pour cette astuce :</p>
<ul>
<li>Un serveur disposant d'un serveur SSH (au début, votre serveur SSH devra autoriser les connexions par mot de passe. Une fois la clé ajoutée, je vous conseille d'y désactiver)</li>
<li>D'un téléphone sous Android (ou d'une tablette)</li>
</ul>
<p>Voilà le problème : Comment s'authentifier sur son serveur via SSH avec une paire de clés privée/publique depuis Android ?</p>
<p>La solution est assez simple. C'est ce que nous allons voir ici :</p>
<ol>
<li>Depuis l'Android Market, téléchargez l'application <strong>Connect Bot</strong></li>
<li>Lancez l'application puis allez dans le <em>menu &gt; Gérer les clés publiques</em></li>
<li>De nouveau, allez dans le <em>menu &gt; Générer</em></li>
<li>Choisissez un pseudo pour identifier votre clé, le type et une passphrase, puis cliquez sur "Générer"</li>
<li>Pour renforcer l'aléatoire, bougez votre doigt de manière aléatoire sur la surface indiquée</li>
<li>Une fois la clé générée, laissez votre doigt appuyé dessus jusqu'à ce que le menu apparaisse.</li>
<li>Choisissez "Copier la clé publique"</li>
<li>Revenez en arrière et connectez-vous sur votre serveur.</li>
<li>Une fois connecté, il nous faut ajouter votre clé sur le serveur. Pour cela, saisiseez la commande suivante :</li>
</ol>
<pre class="brush: shell">echo "votre_clé" &gt;&gt; .ssh/authorized_keys</pre>
<p>Où <em>votre_clé</em> est votre clé publique que vous devez coller à l'aide de <em>menu &gt; coller</em></p>
<p>Ensuite, il ne vous reste plus qu'à vous connecter depuis <strong>Connect Bot </strong>en allant dans <em>menu &gt; Gérer les clés publique </em>. Puis, cliquez sur votre clé et entrez la passphrase saisie à la génération de la clé. Une fois cela fait, il ne vous reste plus qu'à vous connecter normalement sur votre serveur <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>J'ai testé cette astuce depuis un Samsung Galaxy SII sous Android 2.3.3, mais en principe ça devrait fonctionner avec n'importe quelle version d'Android pour autant qu'elle dispose de la dernière version de l'application <strong>Connect Bot</strong>.</p>
<p>Merci quand même à ceux qui testeraient cette astuce de mettre un commentaire avec le modèle du téléphone et la version d'Android utilisée et si tout fonctionne <img src='http://blog.gilliek.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Il y a aussi des clients SFTP (pour le transfert des fichiers) tels que AndFTP et FtpCafé qui devraient gérer l'authentification par clé, mais je n'ai pas encore testé. Cela fera sans doute l'objet d'un futur post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gilliek.ch/android/astuce-android-authentification-ssh-avec-une-clef-publique/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

