La vidéo fait 17 min, je l'ai regardée en x1,25 sans problème en zappant les 2 premières minutes. Bref un onboarding sur Svelte en 10 min pour ceux qui ont déjà fait pas mal de front.
Top !
Un framework pour Java / Kotlin qui aide à fabriquer des utilitaires en ligne de commande.
Tout est dans le titre.
L'article propose une explication des éléments constitutifs de la lib Normalize.css
afin de comprendre les choix qui y ont été faits, leurs conséquences et la motivation à leur origine.
Dans la pratique, plutôt que d'annuler les CSS intégrés aux différents navigateurs, Normalize.css
tente de les faire converger vers un même rendu.
J'approuve la démarche !
@Kysofer tu cherchais une implémentation de Twig en Rust mais Twig est inspiré de Jinja2 donc Tera qui est une implémentation de Jinja2 en Rust est compatible avec tes composants Twig écrits pour Pebble 😋 #Cadeau
Du coup nous avons la stack
- Kotlin + Pebble + Jooby + H2DB/PostreSQL pour les projets en clientèle.
- Rust + Tera + Actix + SQLite pour les projets internes.
Je cherche depuis plusieurs mois un successeur à Aurelia (puisque Aurelia 2 n'avance plus et qu'il me donne l'impression d'être un projet zombie).
Je suis tombée ce soir sur Mikado, qui est un moteur de template HTML côté client.
Il est ultra rapide (équivalent à du Vannilla JS) et ne pèse que 3 Ko. Il s'appuie massivement sur les fonctionnalités connues et diffusées du web (balise tempate, id, etc), d'où sa vitesse, mais apporte le confort qu'il faut.
Si je parviens à structurer mon code avec, il remplacera Aurelia, Angular et React chez moi.
Parfait pour Kotlin et Java.
Article très intéressant sur comment nommer correctement ses classes CSS. En substance le comportement visuel ne doit jamais fuiter dans le nom de la classe, autrement cela voudrait dire que le HTML connaît une partie de la présentation ce qui viole le principe de séparation des préoccupations.
Par exemple pour un message principale sur page d'accueil il ne faut pas écrire :
.big-text-center {
/* ... */
}
Mais écrire :
.greeting {
/* ... */
}
Aurelia qui fût sûrement le meilleur framework SPA / PWA que j'ai pu utiliser durant la décennie passée, va bientôt sortir sa très attendue V2. Nous sommes à cette heure à 80 tickets de la fin ; dont une trentaine bloquant pour la release.
La V1 du framework a été maintenue depuis 2015 et a reçu sa dernière update pas plus tard qu'en avril dernier. La V2 est en développement depuis 2 ans, développement qui a été ralenti par le COVID.
J'ai vraiment hâte d'avoir cette V2 dans les mains. En ayant testé l'alpha-28 on peut constater que le bundle JS minimal passe de 355 Ko à à 151 Ko (rappel : 660 Ko pour Angular 12). Les performances à l'exécution ont été décuplées pour être comparable à celle d'Inferno (une implémentation communautaire qui reprend les mêmes API que React) et Vanilla JS.
Je dirais qu'essayer Aurelia c'est l'adopter et je ne peux donc que vous le conseiller.
Un framework léger permettant d'inclure dynamiquement du HTML dans du HTML. A tester avec des SPA.
Une lib Java rikiki de 153 Ko permet d'écrire des logs plus rapidement qu'avec LogBack ou Log4J2 et qui implémente les interfaces de SLF4J. #Nice
Si vous codez dans un langage à destination d'une JRE (Kotlin, Java, Scala, Groovy, etc) vous avez sûrement entendu parler de Spring Boot. Pour ce qui ne le connaissent pas, c'est LE framework qui est parti de rien (à l'origine c'était seulement Spring Framework), puis qui a grossi tout doucement depuis 15 ans et est devenu aujourd'hui un mastodonte aussi gros, lourd, pénible et lent à démarrer que l'ancien JEE (avec des Websphere et Weblogic, etc).
Mais en réalité est-ce que c'est mal ?
Pas vraiment, Spring Boot pousse à produire du code en couche avec des singletons présents partout à chaque couche. Ce n'est pas comme cela que l'on écrit du code concis, découplé, court et maintenable, mais ça a le mérite de s'écrire vite, d'être simple pour des débutants et de fonctionner quand même (en tout cas au début). Après c'est un enfer à tester en terme d'écriture et de temps d'exécution mais bon, qui teste encore son code en 2021 ? #Sadness
Alors quel est mon problème ?
Mon problème c'est que parmi l'ensemble des développements actuels auxquels je contribue chez mes clients, ceux-ci sont couplés totalement à Spring Boot. Vous montez de version, vos développements risquent de péter, vous souhaitez quitter Spring Boot pour autre chose de plus rapide comme Quarkus, pas possible les libs ont été codées pour Spring Boot, d'ailleurs pour les utiliser aucune lib ne pourra se charger si vous n'avez pas Spring Boot car seul Spring Boot doit être en mesure de les instancier. #Folie
Et c'est ça mon problème, Java avait supprimé la problématique de nettoyage de la mémoire, Spring Framework avait supprimé la problématique de création des instances et Spring Boot supprime aujourd'hui la notion d'architecture (ce qui n'a pas du tout le même impact puisque ça touche à la capacité d'innover et de faire différemment), or un code propre qui soit fonctionnel et objet requiert la création et la destruction permanente d'instances immutables à cycle de vie ultra court (une action puis poubelle), ce qui est l'antithèse même des singletons omniprésents, paramétrés par AOP (ndr. Aspect Oriented Programming) et poussés par Spring...
En synthèse :
Pour toutes ces raisons, Spring Boot va à mon sens à contre courant des meilleures pratiques de développement connues et reconnues à cette heure parce qu'il préserve les façons de coder d'il y a plus de 20 ans et venant de langages ni objets ni fonctionnels comme le C, pire encore les "développeurs Spring Boot" sont tellement à fond dans Spring Boot qu'ils n'arrivent même plus à penser leurs libs comme des éléments qui puissent s'utiliser en dehors de Spring Boot et c'est ce qui me fait dire que Spring Boot est un contre-choix et une fausse-bonne idée.
Aurelia est un framework orienté SPA plus rapide que React ou Angular sur quasiment tous les modes de rafraîchissement du DOM. Ici Jeremy Danyow tient un podcast où il explique les bases des mécanismes de binding du framework.
@Chlouchloutte si tu recherches des snippets de code je te recommande d'aller sur le GitHub d'Aurelia dédié aux benchmarks des différents mécanismes de mise à jour du DOM mais j'ai l'impression que le podcast est la meilleure façon de tout comprendre (1h par contre, désolée).
Objectifs :
- Trouver un framework qui soit une abstraction du langage SQL
- Ce framework doit être orienté objet (dans la mesure du possible), type-safe et thread-safe et gérer les transactions (autant dire que pour l'OOP, je sais déjà que je repasserai).
- Ce framework ne nécessite pas de créer des entités à la Hibernate.
Ma sélection :
Je cite :
Tape is a collection of queue-related classes for Android and Java.
QueueFile is a lightning-fast, transactional, file-based FIFO. Addition and removal from an instance is an O(1) operation and is atomic. Writes are synchronous; data will be written to disk before an operation returns. The underlying file is structured to survive process and even system crashes and if an I/O exception is thrown during a mutating change, the change is aborted.
Un outil permettant d'exécuter un test de charge sans trop d'effort, en décrivant les tests à poursuivre via une syntaxe proche de JUnit et qui fourni de super graphiques en plus !
J'aime beaucoup ! Je pense à toi @Animal pour que transmette ça à Sigmund :-)
Via ChezSoi
Bon je ne suis pas fan des architectures en couche mais pour des projets sur Spring Boot ou Sparkjava qui désirent ouvrir ou fermer des routes sans effort, c'est plutôt bien fait !
Mercià @Philou pour le lien
Mon client m'a demandé de lui faire part de différents frameworks de test End-to-End qui marcheraient bien avec des SPA. Ici Nightwatch dont le seul défaut est de ne pas gérer nativement le Gherkin (même s'il est possible de lui greffer une bidouille).
Un exemple :
Un tuto qui introduit plein de manières de créer son parser/lexer en Java à partir d'une quinzaine de frameworks différents.
Tiré d'une traduction de Joël Sposky (cet homme est un vrai génie) :
Traduction un peu adaptée de l’article Why I hate framework de Joel Spolsky
J’ai voulu construire une petite étagère pour y ranger les condiments.
Ayant fait un peu de menuiserie avant, j’avais une bonne idée de ce dont j’avais besoin : un peu de bois et quelques outils de base. Un mètre, une scie, un niveau et un marteau.
D’ailleurs, si je voulais construire toute une maison, j’en aurais besoin également. Du coup je suis allé dans une quincaillerie, et j’ai demandé au vendeur où je pouvais trouver un marteau.
“- Un marteau ?”, me répondit-il. “Plus personne n’achète des marteaux de nos jours vous savez. Ils sont un peu vieux jeu.”
Surpris, je lui demande pourquoi.
– “Et bien, le problème avec les marteaux, c’est qu’il y en a plein de différents types. Des marteaux arrache-clou, des masses, des marteaux de tapissier… Que se passerait-il si vous achetiez un type de marteau et réalisiez que vous avez besoin d’un autre type plus tard ? Vous devriez achetez un autre marteau pour votre prochaine tâche. Il se trouve que la plupart des gens veulent vraiment un seul marteau qui peut être utilisé pour la majorité des tâches qu’ils peuvent rencontrer dans leur vie.”
– “Ça me parait logique. Pouvez-vous me dire où je peux trouver un marteau universel ?”
– “Non, nous ne les vendons plus. Ils sont obsolètes.”
– “Vraiment ? Je pensais que vous veniez de dire que le marteau universel était l’avenir.”
– “Il se trouve que, si vous faites un seul marteau qui puisse être utilisé pour toutes sortes de tâches, il n’est vraiment bon, à aucune d’entre elles. Enfoncer un clou avec une masse n’est pas très efficace. Et pour tuer votre petite amie, rien ne vaut un marteau de tapissier.”
– “C’est clair ! Donc, si plus personne n’achète des marteaux universels, et que vous ne vendez plus de marteaux à l’ancienne, quels marteaux vendez-vous ?”
– “En fait, nous n’en vendons pas.”
– “Alors…”
– “D’après nos recherches, ce dont les gens ont besoin n’est pas un marteau universel du tout. Il vaut toujours mieux avoir le bon marteau pour le bon boulot. Donc, nous avons commencé à vendre des fabriques de marteau, capable de produire n’importe quel marteau qui pourrait vous intéresser. Tout ce dont vous avez besoin est de remplir la fabrique de travailleurs, lancer la machinerie, acheter les matériaux de base, payer les charges et hop, vous avez exactement le type de marteau dont vous avez besoin en un clin d’œil.”
– “Mais je ne veux pas acheter une fabrique de marteaux…”
– “Parfait. Car nous n’en vendons plus.”
– “Attendez, vous venez de me dire que…”
– “Nous avons découvert que la plupart des gens n’ont pas besoin d’une fabrique complète de marteaux. Certains, par exemple, n’auront jamais besoin d’un marteau de tapissier. (Peut être qu’ils n’ont pas d’ex. Ou peut être qu’ils les ont tué avec des pics à glace.). Donc il n’y a aucune raison pour quelqu’un d’acheter une fabrique de marteaux pour tous les types de marteaux.”
– “Oui, c’est sûr.”
– “Donc, à la place, on a commencé à vendre les plans de constructions de la fabrique de marteaux, afin que nos clients puissent construire leurs propres fabriques, complètement personnalisées pour produire uniquement les types de marteaux dont ils ont besoin.”
– “Laissez-moi deviner. Vous ne les vendez plus.”
– “Non. Bien entendu. Il se trouve que les gens ne veulent pas construire toute une fabrique juste pour faire quelques marteaux. Laissez la construction des fabriques aux experts de construction de fabriques, c’est ce que je dis toujours !!”
– “Et je vous approuve sur ce point.”
– “Et oui. Donc nous avons arrêté de vendre ces plans et nous avons commencé à vendre des fabriques de fabriques de marteaux. Chacune d’elle est construite par nos experts dans le business de fabrique de fabrique de marteaux, afin que vous n’ayez pas à vous inquiéter des détails triviaux de la construction d’une fabrique. Malgré cela, vous avez tous les bénéfices d’avoir votre propre fabrique personnalisée, produisant vos propres marteaux personnalisés, collant à vos designs spécifiques en matière de marteau.”
– “Heu, ça ne me semble pas vraiment…”
– “Je sais ce que vous allez dire !! … et nous ne les vendons d’ailleurs plus. Apparemment, peu de gens achetaient ces fabriques de fabrique de marteaux, donc nous avons trouvé une solution à ce problème.”
– “Hum.”
– “Nous avons pris le temps de faire le bilan de notre infrastructure technique, et nous avons déterminé que les gens développaient une frustration à avoir à gérer et opérer une fabrique de fabrique de marteaux, tout comme la fabrique qu’elle produisait. Ce genre de contrainte additionnelle peut se révéler fastidieux quand vous vous retrouvez dans un scénario où vous utilisez également une fabrique de fabrique de mètres, une fabrique de fabrique de scies et une fabrique de fabrique de niveaux. Sans compter un conglomérat de transformation du bois. Nous avons objectivement évalué la situation, et déterminé que c’était trop complexe pour quelqu’un qui voulait juste créer une étagère pour condiments”.
– “Non, sans blague ?”
– “Du coup cette semaine, nous mettons sur le marché une fabrique de fabrique de fabrique de création d’outils en tout genre, pour qu’ainsi vos différentes fabriques de fabrique à outils puissent être créées à partir d’une seule fabrique unifiée. La fabrique de fabrique de fabrique produira uniquement la fabrique de fabrique dont vous avez réellement besoin, et ainsi ces fabriques de fabrique produiront une seule fabrique basée sur vos spécifications d’outils personnalisés. Vous aurez exactement le marteau dont vous avez besoin, et exactement le bon mètre pour votre tâche, juste en appuyant sur un bouton (même si vous aurez probablement quelques fichiers de configuration pour que tout fonctionne selon vos attentes).
– “Donc, vous n’avez pas de marteaux ? Pas du tout ?”
– “Non. Si vous voulez vraiment une étagère à condiments de haute qualité, de standard industriel, vous avez vraiment besoin de quelque chose de plus sophistiqué qu’un simple marteau acheté à la quincaillerie du coin.”
– “Ok… Bon. Il faut ce qu’il faut. Si c’est comme ça qu’on fait maintenant, il faut bien que je m’y mette.”
– “Excellent !!”
– “Ça vient avec une documentation, pas vrai ?”
GraphQL est une alternative très sérieuse à RESTful. Ce qui me pose encore problème pour l'adopter définitivement c'est la carence en frameworks afin de parser/lexer les requêtes reçues via HTTP et d'en assurer le mapping côté base de données.
Ici GraphQL Java apporte une première pierre à cet édifice avec un exemple d'implémentation simple mais concret.