PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Dimitri Robert : Annonce – Mille et une façons de détourer une image avec GIMP

lundi 3 juillet 2017 à 21:09

J’anime une conférence le 5 juillet à 11h, dans le cadre des rencontres mondiales du logiciel libre (RMLL2017).

Le détourage consiste à découper une partie d’une image ou photo pour la réutiliser séparément. GIMP propose plusieurs outils de sélection destinés à détourer un élément. Mais les outils ne sont pas suffisants pour effectuer un « bon » détourage.

Nous verrons, au cours de cette conférence, plusieurs techniques, certaines classiques, d’autres, insolites, pour réaliser des détourages selon la qualité de la photo et la nature de l’élément à détourer.

Cet article Annonce – Mille et une façons de détourer une image avec GIMP est publié sous licence CC By-SA 4.0 par Dimitri Robert sur Formation logiciel libre - Reprenez le contrôle de votre informatique !.

Gravatar de Dimitri Robert
Original post of Dimitri Robert.Votez pour ce billet sur Planet Libre.

alterlibriste : Culture d'été

lundi 3 juillet 2017 à 16:51

A l’heure ou les villes se vident et les plages se remplissent, qu’il s’agisse de partir pour de longues vacances ou encore bosser pas mal, il faut continuer à faire le plein de podcasts et j’ai sous la main quelques bons tuyaux pour les barbus.

Avant tout, et parce qu’été rime aussi parfois avec lecture, je parlais la semaine dernière de la BD Le profil de Jean Melvil, eh bien, comme par hasard, j’avais sur ma liste de livres à lire Zero de Marc Elsberg, ça commence tout pareil avec des lunettes connectées qui donnent plein de super informations à partir de nos données personnelles. J’ai juste commencé mais c’est bien sourcé et c’est dans la même ambiance que Black Mirror, série (une des seules que j’ai regardées) que je recommande chaudement pour imaginer comment le futur proche pourrait se profiler avec les mutations numériques en cours (une petite interview de l’auteur qui décrit rapidement de quoi il retourne).

Mais revenons à nos podcasts :

Bon été à tous !

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.

Articles similaires

Journal du hacker : Liens intéressants Journal du hacker semaine #26

lundi 3 juillet 2017 à 00:01

Pour la 26ème semaine de 2017, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Benoît Boudaud : #Python: Variables et espaces de noms

dimanche 2 juillet 2017 à 15:21

Pour une lecture plus agréable (page plus large), je vous invite à cliquer sur ce lien et à lire ce chapitre dans la rubrique consacrée au langage Python.

Introduction

Dans le chapitre précédent, nous avons pu constater que grâce à la programmation orientée objet, deux développeurs, Briface et Jobriel, pouvaient coder un objet chacun de leur côté et que ces deux objets pouvaient être « assemblés » in fine pour donner naissance au programme de notre choix.

Même si ces deux module renfermait un objet ou une variable dont le nom était identique, il n’y avait pas de risques que le programme se comporte de manière erratique puisque chaque objet évoluait dans son propre espace de noms. C’est la raison pour laquelle  une commande telle que self.random_choice.random_choice ne levait pas d’exception. 

La notion d’espace de noms dans le langage Python

La notion d’espace de noms est très importante dans le langage Python. Lorsque nous définissons une fonction avec des variables à l’intérieur, ces dernières ne peuvent vivre que dans l’espace de noms de cette fonction. Dès que celle-ci a exécuté sa dernière ligne d’instruction, les variables qui y séjournent deviennent hors de portée. Voici un exemple :

#!/usr/bin/env python3
# -*- coding: utf8 -*-

def first_names():
    lady_1 = "Gabiche"
    print(lady_1)

first_names() #appel de fonction

Résultat : Gabiche.

La fonction affiche bien la valeur contenue dans la variable définie localement.

Maintenant, nous allons modifier la dernière ligne du programme. Au lieu d’appeler la fonction, nous allons tenter de faire un print() de la variable lady_1.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

def first_names():
    lady_1 = "Gabiche"
    print(lady_1)

print(lady_1)

Traceback (most recent call last):
File « /home/ordinosor/1_exemple.py », line 8, in
print(lady_1)
NameError: name ‘lady_1’ is not defined

Godverdomme! Keskispasse? Eh bien, nous avons tout simplement essayé d’afficher la valeur d’une variable qui est hors de portée puisqu’elle est définie à l’intérieur de la fonction.

