<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/html-rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Planet KDE | Français</title><link>https://planet.kde.org/fr/</link><description>Planet KDE | Français</description><image><link>https://planet.kde.org/fr/</link><title>Planet KDE</title><url>https://planet.kde.org/img/planet.png</url><height>48</height><width>48</width></image><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>2026-05-12T00:00:00+00:00</lastBuildDate><atom:link href="https://planet.kde.org/fr/index.xml" rel="self" type="application/rss+xml"/><item><title>KDE Plasma 6.6.5, publication d'une version corrective pour le mois de Mai</title><link>https://kde.org/fr/announcements/plasma/6/6.6.5/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/fr/announcements/plasma/6/6.6.5/</guid><description>&lt;p&gt;Aujourd&amp;#39;hui, KDE publie une version corrective de Plasma 6, nommée 6.6.5.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kde.org/fr/announcements/plasma/6/6.6.0/"&gt;Plasma 6.6&lt;/a&gt; a été publié en Février 2026 avec de nombreux raffinements de fonctionnalités et de nouveaux modules pour améliorer l'utilisation du bureau.&lt;/p&gt;
&lt;p&gt;Cette version prend en compte le résultat d&amp;#39;un mois de nouvelles traductions et de correctifs de la part des contributeurs de KDE. Les corrections de bogues sont en général, minimes mais néanmoins importantes, incluant :&lt;/p&gt;
&lt;a target="_blank" href="https://kde.org/announcements/changelogs/plasma/6/6.6.4-6.6.5"&gt;Afficher la note complète de version&lt;/a&gt;</description><author>Communauté KDE</author></item><item><title>KDE Gear 26.04.1</title><link>https://kde.org/fr/announcements/gear/26.04.1/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/fr/announcements/gear/26.04.1/</guid><description>&lt;p&gt;Plus de 180 programmes individuels plus des douzaines de bibliothèques de programmation et de modules externes de fonctionnalités sont publiés simultanément dans le cadre de KDE Gear.&lt;/p&gt;
&lt;p&gt;Aujourd&amp;#39;hui, ils publient tous les nouvelles mises à jour de sources avec corrections des bogues et des traductions mises à jour, contenant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;akonadi : correction du plantage dans EntityTreeView lors de la sélection de plusieurs éléments (&lt;a target="_blank" href="https://commits.kde.org/akonadi/4d6da5120eb3c979fee55d5a25146431ff748d29"&gt;Validation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;KCachegrind : blocage de toute lecture en dehors des limites (&lt;a target="_blank" href="https://commits.kde.org/kcachegrind/33cd7c49d5eebe95208c7515cbefc036ac32ba84"&gt;Validation&lt;/a&gt;, fixes bug &lt;a target="_blank" href="https://bugs.kde.org/519280"&gt;#519280&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Konsole : blocage de QTabBar concernant la fermeture des onglets par des clics du bouton central de la souris (&lt;a target="_blank" href="https://commits.kde.org/konsole/6640d673343bcfda968954ac0dab65d237103add"&gt;Validation&lt;/a&gt;. Correction du bogue &lt;a target="_blank" href="https://bugs.kde.org/515014"&gt;#515014&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;#39;équipe en charge de la mise en paquets et des boutiques d&amp;#39;applications doivent mettre à jour leurs paquets d&amp;#39;applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://community.kde.org/KDE_Gear/26.04_Release_notes"&gt;Notes de version 26.04&lt;/a&gt; pour des informations sur les fichiers d'archive « tar » et les problèmes connus.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://community.kde.org/Get_KDE_Software_on_Your_Linux_Distro"&gt;Page de wiki pour le téléchargement de paquets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kde.org/info/releases-26.04.1/"&gt;Page de source d&amp;#39;informations 26.04.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kde.org/announcements/changelogs/gear/26.04.1/"&gt;Note complète 26.04.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Communauté KDE</author></item><item><title>KDE Gear ⚙️ 26.04</title><link>https://kde.org/fr/announcements/gear/26.04.0/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/fr/announcements/gear/26.04.0/</guid><description>&lt;h2 id="kde-compte-sur-votre-soutien-pour-continuer-à-produire-des-logiciels-gratuits-de-haut-niveau-pour-au-moins-encore-30-ans--vous-pouvez-nous-aider-en-devenant-un"&gt;&lt;em&gt;KDE compte sur votre soutien pour continuer à produire des logiciels gratuits de haut niveau, pour au moins encore 30 ans 😉. Vous pouvez nous aider en devenant un &lt;a target="_blank" href="https://community.kde.org/Get_Involved"&gt;membre contributeur&lt;/a&gt; ou en faisant un don unique ou périodique en utilisant le formulaire de don sur cette page.&lt;/em&gt;&lt;/h2&gt;
&lt;div class="donnorbox-container-small my-4"&gt;
&lt;i&gt;A script element has been removed to ensure Planet works properly. Please find it in the original post.&lt;/i&gt;
&lt;iframe src="https://donorbox.org/embed/kde-community?default_interval=o&amp;hide_donation_meter=true" name="donorbox" allowpaymentrequest="allowpaymentrequest" seamless="seamless" frameborder="0" scrolling="no" height="550px" width="100%" style="max-width: 500px; min-width: 310px; max-height:none!important; border-radius: 15px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;section class="surf py-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Dolphin&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/dolphin/"&gt;Dolphin&lt;/a&gt; est le gestionnaire de fichiers / dossiers de KDE, vous permettant également de vous connecter à des systèmes de fichiers distants et de gérer des dépôts de code.&lt;/p&gt;
&lt;p&gt;Dans la version 26.04, Dolphin vous permet d'ajouter des raccourcis clavier à presque toutes les options de n'importe quel menu, module externe ou extension.&lt;/p&gt;
&lt;p&gt;Supposons que vous vous retrouviez souvent à modifier l'ordre des fichiers entre « Tri par nom » et « Tri par date de création ». Vous pouvez créer un raccourci et les réorganiser facilement.&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="blue gear-section py-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-5 text-center"&gt;Gestion des informations personnelles&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Le logiciel de gestion des informations personnelles de KDE couvre tout ce qui concerne les courriels, les contacts, les agendas, etc.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/merkuro/"&gt;&lt;strong&gt;Agenda Merkuro&lt;/strong&gt;&lt;/a&gt; dispose désormais d'une vue du planning et d'un éditeur d'évènements repensés. Ils ont maintenant un aspect plus moderne et affichent des informations plus pertinentes et de manière plus attrayante.&lt;/p&gt;
&lt;p&gt;![Vue révisée d'agendas de Merkuro et de l'éditeur d'évènements.](announcements/gear/26.04.0/Merkuro.png « Deux fenêtres, à gauche la vue de l'agenda de Merkuro montrant les évènements et les tâches prévues pour le mois d'Avril et à droite, l'éditeur d'évènements de Merkuro affichant un ajout d'évènement par un utilisateur. »)&lt;/p&gt;
&lt;p&gt;La vénérable application d'agendas &lt;a target="_blank" href="https://kontact.kde.org/components/korganizer/"&gt;&lt;strong&gt;KOrganizer&lt;/strong&gt;&lt;/a&gt; a été intégrée à &lt;a target="_blank" href="https://kontact.kde.org/"&gt;&lt;strong&gt;Kontact&lt;/strong&gt;&lt;/a&gt;. Elle a été rénovée et est à la fois plus ordonnée et plus informative.&lt;/p&gt;
&lt;p&gt;![Les aspects subtilement modifiés de KOrganizer.](announcements/gear/26.04.0/KOrganiser.png  KOrganizer présente ici le mois d'avril »)&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/itinerary/"&gt;&lt;strong&gt;Itinerary&lt;/strong&gt;&lt;/a&gt; vous aide à planifier vos voyages, à gérer tous vos billets et réservations et à ne pas vous perdre lors de vos déplacements. Cette nouvelle version améliore ses boites de dialogue et de nouvelles informations ont été ajoutées pour les voyages en Suisse.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="surf pb-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Kdenlive&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org"&gt;Kdenlive&lt;/a&gt; est l'éditeur vidéo professionnel de KDE.&lt;/p&gt;
&lt;p&gt;Dans la version 26.04, vous trouverez des aperçus animés dans &lt;em&gt;Compositions&lt;/em&gt; vous affichant ce qu'elles font avant même que vous ne les appliquiez.&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;Une autre fonctionnalité que vous trouverez utile est que vous pouvez maintenant dupliquer l'écran sur un écran externe. Cela vous permettra d'afficher la séquence dans l'interface habituelle, mais aussi sur un second écran en vue agrandie.&lt;/p&gt;
&lt;p&gt;![Kdenlive affiche une image miroir en plein écran sur un moniteur externe.](announcements/gear/26.04.0/Kdenlive_out_monitor.jpg « Kdenlive affiche une image miroir en plein écran sur un moniteur externe »)&lt;/p&gt;
&lt;p&gt;Quelques réglages plus petits concernent&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un menu contextuel de frise chronologique important directement une séquence dans le projet, en l'ajoutant à la position cliquée&lt;/li&gt;
&lt;li&gt;une option pour toujours zoomer sur la position de la souris plutôt que sur la tête de lecture de la frise chronologique&lt;/li&gt;
&lt;li&gt;génération automatique des vignettes audio pour les séquences&lt;/li&gt;
&lt;li&gt;le déposer d'une transition sur la frise chronologique ajustera automatiquement sa durée aux séquences ci-dessus / ci-dessous&lt;/li&gt;
&lt;li&gt;Vous pouvez désormais modifier la vitesse de plusieurs séquences en même temps&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="surf pb-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Aussi dans KDE Gear ⚙️ 26.04&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://apps.kde.org/audiotube/"&gt;&lt;strong&gt;Audiotube&lt;/strong&gt;&lt;/a&gt; bénéficie maintenant d’une page d'accueil flambant neuve et élégante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![Nouvel écran de présentation, plus élégant pour Audiotube.](announcements/gear/26.04.0/audiotube.png « AudioTube affiche maintenant une sélection colorée de musiques de YouTube que vous pouvez écouter »)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://apps.kde.org/kclock/"&gt;&lt;strong&gt;KClock&lt;/strong&gt;&lt;/a&gt; apparaît désormais en superposition sur un écran de verrouillage sur mobile lorsqu'un chronomètre est lancé&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://apps.kde.org/neochat/"&gt;&lt;strong&gt;NeoChat&lt;/strong&gt;&lt;/a&gt;, le client de KDE pour les discussions sur le réseau Matrix, intègre un éditeur de texte enrichi et prend maintenant en charge les fils de discussions.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;div class="container py-5 "&gt;
&lt;h3&gt;&lt;a target="_blank" href="https://kde.org/announcements/changelogs/gear/26.04.0"&gt;Note complète de version ici&lt;/a&gt;&lt;/h3&gt;
&lt;h2&gt;Où obtenir des applications de KDE&lt;/h2&gt;
&lt;p&gt;Bien que toutes les distributions fournissant nos logiciels soient totalement prises en charge, les applications pour KDE Gear 26.04 seront également disponibles sous peu sur ces magasins d&amp;#39;applications pour Linux :&lt;/p&gt;
&lt;div class="row"&gt;
&lt;div class="col-12 col-md-6"&gt;
&lt;figure&gt;
&lt;a target="_blank" href="https://flathub.org/apps/search/kde"&gt;
&lt;picture&gt;
&lt;img src="https://kde.org/images/flathub.svg" class="text-center img-fluid flathub" alt="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;figcaption class="text-center"&gt;Flathub&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="col-12 col-md-6"&gt;
&lt;figure&gt;
&lt;a target="_blank" href="https://snapcraft.io/publisher/kde"&gt;
&lt;picture&gt;
&lt;img src="https://kde.org/images/snapcraft.svg" class="text-center img-fluid snapcraft" alt="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;figcaption class="text-center"&gt;Snapcraft&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si vous souhaitez contribuer à l'introduction de plus d'applications dans les boutiques d'applications, à la prise en charge de plus de magasins d'applications et à une meilleure intégration des applications dans notre processus de développement, n'hésitez pas à venir nous saluer dans notre &lt;a target="_blank" href="https://go.kde.org/matrix/#/%23kde-all-about-apps:kde.org"&gt;salon de discussions concernant toutes les applications (À propos)&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" src="" alt="" title=""&gt;
&lt;/figure&gt;
&lt;/div&gt;</description><author>Communauté KDE</author></item><item><title>KDE Plasma 6.6.4, publication d'une version corrective pour le mois de Avril</title><link>https://kde.org/fr/announcements/plasma/6/6.6.4/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/fr/announcements/plasma/6/6.6.4/</guid><description>&lt;p&gt;Aujourd&amp;#39;hui, KDE publie une version corrective de Plasma 6, nommée 6.6.4.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kde.org/fr/announcements/plasma/6/6.6.0/"&gt;Plasma 6.6&lt;/a&gt; a été publié en Février 2026 avec de nombreux raffinements de fonctionnalités et de nouveaux modules pour améliorer l'utilisation du bureau.&lt;/p&gt;
&lt;p&gt;Cette version prend en compte le résultat de trois semaines de nouvelles traductions et de correctifs de la part des personnes contribuant à KDE. Les corrections de bogues sont en général, minimes mais néanmoins importantes, incluant :&lt;/p&gt;
&lt;a target="_blank" href="https://kde.org/announcements/changelogs/plasma/6/6.6.3-6.6.4"&gt;Afficher la note complète de version&lt;/a&gt;</description><author>Communauté KDE</author></item><item><title>Version 26.1 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2026-03-11</link><pubDate>Tue, 10 Mar 2026 23:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2026-03-11</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 26.1" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r26.1.png')" src="https://gcompris.net/news/images/r26.1.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 26.1 de GCompris.&lt;/p&gt; &lt;p&gt;Elle ajoute des nouvelles images et corrections de bogues dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version est entièrement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Hébreu&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Russe&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Albanais&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (93 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Galicien (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Hongrois (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Indonésien (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Géorgien (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Kannada (85 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (81 %)&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk (89 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (85 %)&lt;/li&gt; &lt;li class="puce"&gt;Roumain (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Sanskrit (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (78 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Tamil (84 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (85 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 26.0 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2026-02-04</link><pubDate>Tue, 03 Feb 2026 23:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2026-02-04</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 26.0" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r26.0.png')" src="https://gcompris.net/news/images/r26.0.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 26.0 de GCompris.&lt;/p&gt; &lt;p&gt;Nous sortons également la première version officiel de notre outil d'accompagnement des enseignants : GCompris-teachers ! Vous pouvez trouver plus d'information sur cet outil dans la page &lt;a target="_blank" href="https://gcompris.net/schools-fr.html#gcompris-teachers"&gt;Écoles&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Cette version contient 197 activités, dont 2 nouvelles :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;« Roues de dessin » est une activité d'art utilisant un engrenage dans une roue dentée pour tracer le dessin.&lt;/li&gt; &lt;li class="puce"&gt;« Questions à choix multiples » est une activité générique qui est cachée par défaut mais devient visible une fois que des jeux de données ont été envoyé depuis GCompris-teachers.&lt;/li&gt; &lt;/ul&gt; &lt;br/&gt; &lt;p&gt;Elle contient des corrections de bogues et des améliorations dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version ajoute deux nouvelle langues : le Kannada et le Tamoul.&lt;/p&gt; &lt;p&gt;Elle est entièrement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Hébreu&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Albanais&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (91 %)&lt;/li&gt; &lt;li class="puce"&gt;Galicien (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Hongrois (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Indonésien (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Géorgien (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Kannada (85 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (81 %)&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk (89 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (85 %)&lt;/li&gt; &lt;li class="puce"&gt;Roumain (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Russe (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Sanskrit (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (78 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Tamil (84 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (85 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android et Raspberry Pi sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt de F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Versions 25.1 et 4.3.1 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2025-05-21</link><pubDate>Tue, 20 May 2025 22:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2025-05-21</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 25.1 and 4.3.1" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r25.1.png')" src="https://gcompris.net/news/images/r25.1.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 25.1 de GCompris.&lt;/p&gt; &lt;p&gt;Elle ajoute des nouvelles images et corrections de bogues dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version est entièrement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Indonésien&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Russe&lt;/li&gt; &lt;li class="puce"&gt;Sanskrit&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Albanais&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (93 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Géorgien (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (81 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (91 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (87 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt F-Droid.&lt;/p&gt; &lt;p&gt;Nous publions aussi la version 4.3.1 de GCompris.&lt;/p&gt; &lt;p&gt;Il s'agit d'une version de maintenance pour les systèmes « 32 bits » et ne contenant que quelques corrections de bogues rétro-portées.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 25.0 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2025-01-30</link><pubDate>Wed, 29 Jan 2025 23:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2025-01-30</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 25.0" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r25.0.png')" src="https://gcompris.net/news/images/r25.0.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 25.0 de GCompris.&lt;/p&gt; &lt;p&gt;Comme vous pouvez le voir, nous synchronisons maintenant le numéro de version majeure sur l'année de sortie. Cela a du sens car nous faisons une version majeure par an. C'est aussi une bonne occasion de le faire maintenant pour célébrer les 25 ans de GCompris.&lt;/p&gt; &lt;p&gt;Cette version ajoute une nouvelle langue : le sanskrit.&lt;/p&gt; &lt;p&gt;Cette version contient 195 activités, dont 5 nouvelles :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;« Croquis » est une activité pour dessiner librement avec de multiples outils pour permettre aux enfants d'explorer leur créativité.&lt;/li&gt; &lt;li class="puce"&gt;« Utilise les compléments à 10 » est la continuation des activités de complément à 10 existantes. Celle-ci aide les enfants à échanger les nombres pour calculer facilement une somme.&lt;/li&gt; &lt;li class="puce"&gt;« Addition verticale » est une activité pour écrire une addition et la résoudre.&lt;/li&gt; &lt;li class="puce"&gt;« Soustraction verticale » est similaire à l'activité d'addition mais pour la soustraction avec la méthode de l'emprunt par regroupement.&lt;/li&gt; &lt;li class="puce"&gt;« Soustraction verticale (méthode de l'emprunt par compensation) » est similaire à celle dessus mais avec la méthode de l'emprunt par compensation.&lt;/li&gt; &lt;/ul&gt; &lt;br/&gt; &lt;p&gt;Elle contient des corrections de bogues et des améliorations graphiques dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Avec l'aide d'enseignants, nous avons réécrit une grande partie de la description des activités pour être plus clairs.&lt;/p&gt; &lt;p&gt;Lorsque vous changez la langue dans le menu, la nouvelle langue est maintenant directement appliquée, sans avoir à redémarrer GCompris.&lt;/p&gt; &lt;p&gt;Du côté technique, il s'agit de la première version utilisant Qt6.&lt;/p&gt; &lt;p&gt;Nous avons également défini le rendu graphique sur direct3d11 par défaut sur Windows.&lt;/p&gt; &lt;p&gt;Elle est entièrement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Sanskrit&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (88 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (91 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Indonésien (93 %)&lt;/li&gt; &lt;li class="puce"&gt;Géorgien (85 %)&lt;/li&gt; &lt;li class="puce"&gt;Lituanien (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk (94 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (89 %)&lt;/li&gt; &lt;li class="puce"&gt;Russe (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (82 %)&lt;/li&gt; &lt;li class="puce"&gt;Albanais (98 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (92 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (88 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android et Raspberry Pi sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt de F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 4.3 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2024-11-29</link><pubDate>Thu, 28 Nov 2024 23:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2024-11-29</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 4.3" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/gcompris-winter.png')" src="https://gcompris.net/news/images/gcompris-winter.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 4.3 de GCompris.&lt;/p&gt; &lt;p&gt;Elle ajoute des nouvelles images et corrections de bogues dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version est entièrement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique&lt;/li&gt; &lt;li class="puce"&gt;Espéranto&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Indonésien&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Russe&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Albanais&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Swahili&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (84 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (96 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 4.2 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2024-09-20</link><pubDate>Thu, 19 Sep 2024 22:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2024-09-20</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 4.2" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r4.2.png')" src="https://gcompris.net/news/images/r4.2.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 4.2 de GCompris.&lt;/p&gt; &lt;p&gt;Elle contient des corrections de bogues et des améliorations graphiques dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version intègre la traduction pour le letton.&lt;/p&gt; &lt;p&gt;Elle est entièrement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique&lt;/li&gt; &lt;li class="puce"&gt;Espéranto&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Indonésien&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Letton&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Russe&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Albanais&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Swahili&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans les langues suivantes :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (87 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (96 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (84 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (96 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt de F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 4.1 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2024-05-23</link><pubDate>Wed, 22 May 2024 22:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2024-05-23</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 4.1" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r4.1.png')" src="https://gcompris.net/news/images/r4.1.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 4.1 de GCompris.&lt;/p&gt; &lt;p&gt;Elle ajoute des nouvelles images et corrections de bogues dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Cette version est entièrement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Russe&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Suédois&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (94 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Indonésien (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Albanais (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (95 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Version 4.0 de GCompris</title><link>https://www.gcompris.net/newsall-fr.html#2024-02-21</link><pubDate>Tue, 20 Feb 2024 23:00:00 +0000</pubDate><guid isPermaLink="true">https://www.gcompris.net/newsall-fr.html#2024-02-21</guid><description>&lt;div class="newscontent"&gt;&lt;img alt="gcompris 4.0" class="col-xs-12 col-md-4" onclick="window.open('https://gcompris.net/news/images/r4.0.png')" src="https://gcompris.net/news/images/r4.0.png" style="float: right; padding-left: 10px; cursor: pointer;"/&gt; &lt;p&gt;Nous publions aujourd'hui la version 4.0 de GCompris.&lt;/p&gt; &lt;p&gt;Cette version ajoute trois nouvelles langues : le bulgare, le galicien et le swahili.&lt;/p&gt; &lt;p&gt;Cette version contient 190 activités, dont 8 nouvelles :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;« Classes grammaticales » est une activité pour apprendre à identifier les classes grammaticales des mots, une classe à la fois.&lt;/li&gt; &lt;li class="puce"&gt;« Analyse grammaticale » est similaire à la précédente, mais avec plusieurs classes demandées pour chaque phrase.&lt;/li&gt; &lt;li class="puce"&gt;« Calcudoku » est un jeu d'arithmétique où l'objectif est de remplir une grille de nombres à partir de règles spécifiques.&lt;/li&gt; &lt;li class="puce"&gt;Avec « Trouve 24 », en utilisant les 4 nombres fournis et les opérateurs, trouve le nombre 24 !&lt;/li&gt; &lt;li class="puce"&gt;Dans « La frise », reproduis et complète les différentes frises.&lt;/li&gt; &lt;li class="puce"&gt;« Repérage sur ligne graduée » est une activité où tu dois trouver une valeur représentée sur une ligne graduée.&lt;/li&gt; &lt;li class="puce"&gt;Dans « Trouve le nombre sur une ligne graduée », place la valeur donnée sur la ligne graduée.&lt;/li&gt; &lt;li class="puce"&gt;Dans « Trouve les nombres adjacents », trouve quels nombres sont placés avant, au milieu ou après la séquence donnée.&lt;/li&gt; &lt;/ul&gt; &lt;br/&gt; &lt;p&gt;Elle ajoute des nouvelles images et corrections de bogues dans de nombreuses activités.&lt;/p&gt; &lt;p&gt;Une importante étape a été atteinte dans cette version : après près de 9 ans de travaux, la tâche d'harmoniser les graphismes de toutes les applications en suivant les règles de GCompris a été finie !&lt;/p&gt; &lt;p&gt;Cette version est entièrement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Arabe&lt;/li&gt; &lt;li class="puce"&gt;Bulgare&lt;/li&gt; &lt;li class="puce"&gt;Breton&lt;/li&gt; &lt;li class="puce"&gt;Catalan&lt;/li&gt; &lt;li class="puce"&gt;Catalan (Valencien)&lt;/li&gt; &lt;li class="puce"&gt;Grec&lt;/li&gt; &lt;li class="puce"&gt;Espagnol&lt;/li&gt; &lt;li class="puce"&gt;Basque&lt;/li&gt; &lt;li class="puce"&gt;Français&lt;/li&gt; &lt;li class="puce"&gt;Galicien&lt;/li&gt; &lt;li class="puce"&gt;Croate&lt;/li&gt; &lt;li class="puce"&gt;Hongrois&lt;/li&gt; &lt;li class="puce"&gt;Italien&lt;/li&gt; &lt;li class="puce"&gt;Lituanien&lt;/li&gt; &lt;li class="puce"&gt;Malayalam&lt;/li&gt; &lt;li class="puce"&gt;Néerlandais&lt;/li&gt; &lt;li class="puce"&gt;Polonais&lt;/li&gt; &lt;li class="puce"&gt;Portugais brésilien&lt;/li&gt; &lt;li class="puce"&gt;Roumain&lt;/li&gt; &lt;li class="puce"&gt;Slovène&lt;/li&gt; &lt;li class="puce"&gt;Turc&lt;/li&gt; &lt;li class="puce"&gt;Ukrainien&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Elle est partiellement traduite dans ces langues :&lt;/p&gt; &lt;ul&gt; &lt;li class="puce"&gt;Azerbaïdjanais (97 %)&lt;/li&gt; &lt;li class="puce"&gt;Biélorusse (86 %)&lt;/li&gt; &lt;li class="puce"&gt;Tchèque (94 %)&lt;/li&gt; &lt;li class="puce"&gt;Allemand (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Anglais britannique (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Espéranto (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Estonien (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Finnois (94 %)&lt;/li&gt; &lt;li class="puce"&gt;Hébreu (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Indonésien (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Macédonien (90 %)&lt;/li&gt; &lt;li class="puce"&gt;Norvégien Nynorsk (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Portugais (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Russe (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Slovaque (83 %)&lt;/li&gt; &lt;li class="puce"&gt;Albanais (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Suédois (95 %)&lt;/li&gt; &lt;li class="puce"&gt;Swahili (99 %)&lt;/li&gt; &lt;li class="puce"&gt;Chinois traditionnel (95 %)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Vous pouvez trouver les paquets de cette nouvelle version pour GNU / Linux, Windows, Android, Raspberry Pi et macOS sur la &lt;a target="_blank" href="https://gcompris.net/downloads-fr.html"&gt;page de téléchargement&lt;/a&gt;. Cette version sera également disponible très bientôt dans les boutiques « Android Play » et « Windows », ainsi dans le dépôt F-Droid.&lt;/p&gt; &lt;p&gt;Merci à vous tous et toutes, &lt;br/&gt;Timothée &amp;amp; Johnny&lt;/p&gt; &lt;div&gt;&lt;/div&gt; &lt;/div&gt;</description><author>GCompris</author></item><item><title>Horloge parlante à la demande</title><link>http://renaudguezennec.eu/index.php/2021/03/09/horloge-parlante/</link><pubDate>Tue, 09 Mar 2021 08:37:35 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=2820</guid><description>&lt;p&gt;Bonjour à tous!&lt;/p&gt;
&lt;p&gt;Dans la série des projets un peu fou, je voudrais vous parler de mon horloge parlante !?&lt;/p&gt;
&lt;p&gt;D&amp;#8217;abord, un peu de contexte. Depuis peu, je fréquente un serveur discord (The language sloth) dédié à l&amp;#8217;apprentissage des langues.&lt;br /&gt;
Je participe à ma hauteur pour aider les débutants en français. Ce n&amp;#8217;est pas mon métier mais l&amp;#8217;ambiance est assez cool.&lt;/p&gt;
&lt;p&gt;De coup, je me suis dit un peu renseigner sur les connaissances à avoir pour obtenir le niveau A1 (le minimum).&lt;br /&gt;
Il y a comprendre l&amp;#8217;heure. Sur ce constat, j&amp;#8217;ai démarré un petit projet pour proposer un système capable de sortir un fichier audio pour chaque heure de la journée.&lt;br /&gt;
Et de proposer l&amp;#8217;ensemble des façons de dire l&amp;#8217;heure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le code&lt;/strong&gt;:&lt;br /&gt;
Pour mes petits scripts, j&amp;#8217;aime bien utiliser du &lt;a target="_blank" href="https://renaudguezennec.eu/index.php/tag/python/"&gt;python&lt;/a&gt;. Ici, mon petit script python permet d&amp;#8217;enregistrer facilement les samples nécessaires pour bâtir l&amp;#8217;ensemble de données.&lt;br /&gt;
Ce travail construit les données d&amp;#8217;une voix.&lt;br /&gt;
Il y a 28 mots à enregistrer:&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;python&amp;#8221; manual=&amp;#8221;unity%3D%5B%22un%22%2C%22une%22%2C%22deux%22%2C%22trois%22%2C%22quatre%22%2C%22cinq%22%2C%22six%22%2C%22sept%22%2C%22huit%22%2C%22neuf%22%5D%0Atens%3D%5B%22dix%22%2C%22onze%22%2C%22douze%22%2C%22treize%22%2C%22quatorze%22%2C%22quinze%22%2C%22seize%22%2C%22vingt%22%2C%22trente%22%2C%22quarante%22%2C%22cinquante%22%5D%0Awords%3D%5B%22midi%22%2C%22minuit%22%2C%22et%22%2C%22quart%22%2C%22moins%22%2C%20%22heure%22%2C%20%22le%22%5D&amp;#8221; message=&amp;#8221;Les samples à enregistrer&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le site&lt;/strong&gt;:&lt;br /&gt;
Le reste de l&amp;#8217;application est constitué d&amp;#8217;un site web qui permet de choisir une voix, et une heure.&lt;br /&gt;
Suite à cela, le site affiche un ou deux lecteurs audios pour permettre la lecture des sons.&lt;br /&gt;
J&amp;#8217;ai recyclé l&amp;#8217;architecture php de mes sites applicatifs. Je la trouve vraiment formidable. Même si, je trouve le PHP de plus en plus dégueulasse.&lt;/p&gt;
&lt;p&gt;Pour la suite, j&amp;#8217;aimerai bien «gamifier» la chose. Permettre d&amp;#8217;entendre une heure et de choisir la bonne valeur parmi trois propositions. Jouer avec ce genre d&amp;#8217;éléments.&lt;/p&gt;
&lt;p&gt;Si vous testez le site, pensez à mettre le son pas trop fort.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;:&lt;br /&gt;
J&amp;#8217;avais cette idée de partir des samples pour construire les messages audios qui traîner dans ma tête depuis un moment. J&amp;#8217;avais envie de tester ce que cela donnerait d&amp;#8217;enregistrer 28 samples environ pour générer 1560 fichiers audios. J&amp;#8217;ai décidé de l&amp;#8217;écrire et voilà le résultat. La curiosité s&amp;#8217;attardait sur la qualité qu&amp;#8217;on pourrait obtenir avec cette méthode. C&amp;#8217;est audible, il y a quelques sont qui mériterait d&amp;#8217;être retravailler mais dans l&amp;#8217;ensemble, cela remplit son rôle.&lt;br /&gt;
Je serai ravi de recevoir de nouvelles voix. Vous pouvez m&amp;#8217;envoyer vos 28 samples et je peux m&amp;#8217;occuper du reste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les liens&lt;/strong&gt;:&lt;br /&gt;
Le projets en ligne: &lt;a target="_blank" href="https://heures.renaudguezennec.eu/"&gt;http://heures.renaudguezennec.eu/&lt;/a&gt;&lt;br /&gt;
Le code source du projet: &lt;a target="_blank" href="https://github.com/obiwankennedy/french_talking_clock_game"&gt;https://github.com/obiwankennedy/french_talking_clock_game&lt;/a&gt;&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>Gérer les préférences utilisateurs en C++</title><link>http://renaudguezennec.eu/index.php/2020/08/17/gerer-les-preferences-utilisateurs-en-c/</link><pubDate>Mon, 17 Aug 2020 20:11:47 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=202</guid><description>&lt;p&gt;Aujourd’hui, nous allons voir comment sont gérées les préférences dans Rolisteam (et plus généralement dans mes développements).&lt;/p&gt;
&lt;h2&gt;Quels contenus sont gérés dans les Préférences ?&lt;/h2&gt;
&lt;p&gt;Les préférences conservent l’ensemble des éléments qu&amp;#8217;un utilisateur peut définir pour changer le comportement de l’application.&lt;/p&gt;
&lt;p&gt;Dans Rolisteam, il est possible de définir le thème de l’application, la couleur du brouillard de guerre pour les cartes, la valeur de son opacité, Activer/désactiver la recherche de mise à jour, le lancement en plein écran, des alias de dés etc.&lt;/p&gt;
&lt;h2&gt;La problématique&lt;/h2&gt;
&lt;p&gt;La principale difficulté est de rendre accessible en lecture et en écriture les préférences pour l&amp;#8217;ensemble de l&amp;#8217;application.&lt;br /&gt;
En parallèle, la fenêtre de préférences doit permettre d&amp;#8217;afficher et de modifier toutes les valeurs.&lt;br /&gt;
Il est important de ne conserver qu&amp;#8217;une version de données afin d&amp;#8217;éviter des incohérences. L&amp;#8217;autre objecti est de réussir à notifier les utilisateurs d&amp;#8217;une donnée après son changement.&lt;/p&gt;
&lt;h2&gt;La solution&lt;/h2&gt;
&lt;p&gt;Pour répondre à ces problématiques, j’ai écrit la classe PreferencesManager. Elle est fondée sur le patron de conception: Singleton.&lt;br /&gt;
Le but de ce patron est de s’assurer de l’unicité d’une instance de classe. Cela permet de garantir que les valeurs sera bien la même pour tout le monde: les composants de l’application et le panneau de préférences.&lt;/p&gt;
&lt;p&gt;Pour réaliser un singleton, il est nécessaire de mettre les éléments suivants:&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;cpp&amp;#8221; manual=&amp;#8221;class%20PreferencesManager%0A%7B%0Apublic%3A%0A%20%20%20%20%2F**%0A%20%20%20%20*%20%40brief%20Must%20be%20called%20instead%20of%20the%20constructor.%0A%20%20%20%20*%0A%20%20%20%20*%20%40return%20instance%20of%20PreferencesManager%0A%20%20%20%20*%2F%0A%20%20%20%20static%20PreferencesManager*%20getInstance()%3B%0A%20%20%20%20%2F**%0A%20%20%20%20*%20%40brief%20%20desturctor%0A%20%20%20%20*%2F%0A%20%20%20%20~PreferencesManager()%3B%0Aprivate%3A%0A%20%20%20%20%2F**%0A%20%20%20%20*%20%40brief%20Private%20constructor%20to%20make%20sure%20there%20is%20only%20one%20instance%20of%20this.%0A%20%20%20%20*%2F%0A%20%20%20%20PreferencesManager()%3B%0Aprivate%3A%0A%20%20%20%20%2F**%0A%20%20%20%20*%20Static%20reference%2C%20part%20of%20the%20singleton%20pattern%0A%20%20%20%20*%2F%0A%20%20%20%20static%20PreferencesManager*%20m_singleton%3B%0A%7D%3B&amp;#8221; message=&amp;#8221;Code d&amp;#8217;un Singleton&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Côté implémentation, cela donne ceci:&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;cpp&amp;#8221; manual=&amp;#8221;PreferencesManager*%20PreferencesManager%3A%3Am_singleton%20%3D%20NULL%3B%0A%0A%0APreferencesManager*%20PreferencesManager%3A%3AgetInstance()%0A%7B%0A%20%20%20%20if(m_singleton%20%3D%3D%20NULL)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20m_singleton%20%3D%20new%20PreferencesManager%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20return%20m_singleton%3B%0A%7D&amp;#8221; message=&amp;#8221;Implémentation Singleton&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;La classe PreferencesManager conserve l&amp;#8217;ensemble des données dans une map.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;cpp&amp;#8221; manual=&amp;#8221;QMap%3CQString%2CQVariant%3E*%20m_optionDictionary%3B&amp;#8221; message=&amp;#8221;structure de données&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>QML &amp;#8211; Tutoriel 4 &amp;#8211; Bindings et les méthodes de travail</title><link>http://renaudguezennec.eu/index.php/2018/04/28/qml-tutoriel-3-bindings-et-les-methodes-de-travail/</link><pubDate>Sat, 28 Apr 2018 09:16:14 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=254</guid><description>&lt;p&gt;Bindings + Méthode de travail:&lt;br /&gt;
Notions abordées:&lt;br /&gt;
-Les syntaxes pour le Binding&lt;/p&gt;
&lt;p&gt;Le code de la présentation: &lt;a target="_blank" href="https://github.com/obiwankennedy/Learn-Qt"&gt;https://github.com/obiwankennedy/Learn-Qt&lt;/a&gt;&lt;br /&gt;
Le code de l&amp;#8217;exercice: &lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2018/04/04_exercice_binding.zip"&gt;04_exercice_binding&lt;/a&gt;&lt;br /&gt;
La correction sera dans le prochain épisode.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://www.youtube.com/embed/A-SMHKkH19U" width="560" height="315" frameborder="" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Lien youtube: &lt;a target="_blank" href="https://youtu.be/A-SMHKkH19U"&gt;https://youtu.be/A-SMHKkH19U&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Supporter le logiciel et la chaîne: &lt;a target="_blank" href="https://liberapay.com/Rolisteam/donate"&gt;https://liberapay.com/Rolisteam/donate&lt;/a&gt;&lt;br /&gt;
Rolisteam: &lt;a target="_blank" href="https://www.rolisteam.org/"&gt;http://www.rolisteam.org/&lt;/a&gt;&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>QML &amp;#8211; Tutoriel 3 &amp;#8211; Les attributs</title><link>http://renaudguezennec.eu/index.php/2018/02/08/qml-tutoriel-3-les-attributs/</link><pubDate>Thu, 08 Feb 2018 22:35:45 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=248</guid><description>&lt;p&gt;Les attributs:&lt;br /&gt;
Notions abordées:&lt;br /&gt;
-id&lt;br /&gt;
-Propriétés&lt;br /&gt;
-Signaux&lt;br /&gt;
-Gestionnaire de Signaux&lt;br /&gt;
-Gestionnaires et propriétés groupés.&lt;br /&gt;
-méthodes&lt;br /&gt;
-Enumération&lt;/p&gt;
&lt;p&gt;Fichier à télécharger: &lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2018/02/03_attributs.zip"&gt;03_attributs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le code de la présentation: https://github.com/obiwankennedy/Learn-Qt&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://www.youtube.com/embed/tDSVlrsQJU0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Lien youtube: https://youtu.be/tDSVlrsQJU0&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>QML &amp;#8211; Tutoriel 2 &amp;#8211; Le positionnement</title><link>http://renaudguezennec.eu/index.php/2018/02/04/qml-tutoriel-2-le-positionnement/</link><pubDate>Sun, 04 Feb 2018 16:16:18 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=240</guid><description>&lt;p&gt;Le positionnement:&lt;br /&gt;
-Apprenez à positionner vos éléments.&lt;br /&gt;
Notions abordées:&lt;br /&gt;
-Positionnement absolue&lt;br /&gt;
-Ancres&lt;br /&gt;
-Les positionneurs&lt;br /&gt;
-Les layouts&lt;br /&gt;
Le code de la présentation: https://github.com/obiwankennedy/Learn-Qt&lt;/p&gt;
&lt;p&gt;Ressources du tutoriel: &lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2018/02/03_positionnement.zip"&gt;03_positionnement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://www.youtube.com/embed/QDbn1CDjc14" width="560" height="315" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Lien youtube: https://youtu.be/QDbn1CDjc14&lt;/p&gt;
&lt;p&gt;Supporter le logiciel et la chaîne: https://liberapay.com/Rolisteam/donate&lt;br /&gt;
Rolisteam: http://www.rolisteam.org/&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>QML &amp;#8211; Tutoriel 1 &amp;#8211; Introduction</title><link>http://renaudguezennec.eu/index.php/2018/02/03/qml-tutoriel-1-introduction/</link><pubDate>Sat, 03 Feb 2018 01:10:05 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=232</guid><description>&lt;p&gt;Introduction:&lt;br /&gt;
-Apprenez à installer les outils pour programmer en QML.&lt;br /&gt;
-Création d’un projet QML.&lt;br /&gt;
-Découverte du premier programme.&lt;br /&gt;
-Introduction des types de base du QML (Item, Rectangle, Image, Text, TextInput, TextArea, MouseArea, Timer, Flickable)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe loading="lazy" src="https://www.youtube.com/embed/8moq00ofQPY" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Téléchargez les &lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2018/02/tuto1.zip"&gt;ressources de l’épisode&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Liens Utiles:&lt;br /&gt;
Qt: &lt;a target="_blank" href="https://www.qt.io/download"&gt;https://www.qt.io/download&lt;/a&gt;&lt;br /&gt;
RCSE: &lt;a target="_blank" href="https://www.rolisteam.org/download.html"&gt;http://www.rolisteam.org/download.html&lt;/a&gt; (Lire attentivement en fonction de vos plate formes)&lt;br /&gt;
Le code de la présentation: https://github.com/obiwankennedy/Learn-Qt&lt;/p&gt;
&lt;p&gt;Exemple QML:&lt;br /&gt;
&lt;a target="_blank" href="https://www.youtube.com/results?search_query=qml+example"&gt;https://www.youtube.com/results?search_query=qml+example&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lien youtube: &lt;a target="_blank" href="https://youtu.be/8moq00ofQPY"&gt;https://youtu.be/8moq00ofQPY&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Supporter le logiciel et la chaîne:&lt;a target="_blank" href="https://liberapay.com/Rolisteam/donate"&gt; https://liberapay.com/Rolisteam/donate&lt;/a&gt;&lt;br /&gt;
Rolisteam:&lt;a target="_blank" href="https://www.rolisteam.org/"&gt; http://www.rolisteam.org/&lt;/a&gt;&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>Atelier QML à Pas Sage En Seine 2017</title><link>http://renaudguezennec.eu/index.php/2017/07/30/atelier-qml-pas-sage-en-seine-2017/</link><pubDate>Sun, 30 Jul 2017 10:44:06 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=221</guid><description>&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt;J’ai organisé un atelier à &lt;a target="_blank" href="https://passageenseine.fr/"&gt;Pas Sage En Seine&lt;/a&gt; en juin 2017.&lt;br /&gt;
J’ai enfin le temps de m’occuper de mettre en ligne les éléments de formation.&lt;br /&gt;
Je mets à disposition les supports de cet atelier.&lt;br /&gt;
Il y a une présentation PDF et un projet regroupant les exercices et les solutions.&lt;/p&gt;
&lt;p&gt;La présentation est en réalité une application QML. Son code est disponible ici: &lt;a target="_blank" href="https://github.com/obiwankennedy/Learn-Qt"&gt;https://github.com/obiwankennedy/Learn-Qt&lt;/a&gt;&lt;br /&gt;
Cela constitue en soit un bon exercice que d’arriver à la lancer sur votre ordinateur.&lt;/p&gt;
&lt;p&gt;N’hésitez pas à me contacter pour poser des questions.&lt;br /&gt;
Je ferais peut-être une vidéo de la formation.&lt;/p&gt;
&lt;p&gt;Liens:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2017/07/Atelier_QML_Renaud_Guezennec_PSES_2017_support.pdf"&gt;Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://renaudguezennec.eu/wp-content/uploads/2017/07/Atelier_QML_Renaud_Guezennec_PSES_2017_exercices.zip"&gt;Exercices et solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Renaud Guezennec</author></item><item><title>Mettre à jour Postgresql sur debian Stretch</title><link>http://renaudguezennec.eu/index.php/2017/07/01/mettre-jour-postgresql-sur-debian-stretch/</link><pubDate>Sat, 01 Jul 2017 14:55:41 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=215</guid><description>&lt;p&gt;Stretch&lt;/p&gt;
&lt;p&gt;Nous allons voir comment mettre à jour votre base de données postgresql après l’update de Jessie à Stretch.&lt;br /&gt;
La version de jessie était 9.4. La version pour Stretch est 9.6.&lt;/p&gt;
&lt;p&gt;Les commandes suivantes sont exécutées en root. Vous pouvez bien sûr utiliser sudo.&lt;/p&gt;
&lt;h2&gt;Lister les clusters postgresql installés sur votre machine:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;# pg_lsclusters&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si votre installation de postgresql date de Jessie vous aurez un truc comme cela.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;bash&amp;#8221; manual=&amp;#8221;Ver%20Cluster%20Port%20Status%20Owner%20Data%20directory%20Log%20file%0A9.4%20main%20%20%20%205432%20online%20postgres%20%2Fvar%2Flib%2Fpostgresql%2F9.4%2Fmain%20%2Fvar%2Flog%2Fpostgresql%2Fpostgresql-9.4-main.log%0A9.6%20main%20%20%20%205433%20online%20postgres%20%2Fvar%2Flib%2Fpostgresql%2F9.6%2Fmain%20%2Fvar%2Flog%2Fpostgresql%2Fpostgresql-9.6-main.log&amp;#8221; message=&amp;#8221;&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Si vous n’avez pas fait la mise à jour de votre cluster après la mise à jour de wheezy vers jessie. Vous devriez voir un truc dans ce style la.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;bash&amp;#8221; manual=&amp;#8221;Ver%20Cluster%20Port%20Status%20Owner%20Data%20directory%20Log%20file%0A9.1%20main%20%20%20%205432%20online%20postgres%20%2Fvar%2Flib%2Fpostgresql%2F9.1%2Fmain%20%2Fvar%2Flog%2Fpostgresql%2Fpostgresql-9.1-main.log%0A9.4%20main%20%20%20%205433%20online%20postgres%20%2Fvar%2Flib%2Fpostgresql%2F9.4%2Fmain%20%2Fvar%2Flog%2Fpostgresql%2Fpostgresql-9.4-main.log%0A9.6%20main%20%20%20%205434%20online%20postgres%20%2Fvar%2Flib%2Fpostgresql%2F9.6%2Fmain%20%2Fvar%2Flog%2Fpostgresql%2Fpostgresql-9.6-main.log&amp;#8221; message=&amp;#8221;&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Le port par défaut de postgresql est le &lt;strong&gt;5432&lt;/strong&gt;.  Le cluster ayant 5432 comme port est votre cluster courant.&lt;/p&gt;
&lt;p&gt;Normalement Debian installe la nouvelle version de postgresql à la mise à jour de version et il crée un nouveau cluster dans la foulée.&lt;br /&gt;
Si ce n’est pas le cas, vous pouvez l’installer par cette ligne:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# apt-get install postgresql-9.6&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Supprimer le cluster postgresql 9.6 créé&lt;/h2&gt;
&lt;p&gt;Installer une nouvelle version de postgresql sur debian crée un cluster principal (main) qui empêche la commande &lt;strong&gt;pg_upgradecluster&lt;/strong&gt; de fonctionner.&lt;/p&gt;
&lt;p&gt;Il faut donc supprimer cette instance dans le but d’obtenir une base de données propre.&lt;br /&gt;
Faite très attention, ne vous tromper pas dans la commande.&lt;br /&gt;
Ne supprimer surtout pas votre vieille base de données. C’est elle qui contient toutes vos données. &lt;img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /&gt;&lt;/p&gt;
&lt;p&gt;Nous détruisons la nouvelle; la vide.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# pg_dropcluster --stop 9.6 main&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Mettre à jour la vieille base vers le nouveau format&lt;/h2&gt;
&lt;p&gt;La syntaxe est la suivante:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# pg_upgradecluster -v NouvelleVersion AncienneVersion main&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La fonction va créer un nouvelle base main dans le format &lt;strong&gt;NouvelleVersion&lt;/strong&gt;.&lt;br /&gt;
Pour ensuite, copier les données de &lt;strong&gt;AncienneVersion&lt;/strong&gt; vers &lt;strong&gt;NouvelleVersion&lt;/strong&gt;.&lt;br /&gt;
Cela prendra un peu de temps.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;bash&amp;#8221; manual=&amp;#8221;%23%20pg_upgradecluster%20-v%209.6%209.4%20main%0AStopping%20old%20cluster&amp;#8230;%0ANotice%3A%20extra%20pg_ctl%2Fpostgres%20options%20given%2C%20bypassing%20systemctl%20for%20stop%20operation%0ADisabling%20connections%20to%20the%20old%20cluster%20during%20upgrade&amp;#8230;%0ARestarting%20old%20cluster%20with%20restricted%20connections&amp;#8230;%0ARedirecting%20start%20request%20to%20systemctl%0ACreating%20new%20cluster%209.6%2Fmain%20&amp;#8230;%0Aconfig%20%2Fetc%2Fpostgresql%2F9.6%2Fmain%0Adata%20%2Fvar%2Flib%2Fpostgresql%2F9.6%2Fmain%0Alocale%20en_US.UTF-8%0Asocket%20%2Fvar%2Frun%2Fpostgresql%0Aport%205434%0ADisabling%20connections%20to%20the%20new%20cluster%20during%20upgrade&amp;#8230;%0ARedirecting%20start%20request%20to%20systemctl%0ARoles%2C%20databases%2C%20schemas%2C%20ACLs&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20pbf&amp;#8230;%0AAnalyzing%20database%20pbf&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20template1&amp;#8230;%0AAnalyzing%20database%20template1&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20livres&amp;#8230;%0AAnalyzing%20database%20livres&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20cmdline&amp;#8230;%0AAnalyzing%20database%20cmdline&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20systemtest&amp;#8230;%0AAnalyzing%20database%20systemtest&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20creatures&amp;#8230;%0AAnalyzing%20database%20creatures&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20articles&amp;#8230;%0AAnalyzing%20database%20articles&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20postgres&amp;#8230;%0AAnalyzing%20database%20postgres&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20campagnes&amp;#8230;%0AAnalyzing%20database%20campagnes&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20animations&amp;#8230;%0AAnalyzing%20database%20animations&amp;#8230;%0AFixing%20hardcoded%20library%20paths%20for%20stored%20procedures&amp;#8230;%0AUpgrading%20database%20asso_member&amp;#8230;%0AAnalyzing%20database%20asso_member&amp;#8230;%0ARe-enabling%20connections%20to%20the%20old%20cluster&amp;#8230;%0ARe-enabling%20connections%20to%20the%20new%20cluster&amp;#8230;%0ACopying%20old%20configuration%20files&amp;#8230;%0ACopying%20old%20start.conf&amp;#8230;%0ACopying%20old%20pg_ctl.conf&amp;#8230;%0ACopying%20old%20server.crt&amp;#8230;%0ACopying%20old%20server.key&amp;#8230;%0AStopping%20target%20cluster&amp;#8230;%0ARedirecting%20stop%20request%20to%20systemctl%0AStopping%20old%20cluster&amp;#8230;%0ARedirecting%20stop%20request%20to%20systemctl%0ADisabling%20automatic%20startup%20of%20old%20cluster&amp;#8230;%0AConfiguring%20old%20cluster%20to%20use%20a%20different%20port%20(5434)&amp;#8230;%0AStarting%20target%20cluster%20on%20the%20original%20port&amp;#8230;%0ARedirecting%20start%20request%20to%20systemctl%0ASuccess.%20Please%20check%20that%20the%20upgraded%20cluster%20works.%20If%20it%20does%2C%0Ayou%20can%20remove%20the%20old%20cluster%20with%0A%0Apg_dropcluster%209.4%20main&amp;#8221; message=&amp;#8221;&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;h2&gt;Supprimer l’ancienne version&lt;/h2&gt;
&lt;p&gt;Si la copie s’est bien passée. Vous pouvez supprimer l’ancienne version. Elle est maintenant entièrement copié dans le cluster main 9.6.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# pg_dropcluster 9.4 main&lt;/code&gt;&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>Mettre en ligne ses parties !</title><link>http://renaudguezennec.eu/index.php/2017/04/18/mettre-en-ligne-ces-parties/</link><pubDate>Tue, 18 Apr 2017 09:03:58 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=197</guid><description>&lt;p&gt;Je suis venu vous conter une histoire. Cette histoire est issue d&amp;#8217;un désir coupable de frimer un peu.&lt;br /&gt;
Non, je n&amp;#8217;ai pas réussi à faire quelque chose d&amp;#8217;exceptionnel ou d&amp;#8217;impossible comme inventer une ampoule qui dure 10 fois plus longtemps que toutes les autres.&lt;br /&gt;
Je souhaite juste montrer comment GNU/Linux, le système D et la philosophie OpenSource/libre/DIY peuvent permettre d&amp;#8217;automatiser un processus de production vidéo.&lt;/p&gt;
&lt;h2&gt;Contexte:&lt;/h2&gt;
&lt;p&gt;Je suis développeur de Rolisteam. J&amp;#8217;avais besoin de faire un peu la promotion du logiciel. De plus, en tant que maître de jeu, j&amp;#8217;avais envie de garder une trace de ma campagne, histoire&lt;br /&gt;
d&amp;#8217;en faire profiter d&amp;#8217;autres gens.&lt;br /&gt;
L&amp;#8217;enregistrement des parties en vidéo et audio nous a semblé la meilleure solution pour atteindre ces objectifs.&lt;/p&gt;
&lt;h2&gt;Le choix des outils:&lt;/h2&gt;
&lt;p&gt;Après une phase de recherche, mon choix s’est porté sur:&lt;/p&gt;
&lt;h3&gt;SimpleScreenRecorder (SSR)&lt;/h3&gt;
&lt;p&gt;Il est pratique, simple et la qualité vidéo est plutôt bonne. Le seul problème c&amp;#8217;est l&amp;#8217;enregistrement audio. Impossible d&amp;#8217;enregistrer en même temps mon micro et&lt;br /&gt;
les voix de mes camarades à moins de configurer pulseaudio ou l&amp;#8217;usage de Jack. Je n&amp;#8217;avais pas envie de changer toute la configuration son de ma bécane. C’est peut-être facile à faire mais j’avais pas envie de me lancer la dedans. De plus, la qualité audio de SSR est moins bonne que Teamspeak (je trouve en tout cas).&lt;/p&gt;
&lt;h3&gt;Teamspeak:&lt;/h3&gt;
&lt;p&gt;Ok, ce n&amp;#8217;est pas libre mais pour des raisons de qualité et d&amp;#8217;habitude des joueurs, on est resté sur cette solution pour l&amp;#8217;audio.&lt;br /&gt;
Les fruits de l’enregistrement&lt;/p&gt;
&lt;p&gt;Grâce à ces outils, j&amp;#8217;ai réalisé les enregistrements.&lt;br /&gt;
J&amp;#8217;avais donc un fichier son et une vidéo par partie. Dans un premier temps, j&amp;#8217;ai fusionné les deux fichiers avec ffmpeg pour obtenir la vidéo de la partie (avec le son).&lt;/p&gt;
&lt;pre&gt;ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4&lt;/pre&gt;
&lt;h2&gt;Améliorer l’expérience visuelle&lt;/h2&gt;
&lt;p&gt;Souhaitant offrir une meilleure expérience pour les éventuels spectateurs, j&amp;#8217;ai codé un plugin à teamspeak qui envoie sur dbus le statut de la voix de chaque joueur.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai crée une application qui écoute ces messages dbus, quand le joueur parle, le portrait de son personnage s&amp;#8217;affiche en couleur. Quand il est silencieux le portrait du personnage s&amp;#8217;affiche en niveau de gris. Il m&amp;#8217;a fallu plusieurs tests et étapes pour arriver à ce fonctionnel final.&lt;br /&gt;
Les joueurs ne voulant pas montrer leur visage par webcam. Cela semblait la meilleur solution de suivre facilement les conversations.&lt;/p&gt;
&lt;p&gt;Vous trouverez le code ici: &lt;a target="_blank" href="https://github.com/obiwankennedy/GameVisualisationHelper/tree/cops/display"&gt;https://github.com/obiwankennedy/GameVisualisationHelper/tree/cops/display&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cette application a apporté une contrainte supplémentaire sur les vidéos. Le son et l&amp;#8217;image doivent être synchronisés avec précision. Ce n’était pas le cas avant car les éléments de l’écran pouvait être en avance ou en retard par rapport à la voix, il n’y avait aucun repère visuel pour le remarquer.&lt;/p&gt;
&lt;h2&gt;Caler le son et l’image&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai d&amp;#8217;abord pensé merger les deux fichiers dans un éditeur vidéo.&lt;br /&gt;
J&amp;#8217;ai essayé PitiVi, OpenShot et Kdenlive. Les deux premiers agonisent dans d&amp;#8217;atroces souffrances après le chargement de fichiers supérieurs à 3h. Kdenlive s&amp;#8217;en sort mieux. Il n&amp;#8217;agonise qu&amp;#8217;une fois sur deux. J’ai installé les versions de ma distribution et j’ai fait de report de bug mais je pouvais pas attendre la résolution des problèmes.&lt;/p&gt;
&lt;p&gt;Dans ce contexte, trouver le bon timing pour synchroniser l&amp;#8217;audio sur l&amp;#8217;image, c&amp;#8217;est compliqué. Le drag and drop de fichier de 3h fait assez mal aux logiciels d&amp;#8217;édition vidéo. Sans parler de la précision pour les déplacements. Bref, pas pratique.&lt;/p&gt;
&lt;p&gt;Je me suis dit &amp;#8220;c&amp;#8217;est idiot, il faudrait synchroniser le début de l&amp;#8217;enregistrement de l&amp;#8217;audio et la vidéo&amp;#8221;.&lt;br /&gt;
Je n&amp;#8217;ai pas le code source de Teamspeak mais il est possible de créer un plugin (ou de modifier celui que j&amp;#8217;ai créé) et j&amp;#8217;ai le code source de SimpleScreenRecorder (SSR).&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai donc décidé d&amp;#8217;exposer l&amp;#8217;API de SSR sur DBUS et mon plugin teamspeak envoie des commandes dbus. Vive Dbus !&lt;br /&gt;
En gros, j&amp;#8217;ai étudié le code de SSR pour identifier la fonction qui démarre l&amp;#8217;enregistrement. J&amp;#8217;ai créé la petite tambouille pour l&amp;#8217;exposer (ainsi que la fonction pour mettre l&amp;#8217;enregistrement en pause) sur dbus.&lt;/p&gt;
&lt;p&gt;Si vous voulez voir comment faire cela: http://renaudguezennec.eu/index.php/2011/03/10/introduction-a-dbus-avec-qt4/&lt;/p&gt;
&lt;p&gt;Pour le coup, après quelques essais et des modifications sur l&amp;#8217;ensemble des participants à l&amp;#8217;affaire. J&amp;#8217;ai une solution qui tourne bien. Je peux utiliser ffmpeg pour fusionner mes fichiers vidéos avec le son et cela correspond parfaitement.&lt;/p&gt;
&lt;pre&gt;ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4&lt;/pre&gt;
&lt;h2&gt;Une étape d’accomplie&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai fait un pull request à l’auteur de SSR. Mon but était de montrer comment faire car l&amp;#8217;auteur de SSR n&amp;#8217;est pas formé à Dbus. Il est très intéressé mais clairement je n’ai pas le temps de généraliser l’usage de Dbus dans SSR, ni lui d’ailleurs.&lt;/p&gt;
&lt;p&gt;Ma version est accessible ici : &lt;a target="_blank" href="https://github.com/obiwankennedy/ssr"&gt;https://github.com/obiwankennedy/ssr&lt;/a&gt;&lt;br /&gt;
Ma pull request : &lt;a target="_blank" href="https://github.com/MaartenBaert/ssr/pull/399"&gt;https://github.com/MaartenBaert/ssr/pull/399&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Montage des génériques&lt;/h2&gt;
&lt;p&gt;Après ces étapes, j&amp;#8217;ai des vidéos de mes parties assez brutes. Idéalement, il me reste à ajouter un générique de début et de fin.&lt;/p&gt;
&lt;p&gt;Pour le faire, j&amp;#8217;ai fait un programme en QML avec deux animations qui se courent après. C&amp;#8217;est pas jolie mais cela fait le job. Le générique dure ~10 secondes, je l’ai enregistré avec SSR aussi.&lt;br /&gt;
J&amp;#8217;ai utilisé Kdenlive pour caler une musique libre dessus.&lt;/p&gt;
&lt;p&gt;A la fin de cette étape, j&amp;#8217;ai ma petite vidéo de générique de début, idem pour le générique de fin et mes épisodes (plus de 75).&lt;br /&gt;
Vous l&amp;#8217;avez compris, l&amp;#8217;étape ici est de créer des vidéos contenant les génériques.&lt;br /&gt;
J&amp;#8217;ai cherché un peu dans ffmpeg pour arriver à cela. C&amp;#8217;est une simple fonction de concaténation des vidéos.&lt;br /&gt;
J&amp;#8217;ai écrit ma petite commande, ça marche.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;bash&amp;#8221; manual=&amp;#8221;cd%20%2Fracine%2Fdes%2Fvideos%2F%0AOPENING%3D%2Fchemin%2Fvers%2Fgenerique%2Fdebut.mp4%0AENDING%3D%2Fchemin%2Fvers%2Fgenerique%2Ffin.mp4%0Avideo%3D%2Fchemin%2Fvers%2Fvideos.mp4%0ALIST_FILE%3D%2Ftmp%2Fmylist.txt%0AvideoExtLess%3D%5C%60echo%20%24video%20%7C%20awk%20-F%20&amp;#8242;.&amp;#8217;%20&amp;#8217;%7Bprint%20%241%7D&amp;#8217;%5C%60%0Aecho%20%22file%20&amp;#8217;%24OPENING&amp;#8217;%22%20%3E%20%24LIST_FILE%0Aecho%20%22file%20&amp;#8217;%24video&amp;#8217;%22%20%3E%3E%20%24LIST_FILE%0Aecho%20%22file%20&amp;#8217;%24ENDING&amp;#8217;%22%20%3E%3E%20%24LIST_FILE%0Affmpeg%20-safe%200%20-f%20concat%20-i%20%2Ftmp%2Fmylist.txt%20%24%7BvideoExtLess%7D_avec_generiques.mp4&amp;#8243; message=&amp;#8221;Concat avec ffmpeg&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Du moins, je croyais que cela marchait. En vérité, cela cassait la synchronisation son/image. Ce fut très embêtant.&lt;br /&gt;
Je retourne à la case départ &amp;#8220;logiciel de montage vidéo&amp;#8221; (Kdenlive). Il y a un peu moins de manipulation précise à faire. Je colle les trois fichiers: générique de début, l’épisode, générique de fin et c&amp;#8217;est parti.&lt;br /&gt;
Ça a fonctionné un temps.&lt;/p&gt;
&lt;h2&gt;Extraction du son et traitement&lt;/h2&gt;
&lt;p&gt;Une fois la vidéo complète avec les génériques. J&amp;#8217;en extrait le son pour la diffusion en podcast, vraiment facile avec ffmpeg.&lt;/p&gt;
&lt;pre&gt;ffmpeg -i videos.mp4 -codec:a libmp3lame -qscale:a 2 output.mp3&lt;/pre&gt;
&lt;p&gt;Avant de sortir l&amp;#8217;épisode en podcast, je le re-travaille un peu avec audacity pour supprimer les silences et pour normaliser le son (avec le filtre compresseur du logiciel).&lt;br /&gt;
Cela raccourcit l’épisode d’environ 30 mins et le son est bien meilleur.&lt;/p&gt;
&lt;h2&gt;Traitement sur la vidéo&lt;/h2&gt;
&lt;p&gt;Je souhaite effectuer les mêmes traitements sur les vidéos. J&amp;#8217;ai bien lutté pour trouver une solution.&lt;/p&gt;
&lt;h3&gt;Normalisation&lt;/h3&gt;
&lt;p&gt;Pour la normalisation, j&amp;#8217;ai trouvé un petit script python: ffmpeg-normalize.&lt;/p&gt;
&lt;pre&gt;ffmpeg-normalize -vu -p normalized-episode40.mp4 Episode_40.mp4&lt;/pre&gt;
&lt;p&gt;Supprimer les moments inutiles&lt;/p&gt;
&lt;p&gt;Couper la vidéo quand il y a du silence fut bien plus complexe. Aucun logiciel de montage vidéo n&amp;#8217;offre de filtre pour cela (je n&amp;#8217;ai pas trouvé en tout cas) et j’allais pas le faire à la main. Cela m&amp;#8217;aurait pris trop de temps.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai donc cherché à droite à gauche et c&amp;#8217;est Ryzz (Merci à lui) sur Linuxfr.org qui m&amp;#8217;a envoyé vers une bonne piste: MoviePy&lt;/p&gt;
&lt;p&gt;Un module python pour faire de l&amp;#8217;édition vidéo. Il y a même un exemple utilisant MoviePy pour créer le résumé d&amp;#8217;un match de foot grâce au son des supporters.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai donc créé un script python pour couper les silences. J&amp;#8217;en ai profité également ajouter les génériques avec MoviePy.&lt;br /&gt;
Quand mon script fut prêt j&amp;#8217;avais déjà sorti 20 épisodes. J&amp;#8217;en avais donc 40 en stock à refaire. J&amp;#8217;ai donc lancer le script sur les 40 restant. Après 3 jours d’exécution. J&amp;#8217;avais&lt;br /&gt;
tous mes épisodes prêts.&lt;/p&gt;
&lt;p&gt;Si vous souhaitez voir le code du script et des explications techniques:&lt;br /&gt;
&lt;a target="_blank" href="https://renaudguezennec.eu/index.php/2017/03/03/montage-video-en-python/"&gt;http://renaudguezennec.eu/index.php/2017/03/03/montage-video-en-python/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La réduction des silences est moins efficace qu’audacity mais il y a un gain indéniable.&lt;/p&gt;
&lt;p&gt;Voilà, le degrés maximum que j’ai atteins dans l&amp;#8217;automatisation.&lt;/p&gt;
&lt;h2&gt;Aller encore plus loin&lt;/h2&gt;
&lt;p&gt;Dans tout ce processus, il me manque encore des choses pour vraiment automatiser toute la chaîne.&lt;/p&gt;
&lt;p&gt;Le premier point, c&amp;#8217;est audacity. Il n&amp;#8217;est pas possible d&amp;#8217;utiliser audacity en ligne de commande. Je me suis un peu renseigné, il y a eu des tentatives mais c&amp;#8217;est très complexe à mettre en place.&lt;br /&gt;
J&amp;#8217;ai regardé un peu le code, espérant trouver un moyen d’appliquer les deux filtres dont j’ai besoin. Le code est peu lisible avec des define partout pour différencier les OS. Bref, un cauchemar à maintenir. Du coup, j’hésite à mis mettre vraiment ou rester en édition manuelle.&lt;/p&gt;
&lt;p&gt;Ensuite, il me reste à automatiser la partie “mise en ligne” sur youtube et sur le wordpress.&lt;br /&gt;
Je suis certains que c’est possible mais pour l’instant, je n’ai pas pris le temps de le faire.&lt;br /&gt;
Si vous voulez voir le résultat:&lt;/p&gt;
&lt;p&gt;Le wordpress pour écouter les épisodes: &lt;a target="_blank" href="https://blog.rolisteam.org/"&gt;http://blog.rolisteam.org/&lt;/a&gt;&lt;br /&gt;
La playlist youtube des épisodes : &lt;a target="_blank" href="https://www.youtube.com/playlist?list=PLBSt0cCTFfS5fi3v1LtB9sfeA8opY-Ge1"&gt;https://www.youtube.com/playlist?list=PLBSt0cCTFfS5fi3v1LtB9sfeA8opY-Ge1&lt;/a&gt;&lt;br /&gt;
Les premiers n’ont pas bénéficié de tous les outils. Il y a clairement une marque de progression dans les épisodes jusqu’à l’épisode 20 environ.&lt;/p&gt;</description><author>Renaud Guezennec</author></item><item><title>Montage Vidéo en python</title><link>http://renaudguezennec.eu/index.php/2017/03/03/montage-video-en-python/</link><pubDate>Fri, 03 Mar 2017 23:29:18 +0000</pubDate><guid isPermaLink="true">http://renaudguezennec.eu/?p=183</guid><description>&lt;h2&gt;Mon besoin&lt;/h2&gt;
&lt;p&gt;Dans le cadre de la promotion de Rolisteam, je diffuse en ligne des enregistrements de parties.&lt;br /&gt;
Ces enregistrements nécessitent différents traitement afin d’être rendu plus audibles et intéressants.&lt;br /&gt;
Les taches à réaliser sont les suivantes:&lt;/p&gt;
&lt;p&gt;1 &amp;#8211; Associer la piste audio et la piste vidéo&lt;br /&gt;
2 &amp;#8211; Ajouter le générique de début et de fin.&lt;br /&gt;
3 &amp;#8211; Couper la vidéo en fonction des silences&lt;br /&gt;
4 &amp;#8211; Améliorer le son (le compresser/normaliser)&lt;/p&gt;
&lt;p&gt;Pour réaliser la tache 1, une simple commande ffmpeg suffit. J’ai facilement créé un script bash pour l’automatiser.&lt;br /&gt;
La tâche 2 peut également être réalisée par ffmpeg avec l’option concat mais cela ne s’est pas passé comme prévu.&lt;br /&gt;
La solution de replie fut kdenlive, un logiciel de montage vidéo sur linux (Un des rares qui ne plante pas tout le temps quand on lui donne à monter une vidéo de trois heures).&lt;/p&gt;
&lt;p&gt;L’étape 3 fut bien plus complexe à réaliser. Il n’y a aucun outil clé en main pour faire cela dans ffmpeg ou kdenlive. C’est très probablement faisable avec ces outils mais je n’ai pas trouvé comment. Je ne me voyais pas couper les moments de silence à la main.&lt;br /&gt;
Je commençais à désespérer quand Ryzz sur Linuxfr.org a évoqué le package MoviePy. Un module de manipulation vidéo pour python avec un exemple d’emploi proche de mon objectif.&lt;/p&gt;
&lt;p&gt;Créer un résumé automatique d’un match de foot: http://zulko.github.io/blog/2014/07/04/automatic-soccer-highlights-compilations-with-python/&lt;br /&gt;
La doc de l’API: http://zulko.github.io/moviepy/index.html&lt;/p&gt;
&lt;h2&gt;Le code python: MoviePy&lt;/h2&gt;
&lt;p&gt;Voila un outil pour manipuler le son et la vidéo en codant avec python. Outil parfait pour réaliser les actions 2 et 3 de façon automatique.&lt;br /&gt;
Mes fichiers d’entrées sont biens rangés dans des dossiers, cela rend l’automatisation plus facile.&lt;/p&gt;
&lt;p&gt;Pour la dernier étape, j’ai trouvé un petit script python &amp;#8220;ffmpeg-normalize&amp;#8221; qui fait cela. Ce n’est clairement pas aussi puissant que les filtres d’audacity mais cela suffit.&lt;/p&gt;
&lt;p&gt;Première étape, Parcourir les dossiers, trouver fichier associant la vidéo et le son pour y ajouter les génériques.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;python&amp;#8221; manual=&amp;#8221;for%20subfolder%20in%20sorted(os.listdir(rootFolder))%3A%0Aif(%22_done%22%20not%20in%20subfolder)%3A%0Afor%20subfile%20in%20os.listdir(os.path.join(rootFolder%2Csubfolder))%3A%0Aif((%22mp4%22%20in%20subfile)and(%22Partie%22%20in%20subfile))%3A%0Alink%20%3D%20os.path.join(rootFolder%2Csubfolder)%0Avideo%20%3D%20os.path.join(link%2Csubfile)%0Adest%20%3D%20subfile.replace(%22.mp4%22%2C%22_ending.mp4%22%2C1)%0Adestination%20%3D%20os.path.join(link%2Cdest)%0Avideoclip%20%3D%20VideoFileClip(video)%0A%23concatenation%20of%20opening%2C%20video%20and%20ending%0Afinalclip%20%3D%20concatenate_videoclips(%5Bopening%2Cvideoclip%2Cending%5D)%0Afinalclip.write_videofile(destination%2Cfps%3D25)&amp;#8221; message=&amp;#8221;Parcours des dossiers&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Je ne fais que reconstruire le chemin pour arriver jusqu’à l’épisode.&lt;/p&gt;
&lt;p&gt;Ensuite, l’autre partie intéressante (grandement inspiré de l’exemple sur le foot), est de découper le film en échantillon d’une seconde. Le volume de chaque échantillon est calculé.&lt;br /&gt;
Il faut stocké le volume de chaque échantillon.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;python&amp;#8221; manual=&amp;#8221;%23split%20resulting%20video%20in%20audio%20subclip%0Aclip%20%3D%20VideoFileClip(destination)%0Acut%20%3D%20lambda%20i%3A%20clip.audio.subclip(i%2Ci%2B1).to_soundarray(fps%3D22000)%0Avolume%20%3D%20lambda%20array%3A%20np.sqrt(((1.0*array)**2).mean())%0Avolumes%20%3D%20%5Bvolume(cut(i))%20for%20i%20in%20range(0%2Cint(clip.audio.duration-2))%5D%0Afinal_times%3D%20%5B%5D&amp;#8221; message=&amp;#8221;Les volumes&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Le dernière étape consiste à regrouper les périodes de temps qui doivent être sauvegardé. Dans un tableau à deux éléments, je conserve le début et la fin de chaque période à conserver.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;python&amp;#8221; manual=&amp;#8221;i%20%3D%201%0Aduo%20%3D%20%5B%5D%0Astart%20%3D%20-1%0Aend%20%3D%200%0AsumVideo%20%3D%200%0A%23identify%20all%20part%20with%20sounds.%20What%20we%20keep.%0Afor%20vol%20in%20volumes%3A%0Aif((%20vol%20%3D%3D%200.0%20)and%20(start!%3D-1))%3A%0Aend%20%3D%20i-1%0Aduo%20%3D%20%5Bstart%2Cend%5D%0Afinal_times.append(duo)%0AsumVideo%20%2B%3D%20(end-start)%0Astart%20%3D%20-1%0Aif((start%20%3D%3D%20-1)and%20(vol%3E0.0))%3A%0Astart%3Di%0Ai%3Di%2B1&amp;#8243; message=&amp;#8221;Séparation des duos&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Quand l’ensemble des duos sont identifiés, il suffit de les concatener dans le fichier de sortie.&lt;/p&gt;
&lt;p&gt;[pastacode lang=&amp;#8221;python&amp;#8221; manual=&amp;#8221;finalpath%20%3D%20destination.replace(%22_ending%22%2C%22_cutted%22)%0Aprint%20finalpath%0Aprint%20final_times%0A%23concatenate%20all%20kept%20parts.%0Afinal%20%3D%20concatenate_videoclips(%5Bclip.subclip(t%5B0%5D%2Ct%5B1%5D)%0Afor%20t%20in%20final_times%5D)%0A%23write%20the%20file%0Afinal.write_videofile(finalpath%2Cfps%3D25)&amp;#8221; message=&amp;#8221;Sauvegarde des échantillons&amp;#8221; highlight=&amp;#8221;&amp;#8221; provider=&amp;#8221;manual&amp;#8221;/]&lt;/p&gt;
&lt;p&gt;Code complet: &lt;a target="_blank" href="https://www.renaudguezennec.eu/file/cutVideos.py"&gt;http://www.renaudguezennec.eu/file/cutVideos.py&lt;/a&gt;&lt;/p&gt;</description><author>Renaud Guezennec</author></item></channel></rss>