PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Renault : Petit bilan de Rawhide, épisode 5, septembre 2017

samedi 16 septembre 2017 à 23:30

Je n'ai pas écrit de bilan de Rawhide en juin, juillet et août, l'approche de la version finale de Fedora 26 a amené trop peu de changements visibles pour que ce soit pertinent de les noter au départ puis j'ai manqué de temps pour traiter les avancées de Fedora 27.

Fedora 26 étant disponible depuis le 11 juillet, mon ordinateur personnel est repassé aussi tôt sur Fedora Rawhide qui est devenu il y a un mois Fedora 27 en devenir.

Fedora 27 Beta va d'ailleurs bientôt arriver, d'ici quelques semaines. Ce sera une première sans version Alpha préliminaire.

Changements

Dès le début GNOME 3.26 a des changements assez visibles. Je vous invite à lire les notes de versions pour plus de détails (et les illustrations). L'utilitaire gnome-tweak-tool a été remanié, les options sont plus nombreuses et le style de sélection ressemble à l'interface de GNOME Builder. Le centre de contrôle de GNOME a été également très modifié, avec une nouvelle organisation via cette barre latérale permanente et la refonte de nombreuses pages comme ce qui touche à l'affichage ou au réseau.

Je ne sais pas pourquoi mais la police par défaut de GNOME Terminal (police à chasse fixe) est Monospace Regular ce qui change bien entendu le rendu.

Quand les fenêtres dans GNOME sont rétrécies ou agrandies, il y a un nouvel effet visuel. Rien de sensationnel, mais c'est plutôt agréable sans pertes de performance dans la foulée j'ai l'impression. La barre de GNOME devient également transparente s'il n'y a pas de fenêtres maximisées.

Pendant quelques semaines, Empathy a également bénéficié de la refonte de son interface pour être plus homogène avec les autres applications GNOME en adoptant une interface proche de Polari. Mais cela était expérimental et l'interface habituelle a repli place. En espérant qu'il reviendra bientôt.

Et bien d'autres que je n'ai sans doute pas remarqué ou qui sont plus insignifiants.

Problèmes

Rawhide comporte bien évidemment de bogues. Même si des procédures doivent être mises en place durant ce cycle pour améliorer la qualité globale de cette branche de Fedora, des bogues importants resteront probablement présents.

En premier lieu, mon système de fichier /home chiffré avec LUKS n'était plus monté automatiquement. C'est plutôt gênant, on doit le faire à la main mais heureusement sans autres conséquences notamment en terme de cohérence des données. Heureusement corrigé depuis.

Un autre bogue, assez pénible, le sélecteur de fichier de GTK crashe. Donc dès qu'il faut choisir / ajouter un fichier dans un programme, l'application plante. Cela a été corrigé avant que je n'en fasse un rapport.

Firefox 55 a été oublié des mises à jour des paquets, à la base suite à des soucis pour le compiler puis par oubli du mainteneur. :-)

Sinon GNOME est très instable. La session se ferme régulièrement (toutes les heures presque) voire à certains moment comme à l'ouverture d'une machine virtuelle. Beaucoup de rapports de bogues tournent autours de ce sujet. Il semble que le composant gjs soit le fautif et une correction semble en cours. C'est rare que GNOME soit autant en difficulté et étant donné l'importance du sujet Fedora bloque l'évolution du cycle de F27 le temps que cela se calme.

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

Cenwen : Remplacer avantageusement Shutter par HotShots

samedi 16 septembre 2017 à 20:19

Fervent utilisateur de Shutter depuis de nombreuses années, je me suis retrouvé sans logiciel de capture d’écran il y a quelques mois. En effet, le projet n’ayant pas eu de maj depuis au moins 2 ans (cela a été fait récemment) et les bureaux et librairies graphiques ou pas évoluant durant ce laps de temps, il m’a été impossible de lancer le logiciel après une maj de Manjaro. Cela ne sentait pas bon pour l’avenir , vu que cette distribution en rolling-release est à la pointe des dernières versions en tout genre, que ce soit pour l’environnement ou bien pour les librairies. Bref, il fallait que je trouve une solution. Mon choix s’est alors porté sur HotShots, écrit en C++ et QT4 .

Hum HotShots. Est-ce que cela se mange ?

Traduit en 21 langues, Hotshots permet de réaliser des captures d’écrans dans différents formats et de leurs appliquer des modifications diverses, le plus facilement du monde.

Les caractéristiques principales de cet outil sont :

 

Comment l’installer ?

