samedi, juillet 9 2022

L'informatique et les formulaires

La semaine dernière j'ai suivi une formation sur Angular, le framework de développement d'applications WEB.

A un moment donné est venu le sujet des formulaires. Vous savez les formulaires sont des écrans avec des champs de saisie et un bouton Valider. Cela peut servir à valider une commande par exemple, après avoir entré son nom, son numéro de carte bleue, son adresse etc. Ce sont tout simplement des abstractions informatiques des formulaires papiers.

Et donc les participants de s'extasier (j'exagère un peu) devant les facilités qu'offre Angular pour réaliser les formulaires.

Là je me suis souvenu que dans les années 90 (avant internet oui), j'avais des collègues qui passaient leurs journées à faire des formulaires sur un système qui s'appelait (de mémoire) SQL Forms et qui était proposé par Oracle pour fonctionner directement avec la base de données. Je relève donc cette anecdote amusante à la formation en soulignant que fonctionnellement on n'avait pas beaucoup progressé puisque le même type de formulaire existait il y a 30 ans. Simplement le système de développement était différent, et je n'étais pas certain qu'il était beaucoup plus difficile comparé à Angular (qui me parait quand même assez complexe). Que n'avais-je pas dit là ! Ils m'ont assuré que c'était beaucoup mieux maintenant étant donné que le formulaire n'accédait pas directement à la base de données. En gros l'architecture logicielle était mieux, il y avait des interfaces pour séparer les différentes couches etc. Je leur ai fait remarquer que tout cela étaient des considérations d'informaticien et que cela ne concernait pas l'utilisateur mais ils avaient un peu de mal à comprendre. Ils étaient dans leur monde de développement logiciel, incapable de voir qu'un formulaire des années 90 remplissaient les mêmes fonctions qu'un formulaire des années 2020.

Tout cela pour dire quoi ?

Et bien je pense que l'informatique WEB est dans un égarement profond. Les informaticiens passent leur temps à refaire la roue et c'est particulièrement le cas dans le monde WEB. Ils ont presque oublié que le but de l'informatique est de rendre des services et sont obnubilés par des questions d'architecture, de compétition entre les frameworks (il en existe des dizaines qui font à peu près tous la même chose), d'élégance du code, oui les informaticiens sont des esthètes. Les frameworks deviennent assez vite obsolètes ou subissent une mode qui en fait parfois disparaître certains bien qu'ayant des qualités.

Le fait qu'il faille encore des jours de développement, à se prendre la tête avec des syntaxes compliquées, pour faire des formulaires, choses qui n'est pas si compliqué en soit, est assez symptomatique qu'en 30 ans on n'a pas beaucoup avancé. Et savoir le faire dans un système apporte peu d'aide quand on doit passer à un autre car il faut réapprendre. Il est difficile de capitaliser une expérience donc la durée de développement s'en ressent.

De nos jours, l'apparence de l'informatique donnée aux utilisateurs est beaucoup plus complexe que par exemple le Minitel que tout le monde était à peu près capable d'utiliser. Mais maintenant, les sites WEB sont très complexes et ont tendance à rebuter les utilisateurs qui ne les utilisent qu'occasionnellement. Cela me fait aussi penser au système 3270 (de mémoire) utilisé dans les banques, entièrement en mode texte, et qui semblait d'un maniement très rapide et efficace, du moins pour les opérateurs de banques mais qui n'étaient pas forcément des informaticiens.

Évidemment, c'est une idée générale, tout cela peut être nuancé.

samedi, octobre 17 2015

Applet

