récupère des articles perdus

This commit is contained in:
Yannick Francois
2020-03-08 00:01:41 +01:00
parent 05485ab51c
commit 0ad9a63c32
310 changed files with 14523 additions and 0 deletions
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="generator" content="Hugo 0.22.1" />
<meta charset="utf-8">
<title>Yannick François - Elsif.fr</title>
<meta name="DC.title" content="elsif.fr, site de Yannick François aka yaf (ou ya_f)."/>
<meta name="description" content="Le site de Yannick François. Développeur Senior, Responsable Produit, Pédagogue. Je travail chez Scopyleft"/>
<meta name="keywords" content="code, développement, programmation, apprentissage, apprendre, lean, agile, logiciel, tdd, objet, refactoring, libre, creative commons, linux, unix"/>
<meta name="author" content="Yannick François, https://elsif.fr"/>
<meta name="designer" content="Yannick François, https://elsif.fr"/>
<meta name="geo.placename" content="Poissy, Ile de france, France"/>
<meta name="robots" content="index,follow" />
<meta name="language" content="French" />
<meta name="HandheldFriendly" content="True" />
<meta name="MobileOptimized" content="320" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0" />
<link rel="index" title="Yannick François / Développeur / Pédagogue" href="index.html" />
<link rel="stylesheet" href="/css/201912-elsif.css" media="all"/>
<link rel="alternate" type="application/rss" href="/feed.xml" title="elsif.fr/feed" />
</head>
<body>
<main>
<p>Que je naime pas ce genre de comparaison. Ou plutôt ce que je naime pas cest de chercher un vainqueur. En fait je voulais vous raconter une petite histoire informatique.</p>
<p>Un jour, chez mon actuel client, je me suis retrouvé face a un <em>cas d’école</em>: faire un programme pour réaliser une purge de la base de donnée, mais pas entièrement, juste quelque table <em>fonctiono-transactionnelle</em>.</p>
<p>Une bonne chose pour moi, un programme existe déjà dans le foutoir^la boite à outil de l’équipe en place. Ce programme va me permettre dextraire la liste des tables dépendantes de celle que je veut purger. Jappel ce programme (réalisé dans un langage propriétaire, comme lapplication) en passant en paramètre la table que je souhaite supprimer, et lui va aller déclencher les divers <em>trigger</em> en interceptant les erreurs pour pouvoir faire la liste de toutes les tables dépendantes. Bien, je répète lopération pour toutes les tables que jai à <em>nettoyer</em></p>
<p>A la sorti je me retrouve avec un gros fichier texte, contenant plusieurs fois le même nom de table à divers endroit du fichier, pas très pratique. Il faut que je nettoie tout ça. Apparemment mes collègues font ça à la main habituellement… Moi cest hors de question. Linformatique cest justement fais pour faciliter le travail non ?</p>
<p>Alors je lance <a href="http://cygwin.com/">cygwin</a> (heureusement quil est autorisé chez mon client celui là, sinon jaurais pleuré !!) et je regarde quelque manpage pour vérifier les commandes à utiliser. Je trouve mon bonheur, et le dieu pipe va grandement maider sur le coup:</p>
<ul>
<li>La commande <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=cat&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html">cat(1)</a> permet de <em>lire</em> le contenu dun fichier.</li>
<li>Dieu pipe va ensuite transférer ce contenu à la commande <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=tr&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html">tr(1)</a> qui elle va me mettre le contenu en minuscule (cest plus pratique pour trier (cest le A-Z a-z qui précise le type de transformation à appliquer au contenu).</li>
<li>Dieu pipe intervient encore pour passer ce contenu minuscule à la commande <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sort&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html">sort(1)</a> qui va elle, comme sont nom lindique, trier le contenu.</li>
<li>Dieu pipe une dernière fois va passer le contenu minuscule trié à la commande <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=uniq&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html">uniq(1)</a> qui comme sont nom lindique encore, va éliminer les doublons.</li>
<li>Dieu pipe passe la main ici à la reine &gt; qui va me permettre d’écrire le résultat de tout ça dans un fichier et non à l’écran.</li>
</ul>
<p>Je me retrouve avec un fichier parfait pour faire ma purge.</p>
<p>Cest bien beau, mais une question trottais dans ma tête: Comment faire cela en Ruby ? Est-ce que jy arriverais en une ligne aussi ?</p>
<p>Et bien comme dhab, oui cest faisable, et oui avec Ruby on peut le faire en une ligne.</p>
<p>Quel intérêt ? Dans le mien auccun, à part mon plaisir. Mais si ce script devais être re-utilisé, ou bien intégrer à un outil plus vaste, cela aurait tout de suite plus dintérêt :)</p>
<p>Voilà ce que ça donne:</p>
<p><em>Bon, en une ligne cest un poil abusé et pas lisible cest pour cela que je le présente sur plusieurs :), mais cest faisable</em></p>
<p>Pour faire cela, une bonne lecture des objets <a href="http://www.ruby-doc.org/core/classes/Array.html">Array</a>, <a href="http://www.ruby-doc.org/core/classes/IO.html">IO</a> et <a href="http://www.ruby-doc.org/core/classes/File.html#M002602">File</a> iront très bien :)</p>
</main>
<footer>
<ul>
</ul>
</footer>
</body>
</html>