PROJET AUTOBLOG


Le Hollandais Volant

source: Le Hollandais Volant

⇐ retour index

Gouvernés par des génies

samedi 5 janvier 2019 à 23:57

Ils sont vraiment exceptionnels, nos politiciens :

capture twitter
Vu que les CRS sont du mal à matraquer et gazer les manifestants, le préfet de la Somme a décidé d’interdire les casques et masques à gaz sur la voie publique…

… donc également les casques des motards, des deux-roues motorisés et des cyclistes.

… et donc vu que le casque est obligatoire pour les enfants à vélo, il est donc interdit pour les enfants de circuler à vélo dans le département de la Somme.

Woaw.

(décret initial, page 7)

Notons que ce décret n’est pas nouveau, et qu’il est identique (à par la date) à ceux lors des manifs précédentes, en Somme ou ailleurs. Ce qu’il faut quand-même retenir, c’est le rayon d’action de telles mesures : techniquement, un gamin en vélo qui se trouve là sera forcément un hors-la-loi :

Des génies, je vous dit.

Pourquoi j’ai peur de voir le code être enseigné à l’école

samedi 5 janvier 2019 à 17:30

schémas d’un PCB
Ceci est une réflexion inspirée de cet article (avec lequel je suis assez d’accord) :

Je suis totalement pour permettre aux jeunes de découvrir le monde du code : ils utilisent déjà pour la plupart des logiciels et des « choses » qui existent grâce au code. Je ne vois donc pas de raison pour leur fermer la voie. Autant pour la pyrotechnie, l’aviation ou l’armurerie, je comprends, autant pour le code, non.

D’un autre côté, si ils veulent laisser des profs enseigner le code, il va falloir faire évoluer le système en profondeur. On ne peut pas apprendre à quelqu’un a devenir un codeur, comme on n’apprend pas à quelqu’un à devenir un peintre ou un musicien.

Le code, c’est une machine à erreurs

Premièrement, je vois mal des profs (actuels et en France, je ne saurais le dire pour ailleurs) enseigner aux élèves à coder. Pour la simple raison que l’enseignement actuel est basé sur le par-cœur et sur « l’interdiction » de faire des erreurs.

Pour l’instant, que ce soit en math, en français ou en physique, si tu fais une erreur, on te retire un point : l’erreur c’est mal.

Or, la prog, c’est tout le contraire justement.
Personne, même après 30 ans, n’écrit un code qui fonctionne du premier coup. On fait des milliers d’erreurs avant d’avoir une seule fonction qui fonctionne, et on en fera mille autres pour la fonction suivantes, et ainsi de suite.

Dans la plupart des langages, si on fait un code faux, le compilateur indique où se trouve l’erreur, comment la corriger et pourquoi elle est là, mais elle laisse toujours le soin à celui qui code de corriger l’erreur. C’est une sacrée différence avec l’enseignement d’une autre langue comme l’anglais, par exemple, où l’on donne d’abord la bonne réponse (la bonne prononciation, la bonne conjugaison, etc.) puis on dit « répète après mois ».

Je ne connais aucune autre discipline où l’apprentissage est autant basée sur l’erreur que le code.

La musique ? Non : on te dis comment faire un "la", tu fais un "la". Si tu fais un "do" tu es puni car tu ne fais pas exactement ce qui est demandé.
L’art ? Non. Les math, la grammaire, l’anglais ? Pareil.
Le sport ? Non : c’est pas basé sur l’erreur, mais sur le progrès permanent. C’est important, mais c’est pas pareil. Et puis dans les sports de duel, l’erreur de l’un est le contraire d’une erreur pour l’autre, donc il est impossible de ne pas voir d’erreurs en sport.

En code, il n’y a pas de bonne réponse

Deuxièmement, parce que le code c’est de l’art : il y a 10 000 façons d’arriver au même résultat. Certains auront des avantages que d’autres n’ont pas, mais ça ne veut pas dire qu’il y a des codes "faux" et des codes "justes".

Or, combien de fois, en math par exemple, des points sont retirés sur une copie non pas parce que le résultat est faux, mais parce que la méthode pour parvenir au résultat n’est pas celle vue avec le professeur ? Ça arrive très souvent.

