PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

elementary OS : Réagencement de l’interface Bluetooth

mercredi 11 janvier 2017 à 22:41

Daniel a posté dernièrement un billet sur les différentes évolutions de l’interface de gestion des équipements Bluetooth.

Ces différentes captures montrent les différentes étapes & réflexions que l’équipe a pu avoir pour faire évoluer cette interface qui sera disponible d’ici prochainement (mais sans date annoncée) :

Il est toujours intéressant de voir l’évolution du travail effectué par l’équipe elementary et c’est à travers ces différentes révisions que l’on peut s’apercevoir que le travail réalisé (minime soit-il) peut avoir un impact important sur la manière d’utiliser une application.

Concernant l’évolution du plug Bluetooth, Daniel nous apprend qu’il y a eu jusqu’à 21 révisions différentes (et il se peut que ce nombre se voit revu à la hausse).

Source : https://medium.com/elementaryos/redesigning-bluetooth-settings-ab30abca480f

Le billet Réagencement de l’interface Bluetooth a été publié sur le site de la elementary OS -

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

Renault : Élections pour le Conseil, FESCo et FAmSCo cette semaine

mercredi 11 janvier 2017 à 22:39

Comme le projet Fedora est communautaire, une partie du collège des organisations suivantes doit être renouvelée : Council, FESCo et FAmSCo. Et ce sont les contributeurs qui décident. Chaque candidat a bien sûr un programme et un passif qu'ils souhaitent mettre en avant durant leur mandat pour orienter le projet Fedora dans certaines directions. Je vous invite à étudier les propositions des différents candidats pour cela.

J'ai voté

Pour voter, il est nécessaire d'avoir un compte FAS actif et de faire son choix sur le site du scrutin. Vous avez jusqu'au mardi 17 janvier à minuit heure française pour le faire. Donc n'attendez pas trop.

Je vais profiter de l'occasion pour résumer le rôle de chacun de ces comités afin de clarifier l'aspect décisionnel du projet Fedora mais aussi visualiser le caractère communautaire de celui-ci.

Council

Le Council est ce qu'on pourrait qualifier le grand conseil du projet. C'est donc l'organe décisionnaire le plus élevé de Fedora. Le conseil définit les objectifs à long terme du projet Fedora et participe à l'organisation de celui-ci pour y parvenir. Cela se fait notamment par le biais de discussions ouvertes et transparentes vis à vis de la communauté.

Mais il gère également l'aspect financier. Cela concerne notamment les budgets alloués pour organiser les évènements, produire les goodies, ou des initiatives permettant de remplir les dits objectifs. Ils ont enfin la charge de régler les conflits personnels importants au sein du projet, tout comme les aspects légaux liés à la marque Fedora.

Les rôles au sein du conseil sont complexes.

Ceux avec droit de vote complet

Tout d'abord il y a le FPL (Fedora Project Leader) qui est le dirigeant du conseil et de facto le représentant du projet. Son rôle est lié à la tenue de l'agenda et des discussions du conseil, mais aussi de représenter le projet Fedora dans son ensemble. Il doit également servir à dégager un consensus au cours des débats. Ce rôle est tenu par un employé de Red Hat et est choisi avec le consentement du conseil en question.

Il y a aussi le FCAIC (Fedora Community Action and Impact Coordinator) qui fait le lien entre la communauté et l'entreprise Red Hat pour faciliter et encourager la coopération. Comme pour le FPL, c'est un employé de Red Hat qui occupe cette position avec l'approbation du conseil.

Il y a deux places destinées à la représentation technique et à la représentation plus marketing / ambassadrice du projet. Ces deux places découlent d'une nomination décidée au sein des organes dédiées à ces activités : le FESCo et le FAmSCo. Ces places sont communautaires mais ce sont uniquement ces comités qui décident des attributions.

