Ico Chamois d"or
Ico Polémiquons
Ico Le saviez-vous ?
Ico Dossier
Ico Club de lecture
Ico Le Petit Geste du Jour
Ico Réseau
Ico Messagerie
Ico Navigateur
Ico Système
Ico Multimedia
Ico Divers

Résultat de votre recherche


1 2 3 4
La Programmation Responsable (6) : des sites webs écologiques tu concevras
Date 16/12/2017
Ico Dossier
Comms Aucun commentaire


"Un bébé moineau
Saute avec curiosité
Pour regarder mon coup de pinceau"

Mizuhara Shuoshi (1892-1981)

Nous terminons aujourd'hui notre grand dossier sur la responsabilité programmatique, ou le contraire, par un constat percutant qui risque d'en traumatiser plus d'un : non, l'internet mondial n'est pas cet univers éthéré où l'air est si pur et léger qu'il vole tout seul jusqu'aux étoiles, où tout est immatériel, écologique, mignon et gentil. Non, pour accéder à toutes ces merveilles/âneries (rayer la mention inutile), il faut bien que des machines pédalent silencieusement, ou du moins suffisamment loin de nos oreilles pour ne pas les entendre.

Autrement dit, l'internet fait mal à la planète au même titre que la plupart des activités humaines modernes, et ce n'est pas quelques plateformes collaboratives ou médias de diffusions d'idées écologiques qui y traînent qui vont équilibrer ce bilan alarmant. Alors, bien évidemment, on pointe toujours un gros doigt irrité en direction du consommateur irresponsable, ce vil coquin qui navigue de site en site sans aucun respect pour la belle terre sur laquelle il est né et le bien-être des ours polaires, mais il faut quand même bien de temps en temps s'adresser à ceux qui les conçoivent, ces fameux sites. Et c'est là que l'on te regarde droit dans les yeux, cher webdéveloppeur-lecteur, car oui cet article t'est directement consacré, youpi n'est-ce pas ?