Quand je lis ce document de Google sur les problèmes de sécurité avec les applications Web, je me dis que les Applets ont été écartées pour de mauvaises raisons.
Certes je ne suis pas un spécialiste en sécurité mais Google lui-même indique que l'utilisation massive d'AJAX a créé des failles de sécurité qui n'existaient pas avant avec des sites plus classiques. Et Google est un des plus actifs promoteurs des applications AJAX.
Par ailleurs ce qu'ils appellent Same-Origin Policy a été copié de ce qui avait été introduit par les Applets (en quelle année ? 1998 ?). De même le problème d'injection de code par des entrées utilisateurs n'est pas possible en Applets puisque l'application n'est pas faite en HTML/JS/JSON. C'est du Java. On peut difficilement imaginer saisir dans un formulaire du code Java en espérant qu'à l'affichage il va s'exécuter.
Je ne dis pas qu'il n'y a pas de failles dans les Applets mais je pense que ce ne sont pas des failles introduites par un mauvais codage alors qu'en HTML/AJAX/JS c'est le cœur du problème.
En fait on peut considérer que la plupart des sites ont des failles dues à une méconnaissance des problèmes de sécurité.
Bref tout cela me fait dire qu'avec HTML/AJAX/JS on a fait un bon en arrière incroyable en promouvant des technologies qui n'étaient pas adaptées pour faire des applications solides. D'ailleurs le nombre de frameworks qui existent dans ce domaine indique que ces technologies en sont au stade du prototype et que chacun cherche désespérément à combler les lacunes d'un système de développement bancal.
En fait - parenthèse - tout ce temps perdu me donne à penser que la concurrence exacerbée est vraiment un mauvais système. Au contraire une coopération entre les différents acteurs aurait abouti beaucoup plus rapidement (en théorie) à produire les fonctions manquantes sur les systèmes existant, en l’occurrence Java puisque c'est le sujet. L'idéologie des USA nous a entrainé dans des errements dont on n'est pas encore sorti.
Parallèlement Java est depuis longtemps une technologie aboutie et il aurait juste fallu corriger les quelques choses qui n'allaient pas (UI/Swing, le problème du déploiement par exemple) mais des guerres de pouvoir ont sabordé cela.
Quand je vois JavaFX 2, je me dis que si il était sorti en 2000 les choses auraient pu être différentes.
Alors on va me dire qu'avec Java il faut installer une JVM, c'est chiant. C'est vrai mais comment croyez-vous que JavaScript s'exécute ? Avec une VM embarquée comme l'était la JVM dans les premiers navigateurs.
De plus je pense que Java pourrait évoluer pour être modulaire et n'installer dans le navigateur que le strict nécessaire au fur et à mesure des besoins. De même, ne pourrait-on pas imaginer de livrer une application Java entièrement autonome (en fait c'est déjà possible en utilisant des outils payants) ?
Le problème principal étant que les acteurs qui font les navigateurs sont engagés dans une mise à l'écart de Java dans le Web et dans les systèmes car ils veulent tous que le développeur utilise leur framework de développement à l'exclusion de tout autre (Google, Apple, Microsoft). Java étant multi-plateforme il doit être tué.
De la part de Google c'est quand même un peu bizarre étant donné qu'il a volé choisi Java pour en faire le système de développement sur Android. D'ailleurs il n'a pas choisi JavaScript mais Java (tout le monde sait que JavaScript est un très mauvais langage...). De fait on peut considérer qu'il y a désormais deux Java différents qui évoluent de manière indépendante. Cela fractionne encore plus les énergies.
C'est une spécialité de l'informatique de refaire 100 fois les mêmes outils. Il suffit pour s'en convaincre de consulter la liste des langages de programmation sur Wikipedia. Il faut imaginer tout le temps et l'argent dépensé pour créer tous ces langages dont peut-être 10% sont couramment utilisés et encore moins dans l'industrie. Et encore ce ne sont que les langages de programmation. Il y a plein d'autres langages pour tout un tas d'usages tous plus ou moins différents parfois de manière très subtile.
Franchement les différences (je considère uniquement le langage) entre C++, Java, Ruby, Groovy, Python, Scala, C#, JavaScript, Go, Dart, Eiffel etc. justifient-elles de créer un nouveau langage et un nouveau environnement de compilation, d'exécution et de débug ? Ne pourrait-on pas juste améliorer l'existant ? C'est par exemple ce que fait Java 8 en intégrant des nouveautés présentes dans d'autres langages. Mais comme le processus est long, les autres langages ont le temps de prendre une place significative.
Ceci dit, c'est plaisant de découvrir un nouveau langage mais le problème se pose de pouvoir le maitriser pour le mettre en œuvre de manière efficace, sachant que si l'on fait cela on se disperse immanquablement et je ne peux m’empêcher de penser que cela nuit à l'efficacité globale. Une autre façon de voir est de s'inspirer de ce que l'on voit dans d'autres langages pour l'appliquer dans son langage courant. C'est parfois possible mais pas toujours du fait de manques rédhibitoires.
D'ailleurs - une parenthèse - cela me fait penser aux films SF dans lesquels les informaticiens arrivent à télécharger des programmes dans des systèmes dont ils ne savent rien. On imagine donc que le futur n'utilisera qu'un seul système, avec un seul type de langage, un seul type de binaire, un seul type de connexion etc. On branche, ça upload et POUF le programme s'exécute ! Magique. Quand on voit le bordel que c'est actuellement j'ai de la peine à l'imaginer.
Il y a quand même un domaine où Java est très populaire, c'est le domaine des applications serveur, et on peut considérer qu'il ne survit que pour cela. C'est dommage car Java est l'évolution de Smalltalk qui était aussi une plateforme entière de développement aboutie aussi bien client que serveur.