Il reste deux places communautaires totalement ouvertes et dont tout le monde peut soumettre sa candidature ou voter. Cela permet de représenter les autres secteurs d'activité comme la traduction ou la documentation mais aussi la voix communautaire au sens la plus large possible. C'est pour l'une de ces places que le vote est ouvert cette semaine !

Ceux avec le droit de vote partiel

Un conseiller en diversité est nommé par le FPL avec le soutien du conseil pour favoriser l'intégration au sein du projet des populations le plus souvent discriminées. Son objectif est donc de déterminer les programmes pour régler cette problématique et résoudre les conflits associés qui peuvent se présenter.

Un gestionnaire du programme Fedora qui s'occupe du planning des différentes versions de Fedora. Il s'assure du bon respect des délais, du suivi des fonctionnalités et des cycles de tests. Il fait également office de secrétaire du conseil. C'est un employé de Red Hat qui occupe ce rôle toujours avec l'approbation du conseil.

FESCo

Le FESCo (Fedora Engineering Steering Committee) est un conseil entièrement composé de membres élus et totalement dévoués à l'aspect technique du projet Fedora.

Ils vont donc traiter en particulier les points suivants :

Le responsable de ce groupe est tournant. Les 9 membres sont élus pour un an, sachant que chaque élection renouvelle la moitié du collège.

FAmSCo

Le FAmSCo (Fedora Ambassadors Steering Committee) est l'équivalent du FESCo sur l'aspect plus humain du projet. Pendant que le FESCo se préoccupera beaucoup plus des empaqueteurs, la préoccupation de ce conseil est plutôt l'ambassadeur.

Voici un exemple des thèmes dont il a compétence :

Les 7 membres de cette équipe sont également entièrement élus avec une durée de mandat d'un an. Chaque élection renouvelle le collège par moitié.

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

Thuban : Un GUI en python : TP 1, une visionneuse d'images

mercredi 11 janvier 2017 à 17:31

Marre de tous ces tutos qui commencent avec un "Bonjour monde". J'aime pas le monde moi. À la place, je vous propose de faire une visionneuse d'images que nous appelerons "tkv" afin d'aller mater les dessins de Péhä.

Vous aurez besoin de :

Voici le code qui va nous servir de point de départ, à enregistrer dans un fichier tkv.py :

#!/usr/bin/env python3
# -*- coding:Utf-8 -*- 

import urllib.request
from tkinter import *
from PIL import Image, ImageTk

Vous pouvez tester ce code avec la commande :

python3.4 tkv.py

Hé, mais c'est nul ton truc !

Patience ^^ . Il ne se passe rien pour l'instant, mis à part l'import des bibliothèques qui vont nous être utiles. S'il y a des erreurs, c'est qu'il vous manque tkinter ou la bibliothèque PIL.

Quelques commentaires maintenant, intégrés au code :

#!/usr/bin/env python3
# -*- coding:Utf-8 -*- 

import urllib.request     # On veut télécharger des trucs
from tkinter import *     # Là, on appelle tkinter
from PIL import Image, ImageTk     # On va afficher des images

On code en dessous de ces lignes. Pour commencer, on affiche la fenêtre avec :

w = Tk()
w.mainloop()

Si vous lancez le script, vous verrez un carré gris.

On est encore un peu loin de ce que l'on souhaite :)
La première ligne crée une instance de notre fenêtre, et l'appel de w.mainloop() la "démarre".
Avant cette dernière ligne, nous allons personnaliser notre application.

Afin d'afficher les images, on va ajouter dans la fenêtre un espace qui servira de conteneur. Il s'agit d'une "Frame" :

mainframe = Frame(w)
mainframe.pack(fill=BOTH, expand=True, padx=15, pady=15)

Remarquez qu'on passe à Frame(w) le widget dans laquelle elle est contenue. On parle de widget "parent".

Ensuite, on attache notre widget avec la fonction "pack". Nous indiquons quelques paramètres afin qu'elle remplisse bien toute la fenêtre (fill=BOTH, expand=True). De plus, on définit une marge, totalement facultative avec les paramètres padx et pady.

