notes·de·pit - Mot-clé - pratiqueParfois j'apprends à pêcher à des gens qui n'aiment pas le poisson2023-06-13T11:41:09+02:00PiTurn:md5:45526db4e4cfb511098640352c276065Dotclearfzf, fuzzy finder ou comment faire des recherches plus efficaces dans son terminalurn:md5:c0e3e9320d984859824ab4d57524fb6c2021-06-08T17:04:00+02:002021-06-08T16:19:35+02:00PiTMes doigts dans le clavieralternativesdebianlinuxpratique<p><img src="https://blog.namok.be/public/images/divers/2021/98__magnifying_glass____vii_by_salihagir_d2nyby1-fullview.jpg" alt="98__magnifying_glass____vii_by_salihagir_d2nyby1-fullview.jpg, juin 2021" style="margin: 0 auto; display: block;" /></p>
<p><code>fzf</code> pour <em>command line fuzzy finder</em>… qui ne veut rien dire pour moi<sup id="fnref:f1"><a href="https://blog.namok.be/?post/2021/06/08/fzf%2Cfuzzy-finder-ou-comment-faire-des-recherches-plus-efficaces-dans-son-terminal#fn:f1" rel="footnote">1</a></sup> mais
continuez de lire, c'est pratique.</p>
<p><em>First at all</em>, ça s'installe d'un simple coup de <code>apt install fzf</code>.</p>
<p><a href="https://github.com/junegunn/fzf">Sur la page du projet</a>, on peut voir que c'est un <strong>filtre unix</strong> qui
peut utiliser toutes sortes de listes. Pas uniquement une liste de fichiers,
mais aussi l'historique, une liste de processus, de noms de domaines…</p>
<p><code>fzf</code> lit la liste à partir de l'entrée standard <code>STDIN</code> et affiche l'élément sélectionné (ou les éléments sélectionnés) sur la sortie standard (<code>STDOUT</code>).</p>
<pre><code class="language-bash">
find * -type f | fzf [-m]
fzf
</code></pre>
<p>cet exemple envoie la liste de tous les fichiers du répertoire courant (sans les
fichiers cachés) à la commande fzf et la recherche peut commencer. Sans
paramètre la commande <code>fzf</code> a ce comportement par défaut.</p>
<p>Par défaut le recherche est étendue (<em>extended search mode</em>) et se fait en
entrant des mots séparés par des espaces. Certains caractères sont spéciaux et
signifient : <code>^</code> au début de la chaine, <code>$</code> à la fin, <code>!</code> inverse et <code>'</code> pour
<em>exact match</em>.</p>
<p>Par exemple : <code>^music mp3$ 'exact oui !non</code> retourne les éléments
qui commence par « music », se termine par « mp3 », contiennent la chaine
« exact », les lettres de « oui » et pas celles de « non ».</p>
<p><img src="https://blog.namok.be/public/images/divers/2021/fzf/fzf-1.gif" alt="fzf-1.gif, juin 2021" style="margin: 0 auto; display: block;" /></p>
<ul>
<li><code>[Up]</code> et <code>[Down]</code> pour voyager dans la liste ; </li>
<li><code>[Enter]</code> pour sélectionner l'élément ;</li>
<li>l'option <code>-m</code> permet de faire une recherche multiple. La sélection se fait avec la touche <code>[Tab]</code> et la validation avec <code>[Enter]</code> ;</li>
<li>l'option <code>-e</code> (<em>exact match</em>) désactive la recherche étendue.</li>
</ul>
<p>Il est possible de faire une recherche dans l'historique tout aussi facilement</p>
<pre><code class="language-bash">
history | fsf +s --tac
</code></pre>
<ul>
<li><code>+s</code> ne trie pas la liste ;</li>
<li><code>--tac</code> la montre dans l'ordre inverse.</li>
</ul>
<p>Plutôt que d'envoyer sur <em>STDOUT</em> (ce qui n'est pas pratique), il est possible
de rediriger la commande avec un bon vieil <code>xargs</code> :</p>
<p><img src="https://blog.namok.be/public/images/divers/2021/fzf/fzf-2.gif" alt="fzf-2.gif, juin 2021" style="margin: 0 auto; display: block;" /></p>
<p>… ou d'utiliser un sous-shell <code>vim -o $(fzf)</code>.</p>
<p>Plutôt que d'utiliser un sous-shell, il est possible d'utiliser <strong><code>**[Tab]</code></strong> pour lancer <code>fzf</code> à partir d'un répertoire.</p>
<pre><code class="language-bash">
vim /elsewhere/**[Tab]
cd /**[Tab]
</code></pre>
<p><img src="https://blog.namok.be/public/images/divers/2021/fzf/fzf-4.gif" alt="fzf-4.gif, juin 2021" style="margin: 0 auto; display: block;" /></p>
<p>Pour que le lancement de <code>fzf</code> se fasse avec <code>**[Tab]</code>, il faut éduquer bash en ajoutant ceci à son <code>.bashrc</code>.</p>
<pre><code class="language-bash">
source /usr/share/bash-completion/completions/fzf
</code></pre>
<p>La <em>magie des deux étoiles</em> fonctionne également pour une liste d'hôtes accédés en <code>ssh</code> ou pour des identifiants de processus (<em>pid</em>). Essayez:</p>
<pre><code class="language-bash">
ssh [Tab]
ssh **[Tab]
kill -9 [Tab]
</code></pre>
<p>Pour les personnes qui le préfèrent, il existe des touches de raccourcis (<em>key
binding</em>) que l'on peut définir en incluant le fichier d'exemple (ou en écrivant
le sien).</p>
<pre><code class="language-bash">
source /usr/share/doc/fzf/examples/key-bindings.bash
</code></pre>
<p>… par défaut <code>[Ctrl-T]</code> lancera <code>fzf</code>.</p>
<p><code>[Ctrl-r]</code> remplacera la recherche dans l'historique par une recherche dans
l'historique avec <code>fzf</code>. Beaucoup plus facile.</p>
<p><code>[Alt-c]</code> permettra de faire un changement de répertoire (<code>cd</code>) vers le répertoire sélectionné par <code>fzf</code>.</p>
<p>Il est maintenant temps de s'occuper des paramètres que l'on peut passer à la
commande. En voici quelques uns issus de la présentation officielle que je
trouve pratiques.</p>
<ul>
<li><code>--height 50%</code> pour limiter la hauteur de fzf à 50% du terminal ; </li>
<li><code>--multi</code> (<code>-m</code>) en mode multi-sélection ;</li>
<li><code>--inline-info</code> pour gagner une ligne, la recherche et le nombre de fichiers se trouvent sur la même ligne ; </li>
<li><code>--preview cat {}</code> pour afficher une fenêtre de prévisualisation du fichier. La documentation propose un peu mieux avec: </li>
</ul>
<pre><code class="language-bash">
--preview '[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file \
|| cat {} 2>/dev/null | head -300`
</code></pre>
<ul>
<li><code>--preview-window='hidden'</code> qui n'affiche pas la fenêtre de prévisualisation… <em>heu !</em></li>
<li>… <code>--bind='f2:toggle-preview'</code> qui associe à la touche <code>[F2]</code> l'affichage, ou pas, de la prévisualisation ;</li>
</ul>
<p><img src="https://blog.namok.be/public/images/divers/2021/fzf/fzf-5.gif" alt="fzf-5.gif, juin 2021" style="margin: 0 auto; display: block;" /></p>
<ul>
<li><code>--bind='ctrl-a:select-all+accept</code> en combinaison avec <code>--multi</code> bien sûr ;</li>
</ul>
<p>…ce qui peut s'ajouter dans son fichier de configuration <em>bash</em> (ou autre <em>shell</em>):</p>
<pre><code class="language-bash">
export FZF_DEFAULT_OPTS="--height 50% \
--multi \
--inline-info \
--preview '[[ \$(file --mime {}) =~ binary ]] \
&& echo {} is a binary file \
|| bat --color=always --style=plain,changes {} \
2>/dev/null | head -300 ' \
--preview-window='hidden' \
--bind='f2:toggle-preview,ctrl-a:select-all+accept'"
</code></pre>
<p>Si l'on veut une prévisualisation d'un répertoire, cela peut se faire <em>via</em> : </p>
<pre><code class="language-bash">
export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -100'"
</code></pre>
<p>Si vous avez des <em>tips and tricks</em>, n'hésitez pas à les partager…</p>
<p><br/></p>
<p><em>Sources, la <a href="https://github.com/junegunn/fzf">page officielle du projet</a> et la <a href="https://www.youtube.com/watch?v=qgG5Jhi_Els">vidéo associée</a> ainsi que <a href="https://sim590.github.io/fr/outils/fzf/">cet article</a>.</em><br />
<em>Crédit photo <a href="https://www.deviantart.com/salihagir/art/98-Magnifying-Glass-VII-161165305">salihagir</a>.</em></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:f1">
<p><a href="https://blog.namok.be/?post/2021/06/08/deepl.com">deepl</a> traduit <em>fuzzy finder</em> par « détecteur de fausses pistes » ou encore « chercheur de flou ». <a href="https://blog.namok.be/?post/2021/06/08/fzf%2Cfuzzy-finder-ou-comment-faire-des-recherches-plus-efficaces-dans-son-terminal#fnref:f1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Debian GNU/Linux sur le Microsoft Storeurn:md5:655df9ced7fe2e2ba04bb8748c1992852018-10-05T08:56:00+02:002018-10-05T07:58:14+02:00PiTMes doigts dans le clavierdebianesigeekjavapratique<p><img src="https://blog.namok.be/public/images/divers/2018/debian-app-4.jpg" alt="debian-app-4.jpg" style="margin: 0 auto; display: block;" title="debian-app-4.jpg, oct. 2018" /></p>
<p><strong>Debian GNU/Linux est disponible sur le Microsoft Store.</strong></p>
<p>Pour apprendre les bases linux sans effort d'installation — fini le <em>dual boot</em>
et les machines virtuelles — il est possible d'utiliser l'application Debian
Linux — ou une autre distribution — qui se trouve sur le Microsoft Store !</p>
<p><img src="https://blog.namok.be/public/images/divers/2018/.debian-app_m.jpg" alt="debian-app.jpg" style="margin: 0 auto; display: block;" title="debian-app.jpg, oct. 2018" /></p>
<p>J'ai eu l'occasion de mettre les mains sur une machine Microsoft Windows 10 et
j'ai donc pu constater l'existence de <em>Microsoft Store</em>. C'est une bonne chose.
J'ai ensuite installé « l'application Debian GNU/Linux ». Notez la présence de
« GNU » qui fera plaisir à <em>rms</em>.</p>
<p>Une fois installée, Microsoft signale qu'il faut activer le <strong>WSL</strong> <em>Windows
Subsystem for Linux</em> ou encore <em>Sous-système Windows pour Linux</em>. Ça se fait en
deux clics et un reboot… parce que bon, un <em>reboot</em> sous Windows, c'est toujours
bien.</p>
<p><img src="https://blog.namok.be/public/images/divers/2018/debian-app-23.jpg" alt="debian-app-23.jpg" style="margin: 0 auto; display: block;" title="debian-app-23.jpg, oct. 2018" /></p>
<p>Un fois le reboot fait, on peut profiter d'une console Debian sous Windows. Si
vous cherchez un peu, vous verrez que sans installation et avec simplement <em>WSL</em>
activé, vous avez accès à <em>bash</em>. Vous verrez aussi qu'il existe d'autres
distribution proposées par Microsoft.</p>
<p><a href="https://blog.namok.be/public/images/divers/2018/debian-app-4.jpg" title="debian-app-4.jpg"><img src="https://blog.namok.be/public/images/divers/2018/.debian-app-4_m.jpg" alt="debian-app-4.jpg" style="margin: 0 auto; display: block;" title="debian-app-4.jpg, oct. 2018" /></a></p>
<p>Windows propose une <em>console linux</em> et pas une distribution complète. Pas
d'environnement de bureau par exemple. L'usage sera donc <em>textuel</em><sup id="fnref:f1"><a href="https://blog.namok.be/?post/2018/10/05/debian-microsoft#fn:f1" rel="footnote">1</a></sup>.</p>
<p>Je salue l'initiative de Microsoft tout en me disant que cette console Linux
dans l'environnement Windows, bien que très pratique, ne va pas faciliter la
compréhension des concepts « systèmes » dans les têtes des débutants et
débutantes. Nous avons donc bien affaire à la possibilité d'inclure un sous
système Linux dans un système Microsoft Windows. Même s'il ne s'agit pas d'une
machine virtuelle bien emballée, ce n'est pas un système Linux natif non plus.</p>
<p>— Qu'est-ce que WSL ?</p>
<p>WSL, <em>Windows Subsystem Linux</em> est un ensemble de modules permettant d'exécuter
des applications Linux <em>elf64</em> sous Microsoft Windows. <a href="https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/">Voir la présentation
générale (en) sur le blog msdn</a>.</p>
<p>La notion de sous-système n'est pas neuve puisque Win32, par exemple, est un
sous-système de Microsoft Windows NT (NT dans la suite) qui présente l'interface
de programmation aux applications. Ce sous-système exécute les appels systèmes
NT appropriés en fonction de l'API qu'il présente.</p>
<p>Les binaires Linux sont lancés dans des processus particuliers — les <em>processus
pico</em> — au lieu des <em>processus NT</em>. Au contraire des processus NT qui embarquent
le sous-système Win32, les processus pico embarquent les pilotes <em>lxss.sys</em>
et <em>lxcore.sys</em> qui se chargent de la traduction des appels systèmes Linux en
appels systèmes NT et de l'émulation du noyau Linux. <a href="https://blogs.msdn.microsoft.com/wsl/2016/05/23/pico-process-overview/">Plus d'info sur les
processus pico (en) sur le blog de msdn</a> et <a href="https://blogs.msdn.microsoft.com/wsl/2016/06/08/wsl-system-calls/">sur l'émulation du noyau
Linux (en) sur le même blog</a>.</p>
<p>Chaque processus lancé à partir de WSL — via bash.exe ou l'application Debian
— est un processus apparaissant dans la liste des processus Windows. C'est un
<em>processus pico</em> et non un <em>processus NT</em>.</p>
<p><a href="https://docs.microsoft.com/en-us/windows/wsl/faq">Pour les questions, la FAQ Microsoft est dispo</a>.</p>
<p><em>Crédit photo faite maison.</em></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:f1">
<p>Il est toujours possible d'installer un serveur X sur Windows et
d'exporter son <em>display</em> « à l'ancienne » mais ce n'est pas offciellement
supporté. <a href="https://blog.namok.be/?post/2018/10/05/debian-microsoft#fnref:f1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Signal-desktop, la version desktop de Signalurn:md5:1319614aebc2478748e881d48d3e7e4a2017-11-01T16:14:00+01:002017-11-02T12:25:36+01:00PiTMes doigts dans le clavieralternativespratiquesecurity<p><img src="https://blog.namok.be/public/images/divers/2017/439-1200x.jpg" alt="439-1200x.jpg" style="margin: 0 auto; display: block;" title="439-1200x.jpg, nov. 2017" /></p>
<p>L'application <strong>Signal</strong> est une application de messagerie. Cette application
fournit le protocole éponyme à <em>Whatsapp</em> et <em>Facebook messenger</em>. Parmis
<a href="http://namok.be/blog/?post/2017/03/28/communication-instantanee-un-grand-pas-en-avant">toutes les applications de messagerie, c'est Signal qui a ma
préférence</a>. Une des raisonst est qu'elle n'appartient pas — comme les
deux autres — à un GAFAM.</p>
<p>Bref.</p>
<p>Il existe maintenant<sup id="fnref:f1"><a href="https://blog.namok.be/?post/2017/11/01/signal-desktop-la-version-desktop#fn:f1" rel="footnote">1</a></sup> une application <em>desktop</em> qui permet d'utiliser Signal
à partir de son ordinateur… et donc de bénéficier d'un vrai clavier.</p>
<p>Pour l'installer, j'adapte les infos <a href="https://signal.org/blog/standalone-signal-desktop/">en provenance du blog de Signal</a>
parce qu'avec <em>debian</em>, on n'est pas obligé d'utiliser <code>sudo</code>. Ce qui donne
donc:</p>
<p><code>curl -s https://updates.signal.org/desktop/apt/keys.asc | apt-key add -
echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | \
tee -a /etc/apt/sources.list.d/signal-xenial.list
apt update && apt install signal-desktop</code></p>
<p>… ce qui ne fonctionne pas pour moi car je dois, au préalable installer
<code>apt-transport-https</code> par</p>
<p><code>apt install apt-transport-https</code></p>
<p>Dès que c'est installé et lancé, il petit scan d'un QR-code à partir de mon
smartphone et tout roule.</p>
<p>Enjoy !</p>
<p><br/></p>
<p><em>Crédit photo chez <a href="https://cdn.gratisography.com/photos/439H.jpg">Gratisography</a>.</em></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:f1">
<p>Avant, l'application qui existait était une <em>Chrome app</em> nécessitant
d'avoir installé Google chrome et de l'avoir lancé. Deux choses que je ne
fais pas car je préfère utiliser Firefox comme navigateur. Pas de Google
chrome chez moi (au moment où j'écris ce billet). <a href="https://blog.namok.be/?post/2017/11/01/signal-desktop-la-version-desktop#fnref:f1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Comment gérer plusieurs profils dans son navigateur ?urn:md5:99b5f4f52fca3c2420582091a9db55d52015-05-05T21:49:00+02:002020-10-27T11:38:12+01:00PiTMes doigts dans le clavierdiversenseignementesifacebookgeekgooglepratique<p><em>TL;DR Comment gérer des « identités » différentes avec Firefox par exemple.</em></p>
<p><img src="https://blog.namok.be/public/images/divers/2015/relaxing_in_the_library_by_sjbonnar-d7xdmtn.jpg" alt="The beast" /></p>
<p>Si vous êtes schizophrène comme nous, vous devez gérer plusieurs profils web. Si
vous ne le faites pas, vous devriez ! Par exemple:</p>
<ul>
<li>un profil <strong>perso</strong> avec votre compte <a href="https://blog.namok.be/?post/2015/05/05/https://facebook:com">Facebook</a> et votre compte <a href="https:google.com">Google</a>
(pour accéder à vos mails, votre drive, …);</li>
<li>un autre profil <strong>professionnel</strong> avec votre mail pro, le <em>cloud</em> de
l'entreprise, les comptes <em>drive</em>, <a href="https://dropbox.com">Dropbox</a>, <a href="https:linkedin.com">Linkedin</a>, …;</li>
<li>un troisième profil pour toutes vos activités inavouables (<a href="https://www.youtube.com/watch?v=gbSpokOYhqI&feature=youtu.be">si si vous en
avez</a>
;-) )</li>
</ul>
<p>Pour chaque profil, votre navigateur consacre un répertoire spécifique pour
y stocker toutes les informations inhérentes à ce profil; <em>cookies</em>,
historique, configuration, extensions installées, <em>bookmarks</em>… Par exemple:</p>
<pre><code>~/.mozilla/firefox/1234abcd.default
</code></pre>
<p>Votre navigateur se souvient des données de connexion ce qui fait qu'en fonction
du profil et en utilisant identiquement la même url (par exemple
<code>drive.google.com</code>) je me retrouve dans mon <em>drive</em> personnel ou bien
professionnel ou bien « professionnel avec telle fonction ».</p>
<p><strong>Je ne pense pas que l'on puisse (encore) travailler autrement sans tout mélanger.</strong></p>
<p><a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">Avec Firefox</a>, lancez votre navigateur avec l'option <code>-P</code> et
il ouvrira votre <em>profile manager</em><sup id="fnref:f1"><a href="https://blog.namok.be/?post/2015/05/05/comment-gerer-plusieurs-profils-dans-son-navigateur#fn:f1" rel="footnote">1</a></sup>. À partir de là, vous pourrez créer,
supprimer, éditer, renommer vos profils.</p>
<pre><code>firefox -P
</code></pre>
<p><del>Il existe un <a href="https://addons.mozilla.org/En-us/firefox/addon/profileswitcher/">plugin Firefox, ProfileSwitcher</a>, permettant de
<em>switcher</em> facilement d'un profil à un autre. Installez ce <em>plugin</em> et reprenez
une activité normale…</del> Paix à son âme.</p>
<p><em>Édité le 27 octobre 2020</em> Il existe un <a href="https://addons.mozilla.org/fr/firefox/addon/multi-account-containers/">plugin Firefox</a> <em>multi account container</em> permettant de gérer des profils.</p>
<p>Vous pouvez reprendre une activité normale.</p>
<p><br/></p>
<p><em>Crédit photo chez <a href="http://deviantart.com">DeviantArt</a> par <a href="http://sjbonnar.deviantart.com/art/Relaxing-in-the-Library-479326667">sjbonnar</a>. The Beast de
son vrai nom <a href="https://fr.wikipedia.org/wiki/Le_Fauve">Henry « Hank » Philip McCoy</a> apparait dans X-Men. Là,
il se repose à la bibliothèque</em></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:f1">
<p>Firefox ne peut pas être lancé. Il faut entrer cette commande dans une
console. <a href="https://blog.namok.be/?post/2015/05/05/comment-gerer-plusieurs-profils-dans-son-navigateur#fnref:f1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Comment éviter de lancer une compilation de LaTeX à chaque modification sous vim ?urn:md5:2ae1b5800d61bb7075ec6942c9fc8a572014-12-23T08:45:00+01:002014-12-23T08:45:00+01:00PiTMes doigts dans le clavieralternativesdebiandiversesigeeklatexlogiciellibrepratiquevim <p>J'utilise beaucoup vim et LaTex, ils me permettent <a href="http://namok.be/blog/?post/2014/09/08/editer-rapidement-ses-fichiers-latex-avec-vim">d'éditer rapidement mes fichiers</a>. Il restait un tout petit point négatif par rapport à des programmes comme <a href="http://www.xm1math.net/texmaker/">TexMaker</a> qui compilent en tâche de fond.</p>
<p>Bien que j'utilise linux tous les jours, je ne connaissais pas <strong>inotify</strong> et son paquet associé <strong>inotify-tools</strong>. Ni même, encore mieux, la commande <strong>entr</strong> associée au paquet du même nom.</p>
<p>Le principe est la détection d'un changement dans le <em>filesystem</em>: ajout d'un fichier dans un répertoire, modification d'un fichier, … La commande <code>entr</code> permet d'associer une commande à une modification dans le <em>filesystem</em>. Par exemple, on pourra lancer une compilation dès lors qu'un fichier est modifié !</p>
<p>Avant, je faisais:</p>
<ul>
<li>édition de mes fichiers sources avec <em>vim</em>;</li>
<li>compilation pour générer un pdf (via <code>pdflatex</code> par le biais d'un make (ou pas));</li>
<li>visualisation avec <em><a href="https://pwmt.org/projects/zathura/">zathura</a></em> (non pas <em>acroread</em> ni <em>xpdf</em>)<sup id="fnref:2"><a href="https://blog.namok.be/?post/2014/12/22/comment-eviter-de-compiler-lalex-a-chaque-modification-sous-vim#fn:2" rel="footnote">1</a></sup></li>
</ul>
<p>Maintenant, je fais:</p>
<ul>
<li><p>je lance dans un terminal une commande du style<sup id="fnref:1"><a href="https://blog.namok.be/?post/2014/12/22/comment-eviter-de-compiler-lalex-a-chaque-modification-sous-vim#fn:1" rel="footnote">2</a></sup> ;</p>
<pre><code>ls sources/* | entr make dist/presentation-seance-1.pdf </code></pre></li>
<li><p>édition de mes fichiers sources avec <em>vim</em>;</p></li>
<li>visualisation avec <em>zathura</em></li>
</ul>
<p>Dès que je sauve mon fichier sous <em>vim</em>, la compilation se lance toute seule et je vois apparaitre la nouvelle version dans <em>zathura</em>. Cool !</p>
<p>Pour installer, c'est simple, c'est dans les dépôts. Sous <a href="http:debian.org">debian</a>:</p>
<pre><code>apt-get install entr
</code></pre>
<p>Vous pouvez reprendre une activité normale (et me <a href="http://namok.be/blog/?post/2013/01/30/pourquoi-me-flattrer">flattrer</a> ;-)).</p>
<p><br/></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:2">
<p>Je laisse bien évidemment <em>zathura</em> tourner, il recharge le pdf dès lors qu'il change. <a href="https://blog.namok.be/?post/2014/12/22/comment-eviter-de-compiler-lalex-a-chaque-modification-sous-vim#fnref:2" rev="footnote">↩</a></p>
</li>
<li id="fn:1">
<p>Mes fichiers sources sont parfois plusieurs (des sources, des styles, un fichier maitre,…) dans un répertoire <code>sources</code>. Je compile via un <code>Makefile</code> à base de <code>rubber</code> et je place le pdf résultant dans un répertoire <code>dist</code>. <a href="https://blog.namok.be/?post/2014/12/22/comment-eviter-de-compiler-lalex-a-chaque-modification-sous-vim#fnref:1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Git, c'est facile … sous windows moinsurn:md5:eca6e319f474de94451c1a1f863aa21b2014-10-01T08:42:00+02:002014-10-01T08:05:52+02:00PiTCartable au dosesigeekpratique<p><em>Ou comment utiliser git sous Windows / Netbeans ?</em></p>
<p><img src="https://blog.namok.be/public/images/divers/2014/window-acidedcom-e10241dde477e54d42f70a8d30f698f8-d5jjjgh.jpg" alt="window-acidedcom-e10241dde477e54d42f70a8d30f698f8-d5jjjgh.jpg" style="margin: 0 auto; display: block;" title="window-acidedcom-e10241dde477e54d42f70a8d30f698f8-d5jjjgh.jpg, sept. 2014" /></p>
<p>Après avoir pris connaissance de ce qu'est git, je veux essayer ! Voici les deux questions que je me pose après avoir fait la manip avec ma console linux:</p>
<p>— Quelles sont les différences entre une installation <strong>linux</strong> et une installation sous <strong>Windows</strong> ?<br />
— Comment faire pour utiliser git avec <strong>Netbeans</strong> ?</p>
<h3>Installation de git</h3>
<p>Pour pouvoir utiliser <em>git</em> en ligne de commande (ce sera peut-être utile pour contrôler l'une ou l'autre chose … et pour générer ses clés ssh), il faut l'installer \°/</p>
<p><strong>linux</strong> Installation du paquet <code>git</code> via le gestionnaire de paquet et ouverture d'une console.</p>
<p><strong>Windows</strong> Installation de <code>Git bash</code> via <a href="http://git-scm.com">git-scm</a>. Après quelques <em>next</em> et le lancement de « Git », on se retrouve devant une console <em>mingwin</em> et les outils <em>git</em>. C'est une émulation de <em>bash</em>.</p>
<h3>Génération des clés ssh</h3>
<p>Il est plus facile de communiquer avec un serveur <em>git</em> en <em>ssh</em>. Pour ce faire, il est nécessaire de générer une clé ssh privée et une clé ssh publique.</p>
<p>Le programme <code>ssh-keygen</code> permet la génération des clés.<br />
Sans paramètre, il crée les deux fichiers <code>id_rsa</code> et <code>id_rsa.pub</code> en utilisant le login avec lequel on est connecté et le hostname de la machine. L'email utilisé sera <code>login@hostname</code>. Dans ce cadre, c'est bien ainsi.</p>
<p><strong>linux</strong> <code>$ ssh-keygen</code><br />
<strong>Windows</strong> <code>$ ssh-keygen.exe</code></p>
<p>La clé publique doit être déposée sur le serveur git que l'on veut utiliser<sup id="fnref:1"><a href="https://blog.namok.be/?post/git-windows-netbeans#fn:1" rel="footnote">1</a></sup> via l'interface <em>web</em>.</p>
<p><img src="https://blog.namok.be/public/images/divers/2014/git/.git-1_m.png" alt="git-1.png" style="margin: 0 auto; display: block;" title="git-1.png, sept. 2014" /></p>
<p><img src="https://blog.namok.be/public/images/divers/2014/git/.git-2_m.png" alt="git-2.png" style="margin: 0 auto; display: block;" title="git-2.png, sept. 2014" /></p>
<p><img src="https://blog.namok.be/public/images/divers/2014/git/.git-3_m.png" alt="git-3.png" style="margin: 0 auto; display: block;" title="git-3.png, sept. 2014" /></p>
<p>Pour que la communication <em>ssh</em> se passe convenablement, il est nécessaire d'utiliser un programme qui va gérer les clés privées. Il s'agit de <code>ssh-agent</code>.</p>
<p><strong>linux</strong> Sous XFCE4, il semble que ce soit <em>xfce-session</em> qui est responsable du lancement du <code>ssh-agent</code>.<br />
<strong>Windows</strong> Dans la console <em>Git bash</em> lancer <code>eval $(ssh-agent -s)</code> à chaque utilisation<sup id="fnref:2"><a href="https://blog.namok.be/?post/git-windows-netbeans#fn:2" rel="footnote">2</a></sup></p>
<p>À ce stade un <code>git clone git@[host]:[repository]</code> dans la console (linux) ou dans la console Git (windows) devrait fonctionner.</p>
<h3>Pas de console, un IDE: Netbeans</h3>
<p>Pour cloner le repository via <strong>Netbeans</strong>, cliquer sur l'onglet <em>Team / Clone</em>.</p>
<p>Les paramètres à encoder sont:</p>
<ul>
<li>l'url fournie par le site;</li>
<li>l'utilisateur "git" (et pas votre login);</li>
<li>un lien vers le fichier contenant votre clé privée;</li>
</ul>
<p><img src="https://blog.namok.be/public/images/divers/2014/git/.git-5_m.png" alt="git-5.png" style="margin: 0 auto; display: block;" title="git-5.png, sept. 2014" /></p>
<h3>Je suis un rebelle, je ne veux pas utiliser git/ssh mais https</h3>
<p>L'url de la forme <code>git@[host]:[repository]</code> repose sur <em>ssh</em> tandis que l'url de la forme <code>https://[host]/[user]/[repository]</code> se base sur le protocole <em>http(s)</em>. Pour utiliser cette url, pas besoin de partager sa clé ssh, il suffit d'utiliser son login et son mot de passe.</p>
<p><strong>Petite astuce</strong> S'il appert que le certificat du site n'est pas valide, <em>git</em> n'acceptera pas de travailler. À fortiori, <strong>Netbeans</strong> non plus. Il faudra signaler à <em>git</em> que ce n'est pas grave en ajoutant dans son fichier de conf (<code>~/.git/config</code> par exemple <code>C:\elsewhere-user-profil\.gitconfig</code>)</p>
<pre><code>[http]
sslVerify = false
</code></pre>
<p>Bonne collaboration …<br />
Web / réactions <a href="http://blog.namok.be/?post/git-windows-netbeans">blog.namok.be/?post/git-windows-netbeans</a></p>
<p><em>Crédit photo chez <a href="http://deviantart.com">DeviantArt</a> par <a href="http://acidedcom.deviantart.com/art/Window-335155265">acidedcom</a></em></p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
<p>Dans le cadre de l'ÉSI, c'est <a href="https://git.esi.heb.be">git.esi</a> et c'est le même principe chez <a href="https://gitlab.com">gitlab</a> et <a href="https://blog.namok.be/?post/https.//github.com">github</a>. <a href="https://blog.namok.be/?post/git-windows-netbeans#fnref:1" rev="footnote">↩</a></p>
</li>
<li id="fn:2">
<p>Notez l'absence du <code>.exe</code>. Il est bien sûr possible d'automatiser ce lancement … j'imagine. <a href="https://blog.namok.be/?post/git-windows-netbeans#fnref:2" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Vrac #14urn:md5:5d3da2e24bbfb1f88537c3283a51a9172014-04-02T07:32:00+02:002014-04-02T07:32:00+02:00PiTMes doigts dans le clavieralternativesdebiandiversesigeeklogiciellibremarkdownpratiquevrac<p><img src="https://blog.namok.be/public/images/divers/2014/14_by_1510-d50t1rn.jpg" alt="14_by_1510-d50t1rn.jpg" style="margin: 0 auto; display: block;" title="14_by_1510-d50t1rn.jpg, avr. 2014" /></p>
<p><a href="http://eiskis.net/eiskis/">eiskis</a> a écrit</p>
<blockquote>
<p>le web</p>
</blockquote>
<p>en entier une nuit où il s'ennuyait !</p>
<p>Il nous propose pas mal d'outils dont un <a href="http://servantframework.com/">générateur de site assez
sympa</a>. L'installation se résume en: download, décompresse et utilise !
Pour publier un billet, il suffit de le déposer dans le répertoire <code>pages</code> (répertoire dans lequel, on peut créer l'arborescence que l'on veut). <em>servant</em> est capable d’interpréter plein de type de fichier. Il est donc possible de déposer des fichiers txt, md, html, …</p>
<p>Si vous voulez pouvoir vous désinscrire d'un site … même s'il s'agit d'un site un peu collant, c'est <a href="http://www.justdeleteme.me/">justdelete.me</a> qui s'en charge. Le site vous expliquera la marche à suivre. Il vous dira même si c'est compliqué ou pas. Il ne faut donc pas hésiter à la consulter avant de s'inscrire aussi ;-)</p>
<p>Je découvre <a href="http://johnmacfarlane.net/pandoc/">pandoc</a> par hasard … lorsqu'un collègue me présente <a href="http://dr.jones.dk/">Jonas</a> le mainteneur du paquet debian.
<a href="http://johnmacfarlane.net/pandoc/">pandoc</a> est <strong>le</strong> logiciel que je cherchais pour visualiser avec mise en forme ce que je suis en train d'écrire en syntaxe <a href="http://daringfireball.net/projects/markdown/syntax">markdown</a>. Il peut faire bcp plus (principalement dans les formats md, html et pdf) … et il peut être flattré ;-) C'est vraiment génial (''awesome'') de passer de markdown à pdf facilement.</p>
<p><em>Depuis que j'ai découvert la syntaxe markdown, je suis conquis. Exit la syntaxe wiki.</em></p>
<p>Lorsque j'ai fait la mise à jour de ma machine (mavie) <code>xpdf</code> n'a plus daigné se lancer et comme je me rebute à utiliser <a href="https://blogs.adobe.com/acroread/">Acroread</a> comme lecteur pdf, j'ai trouvé <a href="http://pwmt.org/projects/zathura/">Zathura</a>. C'est un lecteur PDF ayant comme particularité d'utiliser les raccourcis « à la vim ». Pratique pour ceux qui utilisent <a href="http://vim.org">vim</a>.</p>
<p><a href="https://blog.namok.be/public/images/divers/2014/screenshot-42-Zathura.png" title="screenshot-42-Zathura.png"><img src="https://blog.namok.be/public/images/divers/2014/.screenshot-42-Zathura_m.png" alt="screenshot-42-Zathura.png" style="margin: 0 auto; display: block;" title="screenshot-42-Zathura.png, avr. 2014" /></a></p>
<p>Si vous voulez voir à quoi ressemble un site en différentes résolutions, <a href="http://johnpolacek.github.io/Responsivator/">responsivator</a> s'en charge pour vous … vous avez également la possibilité d'en faire des screenshots.</p>
<p>Pour éviter de lire des pages de manuel (<em>man pages</em>) et pour ne pas faire une recherche sur le net pour n'importe quoi. <a href="https://github.com/chrisallenlane/cheat">Cheat</a> permet d'obtenir rapidement des exemples d'utilisations d'une commande linux … le mieux est de compléter les pages avec ses propres exemples.</p>
<h3>Liens</h3>
<ul>
<li><a href="http://eiskis.net/eiskis/">Eiskis</a></li>
<li><a href="http://servantframework.com/">Servant, générateur de site web</a></li>
<li><a href="http://www.justdeleteme.me/">justdelete.me</a> ou comment m'effacer ? </li>
<li><a href="http://dr.jones.dk/">Jonas Jones</a>, mainteneur <a href="http://johnmacfarlane.net/pandoc/">pandoc</a> pour debian</li>
<li><a href="http://vim.org">vim</a> et un <a href="http://namok.be/blog/?post/2014/03/14/howto-vim">howto avançé</a></li>
<li><a href="http://pwmt.org/projects/zathura/">Zathura</a>, lecteur pdf (libre et multi-plateforme)</li>
<li><a href="http://johnpolacek.github.io/Responsivator/">Responsivator</a></li>
<li>Crédit photo chez DeviantArt par <a href="http://1510.deviantart.com/art/14-303686195">1510</a></li>
</ul>
Fluxbox keys bindingurn:md5:4b69e8eb9d86254882777488a1b6dab12013-12-20T10:42:00+01:002013-12-20T10:52:20+01:00PiTMes doigts dans le clavieralternativesdebiandiversfluxboxgeeklogiciellibrepratique<p>En observant les utilisateurs de MS Windows, je vois qu'il y a (maintenant) la possibilité de placer facilement deux fenêtres sur l'écran de manière à ce qu'elles occupent chacune une moitié de l'écran … en anglais, on dit « tiling windows » je crois.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/screenshot-tile-fluxbox.png" alt="Screenshot" /></p>
<p>Vu la taille des écrans, cette nouvelle <em>feature</em> est pratique. Et quid de mon (très) vieux Fluxbox<sup id="fnref:1"><a href="https://blog.namok.be/?post/2013/12/20/fluxbox-keys-binding#fn:1" rel="footnote">1</a></sup> ?</p>
<p>Pas de soucis, il fait le boulot depuis des lustres.</p>
<p>Ça se passe dans le fichier <code>~/.fluxbox/keys</code> contenant les raccourcis clavier. Il suffit d'y ajouter les lignes suivantes si l'on veut qu'un <code>[Alt]VL</code> redimensionne la fenêtre de manière à ce qu'elle prenne la moité de l'écran et la place à gauche. Même chose a droite via <code>[Alt]VR</code>.</p>
<pre><code> Mod1 V Mod1 L :MacroCmd {ResizeTo 50% 100%} {MoveTo 0 0}
Mod1 V Mod1 R :MacroCmd {ResizeTo 50% 100%} {MoveTo 50% 0}
</code></pre>
<p>Enjoy !</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
<p>Fluxbox est le gestionnaire de fenêtres que j'utilise sur ma machine linux / debian. Sous linux, on a le choix de l'environnement X (l'environnement graphique). Les plus connus sont Gnome, XFCE4 et KDE. <a href="https://blog.namok.be/?post/2013/12/20/fluxbox-keys-binding#fnref:1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
insync une solution pour la gestion Google driveurn:md5:d7c8e4650b8a10a6d1809ca80845f1b12013-12-09T12:51:00+01:002013-12-11T10:39:47+01:00PiTMes doigts dans le clavierblogdebianesigeekgooglepratique<p>Fini les clés USB et autres stockages à transporter, nos fichiers sont dans le <em>cloud</em> (le nuage / internet).</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/Catch_the_cloud_____by_Grafilogika.jpg" alt="Catch_the_cloud_____by_Grafilogika.jpg" style="margin: 0 auto; display: block;" title="Catch_the_cloud_____by_Grafilogika.jpg, déc. 2013" /></p>
<p>Soyons clair dès le début, ce n'est pas une habitude de compter la-dessus pour <strong>tous</strong>. Si je dois faire une présentation quelque part, je prend <strong>deux</strong> (en fonction de l'importance) clés USB avec ma présentation.</p>
<p>Deuxième règle de prudence – et donc incompatible avec ma facilité. Quelle confiance ais-je dans l'hébergeur ?</p>
<ul>
<li>Va-t-il perdre mes fichiers ?</li>
<li>Va-t-il les lire ? </li>
<li>Risque-t-il de les supprimer du jour au lendemain sans préavis ?</li>
</ul>
<p>Les précautions étant prises, allons-y …</p>
<p>Comment utiliser ces stockages en lignes ? (Je m'intéresse à <strong>linux</strong>. Les différences avec les autres OS peuvent être renseignées en commentaires)</p>
<p><a href="https://blog.namok.be/blog/?post/2012/04/25/mes-fichiers-dans-les-nuages">J'avais fait l'an dernier </a> un état des lieux des solutions de stockage en ligne qui reste d'actualité quand aux fournisseurs de service mais qui a un peu vieilli quant à l'offre elle-même. Les espaces ont grandi et les outils pour les administrer ont évolué.</p>
<p>Pour rappel, il s'agit de <a href="http://dropbox.com">Dropbox</a>, <a href="http://drive.google.com">GDrive</a>, <a href="http://hubic.com">Hubic</a>, <a href="https://mega.co.nz">Mega</a>, <a href="http://box.com">Box</a>,<a href="https://www.amazon.com/clouddrive">Amazon cloud drive</a>, <a href="https://one.ubuntu.com/">Ubuntu One</a> et <a href="http://windows.microsoft.com/en-us/skydrive/download">SkyDrive</a> pour les services avec une offre « gratuite » et <a href="http://owncloud.org">OwnCloud</a> pour le service autohébergé.</p>
<p>Jusqu'hier encore, c'est <a href="http://dropbox.com">Dropbox</a> qui semblait offrir le meilleur outil de synchronisation, du moins le plus répandu dans ceux que je connais.</p>
<p>À l'école, nous utilisons <a href="http://drive.google.com">GDrive</a> car nous avons opté pour la solution « <a href="http://www.google.com/enterprise/apps/education/">Google Apps for Education</a> » qui nous offre un package service/qualité/prix intéressant pour nous.</p>
<blockquote>
<p>Dans la vie professionnelle vous serez toujours confrontés au trio: cout, temps qualité. La relation entre ses trois acteurs est telle que C*T/Q reste constant
Mathieu, un ancien étudiant sorti en 1989</p>
</blockquote>
<p>Ce donc j'ai besoin, outre la synchronisation simple, c'<strong>est d'être notifié</strong> lorsqu'il y a un changement dans un des répertoires que je partage avec d'autres. J'avais bien <a href="https://blog.namok.be/blog/?post/2013/08/29/comment-etre-notifie-ajout-fichier-gdrive">tenté la solution</a> <a href="http://wappwolf.com/gdriveautomator">Wappwolf</a> mais sans grand succès puisque je n'étais notifié d'un changement que lorsque <strong>je</strong> faisais ce changement (MDR, LOL) !</p>
<p>Aujourd'hui, c'est <a href="https://www.insynchq.com" title="insync">Insync</a> qui semble apporter la solution:</p>
<ul>
<li>possibilité d'avoir plusieurs comptes (un pro et un privé par exemple);</li>
<li>des notifications sur le bureau;</li>
<li>client linux et packages proposant des plugins Thunar, Nautilus, Nemo, Dolphin;</li>
<li>partage en un clic moyennant l'installation d'un des packages ci-dessus;</li>
<li>ajout dans le <em>drive</em> en un clic (à faire avant de tenter un partage);</li>
<li>convertit les documents .gdoc en .odt;</li>
<li>… </li>
</ul>
<p><strong><a href="https://www.insynchq.com" title="insync">Insync</a> est payant.</strong></p>
<p>Je n'ai absolument aucun problème à payer un service ou un logiciel tant que le prix me parait correct. Je sais aussi qu'un service gratuit n'est jamais gratuit.</p>
<p>Insync coute 10$ (±7€) une fois pour une licence pour un compte. Pour gérer jusqu'à 3 comptes, il faut débourser cette somme chaque année. Si le service est pratique, c'est supportable.</p>
<p>Reste à essayer …</p>
<p>(<em>Ce billet est sponsorisé, il devrait me rapporter un abonnement d'un an gratuit. Je l'assume pleinement ;-)</em>)</p>
<h4>Liens</h4>
<ul>
<li><a href="https://www.insynchq.com" title="insync">Insync</a></li>
<li><a href="http://dropbox.com">Dropbox</a>, <a href="http://drive.google.com">GDrive</a>, <a href="http://hubic.com">Hubic</a>, <a href="https://mega.co.nz">Mega</a>, <a href="http://box.com">Box</a>,<a href="https://www.amazon.com/clouddrive">Amazon cloud drive</a>, <a href="https://one.ubuntu.com/">Ubuntu One</a>, <a href="http://windows.microsoft.com/en-us/skydrive/download">SkyDrive</a> et<a href="http://owncloud.org">OwnCloud</a> </li>
<li><a href="http://wappwolf.com/gdriveautomator">Wappwolf</a>, le service qui au final ne convient pas</li>
<li>Crédit photo chez <a href="http://deviantart.com">DeviantArt</a> par <a href="http://grafilogika.deviantart.com/art/Catch-the-cloud-123669456">Grafilogika</a></li>
</ul>
<h4>À lire aussi</h4>
<ul>
<li><a href="https://blog.namok.be/blog/?post/2012/04/25/mes-fichiers-dans-les-nuages">Mes fichiers dans les nuages</a></li>
<li><a href="https://blog.namok.be/blog/?post/2013/08/29/comment-etre-notifie-ajout-fichier-gdrive">Comment être notifié lors de l'ajout d'un fichier dans GDrive (fail)</a></li>
</ul>
Update wheezy to jessieurn:md5:5f1f86ab9759ceeb56a6ef89936daed22013-12-05T11:48:00+01:002013-12-05T12:22:39+01:00PiTMes doigts dans le clavieralternativesdebianesigeeklogiciellibrepratique<p>Quelques temps après le glissement de version chez debian; <em>wheezy</em> devient stable et apparait <em>jessie</em>, la nouvelle <em>testing</em>, j'ai l'habitude de passer ma machine en <em>testing</em>.</p>
<p>Bienvenue <em>jessie</em> donc.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/jessie-toy_story_by_satorudb-d38zro5.png" alt="Jessie" /></p>
<p><a href="https://blog.namok.be/blog/?post/2013/12/05/Update-squeeze-to-jessie">J'avais expliqué</a> un peu plus en détail que je ne vais le faire aujourd'hui mon passage de <em>squeeze</em> en <em>wheezy</em>. Très brièvement, j'ai fait</p>
<pre><code># vi /etc/apt/sources.list
:%s/wheezy/jessie/g
:x
# apt-get update && apt-get dist-upgrade
</code></pre>
<p>Et tout marche bien, la vie est belle.</p>
<p>– debian, c'est génial, jamais un nuage. Mangez-en !</p>
<p>Toute les paquets sont bien installés. <strong>Non !</strong> Un nuage obscurcit le ciel. Ce damné driver <strong>nvidia</strong> et la gestion de cette p#!%[n de carte graphique ne se passe pas tout comme il faut :-(</p>
<p>Me voilà pour une paire d'heures avec un driver <em>nouveau</em><sup id="fnref:1"><a href="https://blog.namok.be/?post/2013/12/05/jessie#fn:1" rel="footnote">1</a></sup> et une résolution insuffisante.</p>
<p>Voici ma solution. Si je demande via <code>nvidia-detect</code> si ma carte est supportée, je lis que oui et qu'il me suffit d'installer le paquet <code>nvidia-driver</code> … et que la magie fera l'affaire.</p>
<p>En effet, je verrai un peu plus tard que oui. Pour que la magie opère, je n'oublie pas qu'il faudra à un moment donné compiler le module dont j'ai besoin. Et pour compiler un module, j'ai besoin des <strong>sources</strong> (pas sur) et des <strong>headers</strong> (si si).</p>
<p>En quelques lignes de commandes, ça donne chez moi</p>
<pre><code># apt-get install linux-source-3.11
# apt-get install linux-headers-3.11-2-all
# cd /usr/src
# tar xvf linux-source-3.11.tar.xz
# ln -s linux-source-3.11 linux
$ apt-get install nvidia-driver
</code></pre>
<p>L'installation du dernier paquet aura pour effet d'installer des paquets comme <code>nvidia-kernel-dkms</code> et <code>xserver-xorg-video-nvidia</code>.</p>
<p>À noter qu'il n'est plus nécessaire d'avoir un fichier <code>/etc/X11/xorg.conf</code> mais que l'on préfèrera simplement ajouter le fichier:</p>
<pre><code># cat /etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
Identifier "My GPU"
Driver "nvidia"
EndSection
</code></pre>
<p>précisant que le driver n'est pas <em>nouveau</em> mais <em>nvidia</em>.</p>
<p>Et normalement ça roule.</p>
<p>Vous pouvez reprendre une activité normale …</p>
<h4>Liens</h4>
<ul>
<li><a href="http://debian.org">debian</a></li>
<li><a href="https://blog.namok.be/blog/?post/2010/03/06/Update-lenny-vers-squeeze">Mise à jour de lenny vers squeeze en 2010</a></li>
<li>Crédit photo chez <a href="http://deviantart.com" title="DeviantArt">deviantart</a> par <a href="http://satorudb.deviantart.com/art/Toy-Story-196504277">satorudb</a></li>
</ul>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
<p>Merci à l'équipe de dev pour ce driver libre. Malheureusement je ne parviens pas à avoir une résolution supérieure à 1024*768. <a href="https://blog.namok.be/?post/2013/12/05/jessie#fnref:1" rev="footnote">↩</a></p>
</li>
</ol>
</div>
Add by hands ou offrir le partage à la mainurn:md5:aa3163cb19fc01c5b3f6887b19d4a92e2013-11-10T14:33:00+01:002013-11-11T10:55:51+01:00PiTMes doigts dans le clavieralternativesblogdotclearfacebookflattrgeekgooglepratiquetwitter<p>Lorsque l'on écrit un article, <a href="https://blog.namok.be/blog/index.php?post/2013/07/23/ce-besoin-de-reconnaissance">on aime bien qu'il soit partagé</a>. C'est donc mieux de proposer un lien en fin d'article pour permettre facilement ce partage.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/a_gift_for_you_by_Schokolein.jpg" alt="a_gift_for_you_by_Schokolein.jpg" style="display:block; margin:0 auto;" title="a_gift_for_you_by_Schokolein.jpg, nov. 2013" /></p> <p>Depuis peu, <a href="http://open-time.net/post/2013/11/05/Plugin-AddToAny-01-pour-Dotclear">Franck propose un plugin</a> permettant de partager via plein de réseaux sociaux en utilisant <a href="http://www.addtoany.com">AddToAny</a>.</p>
<p>Pour ma part, j'utilisais les services de <a href="http://addthis.com">AddThis</a> jusqu'à il y a peu. C'était configurable et … vénérable vu son âge. AddThis me permettait également d'avoir un retour sur les liens qui étaient partagés, une sorte de rapport mensuel<sup>[<a href="https://blog.namok.be/?post/2013/11/10/add-by-hands#pnote-1382-1" id="rev-pnote-1382-1">1</a>]</sup>.</p>
<p>Comme c'est la mode aujourd'hui de se débarrasser un peu des services tiers lorsque c'est possible, je me propose de faire comme <a href="http://korben.info/bouton-partage-twitter-facebook-sans-tracking.html">Korben</a> et <a href="https://github.com/Ohax/Boutons-sociaux-sans-tracking">Ohax</a> afin d'ajouter des boutons de partage sans tracking – comprendre sans utiliser un service tiers.</p>
<p>Pour ce faire, il faut simplement savoir que les différents réseaux sociaux ont une API de type REST, c'est-à-dire permettant de donner des valeurs au serveur par le biais de l'URL. On pourra, donc partager un lien sur Twitter (pour peu que l'on soit connecté) par le biais d'une URL de la forme</p>
<pre> href="https://twitter.com/share?url=URL&text=TEXT&via=VIA</pre>
<p>où <code>URL</code> est l'url a partager, <code>TEXT</code>, les 140 caractères du tweet et <code>VIA</code> l'utilisateur qui sera prévenu du tweet.</p>
<p>En ajoutant une couche de CSS pour que ce soit joli, on obtient ça chez moi.</p>
<p><img src="/public/images/divers/2013/sharehands/screenshot-blog-1.png" alt="screenshot-blog-1.png" style="display:block; margin:0 auto;" title="screenshot-blog-1.png, nov. 2013" /></p>
<p>Je décide de ne partager que sur Twitter, G+, Facebook … et Flattr … et j'en profite pour mettre le lien du <a href="http://plugins.dotaddict.org/dc2/details/odt">plugin Export ODT</a>.</p>
<h3>Technique</h3>
<p>Dans mon thème, j'ajoute une page <code>_social.html</code> qui contient tous les liens que je désire. J'ajouterai cette page aux endroits où je veux voir apparaitre les liens de partage. Par exemple en ajoutant <code>tpl:include src="https://blog.namok.be/?post/2013/11/10/_social.html"</code> à l'endroit qui va bien de la page <code>post.hlml</code>.</p>
<p><strong>Si vous voulez intégrer ailleurs que dans Dotclear, remplacez toutes les occurrences de <code>tpl:Foo</code> par les liens qui vont bien.</strong></p>
<pre class="html4strict html4strict" style="font-family:inherit"><span style="color: #009900;"><<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"social"</span>></span>
<span style="color: #009900;"><<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"_blank"</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"Twitter"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"eleganticon social_twitter"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"https://twitter.com/share?url={{tpl:EntryURL}}&text={{tpl:EntryTitle}}&via=YOU"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"nofollow"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=400,width=700');return false;"</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>><<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"_blank"</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"Facebook"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"eleganticon social_facebook"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"https://www.facebook.com/sharer.php?u={{tpl:EntryURL}}&t={{tpl:EntryTitle}}"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"nofollow"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=500,width=700');return false;"</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>><<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"_blank"</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"Google +"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"eleganticon social_googleplus"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"https://plus.google.com/share?url={{tpl:EntryURL}}&hl=fr"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"nofollow"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=450,width=650');return false;"</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>><<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">target</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"_blank"</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"Flattr !"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"eleganticon icon_gift_alt"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"https://flattr.com/submit/auto?user_id=Pinkilla&url={{tpl:EntryURL}}&title={{tpl:EntryTitle}}&description={{tpl:EntryTitle}}&language=fr_FR&tags=blog&category=text"</span> </span>
<span style="color: #009900;"> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"nofollow"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=450,width=650');return false;"</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>><<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"Get ODT version"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"eleganticon icon_document"</span></span>
<span style="color: #009900;"> <span style="color: #000066;">href</span> <span style="color: #66cc66;">=</span><span style="color: #ff0000;">"{{tpl:BlogURL}}odt/post/{{tpl:EntryBasename}}"</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>></span>
<span style="color: #009900;"><<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>></span></pre>
<p>Au niveau du style, je profite d'un <a href="http://www.elegantthemes.com/blog/resources/elegant-icon-font#comment-100471">lien</a> de <a href="http://www.kozlika.org/kozeries/">Kozlika</a> proposant d'utiliser une police particulière pour ajouter des icônes à son site, ça s'appelle <em>icon font</em>.</p>
<p>Le principe consiste à utiliser une police de caractères qui ne représente pas l'alphabet mais des icônes et d'afficher un caractère donné dans cette police particulière. L'avantage de cette approche, c'est que les caractères ne sont pas sensibles à la taille et sont « beaux » quelle que soit la taille utilisée.</p>
<p><strong><a href="http://www.elegantthemes.com/blog/resources/elegant-icon-font#comment-100471">Tout est expliqué chez Elegantthemes</a></strong></p>
<p><img src="https://blog.namok.be/public/images/divers/2013/sharehands/.elegantfont-thumb_m.jpg" alt="elegantfont-thumb.jpg" style="display:block; margin:0 auto;" title="elegantfont-thumb.jpg, nov. 2013" /></p>
<p>J'ajoute donc à ma feuille de style</p>
<pre class="css css" style="font-family:inherit"><span style="color: #a1a100;">@font-face {</span>
<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'ElegantIcons'</span><span style="color: #00AA00;">;</span>
src<span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">(</span><span style="color: #ff0000;">'fonts/ElegantIcons.eot'</span><span style="color: #00AA00;">)</span><span style="color: #00AA00;">;</span>
src<span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">(</span><span style="color: #ff0000;">'fonts/ElegantIcons.eot?#iefix'</span><span style="color: #00AA00;">)</span> format<span style="color: #00AA00;">(</span><span style="color: #ff0000;">'embedded-opentype'</span><span style="color: #00AA00;">)</span><span style="color: #00AA00;">,</span>
<span style="color: #993333;">url</span><span style="color: #00AA00;">(</span><span style="color: #ff0000;">'fonts/ElegantIcons.woff'</span><span style="color: #00AA00;">)</span> format<span style="color: #00AA00;">(</span><span style="color: #ff0000;">'woff'</span><span style="color: #00AA00;">)</span><span style="color: #00AA00;">,</span>
<span style="color: #993333;">url</span><span style="color: #00AA00;">(</span><span style="color: #ff0000;">'fonts/ElegantIcons.ttf'</span><span style="color: #00AA00;">)</span> format<span style="color: #00AA00;">(</span><span style="color: #ff0000;">'truetype'</span><span style="color: #00AA00;">)</span><span style="color: #00AA00;">,</span>
<span style="color: #993333;">url</span><span style="color: #00AA00;">(</span><span style="color: #ff0000;">'fonts/ElegantIcons.svg#ElegantIcons'</span><span style="color: #00AA00;">)</span> format<span style="color: #00AA00;">(</span><span style="color: #ff0000;">'svg'</span><span style="color: #00AA00;">)</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">}</span>
<span style="color: #6666ff;">.eleganticon</span> <span style="color: #00AA00;">{</span>
<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'ElegantIcons'</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">speak</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">font-variant</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">text-transform</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
-webkit-font-smoothing<span style="color: #00AA00;">:</span> antialiased<span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">6em</span><span style="color: #00AA00;">;</span>
<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#eee</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">}</span>
<span style="color: #6666ff;">.social_twitter</span><span style="color: #3333ff;">:before </span><span style="color: #00AA00;">{</span>
<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\e</span>094"</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">}</span>
// … et toutes les classes qui m<span style="color: #ff0000;">'intéressent, une par icône</span></pre>
<p>N'hésitez pas à partager (voire <em>flattrer</em>) l'article<sup>[<a href="https://blog.namok.be/?post/2013/11/10/add-by-hands#pnote-1382-2" id="rev-pnote-1382-2">2</a>]</sup> … en utilisant les liens en bas de l'article.</p>
<p>·</p>
<h4>Liens</h4>
<ul>
<li><a href="http://open-time.net/post/2013/11/05/Plugin-AddToAny-01-pour-Dotclear">Open-Time, plugin AddToAny</a></li>
<li><a href="http://www.addtoany.com">AddToAny</a></li>
<li><a href="http://addthis.com">AddThis</a></li>
<li><a href="http://korben.info/bouton-partage-twitter-facebook-sans-tracking.html">Korben, boutons de partage sans tracking</a></li>
<li>Ohax, boutons sociaux sans tracking <a href="https://github.com/Ohax/Boutons-sociaux-sans-tracking">git </a>, <a href="http://ohax.fr/ajouter-les-boutons-de-partage-des-reseaux-sociaux-sans-le-tracking-de-vos-visiteurs">le blog</a></li>
<li><a href="http://plugins.dotaddict.org/dc2/details/odt">Plugin Export ODT</a></li>
<li><a href="http://www.kozlika.org/kozeries/">Kozlika</a> pour l'info sur <a href="http://www.elegantthemes.com/blog/resources/elegant-icon-font#comment-100471">Elegant Thème</a></li>
<li>Crédit photo chez <a href="http://deviantart.com">deviantart</a> par <a href="http://fav.me/d26i3eo">Schokolein</a></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Notes</h4>
<p>[<a href="https://blog.namok.be/?post/2013/11/10/add-by-hands#rev-pnote-1382-1" id="pnote-1382-1">1</a>] Étant donné le faible taux de partage de mes articles, ces « stats » me donnaient plus le cafard qu'autre chose. Bref.</p>
<p>[<a href="https://blog.namok.be/?post/2013/11/10/add-by-hands#rev-pnote-1382-2" id="pnote-1382-2">2</a>] Je trouve toujours que ça fait un peu pute de demander systématiquement de partager l'article, mais pour une fois …</p></div>
Comment être notifié lors de l'ajout d'un fichier dans un répertoire GDrive ?urn:md5:45c35e520c850241e16a551fb04590932013-08-29T11:53:00+02:002013-09-23T19:48:21+02:00PiTMes doigts dans le clavierdiversesigeekgooglepratique<p>— Oh, tu as vu la nouvelle note de service ?</p>
<p>— Non, où ça ?</p>
<p>— C'est arrivé ce matin dans « le google drive »</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/wolf_by_Yorvig.jpg" alt="wolf_by_Yorvig.jpg" style="display:block; margin:0 auto;" title="wolf_by_Yorvig.jpg, août 2013" /></p> <p><em>First at all</em>, Google ne propose pas cette fonctionnalité …
Il est possible d'être notifié du changement d'un fichier (existant et pas tous) ou de l'ajout de commentaires à un fichier.
<a href="http://productforums.google.com/forum/#!searchin/drive/notification/drive/f5j_oLihF8g/efzdaCyEe_wJ">Il n'est pas possible d'être notifié de l'ajout d'un fichier dans un folder</a>.</p>
<p>J'ai trouvé une application (Audit Tool for Google Apps / GAT)) faisant le boulot et qui doit être installée par l'administrateur du domaine « Google App ». Je ne peux pas la tester pour l'instant et ça coûte <em>3$/Google user</em>.</p>
<p>En parcourant Stackoverflow, je découvre <strong><a href="http://wappwolf.com">Wappwolf</a></strong> (une sorte de <a href="https://blog.namok.be/blog/index.php?post/2013/07/17/vrac-13">IFTTT</a> pour les applications Google) qui m'envoie un mail lorsque le contenu d'un répertoire GDrive change.</p>
<p>J'essaie …</p>
<p>On peut faire plein de chose à partir de GDrive mais également Dropbox et de Box; des conversions (en PDF), des envois vers d'autres services (Kindle, Slideshare, eBook, FAcebook, Twitter, goo.gl, …), l'envoi d'images (avec modifications éventuelles) vers d'autres services (Facebook, Flickr, Picasa / Google+, …), l'envoi du fichier par mail, l'upload vers d'autres services de stockage en ligne…</p>
<p>Enjoy !</p>
<p><strong>Édité le 7 septembre 2013</strong>
Il y a deux limitations qui rendent l'application (presque) inintéressante pour moi:</p>
<ul>
<li>le parcours n'est pas récurcif<sup>[<a href="https://blog.namok.be/?post/2013/08/29/comment-etre-notifie-ajout-fichier-gdrive#pnote-1375-1" id="rev-pnote-1375-1">1</a>]</sup>;</li>
<li>la notification par mail ne se fait que pour <strong>les fichiers dont on est propriétaire</strong>. Si je dépose un fichier dans un répertoire (et que je suis mort saoûl) je suis notifié de mon dépot. Si c'est quelqu'un d'autre non … l'intérêt de l'outil devient très limité pour moi :-(</li>
</ul>
<h4>Liens</h4>
<ul>
<li><a href="http://productforums.google.com/forum/#!searchin/drive/notification/drive/f5j_oLihF8g/efzdaCyEe_wJ">Forum Googl Drive</a></li>
<li><a href="https://www.google.com/enterprise/marketplace/viewListing?productListingId=2463+6187264932609416511&hp=staffpick&pli=1">GAT</a></li>
<li><a href="http://wappwolf.com/gdriveautomator">Wappwolf</a></li>
<li><a href="http://stackoverflow.com/questions/10540687/how-wappwolf-gets-notifications-from-google-drive">Stackoverflow, how get notification from Google Drive</a></li>
<li><a href="https://blog.namok.be/?post/2013/08/29/http.//ifttt.com">IFTTT</a></li>
<li>Crédit photo, <a href="http://yorvig.deviantart.com/art/wolf-53413227">Yorvig</a></li>
</ul>
<h4>À lire aussi</h4>
<ul>
<li><a href="https://blog.namok.be/blog/index.php?post/2013/07/17/vrac-13">Vrac #13</a></li>
<li><a href="https://blog.namok.be/blog/index.php?post/2012/04/25/mes-fichiers-dans-les-nuages">Mes fichiers dans les nuages</a></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Note</h4>
<p>[<a href="https://blog.namok.be/?post/2013/08/29/comment-etre-notifie-ajout-fichier-gdrive#rev-pnote-1375-1" id="pnote-1375-1">1</a>] Ça, on peut s'y faire si l'on est prévenu de l'ajout l'un répertoire</p></div>
IRC 2.0urn:md5:5e3d552699e5b8d7134f82710501129f2013-07-28T21:42:00+02:002020-06-21T10:49:30+02:00PiTMes doigts dans le clavieralternativesdebiandiversdotclearesigeekirclogiciellibrepratique<p><img src="https://blog.namok.be/public/images/divers/2013/irc-6006163214_a7cc298d3f_b.jpg" alt="irc-6006163214_a7cc298d3f_b.jpg" style="display:table; margin:0 auto;" title="irc-6006163214_a7cc298d3f_b.jpg, juil. 2013" /></p> <h3>1971, le commencement</h3>
<p>Dans les années septante<sup>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>, au temps de <a href="http://www.icq.com">ICQ</a><sup>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup> et autres (ah non, rien d'autres en fait) protocoles permettant de <em>chatter</em>, le plus <em>geek</em> était sans nul doute IRC<sup>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#wiki-footnote-3" id="rev-wiki-footnote-3">3</a>]</sup> …</p>
<p>Muni d'un client, il suffisait de se connecter au serveur qui va bien et de choisir le <em>chan</em> qui nous intéresse; #debian, #dotclear, #esi, … <sup>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#wiki-footnote-4" id="rev-wiki-footnote-4">4</a>]</sup>. L'inconvénient était alors que l'on ne savait pas ce qu'il se disait quand on était absent … Un peu comme au café du coin; quand on est là, on papote et quand on n'est pas là … les autres parlent «sur notre dos».</p>
<p>C'est l'époque de <a href="http://www.irssi.org/">irssi</a>, <a href="http://xchat.org/">xchat</a>, <a href="http://www.bitchx.com/">bitchx</a> ou <a href="http://www.weechat.org/">weechat</a> (non, Emacs, ça ne compte pas !) …</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/.weecfat-5413525337_446d60f331_o_m.jpg" alt="weecfat-5413525337_446d60f331_o.png" style="display:table; margin:0 auto;" title="weecfat-5413525337_446d60f331_o.png, juil. 2013" /></p>
<h3>1972, je suis toujours là !</h3>
<p>Les plus malins (comprendre: simplement ceux qui ont l'opportunité d'accéder à une machine qui est toujours connectée à internet) vont découvrir la commande <code>screen</code> ce qui leur permettra d'être toujours présents sur le <em>chan</em> … même s'ils ne lisent pas tout.</p>
<p>… et c'est muni d'un <code>screen</code> et d'un <code>weechat</code> qu'ils passeront les 1000 ans suivants.</p>
<h3>2013 et comment je fais avec mon smartphone ?</h3>
<p><img src="https://blog.namok.be/public/images/divers/2013/.chooseirc-42058548_ef5d305a6d_o_s.jpg" alt="chooseirc-42058548_ef5d305a6d_o.jpg" style="float:right; margin: 0 0 1em 1em;" title="chooseirc-42058548_ef5d305a6d_o.jpg, juil. 2013" /></p>
<p>Aujourd'hui je veux pouvoir accéder à mon sacro-saint <em>chanel</em> IRC à partir de plusieurs <em>devices</em>. Pas de souci, je remplace la suite ssh/screen/weechat de mon <em>laptop</em> par <a href="https://play.google.com/store/apps/details?id=org.connectbot&hl=en">ConnectBot</a>/screen/weechat lorsque je suis sur mon smartphone.</p>
<p>Sauf que ça fonctionne moins bien<sup>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#wiki-footnote-5" id="rev-wiki-footnote-5">5</a>]</sup> :-(</p>
<p>L'idée est de <strong>mettre en place un <em>bouncer</em> IRC</strong> ! C'est simplement une interface supplémentaire entre le channel IRC et le(s) client(s). Plutôt que de me connecter au serveur IRC, je me connecte à cette interface (de n'importe quel <em>device</em>). Cette interface reste en permanence connectée au chanel … en m'offrant des services (marquer ma présence, loguer, …).</p>
<p>C'est un <strong>proxy IRC</strong>. J'ai nommé <a href="http://wiki.znc.in/ZNC">ZNC</a>.</p>
<p>Mettons un peu les doigts dedans pour « faire fonctionner le bouzin » sur ma machine <strong>debian</strong> …</p>
<pre>
# apt-get install znc
</pre>
<p>… pour installer la chose.</p>
<pre>
$ znc --makeconf
</pre>
<p>… pour configurer le proxy. Je ne choisis pas <em>ssl</em> car ça me pose problème et je pense à charger des modules lorsque je répond aux questions.</p>
<p>Mon fichier de conf se résume à ça</p>
<pre>
$ cat ~/.znc/configs/znc.conf
Listener4 = 6697
LoadModule = webadmin
LoadModule = lastseen
<User justeleblanc>
Pass = <hash de justepassword>
Admin = true
Nick = JusteLeblanc
AltNick = MarlèneSassœur
Ident = justeleblanc
RealName = Juste Leblanc, ha bon t'as pas de prénom
Buffer = 500
KeepBuffer = false
ChanModes = +stn
LoadModule = admin
LoadModule = keepnick
LoadModule = nickserv <mot de passe pour NickServ>
LoadModule = simple_away
LoadModule = awaynick Juste_paslà
Server = irc.freenode.net 6667
<Chan #unchouettechan>
</Chan>
<Chan #unautreencorepluschouette>
</Chan>
</User>
</pre>
<p>J'ai du attendre un peu pour que je parvienne à me connecter avec irssi / weechat et puis ça a fonctionné … je choisis comme <code>server</code> dans <code>weechat</code> les paramètres suivant …</p>
<pre>
/server host host.someserver.be/6697
-username justeleblanc
-password justepassword
- autoconnect
/connect host
</pre>
<p>Il reste à prendre le smartphone et a essayer avec <a href="https://play.google.com/store/apps/details?id=com.countercultured.irc&hl=en">AndroidIRC</a> par exemple … et c'est plus sympa …</p>
<p>Enjoy …</p>
<h4>Liens</h4>
<ul>
<li><a href="http://www.icq.com">ICQ</a> un vieux brol que je suis surpris de voir encore exister ;-)</li>
<li><a href="http://esi.namok.be/faq.html#14">esi.namok.be</a>, dans la FAQ de mon site pour l'école …</li>
<li><a href="http://www.irssi.org/">irssi</a>, <em>The client to the future</em> ça ne s'invente pas !</li>
<li><a href="http://www.weechat.org/">weechat</a>, client IRC</li>
<li><a href="http://xchat.org/">xchat</a>, un autre client IRC</li>
<li><a href="http://www.bitchx.com/">bitchx</a>, le client IRC que l'on installait sans savoir à quoi il servait (probablement à cause du nom) … je vois aujourd'hui qu'il est également un <em>bouncer</em></li>
<li><a href="https://play.google.com/store/apps/details?id=org.connectbot&hl=en">ConnectBot</a>, application Androïd me permettant de me connecter un ssh sur une machine distante</li>
<li><a href="http://wiki.znc.in/ZNC">ZNC</a>, <em>bouncer</em> (proxy) IRC</li>
<li><a href="https://play.google.com/store/apps/details?id=com.countercultured.irc&hl=en">AndroidIRC</a>, une application Android pour IRC un peu plus conviviale que la combinaison ConnectBot/screen/weechat</li>
</ul>
<h4>Crédits / sources</h4>
<ul>
<li>Merci au chan #dotclear et à <a href="http://open-time.net/">Frank Paul</a> pour l'info sur ZNC</li>
<li>Crédit photo chez Flickr par <a href="http://www.flickr.com/photos/dvanzuijlekom">dvanzuijlekom</a></li>
<li>Crédit photo chez Flick par <a href="http://www.flickr.com/photos/n3wjack/">n3wjack</a></li>
<li>Crédit photo chez Flickr toujours par <a href="http://www.flickr.com/photos/blakespot/">blakespot</a></li>
</ul>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Les plus vieux savent que je mens au niveau de la date mais c'est pas grave …</p>
<p>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] Ah merde alors, ça existe encore …</p>
<p>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#rev-wiki-footnote-3" id="wiki-footnote-3">3</a>] Pour ceux qui ne connaissent pas, lire <a href="http://esi.namok.be/resources.html#14">ça</a></p>
<p>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#rev-wiki-footnote-4" id="wiki-footnote-4">4</a>] Et pas faire <code>/list *sex*</code> …</p>
<p>[<a href="https://blog.namok.be/?post/2013/07/28/irc-2.0#rev-wiki-footnote-5" id="wiki-footnote-5">5</a>] ConnectBot n'a pas la meilleure interface qu'il soit et je n'ai toujours pas compris comment faire un <code><a href="https://blog.namok.be/?post/2013/07/28/Shift" title="Shift">Shift</a><a href="https://blog.namok.be/?post/2013/07/28/Alt" title="Alt">Alt</a>i</code> pour passer d'un <em>chan</em> à l'autre …</p></div>
Vrac #13urn:md5:35eef35fb6b50a243c1791f88b4fea3f2013-07-17T22:45:00+02:002013-07-17T22:12:23+02:00PiTMes doigts dans le clavieralternativesdiversdotclearesifacebookgeekinutilepratiquetwittervrac<p><img src="https://blog.namok.be/public/images/divers/2013/.3224201648_143a736af4_o_m.jpg" alt="3224201648_143a736af4_o.jpg" style="display:block; margin:0 auto;" title="3224201648_143a736af4_o.jpg, juil. 2013" /></p> <p>« if that then else» (<a href="http://ifttt.com">IFTTT</a>) est un service qui, comme son nom l'indique, déclenche une action sur base d'une autre. Bien pratique pour</p>
<ul>
<li>poster un statut Facebook quand je poste un billet sur le blog,</li>
<li>idem pour poster sur Linkedin,</li>
<li>placer dans mon «pocket» un article sauvé sur Feedly</li>
<li>…</li>
</ul>
<p><a href="http://dlvr.it">dlvr</a> et <a href="https://zapier.com">Zapier</a> font exactement la même chose<sup>[<a href="https://blog.namok.be/?post/2013/07/17/vrac-13#pnote-1371-1" id="rev-pnote-1371-1">1</a>]</sup> …</p>
<p><a href="http://getpocket.com">Pocket</a> permet de mémoriser des articles « à lire ». L'idée étant qu'en un clic, je place « dans ma poche » un article que je lirai plus tard. Mon activité sur le web se décompose alors en deux parties:</p>
<ul>
<li>la collecte des choses à lire;</li>
<li>la lecture des articles proprement dite</li>
</ul>
<p>Un peu de Facebook pour jouer à <a href="http://www.trickedouttimeline.com/">remplacer sa photo de profil </a> et un site permettant de faire une <a href="http://simplewa.sh/facebook">recherche dans sa timeline</a> (Twitter ou facebook).</p>
<p>Si vous utilisez <a href="http://spotify.be">Spotify</a> et que vous voulez partager un morceau … déposez-le sur <a href="http://youtube.com">Youtube</a> grâce à <a href="http://spo2tu.be/">spo2tu</a>.</p>
<p>Commercez équitablement en aidant un producteur d'amérique latine et partout dans le monde. Par le biais de <a href="http://kiva.org">Kiva</a>, le principe:</p>
<ul>
<li>faire prêt,</li>
<li>attendre pendant que « ça pousse »</li>
<li>retoucher son emprunt … et en faire un autre</li>
</ul>
<p>… ce qui permet aux petits producteurs des pays (dit) non industrialisés de vivre (plus) dignement.</p>
<center>
<iframe src="http://player.vimeo.com/video/16991128" width="400" height="300" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</center>
<p><em>Loans that change live.</em></p>
<p>Enjoy …</p>
<h4>Liens</h4>
<ul>
<li><a href="http://ifttt.com">IFTTT</a></li>
<li><a href="http://dlvr.it">dlvr</a></li>
<li><a href="https://zapier.com">Zapier</a></li>
<li><a href="http://getpocket.com">Pocket</a></li>
<li><a href="http://www.trickedouttimeline.com">Trickedouttimeline</a></li>
<li><a href="http://simplewa.sh">Simplewa</a></li>
<li><a href="http://spo2tu.be/">spo2tu</a></li>
<li><a href="http://kiva.org">Kiva</a></li>
<li><a href="http://www.flickr.com/photos/dobrych/">Crédit photo, dobrych</a></li>
</ul>
<h4>Sources</h4>
<ul>
<li><a href="http://ploum.net">Ploum</a></li>
<li><a href="http://dotclear.org">dotclear</a> et sa mailing list</li>
<li><em>les hasards du web …</em></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Note</h4>
<p>[<a href="https://blog.namok.be/?post/2013/07/17/vrac-13#rev-pnote-1371-1" id="pnote-1371-1">1</a>] Lequel des trois est le meilleur … </p></div>
Tu indentes comme un goreturn:md5:66129cd005922f9ba696f0f9bfb90bc72013-07-02T14:02:00+02:002013-10-25T14:41:10+02:00PiTMes doigts dans le clavierdebiandiversesigeekjavalogiciellibrepratique<p>Si j'écris ce code</p>
<pre class="java java" style="font-family:inherit"><span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span></pre>
<p>… et si j'ai lu les conventions d'écriture du code en Java, je sais que « j'indente comme un goret » et même plus qu'une mauvaise indentation, mes passages à la ligne sont incorrects.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/pig-6923469335_3088c1c263_b.jpg" alt="pig-6923469335_3088c1c263_b.jpg" style="display:block; margin:0 auto;" title="pig-6923469335_3088c1c263_b.jpg, juil. 2013" /></p> <p>Si je ne veux pas écrire directement mon code correctement (ou si je veux être sûr qu'il soit bien écrit) je peux utiliser un programme qui le fait pour moi ! Ce programme s'appelle <a href="http://astyle.sourceforge.net/">astyle</a><sup>[<a href="https://blog.namok.be/?post/2013/07/02/tu-indentes-comme-un-goret#pnote-1370-1" id="rev-pnote-1370-1">1</a>]</sup></p>
<p><strong>Comme ça, plus d'excuse. </strong></p>
<p>Essayons, pour l'exemple, avec ce code dont les passages à la ligne sont aléatoires, la convention d'écriture des blocs non homogènes, les déclarations sur une même ligne, …</p>
<pre class="java java" style="font-family:inherit"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Essai<span style="color: #009900;">{</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main <span style="color: #009900;">(</span><span style="color: #003399;">String</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span>args<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span>
<span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span></pre>
<p>Un petit coup de astyle</p>
<pre>
$ astyle -acxA2 Essai.java
</pre>
<pre class="java java" style="font-family:inherit"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Essai <span style="color: #009900;">{</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main <span style="color: #009900;">(</span><span style="color: #003399;">String</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span>args<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;"><</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"Essai:"</span><span style="color: #339933;">+</span>i<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span></pre>
<p>Enjoy …
<em>(Merci à Nico pour le lien)</em></p>
<h4>Liens</h4>
<ul>
<li><a href="http://esi.namok.be/brol/java/Sun-CodeConventions.pdf">Conventions d'écriture du code (Sun)</a></li>
<li><a href="http://astyle.sourceforge.net/">astyle</a></li>
<li><a href="http://debian.org">debian</a></li>
<li>Crédit photo <a href="http://www.flickr.com/photos/thomashawk/">Flickr, Thomas Hawk</a></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Note</h4>
<p>[<a href="https://blog.namok.be/?post/2013/07/02/tu-indentes-comme-un-goret#rev-pnote-1370-1" id="pnote-1370-1">1</a>] Un p'tit coup d'<code>apt-get</code> sous debian et ça roule …</p></div>
Vrac #12urn:md5:05d45117bd1bc42ee4693df45a1cf52d2013-06-21T09:38:00+02:002013-06-23T09:16:12+02:00PiTMes doigts dans le clavierdiversesiflattrgeekinutilepratiquevrac<p>Quelques liens …</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/.bird-8237842664_24f6a15caa_h_m.jpg" alt="bird-8237842664_24f6a15caa_h.jpg" style="display:block; margin:0 auto;" title="bird-8237842664_24f6a15caa_h.jpg, juin 2013" /></p> <p><a href="http://manbox.be">ManBox</a> si tu veux recevoir un slip et des chaussettes chaque mois dans ta boite aux lettres … ça pourrait m'intéresser si c'était moins fréquent …</p>
<p><a href="http://airdroid.com">Airdroid</a>, une application permettant de prendre le contrôle de son smartphone Android à distance … bien pratique si on ne veut pas utiliser son cable USB par exemple.
Le principe est simple, l'application ouvre un serveur web sur le smartphone et le rend accessible à l'utilisateur. Ça peut se faire via le site de <a href="http://airdroid.com">airdroid</a> ou par une IP si c'est dans le même réseau local.
L'appli permet même de trouver l'appareil et de l'éffacer sous certaines conditions.</p>
<p>Si l'on connait (presque) tous <a href="http://slidesshare.net">Slideshare.net</a>, il existe un autre service semblable, <a href="http://prezi.com">Prezi </a>. La différence est que Prezi est plus orienté «présentation de carte heuristique» (<em>mind map</em>).</p>
<p>Quelque chose comme <a href="http://flattr.com">Flattr</a> mais «pas comme» !
Si Flattr permet de rémunérer un auteur «à l'article», l'objectif de <a href="http://www.patreon.com">Patreon</a> est plus de prendre un engagement envers un auteur / artiste. Si je fais confiance à l'auteur / artiste, je m'engage à lui donner un certain montant chaque fois qu'il publie. Pour l'auteur / artiste, ça lui assure un revenu fixe.</p>
<p><a href="https://fr.cloudflare.com">Cloudflare</a> est un système pour gérer / contrôler la charge d'un site . Avec <a href="https://fr.cloudflare.com">Cloudflare </a>, je suis sur que mon site ne souffrira jamais un 'DDOS' puisque c'est le service qui gère mes enregistrements DNS et se charge de ne pas répondre à certaines requêtes … l'avis de <a href="http://sebsauvage.net/rhaa/index.php?2012/01/23/13/42/15-cloudflare-le-syndrome-akismet-">Sebsauvage </a> sur le sujet.</p>
<p><a href="http://seenthis.net">Seenthis</a> à mis chemin entre Twitter et un blog. Je n'ai pas encore bien compris le principe …</p>
<p>Un service pour les ados car je n'imagine pas que ça puisse être utilisé autrement (et c'est peut-être dommage), <a href="http://ask.fm">Ask.fm</a> permet de se créer une page sur laquelle tout le monde peut venir poser ses questions. Ce que j'ai lu ne vole pas haut.</p>
<p>Pour ceux qui aiment les jolies infographies, voici un site qui en génère pour vous;<a href="http://visual.ly">Visual.ly</a>. Cliquez sur create permet de choisir des infographies … c'est beau, c'est tout ;-)</p>
<p>Ceux qui sont souvent à la recherche d'images utilisent <a href="https://blog.namok.be/?post/2013/06/21/http.//images.google.com">Google Image</a> (avec un p'tit filtre pour les licences).
Ceux qui cherchent de <strong>belles</strong> images regardent plus du coté de <a href="http://flickr.com">Flickr</a> (avec un p'tit filtre Creative common).
Ceux qui n'ont pas peur des images de tous genres se dirigent vers <a href="http://deviantart.com">DeviantArt</a>, capable du meilleur comme du pire … j'aime !
… ceux qui cherchent des <strong>symboles</strong> en tout genre peuvent regarder du côté du « projet des nonnes » (un nom qui ne s'invente pas et qui n'a probablement pas le sens que j'imagine); <a href="http://thenounproject.com">The noun project</a></p>
<h4>Liens</h4>
<ul>
<li><a href="http://manbox.be">ManBox</a></li>
<li><a href="http://airdroid.com">Airdroid</a></li>
<li><a href="http://slidesshare.net">Slideshare.net</a></li>
<li><a href="http://prezi.com">Prezi </a></li>
<li><a href="http://flattr.com">Flattr</a></li>
<li><a href="http://www.patreon.com">Patreon</a></li>
<li><a href="https://fr.cloudflare.com">Cloudflare</a></li>
<li><a href="http://seenthis.net/people/pinkilla">Seenthis</a></li>
<li><a href="http://ask.fm">Ask.fm</a></li>
<li><a href="http://visual.ly">Visual.ly</a></li>
<li><a href="https://blog.namok.be/?post/2013/06/21/http.//images.google.com">Google Image</a></li>
<li><a href="http://flickr.com">Flickr</a></li>
<li><a href="http://deviantart.com">DeviantArt</a></li>
<li><a href="http://thenounproject.com">The noun project</a></li>
<li>Crédit photo <a href="http://www.flickr.com/photos/tambako/">Flickr, tambako</a></li>
</ul>
<h4>À lire aussi</h4>
<ul>
<li><a href="https://blog.namok.be/blog/index.php?post/2013/03/04/vrac-11">Vrac #11</a></li>
<li><a href="https://blog.namok.be/blog/index.php?post/2012/06/26/vrac-10">Vrac #10</a></li>
<li>…</li>
<li><a href="https://blog.namok.be/blog/index.php?post/2010/01/27/Vrac-1">Vrac #1</a></li>
</ul>Proof of concept de ma présentation d'un stage imaginaireurn:md5:4002e840d6296f5bd0578883047482312013-06-20T09:54:00+02:002022-05-23T11:33:22+02:00PiTMes doigts dans le clavieralternativescarediversesilogiciellibrepratique<p>POC de ma présentation de stage imaginaire</p>
<p>C'est la fin de l'année, les étudiants ne sont même plus en examen et ce n'est pas encore l'heure des délibérations …</p>
<p>— Ouaip ! T'es encore en congé</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/Baby-penguins.jpg" alt="Baby-penguins.jpg" style="display:table; margin:0 auto;" title="Baby-penguins.jpg, juin 2013" /></p> <p>C'est la période, disais-je des présentations de stages. Nos étudiants de BAC3 viennent nous faire un compte-rendu de leur stage de 15 semaines qui s'est déroulé en entreprise.</p>
<p>C'est un moment à la fois sympa et fatigant.</p>
<p>C'est très sympa car, après avoir vu défiler des étudiants de première parmi lesquels peu parviennent à répondre à nos attentes, c'est motivant d'écouter les <strong>étudiants sortants</strong> et d'entendre, de la part des maitres de stages, que nos étudiants sont appréciés au sein des diverses entreprises<sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>.</p>
<p>C'est fatiguant car nous voyons 10 à 12 présentations par jour qu'il faut; écouter, comparer, évaluer, … ce qui demande pas mal d'attention <sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup>.</p>
<p>Nos étudiants sont préparés par un collègue à faire cette présentation qui est une première pour eux, qui se déroule devant des profs et devant des responsables en entreprise. Présentation qui clôture leur stage … et qui est donc … heu … moyennement stressante pour eux.</p>
<p>Depuis quelques jours, je lis des articles sur «la bonne manière de préparer des <em>slides</em> en 2013».</p>
<p><a href="http://fr.slideshare.net/EmilandDC">Emiland</a> par exemple donne des conseils pour <strong>mieux réussir ses présentations</strong>. Si je ne suis pas d'accord avec tout ce qu'il propose, j'y pioche par contre beaucoup de bonnes idées et de bons conseils … et lorsque je regarde les présentations des étudiants, je me dis que</p>
<p>— C'est pas gagné !</p>
<p>Je sais que tous nos étudiants préparent au mieux leur présentation et cependant, ce que j'observe est très «début des années 2000». Je vois des présentations très (trop) <em>corporate</em>. Les présentations sont lissées, trop semblables. Je trouve que pour ce type de présentation <sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-3" id="rev-wiki-footnote-3">3</a>]</sup>, c'est important que la <strong>présentation soit personnelle</strong> en ce sens qu'elle peut laisser transparaitre la personnalité de l'auteur.</p>
<p>— Voici <strong>ma</strong> présentation de stage !</p>
<p>Je me propose donc de faire l'exercice demandé aux étudiants pour une <a href="http://fr.wikipedia.org/wiki/ACME_Corporation">société imaginaire ACME</a> et un projet imaginaire également <sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-4" id="rev-wiki-footnote-4">4</a>]</sup>.</p>
<p>Quelques remarques préalables :</p>
<ul>
<li>ce type de présentation est plus difficile à présenter car tout n'est pas écrit sur les <em>slides</em>. Ils ne sont donc pas <em>self-consistant</em> et le discours oral doit être plus préparé;</li>
<li>choisir des images, c'est montrer une partie de sa personnalité, c'est sortir un peu de sa zone de confort … c'est ce qui permet de se démarquer</li>
</ul>
<center>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/763JN5i8VvgASo" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</center>
<p>Cette présentation est loin d'être parfaite et je ne dis pas que c'est ça qu'il faut faire … <strong>aujourd'hui, c'est ce que je ferais</strong> …</p>
<p>Pour la forme, j'essaie d'ajouter des couleurs (un peu vives), je trouve ça plus joli et plus vivant mais ce n'est pas dans ma nature. Le choix des polices de caractères est assez difficile à faire. Par contre l'ajout d'images me convient bien. Il est a noter que choisir des images est très chronophage …</p>
<p>Le <strong>dernier <em>slide</em></strong> projeté (avant les crédits) a un statut particulier<sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-5" id="rev-wiki-footnote-5">5</a>]</sup>. C'est celui qui sera le plus longtemps vu puisqu'il sera affiché pendant la séance de réponse aux questions <em>éventuelles</em><sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-6" id="rev-wiki-footnote-6">6</a>]</sup> … il est donc particulier. Ce «<strong>slide question</strong>» peut présenter une image rappelant l'exposé afin, par exemple, d'orienter l'auditoire vers un certain type de questions.</p>
<p>Enfin lors de votre présentation de stage, dites vous qu'une grande partie de la cote est déjà attribuée<sup>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#wiki-footnote-7" id="rev-wiki-footnote-7">7</a>]</sup> et que le jury est là car il veut savoir ce que vous avez fait, comment vous l'avez fait, … il veut surtout rester éveillé ;-)</p>
<p>Si vous êtes stressés, un avant gout des membres du jury …</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/.Academic_gathering_by_Beetle_invasion_m.jpg" alt="Academic_gathering_by_Beetle_invasion.jpg" style="display:table; margin:0 auto;" title="Academic_gathering_by_Beetle_invasion.jpg, juin 2013" /></p>
<h4>Liens</h4>
<ul>
<li>Nos étudiants <a href="http://www.heb.be/esi">HEB ÉSI</a></li>
<li><a href="http://fr.slideshare.net/EmilandDC">Emiland</a></li>
<li><a href="http://fr.wikipedia.org/wiki/ACME_Corporation">Wikipedia, ACME</a></li>
<li><a href="http://fpluquet.be">Frédéric Pluquet</a></li>
<li>Crédit photo, <a href="http://500px.com/SteveShuey">Steve Shuey</a> et <a href="http://beetle-invasion.deviantart.com/">Sonia chez DeviantArt</a></li>
</ul>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Pas tous hein ! Mais dans l'ensemble les étudiants qui sortent sont bien cotés</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] Non non, ce n'est pas moi le prof assoupi au fond ;-) Parmi les enseignants de l'école certains sont volontaires (parfois on dit «pigeons volontaires») pour assister à toutes les présentations de stages. Ceci afin de permettre une meilleure uniformité lorsqu'il s'agira de donner une évaluation chiffrée de la présentation.</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-3" id="wiki-footnote-3">3</a>] C'est important de (re)dire qu'il existe plusieurs types de présentations, en fonctions de beaucoup de paramètres.</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-4" id="wiki-footnote-4">4</a>] Basé sur un exercice demandé aux étudiants de troisième dans le cadre du cours d'ateliers logiciels</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-5" id="wiki-footnote-5">5</a>] Merci <a href="http://fpluquet.be">Fred</a> pour la remarque</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-6" id="wiki-footnote-6">6</a>] Il y a toujours des questions sinon, c'est que c'est très mauvais !</p>
<p>[<a href="https://blog.namok.be/?post/2013/06/20/poc-presentation-stage-imaginaire#rev-wiki-footnote-7" id="wiki-footnote-7">7</a>] Celle pour le travail en entreprise, celle pour le rapport … il ne reste donc que celle pour la présentation.</p></div>
Dans ton charseturn:md5:40ec70b3a76c1503b51086b7a739be0b2013-06-05T08:48:00+02:002013-06-05T08:38:09+02:00PiTMes doigts dans le clavierbuzzfacebookgeekinutilelinuxfrpratiquetwitter<p>Lorsque l'on rédige un document en html, la question du charset que l'on veut utiliser se pose parfois …</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/.stop-348368964_c2d9519644_b_m.jpg" alt="stop-348368964_c2d9519644_b.jpg" style="display:block; margin:0 auto;" title="stop-348368964_c2d9519644_b.jpg, juin 2013" /></p> <p>Un document html5 a la structure suivante</p>
<pre>[html]
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Titre de la page</title>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
...
<!-- Le reste du contenu -->
...
</body>
</html>
</pre>
<p>… en html4 la balise en question avait la forme suivante</p>
<pre>[html]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</pre>
<p>Évidemment (ce n'est sans doute <a href="http://linuxfr.org/news/premiere-mise-en-demeure-pour-l-association-linuxfr">pas évident pour tout le monde</a><sup>[<a href="https://blog.namok.be/?post/2013/06/05/dans-ton-charset#pnote-1366-1" id="rev-pnote-1366-1">1</a>]</sup>), il faut que le document soit encodé dans le charset annoncé pour que ça fonctionne bien.</p>
<p>Lorsque j'édite un fichier texte (un fichier html est un fichier texte), l'éditeur que j'utilise choisit une manière d'encoder les caractères. Même si aujourd'hui c'est souvent l'utf-8 qui est choisi, ce n'est pas une obligation …</p>
<p>Sous linux, la commande <code>file</code> permet d'obtenir cette information</p>
<pre>
$ file example.html
example.html: HTML document, ISO-8859 text
</pre>
<pre>
$ file example2.html
example2.html: HTML document, UTF-8 Unicode text
</pre>
<p>C'était le petit rappel pour les webmasters débutants …</p>
<h4>Liens</h4>
<ul>
<li><a href="http://www.alsacreations.com/article/lire/1374-html5-structure-globale-document.html">Alsacreations – Structure globale d'un document html5</a></li>
<li><a href="http://www.alsacreations.com/astuce/lire/34-charset-iso-8859-1-iso-8859-15-utf-8-lequel-choisir.html">Alsacreations — Quel charset choisir</a></li>
<li><a href="http://openweb.eu.org/articles/jeux_caracteres/">Openweb, Introduction aux jeux de caractères</a></li>
<li><a href="http://linuxfr.org/news/premiere-mise-en-demeure-pour-l-association-linuxfr">Linuxfr, mise en demeure</a></li>
<li><a href="http://korben.info/linkeo.html">Korben</a></li>
<li><a href="http://ploum.net/post/mises-en-demeure-un-racket-legal">Ploum et son rat mort</a></li>
<li><a href="http://www.flickr.com/photos/dasqfamily/">Crédit photo, QFamily</a></li>
</ul>
<h4>À lire aussi</h4>
<ul>
<li><a href="https://blog.namok.be/blog/index.php?post/2009/11/30/unicode-UTF8-UTF16-UTF32-et-tutti-quanti">Unicode, UTF8, UTF16, UTF32, ... et tutti quanti</a></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Note</h4>
<p>[<a href="https://blog.namok.be/?post/2013/06/05/dans-ton-charset#rev-pnote-1366-1" id="pnote-1366-1">1</a>] Et c'est là que je fais le lien (discret) avec l'affaire <strong>Linkeo</strong> qui aura marqué les esprits en ce début juin 2013</p></div>
J'l'ai bien bluffé à l'oral !urn:md5:4622ba7e47f67fbe6d3e6989438ae4172013-05-28T21:26:00+02:002013-11-13T11:17:29+01:00PiTCartable au dosesipratique<p>Pour un prof, l'examen oral est le moment où l'on essaie de savoir si l'étudiant a acquis suffisamment de compétences pour « accéder au niveau supérieur ».</p>
<p>Pour un étudiant, tout les moyens sont bons y parvenir.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/The_Exam_Hall_by_OhToast.jpg" alt="The_Exam_Hall_by_OhToast.jpg" style="display:block; margin:0 auto;" title="The_Exam_Hall_by_OhToast.jpg, mai 2013" /></p> <blockquote><p>«Précaution d'usage: au mieux on connait la matière au plus les chances de réussites sont élevées.»
La Palice <a href="https://fr.wikipedia.org/wiki/Lapalissade">Wikipedia </a></p></blockquote>
<p>Ceci étant dit, il existe quelques <em>tips and tricks</em> lorsque l'on présente un examen oral (non, je ne parlerai pas d'habillement).</p>
<h4>On ne se prépare pas de la même manière pour un examen oral que pour un examen écrit ou tout autre examen.</h4>
<p>Pour un examen écrit, après avoir mis mon cours en ordre, compulsé les différents liens / ressources fournis , et fait mon résumé, je m'exerce à restituer la matière par écrit<sup>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#pnote-1365-1" id="rev-pnote-1365-1">1</a>]</sup>.</p>
<p><a href="http://apprendreaapprendre.com/reussite_scolaire/article.php?cat_num_sel=&numtxt=453">Apprendre à apprendre, comment bien se préparer à l'examen. </a></p>
<p>Pour un examen oral, je dois prévoir que l'examen … est oral. La manière d'exposer oralement la matière participera à la cote de l'examen. Il ne suffira pas de connaitre la matière, il faudra également pouvoir la partager; expliquer / exprimer les concepts correctement et faire voir que je les ai compris. Pour m'y préparer, je parle tout haut dans la pièce où j'étudie (s'il faut, je me lève) ! <sup>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#pnote-1365-2" id="rev-pnote-1365-2">2</a>]</sup>.</p>
<h4>L'examinateur pose toujours des questions … toujours</h4>
<p>À ma connaissance, il est très rare que l'examinateur ne pose pas de questions supplémentaires et se contente d'écouter l'étudiant.
C'est donc mieux de ne pas bruler toutes ses cartouches tout de suite et de laisser des espaces connus mais non présentés dans lesquels l'examinateur pourra s'engouffrer.</p>
<p>L'idée est d'essayer de faire poser par l'examinateur la question que l'on attend. Si si, c'est possible. Je peux lorsque je présente un concept, ne pas définir ou expliquer certains termes. L'examinateur ne manquera pas de pointer le doigt dessus (sinon, c'est pas grave).</p>
<p>Il ne faut cependant pas être trop flou au début car il y quand même le risque du: «Bien ! Nous allons éviter de perdre notre temps tous les deux et en rester là.».</p>
<h4>Se préparer mentalement, un peu de pensée positive</h4>
<p><strong>Se visualiser</strong> réussir un examen, répondre convenablement, … favorise la réussite car cette visualisation prépare l'inconscient.</p>
<p>Non, ce n'est pas une phrase toute faite ! Je ferme les yeux, je me vois entrer dans le local, je m'imagine tirer une question. Je me visualise en train de remplir le tableau avec la même structure que ce que j'ai préparé. Je m'imagine quelles sont les questions que l'on peut me poser et je me vois y répondre correctement. Mon inconscient se prépare à la réussite<sup>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#pnote-1365-3" id="rev-pnote-1365-3">3</a>]</sup>.</p>
<h4>Être plutôt winner que loser</h4>
<p>Une attitude positive<sup>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#pnote-1365-4" id="rev-pnote-1365-4">4</a>]</sup> influence l'examinateur … et « l'examiné ».</p>
<p>Être dans des vêtements dans lesquels on se sent à l'aise, être reposé et ponctuel, soigner sa présentation (orale, écrite au tableau, la structure générale, …), parler à haute et intelligible voix, dire bonjour / au revoir, regarder sans fixer, être au courant de l'endroit où se passe l'examen, des modalités de l'examen, … sont des éléments qui donneront un <em>à priori</em> positif à l'examinateur et qui vous feront vous sentir dans le camp des <em>winners</em>.</p>
<h4>Penser à l'examinateur …</h4>
<p>C'est tout aussi valable pour un écrit que pour un oral. L'examinateur étant un humain comme l'étudiant, il faut lui <strong>donner l'envie</strong> d'évaluer, l'envie d'écouter; écrire lisiblement, être poli et avenant, parler correctement en français, être vif et intéressant, être modeste et sûr de soi …</p>
<p>Pas facile ! Pour terminer, je redis qu'au mieux on connait la matière, au plus il est probable de réussir. Et lorsque l'on entend ses camarades dire qu'ils ont eu de la chance, c'est souvent car ils connaissent mieux la matière. Il n'y a pas de magie …</p>
<p>Bonne m...de.</p>
<h4>Liens</h4>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Lapalissade">Wikipedia, La Palice </a></li>
<li><a href="http://apprendreaapprendre.com/reussite_scolaire/article.php?cat_num_sel=&numtxt=453">Apprendre à apprendre </a></li>
<li><a href="http://www.coupdepouce.com/vie-de-famille/ado/dix-conseils-pour-passer-un-examen-sans-paniquer/a/44981">Coup de pouce, dix conseils pour passer un examen </a></li>
<li>Crédit photo <a href="http://ohtoast.deviantart.com/art/The-Exam-Hall-55952989">DeviantArt ohtoast</a></li>
</ul>
<div class="footnotes"><h4 class="footnotes-title">Notes</h4>
<p>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#rev-pnote-1365-1" id="pnote-1365-1">1</a>] C'est ma manière, je sais qu'il en existe d'autres</p>
<p>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#rev-pnote-1365-2" id="pnote-1365-2">2</a>] Non non, ce n'est pas ridicule ! Ce n'est pas idiot non plus de présenter une question devant le miroir de la salle de bain.</p>
<p>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#rev-pnote-1365-3" id="pnote-1365-3">3</a>] J'utilise souvent cette technique et ça me convient. Je pense que l'inconscient se prépare vraiment et que l'on est mieux prêt … à présenter son examen, à passer son permis, à faire cette présentation devant les collègues, à mener à bien cette discussion difficile, … Par contre taper ces mots clés (<em>pensée positive</em>)dans un moteur de recherche va vous donner une multitude de liens … et pas mal de trucs à jeter.</p>
<p>[<a href="https://blog.namok.be/?post/2013/05/28/bien-bluffe-a-l-oral#rev-pnote-1365-4" id="pnote-1365-4">4</a>] Attention de ne pas confondre avec une attitude prétentieuse voire arrogante</p></div>
Howto vim et projet Javaurn:md5:144ade1bf416099c09b956b3064588272013-03-18T09:47:00+01:002013-03-18T10:05:13+01:00PiTCartable au dosalternativescareesigeekjavalogiciellibrepratiquevim<p>En première année à l'ÉSI, nous demandons de ne pas travailler avec un IDE car nous estimons qu'il faut d'abord avoir la main sur tout le « processus Java » avant d'utiliser un outil qui fera une grande partie du travail à notre place.</p>
<p><img src="https://blog.namok.be/public/images/divers/2013/.blue_beetle_1cargo_by_phlearn-d5y11yi_m.jpg" alt="blue_beetle_1cargo_by_phlearn-d5y11yi.jpg" style="display:block; margin:0 auto;" title="blue_beetle_1cargo_by_phlearn-d5y11yi.jpg, mar. 2013" /></p> <p>Nous estimons également qu'un bon programmeur est quelqu'un qui a une bonne connaissance d'un IDE et d'un éditeur de code. Pour ce faire nous demandons aux étudiants de travailler avec <a href="http://vim.org">vim</a> en première.</p>
<p><strong>vim</strong> est un éditeur de code très puissant et permet, si on prend la peine de l'appréhender un peu, de coder beaucoup plus vite qu'avec un</p>
<blockquote><p>cat > foo.java</p></blockquote>
<p>Quelques conseils pour ceux qui vont coder leur premier projet (sans interface graphique).</p>
<ul>
<li>ouvrir deux consoles; une pour les compilations et les exécutions et l'autre pour vim</li>
</ul>
<ul>
<li>ouvrir <strong>une seule instance</strong> de vim qui contiendra toutes les classes <code>vim -p src/*.java</code> (noter le paramètre <em>p</em> qui demande d'ouvrir les fichiers dans des onglets différents)</li>
</ul>
<ul>
<li>si je veux ouvrir une nouvelle classe (que le fichier existe déjà ou pas a peu d'importance) <code>:tabe MyClass.java</code> aura pour effet d'ouvrir un nouvel onglet (<em>tab</em>) avec le fichier</li>
</ul>
<ul>
<li><code>:tabs</code> permet de voir tous les onglets tandis que la combinaison de touches <code><em>i</em>gt</code> où <em>i</em> est le numéro de l'onglet permet de se déplacer dans les onglets</li>
</ul>
<ul>
<li><code>:wall</code> permet de sauver tous les fichiers ouverts tandis que <code>:qall</code> permet de quitter vim</li>
</ul>
<ul>
<li>grâce à tous ces onglets ouverts, une demande d'autocomplétion d'un mot (un nom de variable par exemple) pas le biais de la combinaison de touches <a href="https://blog.namok.be/?post/2013/03/18/Ctrl-n" title="Ctrl-n">Ctrl-n</a> se fait dans <strong>tous les fichiers ouverts</strong> et plus seulement dans un seul</li>
</ul>
<ul>
<li>les copier / coller fonctionnent mieux aussi</li>
</ul>
<ul>
<li>pour compiler le projet (dans l'autre console, inutile de fermer vim), <code>javac src/*.java -d .</code> fera bien l'affaire</li>
</ul>
<p>Je donne régulièrement cette explication lorsque je vois des étudiants pester contre vim ou bien essayer d'avancer dans leur projet en quittant constamment vim et ne s'y retrouvant pas dans leurs consoles si tant est qu'ils en ouvrent deux ! Si ceci peut dépanner, autant l'écrire …</p>
<p><em>Enjoy</em> (comme dirait l'autre, si vous trouvez ce billet intéressant, n'hésitez pas à la partager)</p>
<h3>Liens</h3>
<ul>
<li><a href="http://elearning.esi.heb.be/courses/LGJ1/document/TDs/TD6/fr/html/package_learningObject3.html">Le TD Java de l'ÉSE associé</a></li>
<li><a href="https://blog.namok.be/blog/index.php?post/2007/03/23/121-vim7-tabs">Vim7, tabs</a></li>
<li><a href="http://vim.org">vim</a></li>
<li>Crédit photo, <a href="http://fav.me/d5y11yi">Phlearn</a></li>
</ul>