PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

blog-libre : Cheminement d’un power user : De Windows à GNU/Linux

samedi 18 novembre 2017 à 13:00

La première fois que j’ai croisé le mot power user, c’était chez Sebsauvage il y a plus de 10 ans.

La définition en Français « Utilisateur intensif » étant trop pauvre, je vais citer la version Anglaise de Power user : « A power user or experienced user is a computer user who uses advanced features of computer hardware, operating systems, programs, or web sites which are not used by the average user. A power user may not have extensive technical knowledge of the systems they use and is not capable of computer programming or system administration, but is rather characterised by the competence or desire to make the most intensive use of computer programs or systems ».

« Un power user peut ne pas avoir une connaissance technique approfondie des systèmes qu’il utilise et n’est pas en mesure de programmer ou d’administrer des systèmes informatiques, mais se caractérise plutôt par la compétence ou le désir d’utiliser le plus intensivement possible les programmes ou systèmes informatiques ». J’aime beaucoup cette définition car elle renvoie moins au niveau de l’utilisateur (débutant, expérimenté, etc.) qu’à son désir, son but : Utiliser le plus intensivement possible les programmes ou systèmes informatiques.

Cela me caractérise bien dans mon usage de l’informatique, bien mieux que sysadmin ou ingénieur ou administrateur systèmes et réseaux. Je ne me définis pas par un niveau mais par un désir, rechercher la manière la plus efficace d’utiliser les outils à ma disposition.

Frustration et impuissance

J’avais expliqué dans La quête mon parcours de Windows à GNU/Linux. L’élément déclencheur a été une terrible frustration : Être sysadmin, passer sa journée sur Windows Seven et ne pas pouvoir paramétrer ses outils exactement comme on le désire. J’étais au final impuissant devant ce système d’exploitation qui me limitait énormément.

Windows a beau proposer la plus large logithèque de tous les systèmes d’exploitation, on est limité et on n’y peut rien. Le système est conçu et vendu pour être utilisé par des centaines de millions de personnes, il n’est pas possible d’assurer un support, de proposer une expérience commune et cohérente si on laisse trop de possibilités et de choix aux utilisateurs.

Windows offre une base commune et solide aux débutants, professionnels, particuliers, etc. Microsoft en faisant cela s’adresse à une majorité écrasante d’utilisateurs mais se coupe totalement des usages différents ou plus pointus : Power users, curieux, bidouilleurs, hackers, « alter ».

Écosystème et culture

J’ai appris et compris que les mots à utiliser pour caractériser Windows et GNU/Linux n’étaient pas les mêmes. Windows amène une base commune et cohérente, GNU/Linux propose de faire des choix : systèmes d’exploitation (Debian, Ubuntu, ArchLinux, Fedora…) et bureaux (Gnome, KDE, XFCE, Mate…) entre autres.

Windows est finalement grand public même si il est relativement souple, GNU/Linux est exigeant car il impose à l’utilisateur de faire ses propres choix, de réfléchir à son usage, à ce qu’il veut, de comprendre et apprivoiser son système d’exploitation, de prendre ses responsabilités.

Windows est un système d’exploitation composé d’un seul bloc développé par Microsoft, GNU/Linux est un écosystème d’outils, de projets, de développeurs. systemd est majoritairement développé par Red Hat, Debian par le projet Debian, Gnome par le projet et la fondation Gnome, OpenSSH par quelques développeurs de OpenBSD.

Le support sur Windows sera assuré par Microsoft, par le technicien/sysadmin à votre boulot, par le voisin qui s’y connaît un peu. Sur GNU/Linux peu de distributions proposent du support autre que sur IRC, dans la documentation, dans les forums, avec d’autres personnes plus expérimentées. C’est une culture différente, on est bien moins assisté sur GNU/Linux que sur Windows, on est bien plus les mains dans le cambouis et à la recherche d’aide sur GNU/Linux. On est davantage sensible à l’entraide, aux tutos, aux gens qui développent sur leur temps libre, aux gens qui informent, qui dépannent. Aux gens qui sont là et qui font tout simplement.

La confiance est une question centrale qui nous habite car quand on enlève la relation commerciale et pécuniaire, il ne reste que les hommes, leur savoir faire, leur savoir être.

Compétences et responsabilités

Je suis chez moi à présent sur GNU/Linux. J’ai sculpté de toute pièce mon environnement informatique, celui qui me correspond au mieux, un système à mon image. Linux respecte l’utilisateur parce qu’il lui redonne le choix et les clés de son informatique. Windows se contente de masquer la complexité et de faire « les bons choix » à la place de l’utilisateur : « Pour tout résoudre, cliquez ici ».