Si vous lancez le code, vous ne verrez aucun changement pour l'instant.

Maintenant, on va récupérer une image à afficher. On commence douvement avec une image qui est en ligne que l'on affichera dans mainframe.

Pour télécharger l'image, on utilise les lignes suivantes. C'est du python très bête, puisque ce n'est pas l'objet de l'article. Cette image sera enregistrée dans /tmp/image.jpg.

url="https://pbs.twimg.com/media/C1Zv9ZbXEAA4-W0.jpg"
urllib.request.urlretrieve(url, "/tmp/image.jpg")

Une fois cette image récupérée, nous la chargeons en mémoire :

image = Image.open(img_path)
img = ImageTk.PhotoImage(image)

Ne reste plus qu'à mettre cette image dans un widget. Ici, je vais la mettre dans un widget de type "Label", habituellement utilisé pour afficher du texte, mais qui peut aussi contenir une image :

img_widget = Label(mainframe, image=img)
img_widget.pack()

Remarquez que l'on met l'image dans le conteneur "mainframe", puis qu'on l'accroche dedans avec la fonction "pack".

Testez le code tel qu'il est actuellement :

#!/usr/bin/env python
# -*- coding:Utf-8 -*- 

import urllib.request
from tkinter import *
from PIL import Image, ImageTk

# Notre fenêtre principale
w = Tk()

# Un conteneur dans la fenêtre
mainframe = Frame(w)
mainframe.pack(fill=BOTH,expand=True, padx=15, pady=15)

# Téléchargement de l'image
url="https://pbs.twimg.com/media/C1Zv9ZbXEAA4-W0.jpg"
img_path="/tmp/image.jpg"
urllib.request.urlretrieve(url, img_path)

# Chargement de l'image
image = Image.open(img_path)
img = ImageTk.PhotoImage(image)

# Insertion de l'image dans le conteneur.
img_widget = Label(mainframe, image=img)
img_widget.pack()

# Démarrage du programme
w.mainloop()

Tout fonctionne comme prévu, sauf que l'image est trop grande. On va donc chercher à savoir s'il faut la redimensionner.
Déjà, on récupère les dimensions de l'écran :

gap = 100 # marge par rapport aux bords de l'écran
screen_width = w.winfo_screenwidth() - gap
screen_height = w.winfo_screenheight() - gap

On les compare aux dimensions de l'image. Si nécessaire, on la redimensionne avec un bête calcul de proportionnalité :

if image.width > screen_width : 
    image = image.resize((screen_width, int(image.height * screen_width / image.width)), Image.ANTIALIAS)
if image.height > screen_height :   
    image = image.resize((int(image.width * screen_height / image.height), screen_height), Image.ANTIALIAS)

Et voilà, notre image apparaît maintenant correctement :

Avant de se quitter à la fin de ce gros TP, on va améliorer un petit peu l'apparence de notre fenêtre.

On va déjà lui donner un titre :

w.title("tkv : visionneuse d'images")

Puis on définit un fond noir :

w.configure(background='#000000')

C'est la fenêtre qui est mise en noir. Et puisqu'on a laissé une marge lorsqu'on a ajouté le conteneur principal, ça nous permet de la voir.

C'est déjà un peu mieux :

Ouf, ça fait déjà beaucoup pour une première étape. Vous aurez remarqué que les parties les plus difficiles concernent le téléchargement de l'image et son redimensionnement. À côté de ça, l'utilisation de tkinter est d'une grande simplicité.

La prochaine fois, nous verrons comment choisir une image sur le disque de l'ordinateur et comment ajouter quelques boutons pour faire défiler les images.

À bientôt !

ps : voici le code final :


#!/usr/bin/env python
# -*- coding:Utf-8 -*- 

import urllib.request
from tkinter import *
from PIL import Image, ImageTk