Parfois c’est justifié : dans un cours sur la trigonométrie, si on demande de calculer la longueur d’un côté d’un triangle, il faut utiliser la trigo et pas Pythagore.
Mais la « vraie vie » ne marche pas comme ça, et la prog non plus.

Aussi, qui dit « plusieurs façons de faire », dit « un choix à faire ».

Là encore, vous avez déjà vu la tête d’un gamin à qui on dit « tu choisis la méthode que tu veux » ? Ils sont perdus : ils ne savent pas choisir !
Trop habitués aux consignes du style « En utilisant le cosinus, calculer x. » ou « En vous servant de Pythagore, trouvez x. ». Alors qu’une consigne du style « Déterminez x. » serait tellement mieux, ne serait-ce que pour l’élève déterre lui-même les outils adéquat à la résolution du problème.

Généralement, les examens finaux (brevet, bac) sont fait comme ça : il s’agit de trouver la réponse qu’importe l’outil utilisé. Mais c’est souvent la première fois que l’élève se trouve face à ce genre de question et il panique.

Le code, c’est des tas de choix à faire : quel langage ? quel framework ? quelle fonction ? quelle API ?
Et je ne parle pas des versions, de l’IDE ou du nom des variables… Quand on voit le nombre de gens qui râlent sur la diversité des distributions Linux et sur l’impossibilité de faire un choix, c’est mal barré…

La prog, c’est sans cesse faire des choix, des choix, des choix…

… et bien-sûr, forcément, parfois on fait le mauvais choix : utiliser du C pour faire un formulaire de renseignement pour un contact, c’est une mauvaise idée.
Du coup on a encore un choix : rester sur son erreur pour ne pas perdre 15h de travail ? Ou tout balancer et recommencer avec un autre langage plus adapté ?

Il suffit de voir comment les élèves font de l’art plastique ou font leur exercice de rédaction : c’est rare qu’ils choisissent de recommencer de zéro quand ils ont passé 2h à faire un truc qui n’avance plus…

Programmer, c’est en fait revenir à ce qu’on faisait à l’école maternelle : si je tombe, je me relève. 1 fois, 5 fois, 20 fois : peu importe. Les jeunes enfants n’ont pas peur de détruire leur sculpture en pâte à modeler ou en légo, s’ils voient que ce qu’ils ont fait ne tient pas debout. Ils cassent tout et ils recommencent.

Demandez maintenant à un ingénieur à jeter un projet mort-né sur lequel il a balancé 100 k€ : il refusera.
Tout ça parce qu’il ne verra que les coûts passé, et non le gain à venir de laisser tomber ça : revenir sur des dépenses passées est impossible, donc autant cesser les dépenses inutiles maintenant plutôt que plus tard, non ?
En toute logique, oui.
Économiquement parlant, aussi.
En pratique, aucun cadre d’entreprise ne fera ça, et c’est psychologique (et cette éternelle « interdiction de faire des erreurs » en est probablement la cause).

Or en prog, justement il faut être logique. Oui, on a le droit de préférer le C au PHP, mais s’il s’agit de faire dans le web, le C est aussi adapté que prendre une voiture F1 pour labourer son jardin.

Faut pas avoir peur de casser des trucs : c’est comme ça qu’on apprend.
Et il ne faut pas non plus avoir peur de faire à sa façon, de faire différemment du prof. En code (contrairement à l’orthographe), la différence est une force.

En code, il n’y a pas d’études puis le travail.

(l’enphase est bien sur le « puis »).

Programmer c’est apprendre tout sa vie, constamment.
Que ce soit une nouvelle API, un nouveau langage, ou tout simplement de nouvelles choses à faire qu’on ne pensait pas possible avant, l’apprentissage est constant.

L’école nous dresse pourtant au contraire à apprendre des choses durant 5 ans, recracher ça en 4 heures lors d’un examen, et après c’est bon, on a le droit d’avoir les clés d’un métier pour mettre en pratique tout ce qu’on a appris. Apprentissage, validation, mise en pratique. De temps en temps on a droit à une formation de mise à niveau.

La prog, encore une fois, c’est différent : on apprend et on met en pratique tout en même temps ; et la validation est-elle instantanée : c’est le compilateur qui nous valide ça à la volée : ton code est faux, ça marche pas, tu t’arrêtes. Ton code est valide, il marche, tu peux continuer.