Le problème demeure humain. Si l’utilisateur ne veut pas faire l’effort de comprendre et apprivoiser l’informatique alors il se rendra dépendant d’un tiers comme Microsoft qui entretiendra cette dépendance et en tirera ces revenus.

Dit autrement Windows est une béquille pour la majorité de ses utilisateurs, Linux est une prothèse bionique pour ceux qui se donnent la peine de l’apprivoiser et c’est définitivement l’utilisateur qui choisit entre dépendance ou pouvoir. Évidemment un grand pouvoir implique de grandes responsabilités… et pas mal de compétences.

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

mozillaZine-fr : Belle réaction à la sortie de Firefox Quantum

samedi 18 novembre 2017 à 09:26

Cette sortie a suscité beaucoup de réactions dans les médias geek et même dans les médias généralistes. Beaucoup ont reconnu que Firefox est enfin redevenu rapide. On peut se douter que certains médias généralistes n’ont pas fait d’essai comparatif poussé mais ils ont au moins manifesté un bel intérêt pour l’exploit réalisé par Mozilla et ses contributeurs. Pour fêter ça, signalons cette belle réaction d’un utilisateur de Twitter qui déclare :

C’est incroyable : en quelques années, Mozilla a inventé un langage de programmation et réinventé un navigateur moderne avec ce langage, et apparemment ça a réussi. Développer du logiciel à partir de rien, c’est une chose. Mais ce qu’ils ont fait avec Firefox, c’est sans précédent.

it's incredible that in the span of a few yrs mozilla invented a PL and re-invented a modern browser with it, and apparently *succeeded*. hacking greenfield is one thing, but what they did with firefox is unprecedented

— Alan (@alandipert) November 16, 2017

Ceci n’est qu’une réaction. Le plus important reste à observer : la courbe des parts de marché. On peut déjà constater que Firefox est légèrement repassé au-dessus de la barre des 6 % sur StatCounter. Ce n’est pas rien compte tenu de la difficulté de compter les utilisateurs de Firefox. Pour la première fois depuis des années, cette fichue courbe remonte ! Parions que ce frémissement est annonciateur d’une belle remontée.

Gravatar de mozillaZine-fr
Original post of mozillaZine-fr.Votez pour ce billet sur Planet Libre.

Ilphrin : Utiliser la Fetch API en JS avec du Symfony 3

samedi 18 novembre 2017 à 06:00

Ça faisait longtemps n’est-ce pas? ;)

Après cette absence de deux mois sans article, et encore plus sans sujet un peu technique, je reviens pour vous parler un petit peu du projet sur lequel je travaille. Dans ce projet j’ai eu à utiliser la Fetch API de JavaScript pour faire des requêtes AJAX dans un fichier JavaScript servi par un serveur en Symfony 3. C’était pas facile, mais j’y suis arrivé!

Le projet

Tout d’abord un peu de contexte. Dans le cadre de mes études, je dois réaliser un projet d’une durée de 2 ans avec un groupe de 6 étudiants (moi compris). Nous avons carte blanche sur le sujet du projet, mais celui-ci doit être validé par une série de présentation devant des jurys afin de vérifier la possibilité de transformer ce projet en startup.

Notre projet s’appelle Playficient. Nous avons constaté et rendu compte grâce à des statistiques que 20% du temps de travail (en moyenne) est perdu à cause de diverses raisons. L’une des raisons principales, et le fait de passer d’un outil informatique à un autre. De nombreux logiciels ont été crée dans le but de réduire le nombre d’outils utilisés au travail (le principe de synchronisation avec une API, ou de “Connecter” son compte Facebook, ou encore utiliser IFTTT).

Nous pensons créer un outil similaire, orienté pour les entreprises (PME/TPE et Startups précisément), qui ont un contact fort avec l’environnement informatique. Mais nous voulons aussi aller plus loin, notamment en intégrant les principes de la Gamification avec de motiver les travailleurs, mais aussi de conseils intelligent avec une IA afin de permettre aux utilisateurs de s’améliorer chaque jour sur leurs processus de travail. Pour rentre tout ça un peu plus corsé, nous voulions ce projet personnalisable, avec un système de module qui peuvent s’ajouter ou se supprimer selon le bon vouloir des utilisateurs, comme des extensions d’un site Wordpress ou le navigateur Firefox (Texte subliminal: passez à la version 57!)

(Lien du site vitrine à venir si vous voulez jeter un oeil, ou même nous faire des retours, ce qui serait vraiment gentil! =D)

Hey, tu parlais pas d’un article technique?