# Notre fenêtre principale
w = Tk()
w.title("tkv : visionneuse d'images") # Un titre
w.configure(background='#000000')     # Fond noir

# Un conteneur dans la fenêtre
mainframe = Frame(w)
mainframe.pack(fill=BOTH,expand=True, padx=15, pady=15)

# Téléchargement de l'image
url="https://pbs.twimg.com/media/C1Zv9ZbXEAA4-W0.jpg"
img_path="/tmp/image.jpg"
urllib.request.urlretrieve(url, img_path)

# Ouverture de l'image
image = Image.open(img_path)
# Dimensions de l'écran : 
gap = 100 # marge par rapport aux bords de l'écran
screen_width = w.winfo_screenwidth() - gap
screen_height = w.winfo_screenheight() - gap

if image.width > screen_width : 
    image = image.resize((screen_width, int(image.height * screen_width / image.width)), Image.ANTIALIAS)
if image.height > screen_height :   
    image = image.resize((int(image.width * screen_height / image.height), screen_height), Image.ANTIALIAS)

# Chargement de l'image en mémoire
img = ImageTk.PhotoImage(image)

# Insertion de l'image dans le conteneur.
img_widget = Label(mainframe, image=img)
img_widget.pack()

# Démarrage du programme
w.mainloop()

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

Articles similaires

Framablog : Framaestro : menez vos réunions et collaborations à la baguette !

mercredi 11 janvier 2017 à 16:57

Vous souhaiteriez afficher et partager, dans un seul et même onglet, une page d’écriture collaborative, un site web, une visio-conférence et un tableur… ?

Pas de problème : avec Framaestro, c’est vous qui orchestrez un bureau collaboratif !

Plusieurs outils dans une seule page web

C’est, en quelque sorte, le défi que nous avons lancé à JosephK. Comment orchestrer, sur une seule page web, de multiples services Framasoft afin d’avoir tous les outils nécessaires à sa réunion, aux discussions, à la collaboration sur des documents, etc. ? Imaginez que sur une seule et même page web, à l’intérieur de cadres, vous puissiez afficher :

Lorsqu’une image vaut mieux que nombre d’explications…

Avec Framaestro, c’est à vous d’orchestrer un bureau collaboratif comme vous l’entendez ! Il vous suffit de créer votre projet (comme pour un pad : vous choisissez simplement son nom), d’ajouter les cadres que vous voulez y voir (par exemple un pad, une visio-conf, et des pages web), de les arranger comme bon vous semble, puis de partager l’URL (l’adresse web) de votre Framaestro avec vos collaborateurs et collaboratrices.

Dès lors, vous pouvez utiliser ensemble et en même temps, tous les outils choisis.

Une création originale pour des usages multiples

Cela fait quelques semaines, maintenant, que Pierre-Yves a lancé l’idée d’un tel (méta-)outil. C’est JosephK qui a saisi la balle au bond, afin de nous coder cela aux petits oignons. En se basant sur de multiples briques existantes (le principe des iframes, JSPanel, Bootstrap, TogetherJS, de l’IRC pour le tchat…), il a créé un service, qui utilise d’autres services, et dont les possibilités d’applications sont nombreuses !

Bien entendu, il s’agit là d’une toute première version, avec ses limites et ses lacunes. L’internationalisation n’est pas encore intégrée (donc, pour l’instant, la seule langue disponible est le Français), il y a des efforts à fournir pour rendre ce service accessible aux personnes en situation de handicap (l’accessibilité nous tient à cœur), et il existe des restrictions sur les sites web que l’on peut afficher (liées à la sécurité de ces sites, tout est expliqué lorsque vous utilisez cette fonctionnalité). Pour nous aider à améliorer ce code, vous pouvez y contribuer sur notre forge logicielle, ou bien encore suggérer des améliorations par ici.

Néanmoins, Framaestro vous permet d’ores et déjà de nombreuses choses :