Si l’on n’est pas prêt à apprendre de nouvelles choses tous les jours, il ne faut pas coder.
Peut-être que dans 5 ans le langage que vous maîtrisez aujourd’hui sera oublié : il faudra vous recycler. C’est pas grave, c’est normal. Mais faudra passer par là.

Ceci est valable pour l’élève qui apprend un langage aujourd’hui, mais aussi pour le prof.

Pour conclure

Pour résumer, si j’ai peur d’une chose, c’est que l’enseignement n’évolue pas assez pour permettre d’apprendre la programmation.

Le code ce n’est pas écrire des choses justes tout le temps. C’est écrire des choses, fausses et justes, puis corriger peu à peu ce qui est faux.
Le code ce n’est pas reproduire les mêmes gestes que l’enseignant. C’est faire le choix de ses propres gestes, du moment que le résultat est celui qui est demandé.
Le code ce n’est pas apprendre 5 ans, valider en 4 heures et travailler durant 40 ans. C’est apprendre en travaillant et valider à la volée tout en même temps.

Enfin, le code est pour l’instant la seule discipline (avec le sport et éventuellement la musique) que la plupart des codeurs ont commencés par eux-même bien avant que l’école ne les mette sur cette voie.

Tous les informaticiens jusqu’à maintenant sont surtout des passionnés qui ont débuté dans leur chambre. Personne, ou alors vraiment très peu de gens, ont tapé leur première ligne de code dans une salle de classe (contrairement à une équation, un poème, un paragraphe en anglais, une réaction chimique ou une carte de l’Europe).

Donc faire découvrir le code à l’école, je suis totalement pour, histoire de révéler des talents cachés chez des jeunes qui adorent ça sans le savoir, mais l’enseigner comme on enseigne les math ou le français, ça promet un échec monumental, qui ne viendra pas de l’élève, ni du prof, ni du langage de programmation enseigné.

image de Dilshan Jayakody

Vivaldi : placer la barre de marque-pages verticalement

mardi 1 janvier 2019 à 15:57

À l’image de ce que j’avais fait pour Firefox, et dans l’idée de gagner de la place verticale à l’écran, je souhaite avoir mes marques pages sur le côté de l’écran, à droite, plus précisément :

Ce qui suit est mon bidouillage pour avoir la barre de signets verticalement sous Vivaldi :

vivaldi with vertical toolbar
C’est fait sous Linux Mint 19, avec Vivaldi 2.2.1388.37 (Stable, 64 bit).

Cette habitude m’est venu de l’époque où j’utilisais Opera 12.x, et qui offrait cette fonctionnalité nativement.
Pour obtenir la même chose sous Firefox, il s’agissait de bidouiller dans les styles interne du navigateur pour donner l’aspect souhaité aux éléments de l’interface (l’interface du navigateur — le chrome comme on l’appelle (rien à avoir avec Google Chrome) — est lui-même du HTML et il peut être modifié avec des CSS).

Dans Vivaldi, c’est plus ou moins la même chose : l’interface entière est juste un gros template HTML + CSS + JS.

Il suffit de lancer Vivaldi en mode « débugger » :

vivaldi --debug-packed-apps --silent-debugger-extension-api

Ainsi, on peut bidouiller l’interface « en direct » dans les outils de développeurs (en plus de pouvoir bidouiller le contenu de la page web dans l’onglet). Pour inspecter un élément de l’interface (barre d’adresse, onglet, …) il suffit de faire clic-droit dessus et « Inspecter ». Si sous connaissez les outils de développeurs, vous ne serez pas dépaysés.

Ensuite, il s’agit simplement de manipuler les éléments avec du CSS.

Une grosse difficulté m’a retardée cependant : quand on modifie la largeur de la barre des marques pages, le javascript s’en mêle et retire les icônes. Ils ne font alors plus partie de l’interface et impossible de les voir sans cliquer sur le bouton avec le chevron. Ceci m’empêche de donner une largeur fixe à la barre et de la positionner à droite.
J’ai dû ruser : à la place, je garde la barre comme elle est, je la fait pivoter avec transform: rotate(90deg) puis je la déplace avec position: relative;. C’est la seule solution pour que l’élément ne sorte pas du flux du document et conserve sa haute/largeur.

Bien-sûr, les icônes sont toutes de côté. Ce n’est pas grâce, il suffit de faire tourner les icônes individuellement dans le sens inverse : transform: rotate(-90deg).