À présent, nous allons essayer de faire le contraire. Nous allons définir une variable lady_2  dite globale c’est-à-dire à l’extérieur de toute fonction, et dans la fonction first_names, nous allons tenter de faire un print(lady_2).

#!/usr/bin/env python3
# -*- coding: utf8 -*-

lady_2 = "Amandale"

def first_names():
    print(lady_2)

first_names() #Appel de fonction

Résultat : Amandale.

Là, dans cet exemple, lady_2 n’est pas définie à l’intérieur de la fonction, et pourtant le programme ne plante pas! Warum?

En fait, Python va d’abord chercher dans l’espace local une variable portant le nom de lady_2. S’il ne la trouve pas, alors il va poursuivre sa recherche à l’extérieur de la fonction, c’est-à-dire dans l’espace global où il existe bien une variable définie avec le nom lady_2. Par conséquent, la fonction print() peut récupérer la valeur de cette variable dite globale.

Maintenant, définissons deux variables portant le même nom mais ne stockant pas la même valeur… Une variable globale lady_2 et une variable locale lady_2 dans la fonction. Reprenons le code précédent:

#!/usr/bin/env python3
# -*- coding: utf8 -*-

lady_2 = "Amandale"

def first_names():
    lady_2 = "Mandy-Bulle"
    print(lady_2)

first_names() #Appel de fonction

Résultat : Mandy-Bulle.

Python a d’abord effectué une recherche en local, dans l’espace de noms de la fonction. Il a réussi à trouver une variable nommé lady_2. Donc, la recherche s’est immédiatement interrompue et la fonction print() a récupéré la valeur contenue dans cette variable locale, à savoir Mandy-Bulle.

Le mot-clé global

Il n’est pas possible de modifier la valeur de la variable globale lady_2 à l’intérieur de la fonction… A moins de lui affecter au préalable le mot-clé global mais cette technique est parfaitement déconseillée car dans un gros programme, si quelqu’un modifie la valeur stockée dans la variable, il y a un gros risque que ce changement impacte sans le vouloir d’autres parties du programme. Gros risque de bugs en perspective!

#!/usr/bin/env python3
# -*- coding: utf8 -*-

lady_2 = "Amandale"

def first_names():
    global lady_2
    lady_2 = "Mandy-Bulle"

print(lady_2) #Variable globale

Résultat : Mandy-Bulle.

Amandale a disparu du programme…

Et avec la méthode append() ?

Créons une liste ladies_list et essayons voir…

#!/usr/bin/env python3
# -*- coding: utf8 -*-

ladies_list = ["Amandale", "Gabiche"] 

def first_names():
    ladies_list.append("Mandy-Bulle")

first_names() #Appel de fonction
print(ladies_list) #Variable globale

Résultat : [« Amandale », « Gabiche », « Mandy-Bulle »].

Nous avons réussi à modifier la liste malgré le fait que la méthode append() soit présente à l’intérieur de la fonction. Pourquoi donc? Parce que nous avons fait appel à une méthode qui appartient à l’objet ladies_list. En agissant ainsi, aucune barrière d’espace de noms ne peut nous empêcher de mener à bien notre modification.

Mais il est impossible de modifier la variable globale ladies_list en lui affectant une nouvelle valeur à l’intérieur de la fonction.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

ladies_list = ["Amandale", "Gabiche"] 

def first_names():
    ladies_list = ["Mandy-Bulle", "Dominille"]
    print(ladies_list)

first_names() #Appel de fonction
print(ladies_list) #Variable globale

[« Mandy-Bulle », « Dominille »] : Résutat qui correspond au print() de la variable locale ladies_list dans la fonction.

[« Amandale », « Gabiche »] : Résultat qui correspond au print() de la variable globale ladies_list. Nous n’avons point réussi à modifier cette dernière.

Avec le slicing

#!/usr/bin/env python3
# -*- coding: utf8 -*-

ladies_list = ["Amandale", "Gabiche"] 

def first_names():
    ladies_list[1:1] = ["Mandy-Bulle"]

first_names() #Appel de fonction
print(ladies_list) #Variable globale

Résultat : [« Amandale », « Mandy-Bulle », « Gabiche »]

Avec la technique du slicing, le résultat est positif car en fait, sans le savoir, nous utilisons la méthode constructeur de la classe slice. Elle agit directement sur l’objet et là encore, aucune barrière d’espace de noms ne peut nous empêcher de mener à bien notre modification. C’est comme si nous avions écrit ce code (ligne n° 7) :

#!/usr/bin/env python3
# -*- coding: utf8 -*-

ladies_list = ["Amandale", "Gabiche"] 

