Le Hollandais Volant

À propos des propositions sorties du débat sur « la parole aux Français »

Mon avis rapide sur ça :

Prison ferme pour les fraudeurs fiscaux, impôt sur la nationalité, retour de l'ISF... les propositions faites dans l'émission «La parole aux Français» | www.cnews.fr

Élargir la liste des produits de première nécessité et abaisser leur TVA à 0% (88% des téléspectateurs de l'émission se sont prononcés en faveur)

+1

En particulier pour la « women-tax » comme on l’appelle parfois.

Retour de l'impôt sur la fortune avec des tranches plus élevées et une exonération pour les personnes investissant dans les PME (77% des téléspectateurs de l'émission se sont prononcés en faveur)

+1
J’aurais dit « davantage de tranches », plutôt, pour un truc plus progressif (voire continu).

Remise à plat et examen des niches fiscales (93% des téléspectateurs de l'émission se sont prononcés en faveur)

Gros +1.

Ce matin je vois passer qu’en Europe, c’est 800 milliards de fraude. Rapporté aux 350 millions d’habitants de l’UE, ça fait ~2 500 €/an par personne sur lequel les gens s’assoient en Europe à cause de l’évasion fiscale.

2 500 €/an, c’est comme si tout le monde s’asseyait sur un 1 à 2 mois de salaire.

Mise en place de l'impôt sur la nationalité

J’ai bondi en lisant ça (« faire payer un impôt par les étrangers ? »), mais en fait c’est juste faire payer les gens qui vivent à l’étranger. En gros, si tu es Français vivant ailleurs, tu payes un impôt.

Dans les deux cas, j’aurais tendance à dire non : les impôts doivent être payés sur les revenus et là où ils sont générés.

Si un étranger vient ici, il paye son impôt ici.
Si un Français va ailleurs, il paye son impôt ailleurs. J’ai pas de problème avec ça.

Donc −1.

Suppression de la CSG pour les retraités qui perçoivent moins de 2.000 euros par mois (86% des téléspectateurs de l'émission se sont prononcés en faveur)

À voir pour où placer la barre, mais +1.
Je ne suis pas non plus convaincu de la pertinence de faire payer une CSG à des gens qui ont déjà contribué toute une vie active (qui est faite pour ça). La retraite, on la leur doit. Ce n’est pas un revenu, c’est leurs économies.

En revanche, faire payer des charges sur les autres revenus qu’ils se font à côté, oui, et au même taux que n’importe quel revenu (mais c’est probablement déjà le cas).

Revalorisation des retraites (91% des téléspectateurs de l'émission se sont prononcés en faveur)

+1

Instauration d'un prix plancher pour les matières premières agricoles en tenant compte des coûts de production des agriculteurs (95% des téléspectateurs de l'émission se sont prononcés en faveur)

+1

Mais ça, ça vient aussi de l’hégémonie des supermarchés qui font ce qu’ils veulent.

Si l’offre des « paniers hebdomadaires de légumes » (par exemple) était plus important et pas aussi orienté « hipster » (pardonnez l’expression, mais c’est l’image que ça donne), peut-être que ça irait mieux.

Ces paniers ne sont pas chers : c’est moins cher qu’en supermarché et souvent meilleurs (et souvent aussi bio, local et de saison). Donc peut-être que les supermarchés s’aligneraient s’ils perdent tous leurs clients.

Établir une peine de prison ferme (3 ans) pour les fraudeurs fiscaux (88% des téléspectateurs de l'émission se sont prononcés en faveur)

Gros +1
Y a pas de raison que celui qui vole un bout de pain fasse 1 an de taule mais celui qui vole 5 millions ne le fasse pas simplement parce qu’il porte une prison #carlosGhosn #rendsLArgent

- Augmentation du SMIC à 1 800 euros bruts par mois (soit 1 382 euros nets)

Pas sûr.
Plus d’argent n’est pas forcément mieux que baisser le prix des choses. Si on réglementait déjà les loyers (et qu’on forçait les proprios à faire la maintenance de leurs bâtiments, accessoirement) et qu’on baisse le prix des choses utiles, c’est une solution qui profiterait à aussi bien, et à davantage de monde.

Faudrait plutôt faire du Smic une exception et revaloriser la valeur du travail (en obligeant genre 25 % des bénéfices à être redistribués à ceux qui la produisent : les employés ; là aussi, pourquoi pas par paliers sur le bénéfice).

Le CICE réservé aux TPE-PME (92% des téléspectateurs de l'émission se sont prononcés en faveur)

Pas d’avis.

Création d'un ministère pour les retraités (71% des téléspectateurs de l'émission se sont prononcés en faveur)

Encore un ministère ?
Faudrait plutôt des élus qui représentent réellement leurs administrés et qui soient en contact avec eux, les écoutent et les représentent eux plutôt que leur parti politique.

Limiter à 25 le nombre d'élèves par classe

+1.

Pour conclure : il y des idées, dont des bonnes.
Malheureusement, Macron a déjà dit qu’il ne reviendrait pas en arrière sur ce qu’il a déjà fait : donc les 3/4 de ces points iront directement à la poubelle à l’Élysée.

[Programmation] break & continue pour accélérer les scripts

i
Parfois il suffit d’un rien pour accélérer des scripts, et comme ça ne coûte rien et que ça peut rendre service, il faut s’en servir.
Aujourd‘hui, l’astuce est toute bête, mais je ne la voit pas tant que ça non plus, d’où mon partage.

break

Quand on fait une boucle (for, while…) sur un tableau ou une liste, par exemple pour trouver un élément particulier du tableau, on peut gagner beaucoup de temps en sortant du tableau une fois qu’on a trouvé le résultat.

Ainsi, au lieu de ça :


// soit $array un tableau de 1 000 éléments
for (var i=0, len=array.length; i<len ; i++) {
    if (array[i] === recherche) {
        console.log('élément trouvé : ' + i);
    }
}


On peut faire ça :

// soit $array un tableau de 1 000 éléments
for (var i=0, len=array.length; i<len ; i++) {
    if (array[i] === recherche) {
        console.log('élément trouvé : ' + i);
        break;
    }
}


Où est l’optimisation ?
Il est avec le break : étant donnée qu’ici on recherche un élément du tableau en particulier, une fois qu’on l’a trouvé, il est inutile de perdre du temps de chercher dans les éléments qui suivent. Par conséquent, on va utiliser break pour sortir de la boucle for dès qu’on a rempli la condition.

Un élément recherché dans un tableau se trouve en moyenne à la moitié du tableau (parfois au début, parfois à la fin, mais en moyenne, au milieu). Du coup, en moyenne, on gagne 50 % de temps de calcul.

Une autre solution plus adaptée dans le cas des conditions, mais moins flexible je trouve, pourrait être de faire avec while :


// soit $array un tableau de 1 000 éléments
var flag = false, i=0;
while (array[i] && !flag) {
    if (array[i] === recherche) {
        console.log('élément trouvé : ' + i);
        flag = true;
    }
    else {
        i++
    }
}


Perso je préfère utiliser for plutôt que while, mais ce dernier fonctionne aussi. En JS, il existe aussi .forEach, .each, for of, for in, tous pour leur propres application, mais on peut parfois utiliser break aussi (même si ça dénaturerait un peu le forEach, qui ne serait alors pas pertinent).

Notez que le gain de temps/énergie/temps processeur devient vite non-négligeable lorsque l’on commence à imbriquer plusieurs boucles for les unes dans les autres. Imbriquer 2 boucles de 1 000, ça fait 1 000 000 de tests à effectuer. Si les tableaux ne sont (virtuellement) plus que de 500, alors on réduit le temps de calcul de 75 % (plus que 250 000 calculs).

Bref, dès que vous le pouvez, sortez de la boucle et gagnez du temps.

À retenir : le break permet de sortir de la boucle. Son comportement est un peu différent du continue que voici.

continue

continue permet de sortir de l’itération courante dans une boucle, c’est pratique si l’on souhaite sortir de l’itération sans ajouter un if/else supplémentaire.

C’est utile, si je souhaite effectuer plusieurs calculs sur des éléments du tableau, mais que je dois exclure certains éléments.

Imaginons que l’on ait un tableau (de 1 000 éléments) d’objets "personne" et que seuls certains d’entre-eux ont renseigné leur âge. Pour ceux-là, et uniquement ceux-là, on souhaite vérifier si c’est leur anniversaire. Pour les autres, on ne fait rien.

Plutôt que de faire ça :


for(var i=0, len=array.length; i<len ; i++) {
    if (array[i].birthday !== undefined) {
        if (array[i].birthday === today) {
            console.log('Bon anniversaire !);
        }
    }
}


On peut faire ça :


for(var i=0, len=array.length; i<len ; i++) {
    if (array[i].birthday === undefined) {
        continue;
    }
    if (array[i].birthday === today) {
        console.log('Bon anniversaire !);
    }
}


Ici, si l’anniversaire n’est pas défini, on sort de l’itération en cours et l’on passe à la suivant : inutile d’effectuer les autres tests.

Ok, ici, c’est le gain est nul, mais dans certains cas il ne l’est pas.
Un exemple concret où je l’utilise c’est dans mon lecteur RSS : une fois que les éléments sont marqués comme lu, je ne souhaite plus les voir affichés, mais comme ils sont toujours sur la liste des éléments, il faut les ignorer.
Plutôt que d’utiliser un if/else ou un switch, j’utilise ça :

if (this.eventsList[i].action == "deleteEvent") continue;


Ça tient en une seule ligne, c’est discret et ça ne gêne pas la lecture du code.
D’autant plus que si l’élément n’est pas à supprimer, il peut avoir plusieurs autres .action
D’un point de vue « lecture du code », je préfère utiliser le if/else pour quand je dois effectuer une action dans les deux cas. Si je n’ai qu’un seul cas à traiter, je ne prends que if.
Si j’ai tous les cas à traiter (>2) je prends un switch, et si j’ai n-1 cas à traiter, je mets un continue au début, plutôt qu’un if suivi d’un gros else
Chacun ses façons de faire, mais j’apprécie celle-ci parce qu’elle réduit les niveaux d’indentation et le nombre de blocs indentés, qui rendent parfois le code difficile à suivre.


Conclusion

On peut décrire break et continue comme l’équivalent des return dans une fonction (si on ignore le fait que return renvoie un résultat en plus de terminer la fontion). Return a pour effet de terminer la fonction et renvoyer un résultat.
Break et continue ne retournent pas de résultat, mais terminent le code en cours :

  • break termine l’exécution de la boucle entière : il permet de sortir du while ou du for ;
  • continue termine l’exécution de l’itération en cours : il sort du tour de boucle et passe à la suivante.


Comme j’avais expliqué dans mon article sur la prog récemment, il n’y a pas qu’une seule façon de faire, mais si le but est de faire un code rapide et moins gourmand en ressources, il n’y a pas 36 solutions : il faut réduire l’empreinte CPU, et ça, ça passe surtout par le nombre de calculs qu’il doit effectuer (et dans une moindre mesure, le type de calculs, mais ça ça sera pour une autre fois).

image d’en-tête de Jun OHWADA

Aux sites qui ne veulent pas de l’indexation par Google

meme thumb up rage face
Comme tu sembles perdu dès que ça touche à Internet, laisse-moi t’aider, je suis là pour ça !

Tu as un site de presse sur lequel tu publies tes beaux articles ?
Tu ne veux pas que Google indexe tes beaux articles ?

Voici la solution, très simple :

  • Tu ouvres ton application Bloc-Note sur ton ordinateur
  • Tu copies ça dedans :
User-agent: Googlebot
Disallow: /
  • Tu enregistres ce fichier sous le nom robots.txt.
  • Tu uploads ce fichier à la racine de ton site, et maintenant Google Image ne viendra plus indexer tes images.

Enfin, dernière chose, maintenant que Google ne vient plus te « voler » : tu arrêtes de nous casser les couilles avec une taxe à la con simplement parce que t’es un incompétent qui ne sait pas lire la documentation.

Merci.

PS : voir le premier commentaire ci-dessous.
PPS : voir le seconde commentaire ci-dessous.

Mon grain de sel sur le #GrandDebat

On dirait que le grand débat est ouvert, et Macron demande l’avis de la population :

C’est pas l’endroit, mais je commence ici avec quelques idées.
Il n’est pas exclu que j’envoie tout ça un jour à ma mairie (même si, j’avoue être très pessimiste sur la prise en compte de tout ça, non pas seulement pour mes idées, mais surtout que, d’expérience, les élus à tous les niveaux sont connus pour ignorer l’avis d’un citoyen de base).

Bref, voici mon grain de sel…

Le premier sujet porte sur nos impôts, nos dépenses et l'action publique.

Je propose qu’on commence par des mesures simples. Pas forcément les plus importantes, mais elles auront (j’en suis sûr) pour impacte de réduire les tensions actuelles :

  • qu’on cesse les dépenses inutiles, celle qui ne profitent pas à la société. Vaisselle ou carpettes à 500 000 € pour commencer, et ensuite abolition des déplacements en jet pour les déplacements diplomatiques au profit de l’avion civil lorsque possible. Ce ne sont que des exemples, mais ça donne une idée de quoi je parle.
  • qu’on paye les élus comme tous les fonctionnaires / travailleurs. Pas d’exceptions. La prise en charge de leur frais est déjà un avantage suffisant. Un représentant devrait commencer par vivre avec des moyens de ceux qu’il représentent, histoire de savoir de quoi ils parlent (cf : les pains au chocolats à 0,10 €). Y a pas de raisons que les employés de la république aient des avantages aussi indécent (et coûteux) qu’actuellement.
  • pour élargir : qu’on fasse payer les impôts à tout le monde. L’évasion et la fraude fiscale sera punie à hauteur de ce qu’elle représente : un vol à la société, au peuple, aux citoyens. Aucune exception.

Quand tout le monde sera logé à la même enseigne, on pourra discuter sur des ajustements d’impôts, de taxes, qui impacteront alors tout le monde sans exception. Pas avant.

Le deuxième sujet sur lequel nous devons prendre des décisions, c'est l'organisation de l’État et des collectivités publiques.

Beaucoup de choses ont déjà été faites avec la fusion des régions.

Je n’ai pas trop de recul sur ces points, si ce n’est que j’ai toujours été pour l’idée d’un système fédéral, avec une politique régionale adaptée à chaque région (et donc forcément moins uniforme entre les régions). Le rôle de l’État sera de garantir un juste financement des différentes régions.

La transition écologique est le troisième thème, essentiel à notre avenir.

Si j’exclue mon avis selon lequelle je considère l’avenir de l’humanité comme déjà foutue (l’économie et la finance ont eu raison de la survie à long terme de notre espèce. Tout ce qu’on peut faire, c’est laver notre conscience), je propose ce qui suit.

Pour ma part, il faut cesser le production d’électricité à base d’énergie fossile. En France déjà, et surtout inciter le monde à nous imiter. Les énergies fossiles sont une solution simple mais sales.

Les énergies renouvelables sont importantes et serviront de source d’ajustement dans un premier temps, avant que le parc ne soit réellement productif. À court et moyen terme, l’essentiel ne pourra venir que du nucléaire (seule source d’énergie assez puissante pour couvrir les besoins).

Une éducation devra être faite autour du nucléaire pour la démystifier.
Une renationnalisation des centrales devra être effectuée pour que l’énergie redeviennent un bien commun, sans besoin de rémunérer des investisseurs privés, et où la sécurité reprendra la première place devant la rentabilité.

Les filières du thorium seront prises au sérieux. La recherche sur la fusion sera prise au sérieux également.

L’important travail autour de la mise à niveau maisons, immeubles, etc. sur le plan des économies d’énergie (isolation, etc.) devra être poursuivi. On s’améliore sans cesse, mais il faut continuer à améliorer l’existant. La meilleure solution pour réduire notre empreinte carbone est encore de réduire le gâchis et les pertes actuelles.

Les pompes à chaleurs, par exemple, permettent de produire 2x, 3x, 4x plus de chaleur en hiver que ce qu’elles ne consomment en courant (2 000 W, 3 000 W, 4 000 W de chaleur pour 1 000 W électrique consommé !).
Ce genre d’installation très économes devrait remplacer les radiateurs « grille pain » dans toutes les nouvelles habitations.

ÉDIT : Damien me signale que le chauffage électrique « grille-pain » est interdit dans les maisons neuves depuis 2005, et que les pompes-à-chaleur (ou bois, ou solaire) sont obligatoires depuis 2012. Sur des maisons neuves. C’est une très bonne nouvelle, également pour la facture EDF.

Du coup, je met à jour : si l’écologie est vraiment plus importante que le fric, qu’on fasse en sorte d’installer des PAC dans les vieilles maisons : le gain sur la facture ne peut-être que bon (perso, je divise facilement ma facture annuelle par 2, mon appartement très mal isolé étant entièrement électrique…).

Localhost et HTTPS

Le site web accessible depuis l’adresse « http://localhost » correspond à la boucle local : si votre ordinateur est accessible sur le port 80 dans votre navigateur, alors le site qui s’affiche correspond à votre ordinateur.

Ceci est vrai pour chaque internaute : par conséquent, obtenir un certificat SSL/TLS pour localhost est impossible (vu que le certificat sert justement à identifier un site unique).

Généralement, on utilise localhost pour avoir un serveur sur son propre ordinateur, pour pouvoir coder en local, par exemple. Aussi, il est parfois nécessaire d’avoir du https en local (surtout maintenant que les navigateurs considèrent tous les sites sans https comme dangereux).

Pour ça : mkcert.

Ce petit programme très simple va créer un certificat, non pas auto-signé (ce que les navigateurs n’aiment pas), mais signé par votre certificat personnel ! Par conséquent, les navigateurs le verront toujours comme valide !

Pour activer tout ça sous Apache, sous Linux Mint, on va :

  • télécharger et installer mkcert
  • produire un certificat
  • activer le https dans apache (le serveur web)
  • l’activer pour localhost

Télécharger mkcert

Ça se passe ici. Perso je prends le fichier binaire directement (ici) : je prends le mkcert-v1.2.0-linux-amd64 et je l’enregistre sous le nom « mkcert » dans le dossier « ~/.mkcert ».

En ligne de commande ça donne (on crée le dossier, on récupère le fichier, on le marque comme exécutable) :

mkdir ~/.mkcert && cd ./.mkcert
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.2.0/mkcert-v1.2.0-linux-amd64
chmod +x mkcert

Mkcert a aussi besoin de certutils, un outil tiers, qui (sous Linux Mint) se trouve dans les dépôts :

sudo apt install libnss3-tools

Produire un certificat

Là, c’est tout con, on va produire un certificat avec mkcert. Juste deux commandes.

On créer un certificat local, puis on l’applique à un certificat pour localhost :

./mkcert -install
./mkcert localhost

Cela va créer deux fichiers, localhost.pem et localhost-key.pem

Activer le HTTPS dans Apache

Ensuite, on active le site HTTPS (sur le port 443) dans Apache.

On active SSL :

sudo a2enmod ssl

On configure le site dans le fichier de conf (remplacez xed par gedit sur Ubuntu) :

sudo xed /etc/apache2/sites-available/default-ssl.conf

Trouvez la ligne suivante :

DocumentRoot /var/www/html

Et mettez-y la racine de votre site (perso c’est /var/www).
Allez ensuite sur la ligne où l’on désigne les certificats, puis remplacez les chemins vers les chemins des deux fichiers créés par mkcert (attention, mettez bien le chemin complet, sans le « ~/ », donc avec /home/$user ») :

SSLCertificateFile	/etc/ssl/certs/ssl-cert/snakeoil.pem
SSLCertificateKeyFile /etc/ssl/certs/ssl-cert/snakeoil.key

SSLCertificateFile	/home/timo/.mkcert/localhost.pem
SSLCertificateKeyFile /home/timo/.mkcert/localhost-key.pem

Enregistrez le fichier et fermez Xed (ou gedit).

Activer le site

Il reste à activer le site dans Apache.

cd /etc/apache2/sites-available/
sudo a2ensite default-ssl.conf

Puis on relance le service Apache. Selon que vous utilisiez systemd ou pas, c’est l’un ou l’autre de ces deux commandes (prenez la première qui fonctionne) :

sudo systemctl restart apache2
sudo service apache2 restart

Si tout s’est bien passé, votre site est désormais actif sur le port 443, en HTTPS, et avec un certificat détecté comme valide (en vert et sans erreurs) : localhost:443 :

le site localhost est bien en vert avec le cadenas
Voilà voilà !

Sources de l’info

Les taxes et impôts ne sont pas le problème

photo d’une annexe du palais de versailles
L’impôt tire son nom du fait qu’un peuple « s’impose » le fait de donner une partie de son revenu à l’État, en échange de quoi l’État s’occupe de la maintenance des infrastructures qui profitent à tout le monde : écoles, routes, hôpitaux, services publics, pompiers, police…

Avec les taxes, l’impôt constitue une rentrée d’argent pour l’État, qui sert ensuite à faire fonctionner tout le pays. Je pense que tout le monde sait ça, ou au moins peut le comprendre.

Vu tout ce qui se passe en ce moment (gilets jaunes, etc.) on peut penser que les gens ne veulent plus payer tout ça. Du moins, il s’agit de l’image que les médias à la con nous montrent, et celui que les politiciens veulent nous donner du mouvement contestataire.

À mon avis (toujours), personne ne voudrait retirer leur salaire :

  • aux agents municipaux
  • au personnel hospitalier
  • aux enseignants, profs, chercheurs
  • aux pompiers
  • aux militaires
  • même aux policiers et gendarmes
  • et beaucoup, beaucoup d’autre monde.

Ni qu’on retire le financement :

  • des ponts et des routes
  • de l’entretien des villes, des parcs
  • de celui des bâtiments publics
  • de celui des institutions publiques
  • etc.

Bref, au fond, l’impôt est basé sur un consentement à participer, selon ses moyens à maintenir le pays dans un bon état.

Personne ne peut être contre ça sans également être pour l’idée de ne plus profiter de tout ce que l’État fournit en retour.

Non. Le problème n’est pas l’impôt.

Mais…

Quand certains, sous prétexte qu’ils touchent des milliards, se permettent de ne pas payer leurs impôts grâce à l’évasion fiscale (100 milliard par an) et que l’État en est complice par son inaction, on peut, sous ces conditions, se demander si tout le monde est bien soumis à l’impôt et aux mêmes lois.

Le problème est là.

Quand on voit, par ailleurs, les élus toucher des salaires annuels à 6 chiffres, défiscalisés, tout en dormant sur leur lieu de travail où ils vont et d’où ils partent quand ils veulent, le tout avec chauffeur, logement, avion, hôtel, secrétaire payés sur les fonds publics, on se demande si ce n’est pas de l’argent jeté par les fenêtres, alors qu’en bas, le moindre centime est précieux.

Le problème est là.

Quand on voit que les mêmes élus cités plus haut se plaignent de ce même salaire à 6 chiffres défiscalisé (trop faible selon eux), et qu’ils sont obligé de manger des pâtes plusieurs fois par mois — entre deux pains aux chocolats à 0,10 € – ou qu’ils n’arrivent plus à payer la garde de leur enfants sans une augmentation de 25 % après seulement 1 an de travail (tel que décrit plus haut) alors que les gens normaux sont parfois au même salaire de misère depuis 30 ans à travailler de 7h à 19h tous les jours, on se demande sur quelle planète ils vivent, ces élus.

Le problème est là.

Quand on voit que la République dépense des millions d’euros pour que sa majesté le Sir Macron puisse offrir un service en porcelaine, des rideaux et un tapis à sa majesté Dame Macron, alors que des dizaines de milliers de personnes dorment dehors sur un bout de carton, on se demande pourquoi on appelle ce type encore « notre représentant ».

Le problème est là.

Quand on voit que certains députés, toujours les mêmes, sont en grande partie sous le coup d’une poursuite judiciaire, n’arrivent pas à justifier des dépenses, mentent, insultent, menacent ou juste tabassent des gens, on se demande si le prérequis pour être député est le CV ou le casier judiciaire.

Le problème est là.

On est gouverné par des gens qui ne savent pas vivre. Qui ne connaissent pas la vie des français « moyens ». Qui vivent dans leur monde, d’or et de diamants, un monde où ils ne payent rien. Qui n’ont jamais eu un autre travail que celui d’élu payé par le contribuable (et qui viennent ensuite faire des leçons aux soi-disant « assistés »).
On est gouverné par des gens qui laissent passer 100 milliards d’euros et ferment les yeux dessus, mais qui continuent quand-même de taper sur les plus pauvres (chômeurs, etc.), de faciliter le licenciement, de détruire le service public, de défoncer nos droits et acquis sociaux qui permettent justement aux plus pauvres de parfois — non pas vivre — mais survivre.
On est gouverné par des gens qui considèrent l’argent comme illimité et pour laquelle la réponse est systématiquement « le contribuable ».

Dans ces conditions là, le problème n’est pas l’impôt et les taxes : c’est ce qui en est fait.

Si on ne dilapidait pas des milliards en salaires honteusement élevé pour des gens qui ne savent rien de la France et de ses habitants, si l’État appliquait à lui-même les « efforts » qu’il demande de faire à chacun, si sa majesté le Sir Macron cessait de nous prendre pour des cons et commençait par donner l’exemple de ce qu’est la vie en 2019 en France dans un contexte d’austérité, d’efforts pour l’économie et le climat, on n’en serait peut-être pas là.

Et si il s’avère que le gouvernement demande, dans ce contexte, encore une fois de plus, aux gens plus honnêtes, plus économes, plus responsables et plus pauvres qu’eux de devoir s’acquitter d’une nouvelle taxe, oui, le vase déborde et c’est normal.

Références :

image d’en-tête de Eos Clio

Gouvernés par des génies

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 :

  • pas de casque, il est hors-la-loi car le casque est obligatoire ;
  • avec un casque, il est hors-la-loi car le casque est interdit.

Des génies, je vous dit.

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

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é, s’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 à 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.

ÉDIT : Arnaud me signale un point de vu intéressant au sujet de la pression faite au niveau des erreurs, en particulier sur le rôle des parents là-dedans plus que celui des enseignants.
(Voyez aussi le premier commentaire sous cet article pour plus de détails sur tout ça ; je ne souhaite pas trop éditer cet article davantage)

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 moi ».

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

La musique ? Non : on te dit 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équats à 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 Lego, 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’emphase 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êmes 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

[OLD] - Vivaldi : placer la barre de marque-pages verticalement

Mise à jour : cette astuce est désuète. La nouvelle version de l’astuce à utiliser se trouve là : Vivaldi : placer la barre de marque-pages verticalement (méthode 2021)


À 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é.

ÉDIT : La réponse est "non" : le fichier sera écrasé à chaque mise à jour. Donc il faudra remettre ce code dans le fichier CSS à chaque fois (ça prend 10 secondes toutes les 6 semaines).

En tout cas, ça marche pour le moment.