Avant de commencer toute une série de considérations sur la forme, il faudrait tout de même parler du contenu et ainsi rappeler le problème de l'inondation de sites commerciaux, blogs, médias alternatifs, commentaires, photos, données en tout genre, qui est le quotidien de notre beau réseau d'échange mondial. Le développeur web, bien que souvent pauvre larbin chargé d'exécuter les moindres caprices d'un client ou d'une direction tyranniques, a tout de même une responsabilité en la matière, ne serait-ce que d'alerter les commanditaires sur le coût en ressources de leurs demandes importunes (et pourquoi j'aurais pas 13 vidéos en page d'accueil d'abord, en plus de mon carrousel de 2800 images ?).

Effectivement, comme me le rappelle la souris à lunettes d'un air navré, les Souris Vertes n'échappent pas à la tendance prolifératoire infernale, et contribuent à leur manière à la surenchère de contenu-personnel-à-propos-de qui caractérise notre douce époque. Ce qui ne nous empêchera pas de suggérer timidement que la diminution de l'impact écologique du net passe tout d'abord par un effort collectif pour arrêter d'y fourrer tout et n'importe quoi, et sous n'importe quelle forme numérique.

Dans cet esprit l'auteur-moi-même de cet article s'engage solennellement :
- à ne pas publier la photo de son chien, ni celle de souris même très mignonnes, la composition de son repas du midi ou sa marque de dentifrice préférée, bien que ces informations intéressent au premier chef l'ensemble des Français, et sans doute également le reste du monde.
- à dépublier ce blog de l'internet mondial lorsque son esprit et l'essentiel de son contenu aura largement été récupéré ou intégré par la société, autant dire vers 2100 si on suit les courbes de prévision des groupes d'experts sur le climat ou de suivi de la biodiversité.
- à maintenir l'empreinte écologique la plus basse possible pour ce blog, ainsi que pour toute autre réalisation informatique personnelle ou professionnelle qui serait amenée à être publiée sur l'internet mondial.

Et c'est justement ce dernier point que nous allons développer pour l'ultime article de notre fracassant dossier, pour permettre à tous les développeurs du monde, non pas de se donner la main, mais bien de concevoir des sites webs écologiques qui lavent encore plus vert que vert. On se lance dès qu'on a franchi notre petit haïku de mise en condition :

"Placardée sur la porte d'entrée
La photo
Du chat qui n'est jamais revenu"

Midoriro no Mausu (la Souris Verte)


Pas trop de multi dans le media

On commence sans tarder par le poste de dépense le plus important qui est, sans surprise pour nos lecteurs les plus fidèles, le contenu multimédia des sites web, celui-là même qui fait du mal à toutes les connections réseaux du monde. Lorsque l'internet a démarré, vu les vitesses de transfert et la bande passante abyssales que l'on rencontrait, l'essentiel d'un site web était constitué d'une page de texte, avec quelques liens et, si vraiment on était riche, agrémenté d'une ou deux images de faible taille. S'il nous est difficile de regretter l'austérité de présentation de cette époque antédiluvienne, force est de constater que nous avons foncé à corps perdu dans le contenu multimédia de tout poil pour en inonder nos sites toujours plus à la page (sans jeu de mots intentionnel), où il est parfois bien difficile de déceler un propos quelconque sous l'avalanche d'images, vidéos, sons et autres animations clignotantes. Le texte, lui, est passé à la portion congrue avec de moins en moins de rédaction, des commentaires ou explications toujours plus brefs, bref un rejeu grandeur nature de la guerre qui opposa la télévision à la presse écrite, avec à peu près les mêmes techniques qui triomphent.
 
Même si aux Souris Vertes, nous aimons le verbe, l'écrit, le haïku et tout ce que vous voudrez d'autre de la même famille, c'est surtout pour une raison écologique que nous soutenons qu'il faut changer de cap d'urgence. Comme nous l'avions montré dans notre excellent dossier sur les grandeurs numériques et l'un de nos tous premiers articles sur le stockage, la vidéo est incommensurablement plus consommatrice que l'image qui est incommensurablement plus consommatrice que le texte simple. Tout ce que vous écrirez sur les réseaux dans l'ensemble de votre vie ne suffira pas à produire autant de signes qu'une vidéo de quelques minutes postée sur internet, si si. En ce sens, le réseau social des petits oiseaux, Touiteur, qui limite la taille des commentaires mais incite les gens à laisser un tas de contributions multimédias, est l'antithèse absolue de l'écologie numérique. Il est d'ailleurs bien évident que cette limitation n'a pas été prise dans un souci écologique, mais plutôt pour assurer une dynamique instantanée à la discussion où les réponses fusent à la vitesse du pouce sur le téléphone portable. Hum, bon, ça n'est pas vraiment notre tasse de thé, mais comme ça n'a rien à voir avec notre sujet du jour, on revient bien vite à nos moutons qui bèlent en HTTP dans le texte.

Conséquence logique de toute ce qui précède, la première mission du Programmeur Web Responsable équipé d'une magnifique casquette avec des oreilles de souris vertes est de s'assurer qu'il n'y a pas trop de contenu multimédia dans son site web, notamment :
- qu'il n'y a pas de vidéos en streaming, dont nous rappelons au passage qu'il incarne le Mal Absolu en matière de consommation de ressources réseaux
- qu'il y a peu d'images, et qu'elles sont de dimensions modestes et aussi compressées que possible

Soulignons au passage l'hypocrisie ambiante qui consiste à minifier le moindre bout de javascript pour gagner une poignée d'octets, et ainsi se féliciter d'avoir économisé de la bande passante, pour ensuite abreuver nos pages web de photos grands formats et de vidéos.

Cela dit, une fois rendu à un serrage de ceinture multimédia bien senti, une bonne idée pour aller plus loin est de substituer dès que possible des icônes sous forme d'images par des caractères unicode qui représentent peu ou prou la même chose, mais n'induisent aucune consommation de bande passante particulière : on pourra ainsi trouver des caractères qui représentent des coeurs, des téléphones, des enveloppes, ou encore toutes sortes de flèches comme on pourra le voir ici, le choix est pléthorique en la matière. Dans la même veine, on essaiera de s'appuyer au maximum sur les possibilités intrinsèques de mise en page des navigateurs, à travers les directives CSS, pour éviter d'avoir à servir des bandeaux de couleur dégradée ou autre sous forme d'image.

Et surtout, il serait bien temps d'apprendre à mettre en valeur le texte sans avoir besoin d'un recours systématique à de la paillette multimédia dispendieuse. Il y a certainement tout un champ de recherche d'une ergonomie parcimonieuse du web à développer, que nous ne pouvons qu'inciter nos formidables lecteurs à créer et enrichir.


Le souci du dialogue


Il n'aura pas échappé à nos lecteurs judicieux que l'internet est le règne du connecté à toutes les sauces : et que tu me parles, et que je te réponds, et qu'on invite un troisième dans la discussion, etc. Ceci est vrai autant pour les humains que pour les machines, et, disons-le sans ambage, les machines sont encore bien plus bavardes que les humains, sans doute parce qu'elles sont capables d'aligner quelques millions de phrases dans le même temps que l'utilisateur amène son doigt jusqu'à la bonne touche du clavier.

Il est donc important de contrôler comment les machines communiquent entre elles, histoire qu'elles n'aillent pas gaspiller de l'octet à la tonne simplement parce que nous sommes trop lents pour suivre les échanges entre elles. Nous avons déjà vu un bel exemple de communication à réduire entre l'application et sa base de données. Ceci concernait plutôt le côté serveur web, mais c'est encore plus vrai si vous faites directement vos appels à la base de données à travers des APIs. On limitera donc au maximum des appels du client au serveur, du client à d'autres serveurs, et du serveur web lui-même à ses petits copains. Bien entendu, il ne s'agit pas de supprimer tous les échanges, simplement d'essayer de les mutualiser ou de les éviter dès que c'est possible.

Et s'il faut causer, autant que ça soit de manière la plus succinte possible, tout le contraire d'un article des Souris Vertes en gros, afin de limiter la bande passante réseau et les traitements de part et d'autre liés à la communication. Heureusement pour nous, la mode des années 2000 du XML partout, un des langages les plus verbeux de la terre, a succédé au standard d'échange JSON entre les applications, nettement plus léger.  On proscrira donc d'urgence tout ce qui est à base de XML ; alors oui, manque de chance, le code des pages web reste en HTML ultra redondant, mais en même temps on en transfère directement de moins en moins dans les pages de nos jours, pour préférer souvent le reconstruire à l'aide de code javascript.

Dernière chose, la tendance actuelle est de mettre des connexions sécurisées dès que possible (le fameux protocole HTTPS). Cette méthode de chiffrement est très importante lorsqu'il s'agit d'empêcher la lecture de mots de passe ou d'informations confidentielles qui transiteraient entre le navigateur de l'utilisateur inconscient du danger et le serveur web. Cependant, tout ceci s'avère relativement coûteux sur les canaux de communication, car le chiffrement augmente de manière non négligeable la quantité de données échangée, et demande un travail du processeur pour le produire à un bout comme pour le décrypter de l'autre. L'idéal serait donc que tous les sites ne passent en https que les pages vraiment confidentielles, comme l'endroit où vous tapez votre de carte bleue ou bien celle où vous révélez que vous présidez secrètement le fan-club local de Chantal Goya.


C'est le client qui paie


Et c'est bien la moindre des choses, non ? Notre dernier conseil est de faire travailler autant que possible la machine appelante, le client donc, à tous les sens du terme, et non le serveur lui-même. Pourquoi donc ? Tout d'abord, pour une question de justice sociale : c'est lui qui demande sa page peut-être super dispendieuse, il est normal qu'il en assume le coût informatique sous forme de consommation d'électricité, de chaleur et de cycles CPU.

D'autre part, en général seule une proportion minusculissime des ressources d'un ordinateur personnel sont mobilisées quotidiennement. Il serait donc dommage de s'obliger à construire des serveurs géants refroidis à l'azote liquide au lieu d'utiliser toute cette capacité de traitement disponible.  Enfin, de cette manière, vous êtes en mesure de servir nettement plus d'utilisateurs avec une consommation de ressources minimale de votre serveur. Si, au contraire, c'est le serveur qui pédale à chaque nouvelle requête pour construire une page super compliquée, si tout le monde s'avise de venir vous voir en même temps vous aurez du mal à assurer le service sans faire poireauter outrageusement le badaud.

De plus, tout déporter du côté du client va nous permettre d'éviter des ping-pong incessants entre client et serveur ; si on s'y prend bien, on peut envoyer toutes les informations nécessaires pour que la plupart des actions se réalisent dans le navigateur du client, sans aucun retour côté serveur. Malin, non ? En particulier, on prendra garde à ne recharger que les parties de page qui ont vraiment changé, afin de ne pas transférer inutilement le même contenu de requête en requête, et comme toujours à mutualiser les appels au(x) serveur(s) autant que possible. Donc, on garde comme horizon : les traitements se font du côté du client, le serveur ne faisant en général que servir le contenu à afficher, une seule fois de préférence, et les données contenues dans la page qui sont éventuellement rafraîchies en fonction des actions de l'utilisateur.

Il y a également une petite opération qui va nous permettre de libérer de la bande passante, c'est de compresser les fichiers texte envoyés (HTML, CSS, javascript). La plupart des serveurs web gèrent nativement le fait d'envoyer sous format gzip ces fichiers, et les navigateurs sont capables de les décompresser à la demande. Le serveur comme le client travailleront un tout petit peu plus à compresser d'un côté, décompresser de l'autre, mais le gain de compression est tellement énorme sur ce type de fichiers, particulièrement sur le HTML ultra redondant, que l'on aurait tort de s'en priver. A côté de cette mesure, la minification des fichiers javascript, qui supprime les espaces et autres symboles inutiles pour la syntaxe, fait figure de gagne-petit. On pourra toujours l'appliquer, ça ne coûte rien, mais il n'est même pas certain que le gain final sur un fichier compressé soit même visible à l'oeil nu.

Dernier point, une souris à ma droite me demande avec angoisse s'il vaut mieux faire le maximum possible en CSS, ou bien si on peut s'autoriser à faire du javascript même pour de l'affichage ou des petits composants qui existent nativement en HTML ? Eh bien, très honnêtement, je dois dire que j'aurais du mal à trancher pour l'une ou l'autre solution. En théorie, programmer uniquement en CSS devrait nous permettre d'être bien plus succinct que s'il faut coder en javascript, mais tout programmeur web sait que le CSS lui-même peut vite devenir aussi bavard que votre grand-père rappelant ses souvenirs de jeunesse au coin du feu les soirées d'hiver,  et comme la majorité des navigateurs interprètent aujourd'hui le javascript à la vitesse de l'éclair, il sera difficile d'affirmer que c'est moins efficace de recoder une fonction que d'utiliser une instruction native équivalente. Bref, à chacun de faire comme il le sent.


.Conclusion { title-text: "au revoir, petit dossier" };

Hum bon, ce titre n'est pas parfait niveau syntaxe, mais je n'ai pas le droit de mettre du faux HTML comme j'aurais souhaité le faire sans mettre le bazar dans l'affichage du blog, aussi vous excuserez la licence poétique .

Il est temps pour nous de dire au revoir à notre magnifique dossier au terme duquel tous nos lecteurs-programmeurs sont en mesure de sauver les espèces menacées chaque jour à grand coup de traitements informatisés efficaces. Au-delà des conseils généreusement dispensés, qui valent ce qu'ils valent comme on dit dans la cour de récré, c'est surtout la démarche proposée qui est importante : se poser, enfin, la question des ressources informatiques allouées pour faire tourner une application, web ou autre. Il restera à mettre lesdites ressources en regard de l'utilité sociale réelle et des bienfaits qu'elles procurent, mais ceci dépasse le cadre de la chaise en face du clavier pour déborder joyeusement dans l'arène de la décision politique collective.

En attendant de voir ces sujets polémiques à la une des journaux, on salue bien bas toutes les souris vertes qui ont participé au dossier, et on trépigne d'impatience de voir ce qu'elles vont encore pouvoir nous apprendre sur cet univers numérique qui regorge de surprises écologiques à tous les coins de rue !

>Voir le billet et ses commentaires...
 

La Programmation Responsable (4) : de spammer ta base de données tu cesseras
Date 28/11/2017
Ico Dossier
Comms Aucun commentaire


"Soleil de printemps

Boîte aux lettres repeinte

Dégoulinades jusqu’à terre"


Hara Sekitei (1889-1951)


Ah mais tout de même. Enfin un article dont nos amis programmeurs comprennent le titre et savent de quoi-t-on va parler, voilà qui ne serait pas du luxe. C'est que tout développeur ne connaît que ça, la base de données. Il l'appelle, la rappelle, lui envoie des petits coucous, prend de ses nouvelles, discute avec elle du temps qu'il fait, et ce toute la journée durant. Eh bien, une fois de plus, c'est malheureux de toujours en arriver là, les souris vertes doivent mettre les pieds dans le plat et mettre le holà à cette idylle apparemment parfaitement innocente. La manipulation sans précaution de notre gentille base de données est LA cause noumero uno (una ?) d'inefficacité des programmes dans le monde, et donc une alliée bien malgré elle du gaspillage informatique à tous les étages, et du réchauffement climatique qui s'ensuit.


Il va donc nous falloir renverser la tête pour arrêter de marcher sur la vapeur, et ce même si cette si cette image vous laisse aussi perplexe que moi. Essayons de comprendre pourquoi la base de données n'est pas le formidable couteau suisse du programmeur que l'on imagine souvent, mais plutôt sa version masse d'armes de vingt kilos à pommeau incrusté que l'on maniera avec la délicatesse d'Hercule, en fin de journée et un peu pressé de finir son onzième travail sur douze.



A la vitesse de l'électron, mais avec un boulet au pied


La base de données est, c'est bien connu, la meilleure manière en programmation de ranger ses petites affaires et de les avoir sous le coude instantanément. La meilleure, vraiment ? Commençons par un petit rappel salutaire directement recopié, sans reversement aux ayants droits, de notre magnifique dossier sur les grandeurs numériques, en se remémorant les ordres de grandeur de latence suivants :


- depuis le cache processeur : 0, négligeable, rien du tout, niente, le processeur travaille directement avec son petit cache qu'il garde auprès de lui

- depuis la mémoire vive (ou RAM pour les intimes) : 10 ns, soit 0,00001ms

- depuis un disque dur SSD : 0,01 à 0,1ms

- depuis un disque dur à plateau : 1 à 10ms

- à travers un appel réseau : de 0,1 à 1ms si on est sur un réseau local très performant, de l'ordre de 30ms si l'on est à travers des connexions distantes


Mais pourquoi donc rappeler tout cela, me demande une souris qui gratte ses mignonnes petites oreilles de consternation ? C'est qu'il nous faut nous poser la question : où est notre base de données là-dedans ? En fait, elle est à cheval sur trois catégories : elle travaille pour partie en mémoire vive (grâce à un cache plus ou moins performant), pour une grosse partie depuis le disque dur, mais il faut lui ajouter une petite latence réseau, car elle est en général déportée sur une autre machine et, quand ça n'est pas le cas, toute la couche des appels réseaux est utilisée quand même pour des appels en local.


Alors, nous voyons tout de suite le problème d'appeler sans arrêt notre base de données : à chaque appel, on paye quelques millisecondes, voire beaucoup plus quand on fait des requêtes maousse costaudes, et des millisecondes qui s'entassent, eh bien ça fait des secondes, puis finalement des heures, voire des jours. Alors que l'on voit tout de suite que si nos données étaient toutes en mémoire, eh bien on irait constamment à la vitesse de la mémoire vive, soit 100 000 fois plus vite, excusez du peu. L'idéal étant même de toujours s'arranger pour travailler dans le cache processeur, là on tombe carrément dans la vitesse intersidérale absolue, sauf que c'est bien difficile à réaliser en pratique si l'on ne programme pas dans un langage qui permet de gérer finement l'allocation mémoire, et désormais très peu de langages modernes l'autorisent, vu que c'est aussi une source d'erreurs fatales et de cataclysmes sans nom. Cela dit, nous ne sommes tout de même pas obligés de nous mettre les mêmes contraintes pour notre petit programme que pour la séquence de lancement d'une fusée en temps réel, donc déjà si on arrête de spammer la base de données à tout va et qu'on sollicite un peu plus la mémoire vive de notre machine on sera bien content.


Bien entendu, il n'y a pas équivalence stricte entre ces méthodes de stockage de données : les données en mémoire vive ou dans un cache processeur sont volatiles, alors que dans votre base de données, elles seront persistantes (enfin si tout va bien). Remarquons d'ailleurs la tendance bien navrante de certains programmeurs à utiliser leur base de données comme fourre-tout pour y mettre des données qui n'ont aucun intérêt à être stockées, comme des résultats de calculs intermédiaires, des caches temporaires, etc, tout ça parce que c'est bien facile de tout ranger dans le gros placard que de travailler un peu à gérer des structures de données en mémoire. Résultat des courses, c'est la double peine : vous perdez en performance à appeler sans cesse votre base de données, et en plus vous consommez du stockage inutilement pour des données qui peuvent être recalculées à la demande.


Il existe aujourd'hui des bases de données non relationnelles fringantes, ou encore des systèmes de cache clé-valeur excessivement plus performants qu'une base de données traditionnelle, comme Redis pour n'en citer qu'un, et qui seront bien utiles dans certains contextes, comme le fait de partager certaines données volatiles entre plusieurs serveurs. Cela dit, même quand ils travaillent exclusivement en mémoire, bravo à eux, ils resteront toujours nettement moins performants que l'utilisation de la mémoire vive au sein même de la zone d'exécution de votre propre code : vous évitez ainsi de payer une petite (ou grosse) latence réseau, ainsi que tout un traitement lié au protocole de transfert aller-retour à la base et son interprétation dans le langage de programmation que vous êtes en train d'utiliser, bref un tas de choses qui ne coûtent pas bien cher si on se sert de sa base de données avec parcimonie, mais qui commencent à chiffrer sévèrement dès qu'on fait tourner plusieurs milliers de fois par seconde notre petit code.



Allô, la base de données ?


Bien bien, on vous a compris, les souris, on jette la base de données à la poubelle et on ne fait plus que du code en mémoire, merci et salut. Attendez ! Ne partez pas si vite, on ne va pas se quitter sur un malentendu pareil : il n'est pas question de mettre toute notre application en mémoire partout et tout le temps, sinon on a remplacé une nuisance par une autre. De toute manière c'est tout simplement impossible, car vous avez sans doute remarqué qu'on est loin de pouvoir mettre autant de mémoire vive sur une machine qu'elle n'a de stockage disponible. Si votre application consomme 100 Go sur disque dur, vous aurez bien du mal à obtenir l'équivalent pour passer l'ensemble en mémoire vive, même à considérer que ça prendrait strictement la même place, ce qui n'est pas vrai (le stockage en mémoire consomme toujours légèrement plus de place que la donnée elle-même).


Bon, donc on ne jette pas notre base de données à la poubelle, au contraire même : c'est tout de même une technologie super robuste pour stocker des données de manière persistante et garantir leur intégrité, beaucoup mieux que s'il fallait faire ça soi-même par des bouts de fichiers, ou tout autre technique tordue qui vous viendrait à l'esprit. Simplement on va s'interdire d'appeler trop souvent notre base de données, pour ne pas payer le coût prohibitif de l'appel à chaque fois qu'on a besoin d'une donnée. Imaginez un peu un code de 100 lignes qui appelle la base de données toutes les 10 lignes pour faire un traitement. Disons qu'on perd 1ms à chaque appel, ce qui est déjà très optimiste, donc notre code s'exécute en 10ms. Si on a réussi à faire tous ces appels en une fois, on ne paye déjà plus que 1ms, on a déjà gagné un facteur 10. Mais si en plus on a anticipé, et préparé dans une autre section de code ces données et qu'elles sont déjà en mémoire, là notre bout de code s'exécute de manière quasi instantanée.


Alors évidemment, ceci supppose d'arrêter de manier à la truelle un concept de programmation particulièrement en vogue, mais qui est une ineptie en terme de performances : l'absence de contexte. Je fais ma petite fonction qui s'occupe de son petit calcul et ne sait rien du reste du monde, mieux encore, je l'appelle au travers d'une API comme ça c'est super étanche, elle ne sait rien de mon application, c'est l'insouciance bienheureuse de l'ignorance béate. Ces principes sont très sains appliqués à une certaine échelle, pour éviter ce qu'il faut bien appeler un sac de noeud géant qui constitue malheureusement la réalité sordide de bien des projets informatiques ayant dérivé dans la nuit, mais ils sont franchement délétères quand on les reporte à une échelle microscopique, puisque l'on va finir par payer un coût exhobitant à chaque micro-étape de notre programme.


Aux Souris Vertes, nous avons un Principe Majeur s'agissant de structurer correctement son application : toute partie du code qui utilise un tant soit peu intensément les données doit pouvoir disposer de la logique complète de la manière dont elles sont structurées, et même la guider : on stocke toujours ses données de la manière la plus adéquate pour les reprendre ensuite, et pas selon un schéma préétabli qui fait beau sur le papier, mais qui est totalement impraticable pour la machine. C'est quand même elle qui travaille à la fin, non mais.


Résumons en quelques savants conseils percutants notre manière de gérer la base de données en Programmeur Responsable :

- mutualiser autant que possible les appels successifs, quitte à organiser le code autrement. Par exemple, je dois récupérer la date de naissance d'un utilisateur à partir de son login à chaque fois qu'il se connecte. Soit je fais un appel à chaque connexion, soit je charge une fois pour toute en mémoire une relation (login,date de naissance), et du coup je ne fais plus jamais d'appel à la base pour cette petite information triviale. Evidemment, si j'ai 30 millions d'utilisateurs, il va falloir que je commence à me poser des questions car cela va vite saturer joyeusement ma mémoire vive. On peut essayer d'optimiser le stockage en mémoire, mais effectivement passé une certaine échelle on ne pourra plus agir aussi simplement. En même temps, dans 99,99999% du temps vous aurez des petites quantités de données à traiter, disons moins de 100 000 d'un coup, et vous pouvez y aller gaiement avec ce genre d'optimisation qui ne coûte pas cher.

- maîtriser la logique globale de l'accès aux données dans l'application, en particulier savoir quelles parties de code écrivent ou lisent dans la base de données pour ne pas faire de traitements redondants ou des appels inutiles, pour des données que vous auriez pu vous repasser d'un bout à l'autre du code.

- stocker les données sous la forme la plus adaptée à la manière dont elles sont ensuite extraites. Le paradigme des bases de données relationnelles, je-mets-tout-à-plat-et-après-je-fais-30-jointures-si-j'ai-besoin, est en ce sens désastreux. En principe, on sait toujours comment une donnée est récupérée (toute seule ou en groupe, filtrée selon un attribut particulier, etc) et il faut en tenir compte dans la manière de structurer son stockage en base. Rappelons également que la création d'index à tout va quand on se rend compte que les performances sont abyssales, généralement lorsque l'on requête sur un ou des attributs que l'on n'avait pas anticipés, n'est pas une méthode viable : chaque nouvel index créé peut dépasser la taille des données brutes stockées, ce qui fait qu'on consomme du stockage à gogo sans vraiment corriger le problème, qui se trouve, comme presque toujours, au sein de la logique que déroule notre code.


Voilà, nous n'allons pas multiplier les conseils aujourd'hui, le principe est simple : on contrôle finement les appels à notre base de données, de manière à en faire le moins souvent possible. Et une fois qu'on a pris nos petites habitudes, on peut les appliquer même quand il n'y a pas forcément un enjeu important de performances, car il n'y a pas de raison de gaspiller des ressources machine, même quand la différence n'est pas perceptible à l'oeil nu. Bien sûr, on cherchera toujours un équilibre entre la complexité du code à écrire et à maintenir, et le gain réel en performance.


Allez, on s'arrête là pour aujourd'hui, vous avez déjà largement de quoi méditer. On se sépare sur un petit haïku providentiel :

"Ciel d'hiver -
La neige répond
A l'appel du rocher"

Midoriro no Mausu (la Souris Verte)

>Voir le billet et ses commentaires...
 

Le Petit Geste Du Jour : je change les réglages de mon appareil photo
Date 20/05/2017
Ico Le Petit Geste du Jour
Comms Aucun commentaire

Une souris verte prend une photo

"Sur l'image sainte

Elle lâche une fiente

L'hirondelle"


Yosa Buson (1716-1783)

Aujourd'hui, et parce que c'est vous, nous transformons un Tout Petit Geste en un Effet de Manche tout à fait spectaculaire, un tour de prestidigitation à côté duquel faire disparaître la tour Eiffel devant cinquante mille personnes fait délicatement pouffer. Car nous nous promettons rien de moins qu'une transmutation alchimique profonde de tout appareil photographométronique, et je dis bien tout, et même plus encore puisque l'on peut ajouter sans vergogne téléphones, caméscopes, tablettes, webcam, souriscopes, et autres capteurs de contenu multimédia. En quelques instants, et sous les yeux ébahis de la foule en délire, nous allons changer le plomb de la grosse photo balourde en une fine couche  d'or fin sous la forme d'un fichier aussi léger qu'une plume.


Avant d'expliquer le mais pourquoi du comment donc de cette opération renversante, il me faut présenter platement mes excuses à toute la compagnie de souris vertes qui s'agite gaiement autour du bureau en cette belle matinée. Cela fait en effet plusieurs semaines, mois même, années peut-être ? des siècles ? Euh, ne nous emportons pas, ce blog a encore la fraîcheur du jeune souriceau, donc on ne saurait remonter si loin. Mais bref, cela fait bien longtemps que les souris unanimes militent pour la publication de cet article, qui est dans la filiation directe de nos formidables billets sur les grandeurs du monde numérique, dont nos plus anciens lecteurs se souviendront peut-être avec émotion.


Tu veux ma photo ?


Il était donc plus que temps de céder au lobbying incessant des petites souris bien remontées contre le phénomène absolument destructeur du Réglage Par Défaut Ridicule. D'autant que l'inondation à travers tous les systèmes de communication de contenu multimédia produit sans aucune précaution menace sérieusement de ravager la planète. Etant donné que le texte n'intéresse plus personne, et que la vidéo est encore difficile à diffuser à la pelleteuse vu la bande passante qu'elle consomme, ce sont bien les photos et images en tout genre qui constituent l'essentiel des échanges à travers les réseaux informatiques, et qui viennent ensuite gentiment s'inscruster dans des espaces de stockage dont le guichet reste ouvert 24h/24. Rien que sur FesseBouc, un service à l'odeur pour le moins douteuse, ce sont pas moins de 200 millions de photos qui sont ajoutées chaque jour, pour un total pour le moment de 90 milliards, rien que ça.


Bien entendu, il serait opportun de s'interroger sur l'utilité finale, et plus avant sur le sens profond de cette tendance à l'accumulation compulsive de données qui veut tout montrer et rien oublier ou simplement taire. Sans compter la possibilité parfaitement immature de consommer toujours plus d'objets numériques sans s'interroger sur leur devenir ni assumer aucune responsabilité dans leur cycle de vie ; voilà bien une possibilité de pollution par prolifération nettement démultipliée par rapport au monde réel finalement bien risible avec ses quelques centaines d'objets inutiles qui traînent à la cave ou au grenier.


Mais, même si ça n'est pas le désir de polémiquer joyeusement qui nous manque, nous laisserons là la discussion philosophique, anthropologique, sociologique, philogénétique et tout ce que vous voulez ajouter en -ique (une souris à droite me suggère le très mignon "souristémique", je m'en vais de ce pas pétitionner l'académie française pour son entrée dans le dictonnaire) pour nous concentrer sur notre geste salvateur du moment. Commençons déjà par nous assurer de ne pas consommer de l'octet à la tonne, ensuite chacun pointera son petit objectif vers ce qui lui plaira et en son âme et conscience.


Scandale inouï du réglage inique (et réciproquement)


Aux souris vertes, nous n'avons pas peur de prendre des risques, et nous allons de ce pas briser le silence complice, l'omerta tacite, la complaisance facile qui autorisent aujourd'hui la commercialisation de dizaines de milliers d'appareils numériques avec des réglages embarqués qui relèvent tout bonnement d'un scandale environnemental, social et de santé publique tout à la fois. Imaginez un instant que l'on ne propose plus à la vente que des biberons de 2 litres pour inciter nos nourrissons à consommer davantage, les fainéants, ou des rouleaux de papier toilette à cinquante épaisseurs que vous aurez même du mal à plier, pour soutenir la croissance mondiale qui en a bien besoin, et vous aurez une bonne idée de la finesse de conception et de l'intelligence stratégique qui anime l'industrie numérique au moment de vous produire un appareil photo.


Il est acquis que l'on peut désormais produire des capteurs ultra-sensibles à des coûts si risibles que l'on peut en habiller gentiment le moindre gadget électronique, tout cela dans une grande débauche débonnaire de métaux rares et d'énergie fossile. Mais, non content de nous équiper d'un matériel optique nettement plus performant que la plupart des missions spatiales du siècle dernier, ce dont nous commençons à nous blaser légérement du fait que même les jouets pour enfants en sont truffés, on va surtout nous ajouter des réglages toujours plus énormes pour nous produire du Super Méga Pixel inutile, mais qui offre un argument de vente bien commode. Nous n'allons pas refaire ici la démonstration percutante de la stupidité de ces ordres de grandeur publicitaires quand il s'agit de nous vanter du Méga Pixel sans retenue, nous vous laisserons pour cela relire l'étonnant article traitant de la taille des écrans, mais nous rappelons simplement la conclusion sans appel qu'il est permis d'en tirer : aujourd'hui, le moindre appareil photo embarqué sur le plus minuscule téléphone va vous générer des images dans un format qu'aucun écran au monde n'est capable d'afficher, ni aucune imprimante capable d'imprimer. Donc, non seulement vous transportez et stockez beaucoup trop d'information dans votre petite photo, mais en plus vous allez faire travailler les machines qui vont se charger de l'afficher en lui redonnant auparavant une taille un peu plus raisonnable que la longueur d'un porte-avion.


Alors, pour ajouter une subtile nuance de vert à notre tableau bien sombre, sans aller jusqu'à dire que les résolutions gigantesques que proposent les appareils photo sont réellement utiles car on saurait très bien s'en passer, on concèdera qu'il est possible d'en tirer parti si vous faites un certain type de photo ou de vidéo. La photographie naturaliste par exemple, celle qui consiste à essayer d'immortaliser des souris vertes tapies au milieu d'un buisson, peut bénéficier du raz-de-marée de pixels pour permettre ensuite de recadrer les images obtenues sur des détails qu'il serait bien difficile de capter directement à la bonne échelle. Mais bon, on est tout de même sur un usage très spécialisé, et dans ce cas il n'est pas question de diffuser la photo obtenue sans un traitement qui va ramener sa taille à des dimensions bien plus modestes. Et quoi qu'il en soit, on aura du mal à se persuader que ce sont des armées de botanistes et d'ornithologues amateurs qui alimentent aujourd'hui les réseaux dits sociaux et les millions d'images échangées à travers l'internet mondial à chaque milliseconde. Alors, pour tous les autres, on le fait ce petit geste ?


Travailler autant pour gagner moins (de pixels)


Ah vraiment quel beau programme, les souris. Ce n'est pas avec ce genre de titre honteusement décroissant qu'on va séduire le quidam, franchement non mais. C'est pourtant bien de cela qu'il s'agit, nous allons baisser la résolution en pixels de notre appareil photo. Ceci aura plusieurs conséquences notables :

- la photo aura moins de pixels. Eh oui ! Bon, plus concrètement, la définition de l'image sera moins bonne, on perd des détails, mais comme nous l'avons déjà fait remarquer, au-delà d'une certaine résolution le gain en qualité est minime voire imperceptible, et la consommation d'espace proprement monstrueuse.

- le fichier en question sera moins gros. Eh oui ! Ce qui aura deux conséquences formidables : moins d'octets à envoyer par le réseau si vous diffusez votre oeuvre, donc un transfert plus rapide et plus économe en bande passante, et moins de stockage nécessaire chez vous comme chez Papi Gaston à qui vous avez envoyé le tout.

- vous économisez des ressources numériques partout où vous baladez vos petites images, autrement dit vous sauvez sans le savoir les phoques, les ours polaires et les bébés tigres, sans oublier toutes ces petites bestioles incroyables qui vivent dans les forêts équatoriales.


Concernant le deuxième point, quand on connaît le manque d'espace disque chronique dont souffrent les possesseurs d'appareils numériques prisonniers de modèles qui ne permettent pas de rajouter du disque dur à l'envie, on se demande bien pourquoi ils n'ont pas sauté sur ce petit geste plus tôt.


Allez, on donne enfin la procédure pour le geste que tout le monde attend :

- j'attrape mon appareil téléphotoscope d'une main, je l'allume de l'autre

- je localise dans les préférences les réglages d'image. Là ça dépend de l'appareil, à vous de trouver.

- je commence par changer le format de l'image, en choisissant un format directement compressé (surtout pas d'image brute ou 'raw', malheureux !) : jpeg ou png par exemple pour deux formats d'excellente tenue. Il y a parfois des réglages supplémentaires sur le niveau de compression, là il vaut mieux expérimenter avant d'arrêter son choix, pour ne pas dégrader notablement le rendu.