Comme d’habitude sous Linux, vous avez le choix pour installer et tester ce logiciel. Soit vous utilisez votre gestionnaire de paquets comme Octopi, Pacmac, Synaptic, Linux Mint Software Center, Ubuntu Software Center, …. , soit en ligne de commande.

Vu que pour Archlinux et dérivées dont Manjaro, le logiciel est disponible sur AUR, la ligne de commande sera :

yaourt -S hotshots

Si vous êtes sur Ubuntu et dérivés dont Linux Mint, la commande sera la suivante :

sudo apt-get install hotshots

 

Présentation rapide de l’interface

L’interface dispose de 3 zones principales.

Tout en haut, vous avez la barre d’outils qui permet un accès rapide aux principales fonctionnalités du logiciel, à savoir :

Au centre se situe la deuxième zone, qui est en fait la zone d’affichage de l’image.

En bas, se trouve la troisième et dernière zone dans laquelle vous trouverez les paramètres principaux de l’image. Cette zone est elle-même découpée en deux parties. A gauche vous pouvez reprendre le même cliché (pratique quand vous capturer une région). Quant à celle de droite, vous pouvez définir le répertoire de sortie, le mode de capture, le délai de la capture, l’action à réaliser après la capture.

L’éditeur d’écran est quant à lui découpé en quatre zones.

On retrouve tout en haut la fameuse barre d’outils qui permet là aussi un accès rapide aux fonctions essentielles bien que celle-ci soit un peu plus étoffée en fonctionnalités que celle de l’interface principale. Nous retrouvons de gauche à droite :

Au centre, se trouve la seconde zone qui correspond à l’image ouverte.

A sa gauche, verticalement, nous retrouvons une autre barre d’outils fort intéressante. Celle-ci comporte des outils de dessin basiques qui sont les suivants:

Enfin, la dernière zone interagit avec les deux derniers points de la précédente. D’un clic, vous modifier la couleur de celles-ci avec le choix que vous venez de sélectionner dans la quatrième zone.

Un dernier mot

Comme vous avez pu le constater tout au long de cet article, HotShots est un outil qui vaut le détour et qui a sa place au sein de votre bureau. Certes, j’ai pu noter quelques désagréments mineurs différents selon la distribution utilisée avec toutefois le même environnement. Sur Manjaro, les icônes des actions réalisables dans le systray ne sont pas affichées contrairement à Linux Mint. A l’inverse, l’icône de l’application ne s’affiche nulle part que ce soit dans le menu ou bien quand l’application est ouverte sur Mint. Ce sont cependant des remarques mineurs, n’empêchant nullement l’utilisation journalière de l’application avec une efficacité redoutable.

Un dernier mot avant de finir cet article, concerne l’éditeur de capture d’écran. Cet outil est à lui seul une application entière de dessin. Toutefois, il répond efficacement à l’essentiel et même plus. Une documentation expliquant les diverses fonctionnalités de ces outils serait le bienvenue car certains sont un peu obscurs à l’usage.


Classé dans:Découverte, Logiciels, News, Planet-Libre Tagged: C++, Dessin, Hotshots, Image, Linux, Logiciels

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

Full Circle Magazine FR : Pour la rentrée

samedi 16 septembre 2017 à 18:39

Bonjour !

Aujourd'hui, à peine deux semaines après la sortie du numéro en anglais, l'équipe française est heureuse de vous présenter ce numéro 124,du mois d'août 2017, en français. Il peut être téléchargé ou visionné sur notre page NUMÉROS ou téléchargé directement en cliquant sur la photo de couverture ci-dessous.

issue124fr.png

Bien que les numéros deviennent de plus en plus courts, vous y trouverez notamment :

N'hésitez pas à envoyer vos propres articles, critiques, tutoriels, opinions ou histoires, etc., en anglais, à Ronnie@fullcirclemagazine.org, car sans les articles des lecteurs, la revue ne pourra pas exister. Au besoin, et si votre prose n'est pas trop long, on se fera un plaisir de le traduire du français en anglais (webmaster@fullcirclemag.fr).

En attendant, bonne lecture !

Gravatar de Full Circle Magazine FR
Original post of Full Circle Magazine FR.Votez pour ce billet sur Planet Libre.

Articles similaires

OLPC France : Une plateforme de traduction pour Sugarizer

samedi 16 septembre 2017 à 11:24

Et si Sugarizer  – un goût de Sugar sur n’importe quelle machine  – pouvait être disponible dans votre langue ?

Pour faciliter les efforts de traduction de la communauté, nous avons unifié tous les fichiers sources à traduire pour Sugarizer (Sugarizer core, le site web Sugarizer website, les activités incluses et le future  Sugarizer Server dashboard) dans une nouvelle plate-forme:

http://translate.sugarizer.org

Cliquez simplement sur cette URL et vous pourrez démarrer la traduction:

Grâce à Weblate l’outil utiliser pour cette plateforme, toutes les nouvelles traductions seront intégrés dans les dépôts correspondants sans autres actions de votre part.

N’hésitez pas à nous solliciter pour toutes questions ou problèmes.

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

Articles similaires

Marthym : Hello OSGi World, Part 4, Injection de dépendances

samedi 16 septembre 2017 à 02:00

Quelles sont donc les raisons d’utiliser OSGi ? On en a vu plusieurs jusqu’ici :

Mais OSGi c’est aussi et surtout un framework d’injection de dépendances. Comme pour tout dans l’univers OSGi, l’injection est une spécification et il existe plusieurs implémentations comme iPOJO ou Declarative Service. On ne verra pas iPOJO parce que je suis pas fan et j’ai plus l’habitude d’utiliser DS.

Declarative Service

DS permet de déclarer des composants et des services qui s’injectent les uns les autres. Initialement tout doit être déclaré dans des XML et dans le MANIFEST.MF, encore un truc bien fastidieux ! Heureusement, SCR vient à notre secours et permet de faire tout ça via des annotations ce qui rend la chose plus sympa et plus “actuelle”.

Ajoutons donc les dépendances nécessaires au projet:

  
      org.apache.felix
      org.apache.felix.scr
      ${felix-scr.version}
  
  
      org.osgi
      osgi.cmpn
      ${osgi.core.version}
      provided
  

Création de composants

Voici à quoi ressemble un composant

import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(name = "http-server", immediate = true)
public final class HttpServerComponent {
    private static final Logger LOGGER = LoggerFactory.getLogger(HttpServerComponent.class);

    @Activate
    private void startHttpServer() {
        LOGGER.info("HTTP Server started on port {}", 8888);
    }
}

C’est l’annotation @Component qui définit un composant. name détermine le nom du composant, l’information n’est pas obligatoire, si absente le composant aura le nom de la classe. immediate permet de dire que le composant doit être instancié dès que le bundle est activé, sans ça le composant ne sera instancié que quand il sera nécessaire. Comme aucun autre composant ne dépend du nôtre, si on ne le met pas immédiate, on ne verra rien.

L’annotation @Activate détermine la méthode qui sera exécutée lors de l’activation du composant. Ici on se limite à un log pour vérifier que cela fonctionne.

Et un coup de mvn clean package puis on lance l’application et …

____________________________
Welcome to Apache Felix Gogo

g! 21:43:51.533 [fileinstall-application] INFO fr.ght1pc9kc.how.HowActivator - HOW is now Activated !
21:43:51.554 [fileinstall-application] INFO fr.ght1pc9kc.how.HttpServerComponent - HTTP Server started on port 8888

On voit bien les deux messages. Et à ce moment vous vous dites “merde mais l’activateur ça sert du coup ?”. Ben en fait non, SCR instancie les composant et exécute les méthodes @Activate du coup c’est plus très utile. Après c’est quand même pas la même chose, l’activateur agit au niveau bundle alors que @Activate agit au niveau composant.

Bref on peut supprimer l’activateur et la toutes section du pom de how-rest qui devient elle aussi inutile. Dans le jar maintenant, au même niveau que META-INT on trouve OSGI-INF qui contient les déclarations XML des composants que le maven-bundle-plugin a généré pour nous.

Gogo gadgeto composant

Jetons un œil coté gogo shell, un coup de help montre une nouvelle série de commandes, les scr:. Essayez scr:list :

g! scr:list
 BundleId Component Name Default State
    Component Id State      PIDs (Factory PID)
 [   9]   http-server  enabled
    [   0] [active      ] 
g! 

Pour chaque bundle, cette commande liste les composants et leur état. C’est très utile si un composant ne s’active pas, pour savoir ce qu’il lui manque, quelles dépendances ne sont pas satisfaites par exemple.

Dis Bonjour !

Ben oui on a fait plein de trucs mais on a toujours pas notre Hello World. Maintenant que la machinerie est en place on peut lancer un serveur HTTP à l’activation de notre composant http-server :

    @Activate
    private void startHttpServer() {
        Undertow server = Undertow.builder()
                .addHttpListener(HTTP_PORT, "localhost")
                .setHandler(exchange -> {
                    exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
                    exchange.getResponseSender().send("Hello OSGi World");
                }).build();
        server.start();
        LOGGER.info("HTTP Server started on port {}", HTTP_PORT);
    }