En réunion, sur l’écran de votre rétro-projecteur, vous voulez afficher de multiples outils avec lesquels tous les participants peuvent collaborer sans en modifier l’agencement ni en rajouter ? Pas de souci, Framaestro le fait.

À distance, vous souhaitez créer un espace de collaboration libre, où chacun-e peut voir les curseurs et clics des autres, tout en ajoutant les cadres qu’iels veulent ? No problemo, Framaestro le fait aussi.

Vous en avez marre des Frama-services, mais voulez simplement afficher plusieurs pages web bien agencées sur une seule et même page ? OK : Framaestro fait ça tranquillou.

Vous voulez juste reprendre le principe, l’installer sur votre serveur pour y mettre vos propres outils ? Avec le tuto d’installation disponible sur le Framacloud, ça le fera.

En fait, il y a une chose que Framaestro ne fait pas…

…c’est le café.
Framaestro ne fait pas le café.
(Désolé.)

Les Framaoliques anonymes se réunissent sur Framaestro.

Afin de vous présenter un exemple concret, nous avons décidé d’imaginer la réunion d’un groupe de parole de personnes atteintes d’une addiction, d’une maladie terrible : celle des gens qui mettent « Frama- » partout dans leurs phrases. Pour préserver leur anonymat, nous avions décidé de les appeler « Hioupou », « Yves-Pierre », et « LàPeuple ». Merci de votre compréhension.

Hioupou est chargé de préparer la prochaine réunion des Framaoliques Anonymes. Comme chaque semaine, ce petit groupe se réunit en ligne pour se soutenir, libérer la parole, et arriver à vivre une vie sereine, comme tout le monde, une vie où on ne dit pas « Tu peux me passer la Framagrafeuse ? »

Cette semaine, au lieu d’utiliser un (scrogneugneu-)Pad pour écrire ensemble le contenu de la réunion, et un (non-je-le-dirai-pas-)Talk pour la visio-conférence, il décide d’utiliser Framaestro (snif, je l’ai dit) où tout peut se trouver au même endroit.

Il se rend donc sur le site, et choisi le nom de son projet « 20160112ReunionFA ».

il a tenté « 2016 01 12 Réunion FA » avant de lire que les espaces et les lettres accentuées ne sont pas admises…

Il tombe sur une page blanche, avec une barre d’outils en haut. Certainement la page qui sera partagée avec ses collègues. Il clique donc sur le bouton « Ajouter » en haut à droite et décide de commencer par ajouter un Pad à durée hebdomadaire.

Le menu « Ajouter » est assez explicite, et ne contient que peu de « Frama- » ;)

En quelques clics, il décide d’afficher aussi sur ce bureau partagé la page « Addiction » de Wikipédia, une visio-conférence (avec le bouton ), ainsi qu’un salon de tchat par IRC (bouton ) pour les anonymes qui ne veulent pas utiliser la visio conf. Cela ne lui demande pas trop d’efforts…

Après avoir un peu joué à déplacer les cadres et à les redimensionner (seul le cadre Framatalk lui a donné du fil à retordre, et en même temps c’est un cadre vidéo ^^), il arrive à un joli résultat !

Et voilà le résultat !

Il ne lui reste plus qu’à partager son travail avec les autres membres des Framaoliques Anonymes ! Il repère assez vite le bouton de partage , et voit qu’il a deux possibilités : un partage simple avec le permalien (il suffit de copier/coller le lien du dessus dans un email à Yves-Pierre et LàPeuple), ou un partage activant certaines options collaboratives. Aventureux, Hioupou choisit de partager selon les options cochées, et demande à Framaestro de lui raccourcir le lien : ce sera plus pratique à faire passer !

Le menu de partage se personnalise en quelques clics.

Une joyeuse réunion en ligne plus tard, grâce à Framaestro, les Framaoliques Anonymes décident de franchir une nouvelle étape dans leur guérison, en arrêtant collectivement de dire qu’ils trempent leurs Frama-chips dans du Fraguacamole. Voilà une réunion rondement menée !