- je change ensuite la résolution de l'image, pour prendre quelque chose de raisonnable. 1920x1080 (pour un format 16:9, sinon 1920x quelque chose) correspond déjà au fameux SuperUltraFullHD des écrans qui se la racontent, donc aller au-delà paraît bien déraisonnable. L'appareil photo des souris vertes ne nous laisse pas une grande latitude de choix, donc on opte pour du 1600x1200, ce qui fait des images tout à fait sympathiques à voir sur un écran et nous garantit des fichiers d'une taille de 500ko à 1Mo. C'est toujours plus lourd que du texte, même que l'intégrale des articles des Souris Vertes (si si),  mais pour une photo grand angle ça reste tout de même modeste.


Juste pour illustrer le gain de place que l'on en retire immédiatement, avec ma vieille carte mémoire pas bien grosse je peux prendre 1200 photos en 4000x3000, la résolution par défaut n'importequoitesque de l'appareil, et en ajustant mes réglages, même sans tirer jusqu'au timbre poste en 4 couleurs, je peux en prendre 6500. Personnellement je préfère avoir une résolution pas trop grande mais choisir le format de compression le moins agressif.


Bon, après c'est à vous de faire vos essais aussi, jusqu'à trouver le bon compromis entre le poids du fichier, la dimension de la photo et la qualité finale. Tant que vous ne restez pas sur les réglages par défaut ça sera déjà un bel effort. Bravo !