Effectivement il serait temps que j’en parle. Pour facilement gérer un système de module, nous sommes partis sur un développement serveur en PHP Symfony 3 avec son fonctionnement en Bundle, dont 2 personnes s’occupent principalement. Toute la partie “Front-End” est gérée par Symfony sous forme de Templates et d’Assets:

Un Template sert donc pour créer une base de page à réutiliser, ou pour créer une page spécifique à une Route bien définie. Mais on ne trouvera dans un Template que le code HTML et des balises Twig(si on est un minimum propre). Donc les Templates ne nous intéressent pas si on veut faire du JavaScript.

À l’inverse les Assets sont bien plus intéressants, puisque c’est grâce à eux que nous allons pouvoir donner au client son fichier JavaScript. Sauf qu’on a un problème: On ne dispose pas de la syntaxe Twig des Templates pour remplacer des valeurs cotées serveur dans le JavaScript.

Et cela pose problème notamment lorsque l’on a besoin de récuprer l’URL d’une Route.

FOSJSBundle à la rescousse

Comme je le disais précédemment, Symfony fonctionne pas système de Bundle, un peu comme les packages en JavaScript, ou les Gem en Ruby. Ces bundles servent de dépendances à un projet, et on peut en trouver des centaines déjà existants grâce à la communauté florissante de Symfony.

FOSJSBundle est un Bundle qui va mettre à disposition de notre code Javascript, une librairie appelée Routing pour récupérer l’URL d’un Route.

Voici comment on s’en sert:


const url = Routing.generate('route_name', {vos parametres}, urlAbsolueBool);

La fonction va nous retourner l’url correspondant à une route donnée en paramètre, exactement ce qu’il nous fallait!

Maintenant il reste à gérer la requête en elle-même. Prenons un cas d’utilisation (au hasard, ce sur quoi j’ai travaillé aujourd’hui). Nous sommes l’utilisateur X, connecté sur Playficient et possédent le module Gestionnaire de tâches. Nous avons une liste de boites, chacune correspond à une tâche et peut contenir un nombre indéfini de sous-tâches. Nous aimerions pouvoir faire un “drag’n drop” d’une sous-tâche, pour la changer de boite. Lorsque nous faisons cela, nous avons besoin de dire au serveur que nous voulons supprimer la tâche de son ancienne position, et la rajouter dans sa nouvelle position.

Pour cela, nous allons du côté de JavaScript faire une requête AJAX. Il existe plusieurs méthodes, la plus récente est l’utilisation de la Fetch API dont nous allons nous servir ici. La Fetch API fonctionne avec deux objets et une méthode:

Maintenant que vous en savez un peu plus, on va voir le code correspondant à une requête pour supprimer la sous-tâche de la boite dont elle faisait partie:


const url = Routing.generate('task_remove', {
  taskId: 1,
  parentId: 2,
});
const request = new Request(url, { method: "GET" });

fetch(request)
  .then((response) => {
    console.log("Nous avons supprimé la tâche!");
  })
  .catch((error) => {
    console.error(`Erreur lors de la suppression: ${error}`);
  });

OK? Tout est bon? Lançons le serveur et faisons la manipulation… Voici ce que la console Firefox nous ressort:

GET  http://localhost/task/2/1/remove       302 Found
GET  http://localhost/login                 200 OK
"Nous avons supprimé la tâche!"

Et malheur, lorsque nous rechargeons la page la tâche est toujours présente!

Rapidement, on se rend compte que deux requêtes ont été faites: Une pour effectivement supprimer la tâche, et un autre sur la page de connexion…étrange. Je ne vais pas passer par quatre chemin et expliquer très rapidement pourquoi on a été rédirigé et pourquoi la vraie requête ne s’est pas faite.

Nous sommes toujours l’utilisateur X, et connecté en tant que tel, le serveur à besoin de savoir au nom de qui nous faisons la requête. C’est à cette fin que sont utilisés des cookies dans Symfony. D’une page à une autre, l’utilisateur se balade avec un cookie qui lui permet de rester connecté tant qu’il ne clique pas sur “Déconnecter”.

Nous avons donc besoin dans notre requête de récupérer ce cookie et de l’envoyer, mais comment faire? En fait, c’est très simple avec l’API Fetch et Symfony, c’est un simple paramètre à l’objet Request, pour envoyer ce que l’on appelle les “Credentials”:


const request = new Request(url, { method: "GET", credentials: "same-origin" });

Relançons la requête:

GET  http://localhost/task/2/1/remove       200 OK
"Nous avons supprimé la tâche!"

Et voilà le tour est joué!

Utiliser la Fetch API, et du JavaScript en Symfony, est assez facile mais seulement quand on a compris comment le faire. (J’ai passé 3 jours à chercher comment avoir les routes en JavaScript, et à comprendre cette erreur de credentials pourtant assez simple)!

