tag:linuxfr.org,2005:/tags/tester/publicLinuxFr.org : les contenus étiquetés avec « tester »2022-01-19T15:33:43+01:00/favicon.pngtag:linuxfr.org,2005:Post/426352022-01-14T14:27:13+01:002022-01-14T14:27:13+01:00tests unitaires<p>Bonjour,<br>
J'ai produit du code sur un dépot github (<br>
Et j'ai eu un commentaire sur ce forum que le code n'était pas "testable".<br>
J'ai lu cette dépeche <a href="//linuxfr.org/news/python-partie-9-formateur-de-code-analyse-statique#toc-pytest">https://linuxfr.org/news/python-partie-9-formateur-de-code-analyse-statique#toc-pytest</a> où il est question de test unitaire.<br>
Je ne comprend pas bien l'interet d'ajouter des fonctions de test à chacune de mes fonctions. En outre je dois prévoir le résultat de la fonction avec un assert pour que le test fonctionne?<br>
Est ce que quelqu'un peut m'expliquer l'interet de faire des tests unitaire? J'ai déja testé au fur et a mesure que j'ai codé chaque fonction "à la main" en fait.</p>
<p>Merci</p>
<div><a href="https://linuxfr.org/forums/programmation-python/posts/tests-unitaires-74f6b4d5-fc44-407e-b4df-2a3c6131e56a.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/126573/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-python/posts/tests-unitaires-74f6b4d5-fc44-407e-b4df-2a3c6131e56a#comments">ouvrir dans le navigateur</a>
</p>
kr1phttps://linuxfr.org/nodes/126573/comments.atomtag:linuxfr.org,2005:News/365592015-11-21T00:03:55+01:002015-11-22T06:28:44+01:00Pitivi 0.95 s’élance avec un nouveau moteur !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Peut‐être êtes‐vous, comme moi, amateur des dépêches qui retracent <a href="//linuxfr.org/tags/coulisses/public">les coulisses du développement de nos logiciels préférés</a> : ah ! les dépêches <em>Sortie du noyau Linux X</em>, <em>LibreOffice Y : sous le capot</em>, <em>Entretien avec Z, développeur de Ω</em>…</p>
<p>La sortie, le 19 novembre 2015, de la version 0.95 de <a href="http://pitivi.org/">Pitivi</a>, logiciel libre de montage vidéo non linéaire pour GNU/Linux (prioritairement), nous donne l’occasion de revenir sur les coulisses de son développement, à travers deux billets dont nous vous proposons ici la traduction, précédée d’un résumé des épisodes précédents.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363337353832312e6a7067/1446375821.jpg" alt="Pitivi s'élance dans la course" title="Image CC BY 2.0 dérivée en 2015 par antistress de celle de SuperCar-RoadTrip.fr : https://www.flickr.com/photos/xavier33300/14109892447/ | Source : http://pix.toile-libre.org/upload/original/1446375821.jpg"></p></div><ul><li>lien nᵒ 1 : <a title="http://jeff.ecchi.ca/blog/2015/11/19/pitivi-0-95-enfant-suisse/" hreflang="en" href="https://linuxfr.org/redirect/94529">Annonce de la version 0.95 — blogue de Jean‐François Fortin-Tam</a></li><li>lien nᵒ 2 : <a title="http://fundraiser.pitivi.org/" hreflang="en" href="https://linuxfr.org/redirect/94530">Donner pour soutenir le projet — fundraiser.pitivi.org</a></li><li>lien nᵒ 3 : <a title="http://www.pitivi.org/planet/" hreflang="en" href="https://linuxfr.org/redirect/95384">Suivre l’actualité du projet — Planet Pitivi </a></li><li>lien nᵒ 4 : <a title="https://twitter.com/Pitivi" hreflang="en" href="https://linuxfr.org/redirect/95385">Suivre l’actualité du projet — Twitter</a></li><li>lien nᵒ 5 : <a title="https://plus.google.com/+pitivi/posts" hreflang="en" href="https://linuxfr.org/redirect/95386">Suivre l’actualité du projet — Google+</a></li><li>lien nᵒ 6 : <a title="https://fr.wikipedia.org/wiki/Pitivi" hreflang="fr" href="https://linuxfr.org/redirect/95412">Article sur Pitivi — Wikipédia</a></li><li>lien nᵒ 7 : <a title="https://fr.wikipedia.org/wiki/GStreamer" hreflang="fr" href="https://linuxfr.org/redirect/95466">Article sur GStreamer — Wikipédia</a></li><li>lien nᵒ 8 : <a title="http://libre-ouvert.toile-libre.org/index.php?article176/les-bases-de-l-utilisation-d-un-editeur-video-exemple-avec-pitivi" hreflang="fr" href="https://linuxfr.org/redirect/95469">Les bases de Pitivi (tutoriel) — Libre et ouvert</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#r%C3%A9sum%C3%A9-des-%C3%A9pisodes-pr%C3%A9c%C3%A9dents">Résumé des épisodes précédents</a></li>
<li>
<a href="#la-guerre-contre-les-deadlocks">La guerre contre les <em>Deadlocks</em></a><ul>
<li>
<a href="#tldr">Tl;dr</a><ul>
<li><a href="#morceaux-choisis">Morceaux choisis</a></li>
<li><a href="#un-sch%C3%A9ma-sinon-rien">Un schéma sinon rien</a></li>
</ul>
</li>
<li><a href="#i---lhistoire-de-limpl%C3%A9mentation-de-notre-nouveau-m%C3%A9langeur-d%C3%A9l%C3%A9ments-threadsafe">I - L’histoire de l’implémentation de notre nouveau mélangeur d’éléments <em>thread‐safe</em></a></li>
<li><a href="#ii---la-r%C3%A9incarnation-de-gnonlin-lautre-millier-de-deadlocks">II - La réincarnation de GNonLin (l’autre millier de <em>deadlocks</em>)</a></li>
</ul>
</li>
<li>
<a href="#la-suite-tester-la-nouvelle-machinerie-contribuer-au-projet">La suite : tester la nouvelle machinerie, contribuer au projet</a><ul>
<li><a href="#essayer-la-nouvelle-version-et-celles-en-d%C3%A9veloppement-en-un-clic">Essayer la nouvelle version (et celles en développement) en un clic</a></li>
<li><a href="#contribuer">Contribuer</a></li>
</ul>
</li>
</ul><h2 id="résumé-des-épisodes-précédents">Résumé des épisodes précédents</h2>
<p>Depuis sa naissance en 2004, Pitivi a connu de nombreuses réécritures : c’est que tout restait encore à inventer (à part GStreamer, mais qui n’était alors ni aussi performant ni aussi complet qu’aujourd’hui).</p>
<p>Si vous le voulez bien, avançons à présent dans le temps de sept années pour nous concentrer sur la période récente du projet. C’est le 27 septembre 2011 que sort la version 0.15, dernière (j’omets volontairement quelques versions de maintenance) avant le Grand changement, à savoir l’intégration de GES (<em>GStreamer Editing Services</em>), qui explique l’impressionnant « trou » dans la chronologie du développement du logiciel entre 2011 et 2013, comme on le peut voir ci‐dessous (et accessoirement la création, dans le wiki officiel, d’une page sous‐titrée avec humour « <a href="http://wiki.pitivi.org/wiki/Main_Page"><em>rumors of our death have been greatly exagerated…</em></a> ») :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363338333135352e706e67/1446383155.png" alt="Frise chronologique des versions successives de Pitivi" title="Frise chronologique des versions successives de Pitivi, réalisée avec le logiciel en ligne frisechrono.fr | Source : http://pix.toile-libre.org/upload/original/1446383155.png"></p>
<p>GES remplit plusieurs objectifs, parmi lesquels :</p>
<ul>
<li>résoudre un certain nombre de problèmes structurels concernant l’édition non linéaire avec GStreamer ;</li>
<li>simplifier le développement de Pitivi (le portage vers GES a permis de supprimer plus de 20 000 lignes de code de Pitivi et de clairement séparer ce qui relève de l’interface de ce qui relève du moteur ; le niveau de connaissance de GStreamer nécessaire pour contribuer à Pitivi a pu être grandement abaissé) ;</li>
<li>améliorer les performances de Pitivi.</li>
</ul><p>Accessoirement, l’allègement du code de Pitivi a permis de <a href="http://jeff.ecchi.ca/blog/2012/01/12/spring-clean-up-in-january/">réaliser le chantier de sa simplification</a>. Traduit de la plume de Jean‐François Fortin‐Tam, un des mainteneurs : « Je suis très content : cela signifie que non seulement les nouveaux contributeurs pourront plus facilement mettre le pied à l’étrier, mais aussi que les contributeurs réguliers ne se perdront plus dans les différents modules. »</p>
<p>En mai 2012, <a href="http://jeff.ecchi.ca/blog/2012/05/19/break-the-kettles-and-sink-the-boats/">le portage de Pitivi sur GES est réalisé dans l’arbre de développement</a>…</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f627265616b2d7468652d6b6574746c65732d616e642d73696e6b2d7468652d626f6174732e6a7067/break-the-kettles-and-sink-the-boats.jpg" alt="Break the kettles and sink the boats" title="This is it. The “ges” branch of Pitivi has been merged to “master”. | Source : http://jeff.ecchi.ca/blog/wp-content/uploads/break-the-kettles-and-sink-the-boats.jpg"></p>
<p>Mais la route est encore longue jusqu’à la publication d’une version suffisamment aboutie ! En effet, l’équipe doit relever d’autres challenges dans le même temps, comme de <a href="http://jeff.ecchi.ca/blog/2012/02/28/y-u-no-gtk3-yet/">devoir passer simultanément à Python 3.x, GTK+ 3.<em>x</em> et GStreamer 1.<em>x</em></a>, excusez du peu. Notamment, GNonLin, la bibliothèque logicielle sur laquelle GES lui‐même repose, <a href="http://jeff.ecchi.ca/blog/2013/02/15/join-us-at-the-gstreamer-hackfest-in-milan/">doit être portée sur GStreamer 1.<em>x</em></a>, ce qui s’avère être un défi particulièrement difficile.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f323031322d30312d32362e6a7067/2012-01-26.jpg" alt="The 2013 GStreamer Hackfest in Milan" title="The 2013 GStreamer Hackfest in Milan | Source : http://jeff.ecchi.ca/blog/wp-content/uploads/2012-01-26.jpg"></p>
<p>Le 29 septembre 2013, la <a href="http://jeff.ecchi.ca/blog/2013/10/05/pitivi-0-91-charming-defects/">sortie de la version 0.91</a> concrétise — enfin ! — l’immense travail mené depuis 2011 pour ré‐architecturer le logiciel (la version 0.92 sort deux mois après, pour <a href="http://jeff.ecchi.ca/blog/2013/11/04/pitivi-0-92-and-the-wandering-opensourcerer/">apporter quelques corrections</a>).</p>
<p>Mars 2014 voit fleurir la <a href="http://jeff.ecchi.ca/blog/2014/03/21/pitivi-0-93-released/">version 0.93</a>, suivie de la <a href="http://jeff.ecchi.ca/blog/2014/11/02/tricks-or-tracebacks-pitivi-0-94-is-here/">0.94</a> en novembre 2014, avec leur lot non négligeable de corrections.</p>
<p>Tout ce travail étant réalisé par un petit groupe de développeurs sur leur temps libre, est lancée fin février 2014 une <a href="http://jeff.ecchi.ca/blog/2014/02/27/pitivi-status-update-for-q1-2014-fundraiser-launch/">campagne de financement participatif</a> (<a href="http://fundraiser.pitivi.org/">toujours en cours</a> !), sous l’égide de la Fondation GNOME et avec le soutien du projet GStreamer, qui doit permettre de financer à temps plein et pendant un an les deux développeurs bas niveau du projet (Mathieu Duponchelle et Thibault Saunier), afin d’accélérer le rythme de développement du projet.<br><a href="http://jeff.ecchi.ca/blog/2014/10/03/an-update-from-the-pitivi-2014-summer-battlefront/">Une réussite en demi‐teinte de la campagne</a> ne permet hélas pas de mobiliser ces développeurs aussi complètement qu’espéré, mais permet toutefois quelques avancées importantes, dont celles qui vont vous être narrées ci‐après — et je ne vous ai pas parlé du remplacement de GooCanvas par Clutter puis finalement par du pur GTK+ pour le dessin de la piste de montage, ni du passage de <em>glimagesink</em> à <em>gtk(gl)sink</em> pour alimenter le moniteur de prévisualisation, ou du travail réalisé sur GStreamer, y compris pour <a href="http://jeff.ecchi.ca/blog/2014/06/23/pitivi-june-2014-status-update/">corriger la prise en charge du format MPEG-TS</a> qui sert de base au format <a href="https://fr.wikipedia.org/wiki/Advanced_Video_Codec_High_Definition" title="Advanced Video Codec High Definition">AVCHD</a> et à la télévision numérique terrestre…</p>
<h2 id="la-guerre-contre-les-deadlocks">La guerre contre les <em>Deadlocks</em>
</h2>
<h3 id="tldr">Tl;dr</h3>
<h4 id="morceaux-choisis">Morceaux choisis</h4>
<p><em>Morceaux traduits issus de <a href="http://jeff.ecchi.ca/blog/2014/10/03/an-update-from-the-pitivi-2014-summer-battlefront/">ce billet de Jean‐François Fortin‐Tam</a>.</em></p>
<blockquote>
<p>« Mathieu Duponchelle et Thibault Saunier ont travaillé sur le mélangeur vidéo de GStreamer, en gros en réalisant une refonte complète de notre pile de mixage et en rendant la bête <a href="https://fr.wikipedia.org/wiki/Programme_%C3%A0_fil_s%C3%A9curis%C3%A9"><em>thread‐safe</em></a>… Cela devrait corriger un grand nombre de blocages (en VO : <a href="https://fr.wikipedia.org/wiki/Interblocage"><em>deadlocks</em></a>) en rapport avec le mixage vidéo, qui sabotaient notre expérience utilisateur avec des paralysies fréquentes. »</p>
<p>« Ensuite ils ont presque complètement réécrit GNonLin avec une conception différente et plus simple, et il a été intégré directement dans GES (<em>GStreamer Editing Services</em>) sous un nouveau nom : NLE (<em>Non Linear Engine</em>). Avec NLE dans GES, les blocages venant de GNonLin devraient appartenir au passé ; le défilement de la vidéo devrait être bien plus fiable et ne plus être la cause de paralysies comme précédemment. Cela reste un considérable morceau de code : on parle d’environ 6 000 lignes de nouveau code dans GES. »</p>
</blockquote>
<h4 id="un-schéma-sinon-rien">Un schéma sinon rien</h4>
<p>L’architecture révisée de Pitivi 0.95 :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f77696b692e7069746976692e6f72672f696d616765732f4172636869746563747572655f323031352e706e67/Architecture_2015.png" alt="Architecture de Pitivi 0.95" title="Architecture de Pitivi 0.95 | Source : http://wiki.pitivi.org/images/Architecture_2015.png"></p>
<h3 id="i---lhistoire-de-limplémentation-de-notre-nouveau-mélangeur-déléments-threadsafe">I - L’histoire de l’implémentation de notre nouveau mélangeur d’éléments <em>thread‐safe</em>
</h3>
<p>ou : <em>La guerre contre les Deadlocks, première partie.</em></p>
<p>[Article original : <a href="http://jeff.ecchi.ca/blog/2015/06/11/the-war-against-deadlocks-part-1-the-story-of-our-new-thread-safe-mixing-elements-implementation/"><em>The War Against Deadlocks, part 1: The story of our new thread‐safe mixing elements implementation</em></a>]</p>
<p>Par Jean‐François Fortin‐Tam, le 11 juin 2015.</p>
<p>Laissez‐moi vous raconter une histoire qui fut perdue et oubliée sur le champ de bataille du développement de Pitivi à l’automne dernier, un manuscrit que j’ai rescapé d’un grimoire moisi dans un champ rocailleux. Selon mes données historiques, l’auteur était un certain Dorian Leger, un messager français porté disparu aux alentours de Paris.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f5468652d4d6f6c64792d546f6d652e706e67/The-Moldy-Tome.png" alt="The Moldy Tome as I found it." title="Le grimoire moisi, tel que je l'ai trouvé. | Source : http://jeff.ecchi.ca/blog/wp-content/uploads/The-Moldy-Tome.png"><em>Le grimoire moisi, tel que je l’ai trouvé</em></p>
<p>Je prends la liberté d’altérer assez substantiellement ce manuscrit dans le but d’en clarifier certaines parties tout en rétablissant ses intentions et son style au regard du contexte historique. Cela fera office de première partie à ce récit épique (la deuxième partie reste à écrire ; elle fera l’objet du prochain billet qui aura probablement un style d’écriture plus « moderne ») concernant notre guerre contre les <a href="https://fr.wikipedia.org/wiki/Interblocage"><em>Deadlocks</em></a>, de viles créatures qui ont menacé la stabilité de notre application bien trop longtemps. Techniquement, nous avons toujours été en guerre contre <s>l’Estasia</s> les <em>Deadlocks</em> ; c’était déjà le cas avec notre <a href="http://wiki.pitivi.org/wiki/Current_events">version 0.13.2</a>, à une époque où une équipe différente de mainteneurs parcourait cette terre.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f70726576696f75732d6d61696e7461696e6572732d6669676874696e672d7468652d466f6d6f72732e6a7067/previous-maintainers-fighting-the-Fomors.jpg" alt="Previous maintainers fighting the Fomors, in the 0.8-0.10 GSt Era." title="Les précédents mainteneurs combattant les Fomoires, du temps de GStreamer 0.8-0.10. | Source : http://jeff.ecchi.ca/blog/wp-content/uploads/previous-maintainers-fighting-the-Fomors.jpg"><em>Les précédents mainteneurs combattant les Fomoires, du temps de GStreamer 0.8 et 0.10</em></p>
<p>« Paris, le vingt‐huit septembre MMXIV.</p>
<p>Chers partisans du Front de Libération de l’Édition Vidéo,</p>
<p>Au cours du dernier mois et demi, nous avons fait de grands progrès en déboguant et réécrivant une importante brique logicielle sur laquelle Pitivi s’appuie. La 0.94 est désormais prévue pour les prochaines semaines. Au sujet d’une pièce importante en développement pour cette version, Mathieu Duponchelle explique : « Nous avons arraché de GStreamer un gros morceau de code rongé par les bogues et l’avons remplacé par un tout nouveau mélangeur vidéo que nous pouvons finalement montrer avec fierté et confiance. Il sera d’une aide immense dans notre combat contre les <em>Deadlocks</em> ; avec un peu de chance, il permettra enfin un défilement stable et sans bogue de la vidéo le long de la piste de montage. »</p>
<p>En effet, j’ai entendu des histoires au sujet de précédentes versions de Pitivi qui plantaient invariablement lorsque l’on faisait défiler la vidéo à l’endroit d’un fondu enchaîné entre deux séquences. En d’autres termes, lorsque l’on essayait de sélectionner une image qui contenait un fondu enchaîné, Pitivi se paralysait et devait être achevé par l’utilisateur. Inutile de dire que ce bogue détruisait non seulement l’expérience utilisateur mais aussi le moral de nos troupes, et qu’il devait être réglé aussi rapidement et efficacement que possible.</p>
<p>Le problème technique derrière cette nuisance était un puissant équipement de l’arsenal de GStreamer : le mélangeur vidéo GstElement. Cet engin essayait de gérer avec des <a href="https://fr.wikipedia.org/wiki/Thread_%28informatique%29"><em>threads</em></a> d’autres éléments qui lui étaient balancés, ce qui était par nature extrêmement complexe et sujet à erreurs ; au point que certains ont dit que ce devait être le travail du Diable lui‐même.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f4d696e672d44796e617374792d65727570746f722d70726f746f2d63616e6e6f6e2e706e67/Ming-Dynasty-eruptor-proto-cannon.png" alt="Ming Dynasty eruptor proto-cannon" title="Source : http://jeff.ecchi.ca/blog/wp-content/uploads/Ming-Dynasty-eruptor-proto-cannon.png"></p>
<p>Lorsque nous avons examiné la machine, nous avons découvert le diagramme ci‐dessus. La transcription des étranges écritures figurant dans ce diagramme ont conduit à l’interprétation suivante de son fonctionnement :</p>
<blockquote>
<p>« Pour fayre cette machine besogner, voyci céans des tampons affluant de tous les <em>sinkpads</em> dans moult lacets. Tu languiras donc que tous les <em>pads</em> rapportent tampon pour deviser de mixer et mander le résultat au <em>srcpad</em>. Tu pousseras ainsy les tampons à partir du lacet dont tu reçusses le dernier tampon. Garde‐toi de te tenir devant la machine lorsque tu l’actionneras. » — <em>Dante, fils de Sparda</em>. <sup id="fnref1"><a href="#fn1">1</a></sup></p>
</blockquote>
<p>Le <em><a href="https://fr.wikipedia.org/wiki/multithreading" title="Définition Wikipédia">multithreading</a></em>, si vous avez en mémoire vos cours chez les moines Shaolin, est un art difficile à maîtriser. Il permet de faire tourner des opérations de traitement multimédia en arrière‐plan et d’exécuter plusieurs tâches simultanément. Une approche <em>multithread</em> est essentielle pour nous, mais requiert une gestion laborieuse des variables partagées par différents <em>threads</em> (lesquelles décrivent généralement des données audio et vidéo dans le cas de GstElement, la machine qui sert de mélangeur vidéo). Comme des <em>threads</em> simultanés opèrent souvent sur la même variable, le développeur de la bibliothèque logicielle, expert en langage C, doit s’assurer que ces <em>threads</em> n’éditent pas simultanément une même variable en organisant précautionneusement la façon dont les <em>threads</em> se donnent chacun le signal d’éditer une variable.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6a6566662e65636368692e63612f626c6f672f77702d636f6e74656e742f75706c6f6164732f7368616f6c696e2d74696765722d7374796c652e706e67/shaolin-tiger-style.png" alt="shaolin tiger style" title="Source : http://jeff.ecchi.ca/blog/wp-content/uploads/shaolin-tiger-style.png"></p>
<p>Pour ce qui est de l’étrange machine qui causait ces problèmes, nous l’avons détruite par le feu et reconstruite, avec en tête l’harmonie et la simplicité. Je ne peux l’affirmer complètement mais on m’a rapporté que plus de dix mille lignes de l’ancien code ont été réécrites grâce à l’art exquis du kung‐fu <em>multithread</em>. La nouvelle machine qui sert de mélangeur vidéo a dorénavant le <em>srcpad</em> opérant sur son propre <em>thread</em>, et nous agrégeons et adressons les tampons au <em>srcpad</em> à partir de ce <em>thread</em>. Cette technique nous rend bien plus forts contre les <em>Deadlocks</em>. »</p>
<p>Comme vous vous en êtes certainement rendus compte vous‐mêmes, les versions précédentes de Pitivi — particulièrement à cause des éléments de mixage dans GStreamer — étaient infestées de bogues qui forçaient les <em>threads</em> à s’attendre indéfiniment. Pour mieux se figurer la chose, prenons une analogie moderne : l’implémentation précédente du mélangeur vidéo était comme une ville pleine de voitures à des carrefours équipés de panneaux stop, chaque voiture attendant que l’autre démarre, causant un embouteillage sans fin derrière elles. La bonne nouvelle est qu’après la réécriture de plus de 10 000 lignes de code, les panneaux stop ont été remplacés par un système bien plus simple et fiable dans la 0.94, ce qui veut dire que les <em>threads</em> de notre mélangeur vidéo sont maintenant harmonisés, et que ce dernier est maintenant « exempt de bogues ». Cela a demandé une réécriture complète de notre pile de mixage (par l’écriture d’une nouvelle <em>baseclass</em> pour remplacer <em>collectpads2</em>). Ce fut un processus assez prenant.</p>
<p>Nous sommes assez contents de ce que nous avons accompli ici, mais les <em>Deadlocks</em> ne sont pas si facilement vaincus, et l’histoire ne s’arrête pas là. Le reste du manuscrit est assez court et consiste essentiellement en des prédictions d’événements survenus depuis, que je couvrirai dans un prochain billet, quand je trouverai plus de temps, car cela demande d’avantage d’analyse et de développement.</p>
<h3 id="ii---la-réincarnation-de-gnonlin-lautre-millier-de-deadlocks">II - La réincarnation de GNonLin (l’autre millier de <em>deadlocks</em>)</h3>
<p>ou : <em>La guerre contre les Deadlocks, deuxième partie.</em></p>
<p>[Article original : <a href="http://blog.aleb.ro/2015/10/the-war-against-deadlocks-part-2.html"><em>The War Against Deadlocks, part 2: GNonLin’s reincarnation (the other thousand Deadlocks)</em></a>]</p>
<p>Par Alexandru Băluț, le 15 octobre 2015.</p>
<p>GNonLin a servi notre cause honorablement pendant plusieurs années, mais a conservé d’indélébiles marques de l’Ancien temps. Nous avons été de plus en plus ennuyés par les liens notoires qu’entretenait GNonLin avec les <em>Deadlocks</em>, au point qu’il était connu au sein de notre bataillon comme étant « le Baron des <em>Deadlocks</em> ». Nous avons essayé de le raisonner, de discuter avec lui, mais, hélas, nous n’avons obtenu que des erreurs de CAPS « non négocié ».<br>
Une intervention rapide eut lieu. Le baron fut capturé et nous lui avons appliqué un mélange d’intense persuasion et d’alchimie jusqu’à ce qu’il renonce à ses liens douteux et renaisse. L’arrivée du greffon <em>Non Linear Engine</em> (NLE) apporta beaucoup de joie dans le comté. Les utilisateurs n’étaient plus harcelés par des <em>Deadlocks</em> renégats lorsqu’ils déroulaient tranquillement leur piste de montage. Les <em>Deadlocks</em> pourraient bien continuer à nous hanter, mais nous voilà dans une Nouvelle Ère, dans laquelle les vieilles ruses n’auront plus d’effet sur nous.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363137303135342e6a7067/1446170154.jpg" alt='Pictured: "The Capture of the Baron"' title="La capture du Baron (instantané) | Source : https://pix.toile-libre.org/upload/original/1446170154.jpg"><em>La capture du Baron (instantané)</em></p>
<p>De la plume des développeurs :</p>
<p>« Nous avons réutilisé des portions du greffon <em>videomixer</em> pour créer un greffon <em>compositor</em> qui, lui, est <a href="https://fr.wikipedia.org/wiki/Thread_safety"><em>thread‐safe</em></a>. Le nouveau greffon <em>compositor</em> est d’ores et déjà utilisé par un bon nombre d’applications multimédia. Simultanément nous avons créé une nouvelle classe de base qui a facilité la réécriture du greffon <em>audiomixer</em> pour corriger ses défauts et le rendre <em>thread‐safe</em>. Ce qui nous a permis de passer du greffon <em>adder</em> au greffon <em>audiomixer</em>.</p>
<p>Comme vous le savez sans doute, les greffons GStreamer sont utilisés pour créer des <em>pipelines</em>, par exemple : <code>(video1 * effect1) + video2 = x</code>. Le greffon <em>compositor</em> implémente le <code>+</code> dans cette équation. Un <em>pipeline</em> est utilisé par NLE pour jouer un projet vidéo. <em>NleComposition</em> convertit dynamiquement la piste de montage d’un projet en un <em>pipeline</em> GStreamer, en tenant compte de la position actuelle :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363236323730362e706e67/1446262706.png" alt="NleComposition " title="NleComposition | Source : http://pix.toile-libre.org/upload/original/1446262706.png"></p>
<p>Nous venons de terminer le remplacement de GNonLin par <em>Non Linear Engine</em>. Cela signifie que la composition utilise à présent un <em>thread</em> maître pour configurer (délier, relier) le <em>pipeline</em> ; précédemment, l’ancien procédé de composition le faisait à la fois du <em>thread</em> de <em>streaming</em> et du <em>thread</em> de <em>seeking</em>, ce qui engendrait une foule de <em>Deadlocks</em> en colère (« la légion de l’autre millier »). De plus, dans l’état <em>PAUSED</em> nous devions avoir précédemment dans la composition tous les éléments de la totalité de la piste de montage, ce qui signifie qu’il y avait tellement, oui tellement, de <em>threads</em> inutiles, créés et attendant comme des bonshommes de neige ; tandis qu’à présent les éléments ne sont créés que lorsque le <em>pipeline</em> en a besoin, et sont conservés dans l’état <em>READY</em> jusqu’à ce qu’ils soient effectivement utilisés par le <em>pipeline</em>. »</p>
<p>Longue vie au <em>Non Linear Engine</em> !</p>
<h2 id="la-suite-tester-la-nouvelle-machinerie-contribuer-au-projet">La suite : tester la nouvelle machinerie, contribuer au projet</h2>
<h3 id="essayer-la-nouvelle-version-et-celles-en-développement-en-un-clic">Essayer la nouvelle version (et celles en développement) en un clic</h3>
<p>Dans le cadre de l’effort fourni pour la campagne de financement, l’équipe de développement met à disposition des versions compilées de la journée, sous forme d’archives qui comprennent toutes les dépendances nécessaires (permettant de lancer le logiciel isolément de votre système, et donc potentiellement sur n’importe quel système, sans avoir à attendre les nouvelles versions des dépendances pour votre distribution, telles que GStreamer, etc.).</p>
<ul>
<li>
<a href="http://pitivi.org/?go=download">Télécharger le <em>daily bundle</em></a>.</li>
</ul><h3 id="contribuer">Contribuer</h3>
<p>Comme vous l’aurez compris à la lecture du résumé préliminaire, tout est fait pour faciliter les contributions en code (note : Pitivi est écrit en langage Python).</p>
<p>Les contributions peuvent également consister à :</p>
<ul>
<li>rédiger de la documentation ou des traductions ; </li>
<li>effectuer des tests du logiciel pour en rapporter les bogues aux développeurs (surtout si vous rencontrez encore des paralysies ou plantages, faites‐les remonter aux développeurs qui sont demandeurs : il leur est matériellement impossible de tester seuls tous les cas de figure !) ;</li>
<li>soutenir financièrement le projet ;</li>
<li>etc.</li>
</ul><p>Cela démarre ici :</p>
<ul>
<li>
<a href="http://pitivi.org/?go=contributing">page d’entrée du wiki pour contribuer</a> ;</li>
<li>
<a href="http://wiki.pitivi.org/wiki/Bug_reporting">comment rapporter un bogue</a> (voir aussi <a href="https://phabricator.freedesktop.org/maniphest/query/pzpUd4WY9Zu4/#R">la liste des bogues ouverts</a>) ;</li>
<li>
<a href="http://fundraiser.pitivi.org/">soutenir financièrement le projet</a>.</li>
</ul><p>Les frimousses des principaux membres actuels de l’équipe derrière Pitivi et GES, que vous pourrez croiser sur IRC (<em>#pitivi</em> sur Freenode), où ils sont très présents :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363234303931392e6a7067/1446240919.jpg" alt="Une partie de la team Pitivi" title="Une partie de la team Pitivi | Source : http://pix.toile-libre.org/upload/original/1446240919.jpg"></p>
<p>(de gauche à droite : <a href="http://wiki.pitivi.org/wiki/The_people">Mathieu Duponchelle, Thibault Saunier, Jean‐François Fortin‐Tam et Alexandru Băluț</a>).</p>
<p>Maintenant, c’est à vous de jouer !</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313434363234303539372e6a7067/1446240597.jpg" alt="I want you for Pitivi" title="I want you for Pitivi | Source : http://pix.toile-libre.org/upload/original/1446240597.jpg"></p>
<div class="footnotes">
<hr>
<ol>
<li id="fn1">
<p>NDT : Ce billet, intitulé « <a href="http://blog.nicolargo.com/2009/03/gstreamer-la-theorie.html">GStreamer, la théorie…</a> » et publié sur le blogue de nicolargo, vous donnera quelques explications sur le jargon employé. <a href="#fnref1">↩</a></p>
</li>
</ol>
</div></div><div><a href="https://linuxfr.org/news/pitivi-0-95-s-elance-avec-un-nouveau-moteur.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106216/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/pitivi-0-95-s-elance-avec-un-nouveau-moteur#comments">ouvrir dans le navigateur</a>
</p>
antistressDavy DefaudAnonymeesdeemBenoît SibaudM5oulBAudpalm123Brndanhttps://linuxfr.org/nodes/106216/comments.atomtag:linuxfr.org,2005:Diary/360062015-07-26T11:47:23+02:002015-07-26T11:47:23+02:00Aidez à tester la bêta de Privacy Badger 1.0 pour FirefoxLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p><img src="//img.linuxfr.org/img/687474703a2f2f696d6731312e686f7374696e67706963732e6e65742f706963732f313931333337507269766163794261646765722e706e67/191337PrivacyBadger.png" alt="Logo de Privacy Badger" title="Source : http://img11.hostingpics.net/pics/191337PrivacyBadger.png"></p>
<p>Bonjour Nal,</p>
<p>Privacy Badger est une extension pour Chrome et Firefox (et, à terme, aussi pour Opera, Safari et Firefox Mobile) produite par l'EFF (<em>The Electronic Frontier Foundation</em>), qui désactive <em>au fur et à mesure</em> les sites tiers qui pistent votre surf. </p>
<p>Il utilise en effet une méthode heuristique (plutôt qu'une liste noire préconstituée comme c'est le cas généralement pour les autres outils de blocage) c'est à dire que Privacy Badger va observer quels sites tiers reçoivent des requêtes des sites que vous visitez pour repérer lui-même les sites tiers qui vous suivent de sites en sites. </p>
<p>Une fois les sites tiers pisteurs repérés, il les désactive, à moins que cela ne casse le site visité : auquel cas il se contente de supprimer les cookies déposés par ces sites tiers. Vous pouvez également modifier le degré de blocage en ajustant manuellement un curseur.</p>
<p>La version 1.0 devrait sortir sous une semaine, et vous pouvez tester la version 1.0 beta (aka 0.99) en la téléchargeant <a href="http://www.eff.org/files/privacy-badger-0.99.xpi">sur le site de l'EFF</a> et en rapportant les anomalies sur <a href="https://github.com/EFForg/privacybadgerfirefox/issues/">le GitHub du projet</a>.</p>
<p>Rappelons, <a href="https://fr.wikipedia.org/wiki/Electronic_Frontier_Foundation">avec Wikipédia</a>, que l'EFF « est une organisation non gouvernementale internationale à but non lucratif, fondée en 1990 aux États-Unis par Mitch Kapor, John Gilmore, et John Perry Barlow, connu pour être l'auteur de la Déclaration d'indépendance du cyberespace » et dont l'objectif essentiel « est de défendre la liberté d'expression sur Internet ».</p>
<p>Avec Mozilla et l'EFF, deux organisations à but non lucratif, vous êtes entre de bonnes mains :)</p><div><a href="https://linuxfr.org/users/antistress/journaux/aidez-a-tester-la-beta-de-privacy-badger-1-0-pour-firefox.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106374/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/antistress/journaux/aidez-a-tester-la-beta-de-privacy-badger-1-0-pour-firefox#comments">ouvrir dans le navigateur</a>
</p>
antistresshttps://linuxfr.org/nodes/106374/comments.atomtag:linuxfr.org,2005:Diary/359802015-07-11T15:29:34+02:002015-07-11T15:29:34+02:00Tester facilement la version GTK+3 de FirefoxLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p><img src="//img.linuxfr.org/img/687474703a2f2f696d6731312e686f7374696e67706963732e6e65742f706963732f33323939363266697265666f7847544b3332303135303731312e706e67/329962firefoxGTK320150711.png" alt="Statut de Firefox GTK+3 le 11 juillet 2015" title="Source : http://img11.hostingpics.net/pics/329962firefoxGTK320150711.png"></p>
<p>Mike Hommey, un de nos compatriotes infiltré chez Mozilla (responsable du <a href="http://mozilla.debian.net/">dépôt Debian Mozilla</a> entre autres choses), a rédigé un billet tantôt qui ne semble pas avoir été très relayé, d'où ce court journal.</p>
<p>Il est désormais très facile de tester la version GTK+3 de Firefox puisque des builds GTK+3 pour GNU/Linux sont désormais officiellement proposées. Pour les obtenir, il suffit d'avoir une version Nightly de Firefox et de la paramétrer pour aller chercher la version GTK+3 à la prochaine mise à jour.</p>
<p>On peut aussi télécharger et lancer directement les builds correspondantes.</p>
<p>Tout est expliqué (en anglais) par Mike dans <a href="http://glandium.org/blog/?p=3555">le billet publié sur son blogue glandium</a>.</p>
<p>Retours bienvenus en commentaires (et dans <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=gtk3">le bug tracker</a> <em>of course</em>) :)</p><div><a href="https://linuxfr.org/users/antistress/journaux/tester-facilement-la-version-gtk-3-de-firefox.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106286/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/antistress/journaux/tester-facilement-la-version-gtk-3-de-firefox#comments">ouvrir dans le navigateur</a>
</p>
antistresshttps://linuxfr.org/nodes/106286/comments.atomtag:linuxfr.org,2005:News/280822011-04-07T18:03:49+02:002021-07-11T18:54:05+02:00Archipel beta 2 Jupiter disponible<div><p>Il aura fallu un trimestre pour que Archipel, solution d'orchestration open source pour le contrôle des machines virtuelles, quitte Saturn (nom de la beta 1) pour arriver à Jupiter (nom de la beta 2).</p>
<p>Archipel est basée sur le composant <a href="http://libvirt.org/">libvirt</a> (bibliothèque de gestion des différentes technologies de virtualisation existantes comme KVM ou Xen).</p>
<p>L'architecture d'Archipel s'articule autour d'un agent écrit en python pour la communication entre la libvirt et votre serveur XMPP, et d'une interface web écrite en <a href="http://cappuccino.org/">cappuccino</a> pour envoyer vos commandes vers le serveur XMPP. L'originalité de cette solution est de mettre à disposition la gestion des machines virtuelles depuis votre client de messagerie XMPP et surtout, et ça c'est incontournable, d'avoir de la « gueule ».</p>
<p>Cette solution est publiée sour licence AGPLv3.</p>
</div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/news/publication-de-la-premi%C3%A8re-beta-archipel" hreflang="fr" href="https://linuxfr.org/redirect/71670">Dépêche linuxfr précédente</a></li><li>lien nᵒ 2 : <a title="http://archipelproject.org" hreflang="en" href="https://linuxfr.org/redirect/71671">Archipel Project</a></li><li>lien nᵒ 3 : <a title="https://github.com/primalmotion/Archipel" hreflang="en" href="https://linuxfr.org/redirect/71672">Archipel sur github</a></li><li>lien nᵒ 4 : <a title="https://gist.github.com/887553" hreflang="en" href="https://linuxfr.org/redirect/71673">Changelog</a></li><li>lien nᵒ 5 : <a title="https://github.com/primalmotion/Archipel/tree/@beta2" hreflang="en" href="https://linuxfr.org/redirect/71674">Source de la beta 2</a></li></ul><div><p>Cette beta2 apporte une longue liste de correctifs et d'améliorations. Les éléments majeurs sont les suivants :</p>
<ul>
<li>l'agent a été découpé sous forme d'eggs python, facilitant l'installation ;</li>
<li>le système de chargement de la partie cliente a été revu avec un gain de performance ;</li>
<li>les actions de migration et de clone ont été corrigées ;</li>
<li>la gestion des types de cache pour les disques a été ajoutée offrant un gain de performance non négligeable ;</li>
<li>le snapshot à chaud d'une machine virtuelle est disponible ;</li>
<li>la migration d'un groupe de machines virtuelles est supportée ;</li>
<li>la partie cliente peut être mise à jour automatiquement.</li>
</ul>
<p>De quoi a-t-on besoin maintenant ? Nous recherchons des retours d'expérience sur les hyperviseurs Xen, WMware, les conteneurs LXC et OpenVZ.</p>
<p>Venez nous rejoindre sur le channel IRC #archipel sur freenode.</p>
</div><div><a href="https://linuxfr.org/news/archipel-beta-2-jupiter-disponible.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/85554/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/archipel-beta-2-jupiter-disponible#comments">ouvrir dans le navigateur</a>
</p>
franck villaumehttps://linuxfr.org/nodes/85554/comments.atom