J’ai pris un serveur Undertow parce qu’il est rapide simple, non-bloquant (killer feature dans notre cas !) et en prime il est compatible OSGi.

Je vous laisse voir les poms pour la liste des imports.

Il ne reste plus qu’à relancer l’application pour voir si ça fonctionne.

Ordre et dépendances

ERROR: [http-server(0)] The startHttpServer method has thrown an exception
java.lang.IllegalArgumentException: XNIO001001: No XNIO provider found 
        at org.xnio.Xnio.doGetInstance(Xnio.java:270)
        at org.xnio.Xnio.getInstance(Xnio.java:187)
        at io.undertow.Undertow.start(Undertow.java:114)
        at fr.ght1pc9kc.how.HttpServerComponent.startHttpServer(HttpServerComponent.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229)
        at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39)
        at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650)
        at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506)
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:307)
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:299)

Voilà un autre inconvénient d’OSGi, l’ordre de chargement des bundles compte. La plupart du temps, les bundles dépendent les uns des autres et le framwork les résous en chargeant les bundles dans l’ordre. Mais là on a un bundle xnio.nio qui est une implémentation, personne ne dépend de lui. Mais tant qu’il n’est pas là le serveur Undertow ne peut être lancé. Mais comme personne ne dépend ni de xnio.nio ni de how-rest les deux bundles sont chargés par ordre alphabétique et l’activation de how-rest est déclenché avant que xnio.nio ne soit disponible.

Solution:

En regardant dans le code d’Undertow ou dans la documentation, on voit que Undertow, pour être lancé, a besoin d’une instance de Xnio. Comme c’est souvent le cas dans les modules standard qui “supportent” OSGi, la façon dont Xnio génère son instance et la façon dont Undertow en dépend ne permet pas d’éviter ce souci. Du coup c’est à nous de le gérer. Le plus simple pour ça est d’expliquer à OSGi que le module http-server ne peut être activé tant qu’il n’existe pas une instance accessible de Xnio. On ajoute la dépendance comme suit :

    @Reference
    private void waitForXnio(Xnio xnio) {
        LOGGER.debug("XNIO Implementation found: {}", xnio);
    }

C’est l’annotation @Reference qui indique à Felix que le composant à besoin d’une instance de Xnio.

On rebuild l’application et ça démarre correctement ! Rendez-vous sur la page http://localhost:8080/ pour y voir s’affiche le message de bienvenue.

Le felix-cache

Il reste cependant encore un souci, si l’on stoppe (CTRL^C) et que l’on relance, on prend à nouveau cette erreur. C’est lié au cache que Felix génère. J’ignore pourquoi mais un chargement depuis le cache provoque la même erreur. Pour palier ce souci, on demande à Felix de recharger son cache à chaque démarrage. Dans le fichier de configuration Felix on ajoute la ligne:

org.osgi.framework.storage.clean=onFirstInit

Dépendances Multiples

Pour finir, modifions un peu l’application pour la rendre plus dynamique. L’idée de faire en sorte que le serveur découvre les nouvelles route dynamiquement.

Pour cela, on crée une interface Route comme suit :

public interface Route extends HttpHandler {
    String getRoute();
}

Et dans le composant HTTP on ajoute une dépendance MULTIPLE à Route

@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
private void addHttpHandler(Route handler) {
    routingHandler.get(handler.getRoute(), handler);
}

private void removeHttpHandler(Route handler) {
    routingHandler.remove(handler.getRoute());
}

Ainsi chaque Route qui apparaîtra dans les bundles installé viendra s’ajouter à celle existantes. La présence d’une méthode removeHttpHandler est obligatoire pour packager le bundle. BND utilise le nom pour trouver la bonne méthode.

Une route ressemble à ça :

@Component
public class HelloWorldRoute implements Route {
    @Override
    public void handleRequest(HttpServerExchange exchange) throws Exception {
        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
        exchange.getResponseSender().send("Hello OSGi World");
    }

    @Override
    public String getRoute() {
        return "/hello";
    }
}

Si vous compilez les sources 4.0 il y a 2 routes, /hello et /bonjour.

C’est un exemple simple pour illustré les dépendances multiples, mais il est possible de faire beaucoup mieux, des Controllers avec l’API JAX-RS.

Next

Donc voilà, on a vu comment OSGi gère les dépendances. La prochaine fois on verra les Fragments Bundles, à quoi ça sert et comment on fait ça.

Hello OSGi World, Part 4, Injection de dépendances écrit à l'origine par Marthym pour J'ai acheté un PC neuf cassé ... le September 16, 2017.

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