MAJ: j'étais à l'instant sur un forum de développement Mac et ça parlait de Swift. C'est vrai que j'avais oublié de le citer dans ma liste non exhaustive de langages. Je ne connais pas bien Swift mais il semble qu'il soit plus statique que Objective-C qui est dynamique par nature. En effet la méthode exécutée n'est découverte qu'à l'exécution et non à la compilation. Visiblement Swift corrige cela. Mais alors on peut se demander pourquoi ne pas avoir choisi Java qui est fortement typé ?

vendredi, février 24 2012

Safari

Bon Firefox n'est pas entièrement satisfaisant. Les plus gros problèmes étant une consommation CPU excessive lors de video Flash (mon ventilo se met en route alors qu'avec Safari je ne l'entends jamais), et l'ouverture des PDF. Parfois aussi l'interface est comme bloquée, peut-être uniquement quand je lis des videos.

Donc je suis revenu à Safari car finalement j'ai trouvé un plug-in permettant de gérer les cookies : Safari Cookies

Le principe est qu'il ne bloque pas les cookies mais il supprime en sortant ceux qui n'ont pas été marqués comme favoris. C'est assez pratique car comme cela il y a un reset des cookies ne permettant pas aux sites de tracer continuellement vos visites.

vendredi, novembre 4 2011

Navigateur

En ce moment j'utilise de nouveau Firefox.
Avant j'utilisais Safari sauf que je viens d'avoir la lubie de bloquer tous les cookies sauf sur les sites que j'autorise (principe élémentaire de sécurité : on bloque tout d'abord), en je n'arrive pas à le faire avec Safari.
Il se trouve que c'est possible avec FF.
J'ai donc configuré FF avec les plugins habituels : Ghostery, AdBlock et FlashBlock.
Du coup je récupère un peu de mémoire car Safari a vraiment un problème de ce côté.
L'idéal serait que j'ai tout ça dans Camino mais le développement de Camino est vraiment très lent donc en attendant... Il faudrait que je regarde si il y a une extension pour lire les vidéos en H264 au lieu d'utiliser Flash : ah ben oui il y en a plusieurs :)

lundi, août 29 2011

winmail.dat

C'est pas croyable qu'en 2011 on récupère encore des fichiers attachés winmail.dat.
Ce qui est fort quand même c'est que le mail du mac ne connaisse pas le format Word DOC car en utilisant ma messagerie Zimbra, j'arrive à récupérer ce fichier .DOC et à le lire avec TextEdit ou LibreOffice.
Est-ce trop demander à Apple de bien vouloir faire un mail qui fonctionne au lieu de mettre des effets à la con partout, hein ?
Remarque, Thunderbird ne fait pas mieux, mais concernant Thunderbird ça ne m'étonne pas.

samedi, janvier 29 2011

Résultats de recherche

Je viens de faire une recherche sur bd orbital étant donné que je viens d'entendre parler de cette BD à la radio.
J'ai d'abord utilisé duckduckgo qui m'a retourné en premier des liens vers des sites de téléchargement (torrent ...).
Je me suis dis que j'aimerai bien aussi des sites qui parlent de BD, j'essaye dans Google et là je ne récupère AUCUN lien de téléchargement dans la première page.
Donc pour moi c'est clair que Google filtre les résultats et supprime certains sites selon des critères inconnus, en tout cas ça commence à sentir mauvais.

J'essaye duckduckgo en ce moment et j'ai aussi installé le plugin Ghostery pour tous supprimer les systèmes de tracking.
Ca me semble pas mal, en particulier sur Agoravox.fr, on peut supprimer la barre d'outils qui apparait en bas et dont je ne me sert jamais. Ca supprime aussi les outils de statistique (Google Analytics ...). Faut avouer que le système de stat de Google est vraiment mal fichu puisqu'il utilise du javascript, donc si on supprime le code javascript, plus de stats ! Même chose pour Xiti qui utilise une image. Donc si vous en avez marre de vous faire suivre à la trace, vous savez ce qu'il vous reste à faire.
Ca me fait penser aux mobiles, en particulier l'iphone qui ne permet aucune modification du navigateur. Du coup on se fait tracker par Apple et par les sites. Il faut alors utiliser un autre navigateur. Il commence à exister des alternatives comme Privately ou Incognito qui suppriment les traces de navigation quand on les quitte.

Un autre moteur de recherche intéressant : Startingpage, qui lui utilise Google.