Arrête ton cinéma

Ne partez pas ! Je vois des lecteurs qui s'apprêtent à lever l'ancre après cette petite séance de gesticulation salutaire. On a déjà bien oeuvré pour la planète, c'est sûr, mais on peut aller encore plus loin sans trop se fouler, maintenant qu'on y est. Car, généralement, les appareils qui savent prendre des photos savent aussi filmer, voyez-vous. Alors là, on ne le répétera jamais assez, aussi allons-y pour notre petite rengaine préférée, mais la vidéo est l'antithèse absolue de la sobriété numérique, elle vous dévore de l'octet encore pire que Grosbouf (qui A FAIM comme le reconnaîtront les fans des schtroumpfs, que forcément les souris vertes révèrent, elles qui aiment tous les animaux délicieusement colorés). Bref, si on peut s'abstenir, c'est aussi bien, mais si parfois on a du mal à s'en passer,  la moindre des choses sera d'aller chercher les réglages au même endroit que précédemment, et d'aller illico baisser la résolution des images prises. Bon, la qualité de l'image va bien vite se dégrader, mais celle du son n'en souffrira pas, et surtout vous aurez le droit de prendre des vidéos de plus d'un quart de seconde sans saturer votre carte mémoire d'un trait.

Comme précédemment, il vaut mieux expérimenter la résolution qui vous convient en fonction des possibilités de votre appareil. Pour ma part j'utilise plutôt le 640x400, pas forcément très joli à afficher sur un grand écran mais qui va bien pour les quelques rares fois où j'ai quelque chose à enregistrer. A vous de voir. Mais se poser la question, et savoir changer les réglages en fonction du contexte, c'est déjà un grand pas sur la Voie de l'Usage Numérique Maîtrisé.