Bien entendu, ce n’est là qu’une des utilisations possibles de Framaestro… à vous d’inventer la vôtre !

Autre utilisation possible : n’afficher que des sites web !

Pour aller plus loin :

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

nIQnutn : Aller plus loin avec reveal.js

mercredi 11 janvier 2017 à 10:00

reveal.js est un outil très utile pour faire des présentations en HTML. Il propose en plus d'utiliser la syntaxe Markdown. Son utilisation est relativement simple et ne nécessite pas de logiciels spécifiques.

Il existe encore quelques options très intéressantes à connaître pour réaliser votre présentation.

Chargement différé

Si vous réalisez une présentation avec beaucoup de contenu multimédia, le chargement du diaporama pourrait être long. L'utilisation du lazy loading (ou chargement différé) permet de charger le contenu multimédia que pour les n diapos suivantes.

Cela permet d'être plus réactif lors du lancement de la présentation tout en évitant d'avoir des temps de chargement pendant.

Pour utiliser le chargement différé, il faut remplacer "src" par "data-src".


code

Le chargement différé peut être utilisé pour les images, les vidéos, les fichiers audio et les iframes.

Configuration

Il est possible de modifier le nombre de slides à charger:


code
Reveal.initialize({
	...
	viewDistance: 3,   // Number of slides away from the current that are visible
	...
})

https://github.com/hakimel/reveal.js#lazy-loading

Code

Il est possible de créer un bloc de code éditable:


code

		$(document).ready(function() {
		  $('pre code').each(function(i, block) {
		    hljs.highlightBlock(block);
		  });
		});
	

Il est possible de supprimer les lignes vides (en dessus et en dessous du bloc de code):


code



		$(document).ready(function() {
		  $('pre code').each(function(i, block) {
		    hljs.highlightBlock(block);
		  });
		});
	

https://github.com/hakimel/reveal.js#code-syntax-highlighting

Animation avancée

Il est possible de définir l'ordre d'apparition d'un élément avec "data-fragment-index":


code

Et pour finir, le troisième

En premier

Ensuite le deuxième

https://github.com/hakimel/reveal.js#fragments

Transition avancée

On peut définir la vitesse de transition entre les diaporama.

Pour définir la vitesse de transition pour l'ensemble du diaporama:


code
Reveal.initialize({
	...
	transitionSpeed: 'default', // default, fast, slow
	...
})

Pour définir la vitesse de transition pour une seule diapo:


code

Choisir la vitesse de transition: default, fast or slow!

On peut définir un type de transition pour l'apparition et un autre pour la disparition de la diapo.
Il faut suffixer le type de transition avec "-in" et "-out":


code
zoom puis slide

https://github.com/hakimel/reveal.js#slide-transitions

Étirer un élément

Il est possible d'étirer un élément (image, vidéo, ...) pour qu'il utilise le maximum d'espace sur la diapo.


code

https://github.com/hakimel/reveal.js#stretching-elements

Note

Il existe une méthode alternative pour insérer des notes dans la présentation.


code

Appuyer sur la touche S pour afficher les notes.

Titre sur les diapos verticales

On peut insérer un titre sur l'ensemble des diapos verticales.
Il faut ajouter le titre juste avant de créer les diapos X et Y.


code
Titre visible
Diapo X
Diapo Y

Conclusion

Je vous ai présenté l'essentiel des fonctionnalités qui me semblent intéressantes (pour mon usage personnel). La documentation officielle contient encore quelques éléments, n'hésitez pas à la consulter pour en apprendre plus.

Pour ceux qui sont à l'aise avec HTML, CSS et javascript il y aura la possibilité d'être beaucoup plus créatif.
Je pense notamment à la création de nouveaux thèmes.

N'hésitez pas à partager vos trucs et astuces sur reveal.js.

Ressources


2016 nIQnutn CC-BY

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

I'm richer than you! infinity loop