Ensuite, sur le bloc qui contient la page web, on libère une petite marge à droite avec margin-right: 35px. Comme la barre est déplacé de façon relative, elle occupe toujours sa place en haut de l’écran (tout en étant à droite). On remonte donc la fenêtre de navigation : margin-top: -35px
Et… c’est tout.

Le CSS global est :

/* Bookmarkbar : turning it on the side, placing it on the right */
#app #browser #main .bookmark-bar {
	transform: rotate(90deg) scale(1, 1)!important;
	transform-origin: 0% 0%!important;
	position: relative!important;
	left: 100%;
	height: 34px;
}

/* flip back the individual icons */
#app #browser #main .bookmark-bar button {
	transform: rotate(-90deg)!important;
}

/* gives margins to the main frame */
#app #browser #main .inner {
	margin-right: 35px!important; /* gives place to the new bars position */
	margin-top: -35px!important; /* claims the place from its old position */
}

Enfin, il s’agit de sauvegarder ça dans les fichiers de style de Vivaldi, qui se trouve (sous Linux) là :

/opt/vivaldi/resources/vivaldi/style/common.css

C’est là que je ne sais pas si ce fichier sera un jour écrasé ou non par une mise à jour du navigateur. Il doit probablement y avoir un fichier CSS utilisateur pour Vivaldi, mais je ne l’ai pas trouvé.

En tout cas, ça marche pour le moment.

Certicode Plus chez la Banque Postale : « plus » d’intrusion

samedi 22 décembre 2018 à 14:12

logo de la banque postale
Ma banque est la Banque Postale.

Depuis assez longtemps, ils ont le système « Certicode », leur système d’authentification à deux facteurs (2FA) qui fonctionne en semaine (me demandez pas pourquoi, les week-ends ce truc ne fonctionne pas).

Je reçois un message dans leur messagerie me disant que bientôt ils vont passer ça à Certicode Plus :

Dans quelques mois, l’accés à vos comptes en ligne depuis l'Espace Client Internet ou l'application mobile sera soumis à une sécurisation plus forte.

(on passera sur la faute d’orthographe)

En explorant un peu, je découvre ça :

Certicode Plus est le nouveau service d’authentification forte permettant de sécuriser la validation des opérations dites « engageantes ou sensibles » réalisées depuis l’Espace Client Internet ou depuis l’application mobile La Banque Postale.

En gros : que j’utilise le site web ou l’application, Certicode Plus sera nécessaire.

Certicode Plus fonctionne avec l'application La Banque Postale installée sur votre smartphone ou tablette. Si vous n'êtes pas équipé d'un smartphone ou d'une tablette, nous vous invitions à prendre contact avec votre conseiller.

En gros : je devrais installer l’application mobile.

Si vous changez de numéro de téléphone, cela n’a aucun impact sur le fonctionnement de votre service Certicode Plus qui s’appuie uniquement sur votre appareil mobile.

En gros : le système repose sur l’appareil, et non le numéro de téléphone.

Honnêtement, ça me fait déjà chier d’avoir à installer une application de force comme ça. Mais quand je vois les autorisations demandées par l’application, je dis stop :

Donc pour ma sécurité, ma banque devra :

En prime, cette liste n’est pas exhaustive et pourra être étendue dans l’avenir.

Vous trouvez peut-être ça normal, mais pas moi.

Je vais les contacter pour voir, et s’ils n’ont pas de solution, je changerai de banque.

image d’en-tête de labanquepostale.com

Dans la série « on se fiche de nous »…

dimanche 16 décembre 2018 à 21:45

Voir :

Bon, on va jouer un petit jeu.

Voici le selfie :

selfie benalla
Voici deux pistolets.

ii

À gauche, c’est un pistolet à eau.
À droite, c’est un Glock (l’arme de service de la police).

La devinette : sans calculatrice et sans tricher, saurais-tu deviner quel est le pistolet à eau que M. Benalla, pointe sur les gens dans le selfie ? Attention, c’est une question difficile.

Selon M. Benalla lui-même, il tient dans sa main un pistolet à eau (donc celui de gauche).

Si vous mettez en doute ce qu’il dit, bravo ! Vous n’êtes pas con (par contre vous risquerez peut-être la prison). Autrement, vous êtes con.