Allez, c'est fini pour notre épisode du jour, vous pouvez allez vous reposer, sous les acclamations des souris en liesse.

On se quitte sur un petit haïku en écho à notre discussion :

"Reflet sur l'eau
Du reflet de mon oeil
Regardant la mer"

Midoriro no Mausu (la Souris Verte)









>Voir le billet et ses commentaires...
 

1 2 3 4

Infos blog

Des Souris Vertes

Derniers billets

Polémiquons   06/03/2018
A bas le 'c'est pratique'
Le Petit Geste du Jour   04/02/2018
Le Petit Geste Du Jour : je me dirige sans GPS
Club de lecture   21/01/2018
Les souris vertes ont lu pour vous : l'économie symbiotique, d'Isabelle Delannoy
Le Petit Geste du Jour   05/01/2018
Les 5 gestes totalement vraiment incontournables de l'écologie numérique
Le Petit Geste du Jour   22/12/2017
Le Petit Geste de Noël : je ne renouvelle pas ma panoplie numérique
Dossier   16/12/2017
La Programmation Responsable (6) : des sites webs écologiques tu concevras
Dossier   07/12/2017
La Programmation Responsable (5) : les structures de données tu maîtriseras
Dossier   28/11/2017
La Programmation Responsable (4) : de spammer ta base de données tu cesseras
Dossier   18/11/2017
La Programmation Responsable (3) : de déléguer la programmation tu éviteras
Dossier   04/11/2017
La Programmation Responsable (2) : de ricaner en cours d'algorithmique tu arrêteras
Le Petit Geste du Jour   24/10/2017
Le Petit Geste Du Jour : je nettoie ma boîte de messagerie
Dossier   16/10/2017
La Programmation Responsable (1) : Ce dossier tu liras
Réseau   05/10/2017
Mes données dans le cloud : écologique ou pas ?
Dossier   26/09/2017
Au secours, mon ordi est lent ! (8) : J'apprends à reconnaître et changer le matériel
Le Petit Geste du Jour   10/09/2017
Le Petit Geste De La Rentrée : j'arrête le streaming
Divers   25/05/2017
Les souris vertes s'invitent à la radio
Le Petit Geste du Jour   20/05/2017
Le Petit Geste Du Jour : je change les réglages de mon appareil photo
Dossier   11/05/2017
Au secours, mon ordi est lent ! (7) : Je réinstalle mon système tout seul comme un grand
Le Petit Geste du Jour   06/05/2017
Le Petit Geste Du Jour : j'écris un haïku pour me détendre
Divers   14/04/2017
Cultiver l'attente...
Club de lecture   25/03/2017
Les souris vertes ont lu pour vous : la convivialité d'Ivan Illich
Le Petit Geste du Jour   09/03/2017
Le Petit Geste Du Jour : j'enlève la signature automatique des messages
Polémiquons   27/02/2017
L'inquiétant mariage de la science et du numérique
Dossier   17/02/2017
Au secours, mon ordi est lent ! (6) : J'adapte mon système à mes besoins
Club de lecture   12/02/2017
Les souris vertes ont lu pour vous : une question de taille, d'Olivier Rey
Le saviez-vous ?   21/01/2017
Le saviez vous ? La voiture est un ordinateur sur roues
Dossier   10/01/2017
Au secours, mon ordi est lent ! (5) : J'apprends à ne pas perdre mes données
Dossier   30/12/2016
Au secours, mon ordi est lent ! (4) : Je nettoie Windows à grands jets
Polémiquons   23/12/2016
Le Petit Geste de l'Année : je ne commande rien d'électronique au père noël
Le Petit Geste du Jour   11/12/2016
Le Petit Geste Du Jour : j'utilise un bloqueur de publicités
Dossier   27/11/2016
Au secours, mon ordi est lent ! (3) : J'apprends à ne pas polluer mon ordinateur
Dossier   14/11/2016
Au secours, mon ordi est lent ! (2) : Je dégage l'antivirus à coup de pied
Dossier   05/11/2016
Au secours, mon ordi est lent ! (1) : les souris vertes à la rescousse
Le Petit Geste du Jour   23/10/2016
Le Petit Geste Du Jour : j'utilise le mode avion même à pied
Système   16/10/2016
L'ordinateur portable est-il plus écologique ?
Le Petit Geste du Jour   02/10/2016
Le Petit Geste Du Jour : je gère la durée de vie de ma batterie
Club de lecture   17/09/2016
Les souris vertes ont lu pour vous : l'âge des low tech, de Philippe Bihouix
Système   21/08/2016
J'apprends à gérer mes mots de passe
Le Petit Geste du Jour   08/08/2016
Le Petit Geste Du Jour : j'arrête d'inclure les messages quand je réponds
Polémiquons   30/07/2016
Ecole et numérique font-ils bon ménage ?
Le Petit Geste du Jour   19/07/2016
Le Petit Geste du Jour : j'arrête d'écrire mes mails en HTML
Chamois d"or   10/07/2016
Le saviez vous ? Il est possible d'être informaticien sous Windows sans se pendre
Messagerie   04/07/2016
L'incarnation du mal : la pièce jointe dans les mails
Le Petit Geste du Jour   26/06/2016
Le Petit Geste Du Jour : Je réduis la luminosité de mon écran
Divers   18/06/2016
Stop à l'imprimante jetable
Dossier   12/06/2016
Grandeurs du monde numérique (6) : Réseaux en folie
Le Petit Geste du Jour   05/06/2016
Le Petit Geste du Jour : j'éteins ma box quand je ne m'en sers pas
Le saviez-vous ?   31/05/2016
Le saviez-vous : Google n'est pas le seul moteur de recherche ?
Dossier   25/05/2016
Grandeurs du monde numérique (5) : Dans la jungle des écrans
Le Petit Geste du Jour   20/05/2016
Le Petit Geste du Jour : je mets mes sites favoris... en favoris
Le Petit Geste du Jour   15/05/2016
Le Petit Geste du Jour : je change la page de démarrage de mon navigateur
Dossier   14/05/2016
Grandeurs du monde numérique (4) : Les spectaculaires performances des jeux vidéos
Le saviez-vous ?   12/05/2016
Le saviez-vous : à quoi sert l'économiseur d'écran ?
Dossier   08/05/2016
Grandeurs du monde numérique (3) : Monsieur Herz mesure la solitude du processeur
Dossier   06/05/2016
Grandeurs du monde numérique (2) : Octets et compagnie, les rois du stockage
Dossier   05/05/2016
Grandeurs du monde numérique (1) : c'est gros, c'est petit ?
Divers   04/05/2016
Les souris partent à l'aventure


MP  Mighty Productions
> Blogs
> Des Souris Vertes
 
RSS       Mentions légales       Comms  Haut de la page