def first_names():
    ladies_list[slice(1,1)] = ["Mandy-Bulle"]

first_names() #Appel de fonction
print(ladies_list) #Variable globale

Attributs d’instance et attributs de classe

Il existe également une hiérarchie entre les espaces de noms des instances et des classes.

Dans le code ci-dessous, nous avons trois types de variables :

#!/usr/bin/env python3
# -*- coding: utf8 -*-

man_1 = "Dentifritz_1" #Variable globale

class FirstName :
    """Test avec des prénoms"""

    man_1 = "Dentifritz_2" #Attribut de classe

    def first_name(self):
        """test des variables"""

        man_1 = "Sébanislas"
self.man_1 = "Barnabulle"

#===== MAIN ===================================================================

if __name__ == '__main__':

    test = FirstName()
    test.first_name()
print(man_1) #Variable globale
print(FirstName.man_1) #Attribut(ou variable) de classe
print(test.man_1) #Attribut (ou variable) d'instance

Je vous invite à modifier ce code et à faire autant de tests que nécessaire pour bien comprendre le concept d’espaces de noms et la hiérarchie qui les gouverne.


Gravatar de Benoît Boudaud
Original post of Benoît Boudaud.Votez pour ce billet sur Planet Libre.

Okki : En bref : GStreamer, Musique, Pitivi, System76…

vendredi 30 juin 2017 à 19:25

Stefan-Adrian Popa a récemment publié un article de blog sur l’avancement de son travail concernant l’implémentation d’une interface utilisateur dans Pitivi permettant de créer un effet Ken Burns.

De son côté, Georges Basile Stavracas Neto, exaspéré par les temps de chargement incroyablement longs de sa collection d’albums dans Musique, s’est mis à chercher quel pouvait bien en être la cause. Grâce à l’intégration de l’outil de profilage de code Sysprof dans Builder, il s’est rendu compte que le souci provenait du chargement des pochettes de disques. Dans son cas, Musique tentait d’effectuer près de 1200 opérations asynchrones en parallèle. Après avoir tout bêtement limité le nombre d’opérations à effectuer simultanément, le chargement de sa collection fut 73% plus rapide. Amélioration qui sera bien évidemment intégrée à la future version 3.26.

Le correcteur grammatical Grammalecte a récemment lancé une campagne de financement participatif afin de pouvoir améliorer la correction grammaticale, faire évoluer son interface et son intégration à Firefox, créer une extension pour Google Chrome….

Que ce soit le correcteur grammatical ou le dictionnaire Hunspell dont le développeur s’occupe également, tous deux sont utilisés par un grand nombre de logiciels libres, à commencer par Firefox, Thunderbird et LibreOffice. C’est le seul correcteur grammatical libre que nous ayons, mais malheureusement, à dix jours de la fin de la campagne, cette dernière vient seulement de franchir la barre des 52%. Si la somme demandée n’est pas atteinte, l’auteur ne touchera rien et ne pourra donc plus se consacrer entièrement au projet. Alors si ce n’est déjà fait, n’hésitez pas à contribuer à la campagne et à la relayer.

D’autant plus qu’après lecture de l’article LinuxFR qui fut consacré au sujet, je doute sincèrement que l’on puisse un jour trouver quelqu’un d’aussi zinzin pour s’investir dans un logiciel libre dont le développement semble incroyablement ingrat, répétitif et rébarbatif ;-)

Grâce au travail d’Ericsson, GStreamer bénéficie désormais d’un greffon NVDEC pour l’accélération matérielle des vidéos sur les cartes graphiques nVidia. À l’inverse de VDPAU, qui était propre à Linux et qui ne prenait en charge que les cartes d’ancienne génération, telles que Maxwell et Kepler, NVDEC est multi-plateforme et fonctionne tout aussi bien sur les cartes de dernière génération. Le greffon prend en charge le H.264, H.265, VP8, VP9, VC1 et d’autres formats, et peut monter jusqu’à une résolution 4K sur la génération Maxwell et 8K sur la génération Pascal.

On en parlait récemment, System76 ne souhaite plus être un simple DVA et compte proposer à ses clients une expérience utilisateur qui leur soit propre et s’investir dans le développement de GNOME. L’entreprise vient de franchir une nouvelle étape en annonçant Pop!_OS, une nouvelle distribution dérivée d’Ubuntu, dont la version finale est attendue pour le 19 octobre 2017… date de sortie d’Ubuntu 17.10.

Gravatar de Okki
Original post of Okki.Votez pour ce billet sur Planet Libre.

Articles similaires