Je travaillerais à la traduction de cet article en anglais pour un peu plus de diversité (et pour travailler mon Anglais!). Je vais probablement profiter de mon séjour à Québec et de mon projet de fin d’études pour écrire un peu plus d’articles techniques. D’ailleurs, en ce moment j’essaie de créer un plugin pour Talk du CoralProject, quand ce sera fait j’aurais surement un article à écrire sur le sujet ;)

D’ici là bonne continuation à chacun et chacune

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

Thuban : Mes extensions sous Firefox 57

vendredi 17 novembre 2017 à 21:29

Avec la sortie de l'excellent Firefox 57, et puisque certains semblent manquer de certains addons, je peux me vanter de disposer de tous les addons dont j'ai besoin. En voici la liste :

Vous avez d'autres suggestions ?

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

yeKcim : GNU nano

vendredi 17 novembre 2017 à 16:04

nano est un éditeur de texte ncurses facile à prendre en main (les raccourcis les plus utiles sont affichés), il fait moins peur que vim ou emacs lorsque l’on débute. Ces derniers sont puissants et très pratiques une fois configurés et/ou pris en main. Mais il arrive que l’on soit sur une machine qui n’a pas emacs, qui n’a pas notre config de vim,… il est alors très intéressant de connaître la base de nano. Voici les raccourcis dont j’ai personnellement besoin.

Raccourcis

Base

Recherche

Navigation

Utile

Indentation

Interface

Texte

Configuration

Sur un nano non configuré, il me "suffit" alors de faire : alt+h, alt+i, alt+s, ctrl+alt+$ pour obtenir la configuration qui me convient. Pour activer cela directement, mon fichier de configuration ~/.nanorc (généré à partir d’un cp /etc/nanorc ~/.nanorc) :

set smarthome                 # équivaut à alt+h
# set morespace                 # équivaut à alt+o
set autoindent                # équivaut à alt+i
set smooth                    # équivaut à alt+s
set softwrap                  # équivaut à ctrl+alt+$
# set casesensitive             # recherche sensible à la casse quel raccourci clavier ?
# set linenumbers               # équivaut à ctrl+alt+#
set matchbrackets "(<[{)>]}"  # plus d’utilités pour alt+]
set tabsize 4                 # tabulation de 4 au lieu de 8
set tabstospaces              # espaces au lieu de tabulation

bind ^S savefile main         # ctrl+s sauvegarde
bind M-B cutwordleft main     # alt+b supprime le mot précédent le curseur
bind M-N cutwordright main    # alt+n supprime le mot suivant le curseur
bind ^Q exit main             # ctrl+q quitte
bind M-* comment main         # les alt+num ne sont pas pratiques alt+* pour commenter
bind M-' copytext main       # les alt+num ne sont pas pratiques alt+' pour copier

## To include all existing syntax definitions, you can do:
include "/usr/share/nano/*.nanorc"
## Paint the interface elements of nano.
 set titlecolor brightwhite,blue
 set statuscolor brightwhite,green
 set numbercolor cyan
 set keycolor cyan
 set functioncolor green
## In root's .nanorc you might want to use:
# set titlecolor brightwhite,red
# set statuscolor brightwhite,red
# set numbercolor magenta
# set keycolor brightmagenta
# set functioncolor magenta

Dans Tilix, nano pose quelques difficultés

alt+(↑←↓→0123456789) permettent de basculer d’un terminal à l’autre (pavage), il est donc impossible d’utiliser les raccourcis correspondants de nano :

Pour les raccourcis alt+num, il est possible d’activer capslock mais ce n’est pas idéal, surtout que ceux-ci sont vraiment utiles :

Pour résoudre ce désagrément, une solution simple consiste à ajouter la touche super à ces raccourcis clavier de Tilix : Remplacer alt+(0123456789↑←↓→) par alt+super+(0123456789↑←↓→)

Conclusion

Deux points m’énervent dans nano :

  1. La coloration syntaxique : lorsqu’il y a des \\" parmi des ", c’est vite illisible et il n’y a pas de couleur pour les espaces et tabulations (je pourrais regarder comment améliorer cela avec https://github.com/nanorc/nanorc peut-être).
  2. les raccourcis claviers sont "originaux" sans que je ne puisse comprendre la logique.

Si un gros fichier de configuration est nécessaire et que je dois apprendre de nouveaux raccourcis clavier, autant apprendre vim et ainsi jouir d’un logiciel puissant dont l’ergonomie est maximale (au détriment de l’intuitivité). Il est peut-être temps pour moi de commencer l’apprentissage…

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