tag:linuxfr.org,2005:/tags/grails/publicLinuxFr.org : les contenus étiquetés avec « grails »2023-01-05T17:19:09+01:00/favicon.pngtag:linuxfr.org,2005:Diary/405252023-01-01T07:59:43+01:002023-01-01T09:22:44+01:00[ANNONCE] Taack-UI première version (la 0.2)Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p><a href="https://github.com/Taack/infra">Taack-UI</a> est une extension du cadriciel <a href="https://grails.org/">Grails</a>, permettant de décrire l’interface utilisateur et résoudre d’autres problématiques, comme la sécurité, d’une application Web via des <a href="http://docs.groovy-lang.org/docs/latest/html/documentation/core-domain-specific-languages.html">DSL (Domain Specific Language ou langage dédié) Groovy</a> statiquement typés.</p>
<p>Ce cadriciel se compose :</p>
<ul>
<li>d'une extension au compilateur incluse dans le plugin <a href="https://github.com/Taack/infra/tree/main/taack-ui">taack-ui</a>
</li>
<li>d'un plugin Intellij pour la reconnaissance de la syntaxe et l'autocompletion <a href="https://github.com/Taack/taack-autocomplete">taack-autocomplete</a>
</li>
<li>d'un driver JDBC <a href="https://github.com/Taack/infra/tree/main/taack-jdbc-client">taack-jdbc-client</a> pour accéder aux objets persistants (voir la page <a href="https://taack.org/en/more/JDBC/taack-jdbc-driver">Taack JDBC Driver</a>). </li>
</ul>
<p>Le cadre offert par cette extension propose de simplifier les fonctionnalités suivantes par rapport à une application Grails classique :</p>
<p>La sécurité</p>
<ul>
<li>Modification des objets limitée aux champs modifiables par l’utilisateur ;</li>
<li>Gestion du masquage des actions (liens et actions des formulaires) accessibles à l’utilisateur à un emplacement unique, et sans code additionnel si utilisation de l’annotation <code>@Secured</code> ;</li>
<li>Le listage des données seulement accessible à l’utilisateur ;</li>
</ul>
<p>Le rendu</p>
<ul>
<li><p>Les sorties <strong>PDF</strong>, <strong>CSV</strong>, et le <strong>rendu des mails</strong> peuvent partager le meme code, permettant de factoriser celui-ci ;</p></li>
<li><p>Rapport d'erreur et interface localisée automatiquement (voir <a href="https://taack.org/en/doc/DSLs/form-dsl">Form DSL</a>)</p></li>
<li><p>Le <strong>filtrage</strong>, <strong>pagination</strong> et <strong>ordre</strong> des données dans les tables sans avoir besoin de composer des requêtes, ou d'utiliser une session ;</p></li>
</ul>
<p>Autres</p>
<ul>
<li>
<p>Le support de <strong>Solr</strong> pour la recherche textuelle :</p>
<ul>
<li>Recherche et indexation textuelle des objets (toujours de façon statiquement typée) ;</li>
<li>Support de la classification des objets (Faceting en anglais, je ne connais pas de traduction) voir le moteur de recherche du site <a href="https://taack.org">Taack.org</a>
</li>
<li>Classement (Ranking pour les Anglophones), taper <code>JDBC</code> par exemple dans le moteur</li>
</ul>
</li>
<li><p>Gestion des aperçus de fichiers extensibles (accessible plus tard, la prévisualisation des fichiers STEP en 3D, et DWG .. en plus des formats bureautiques communs, il est également possible d’ajouter des convertisseurs, comme DWG vers PDF)</p></li>
<li><p>Driver JDBC, permettant de réaliser des requêtes d’objets via le langage <a href="https://taack.org/en/more/JDBC/taack-jdbc-driver">TQL (Taack Query Language)</a> limitant la portée de la requête aux objets autorisés. Utilisable avec DBeaver, <a href="https://taack.org/en/more/JDBC/intellij-connection">Intellij</a> ou <a href="https://taack.org/en/more/JDBC/libreoffice-base">LibreOffice Base</a>, comme une base de données classique.</p></li>
<li>
<p>Partage de fichier (expérimental) via <strong>Sftp</strong> :</p>
<ul>
<li>Système de fichier virtuel par utilisateur composé par le serveur d’application</li>
<li>Accès à une partie du système de fichiers réels du serveur pour créer des espaces d’échange rapide ;</li>
</ul>
</li>
<li><p><strong>Shell</strong> (expérimental) via Ssh permettant de définir des interfaces graphiques s’exécutant entièrement sur le serveur (video)</p></li>
<li><p>Serveur <strong>Git</strong> pour la gestion documentaire (principalement les guides utilisateurs) lié aux applications développées.</p></li>
</ul>
<p>Nous utilisons en interne cette extension (et donc <code>Grails</code>, et donc <code>SpringBoot</code>), aussi bien pour nos sites extérieurs que pour toutes les applications périphériques à notre ERP (qui se trouve être <a href="https://axelor.com/fr/">Axelor</a>.).</p>
<p>Le choix de la licence du code est Apache Version 2.</p>
<p>Le site officiel est <a href="https://taack.org">Taack.org</a>. Il a lui-même été réalisé entièrement via ce cadriciel. Il est encore jeune, la documentation est encore imparfaite et principalement en anglais, nous mettrons à disposition le code source de ce site comme site d’exemple (ça pourrait être un petit CMS sympa).</p>
<p>Nous développons également des extensions pour <a href="https://taack.org/en/installation#_visual_studio_code">VS Code</a> et <a href="https://taack.org/en/resources/ide-extensions">Intellij</a> pour rendre l'édition plus rapide. Clairement, ce cadriciel est très couplé à Intellij Ultimate Edition, nous espérons pouvoir élargir le spectre d'IDE supporté rapidement. VS Code est utilisable pour l'édition, mais les erreurs ne sont pas rapportées.</p>
<p>Les liens :</p>
<ul>
<li>Site anglais <a href="https://taack.org">Taack.org</a>
</li>
<li>
<a href="https://taack.org/en/installation">Débuter en anglais</a> (la version FR n'est pas satisfaisante, la version EN se basant sur l'ancienne version de l'Intranet n'est pas non plus parfaite)</li>
<li>Contenu du <a href="https://github.com/Taack/taack-website-content">site sur Github</a>
</li>
<li>Source Infrastructure sur Github <a href="https://github.com/Taack/infra">infra</a> </li>
<li>Source Driver JDBC (la qualité du code n’est pas aux standards que nous souhaitons, mais c’est fonctionnel, bien que complexe à appréhender) <a href="https://github.com/Taack/infra/tree/main/taack-jdbc-client">taack-jdbc-client</a>
</li>
<li>Source Plugin Intellij sur Github <a href="https://github.com/Taack/taack-autocomplete">taack-autocomplete</a>
</li>
</ul>
<p>Merci de votre attention et bonne année. </p>
<div><a href="https://linuxfr.org/users/yboy360/journaux/annonce-taack-ui-premiere-version-la-0-2.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/129835/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/yboy360/journaux/annonce-taack-ui-premiere-version-la-0-2#comments">ouvrir dans le navigateur</a>
</p>
YBoy360https://linuxfr.org/nodes/129835/comments.atomtag:linuxfr.org,2005:Diary/399532021-10-13T19:48:48+02:002021-10-13T19:48:48+02:00Sortie de Grails 5.0.0Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Grails est un framework applicatif à l’ancienne, utilisant le langage Groovy (donc la JVM) et basé sur Spring Boot. À l’inverse des frameworks type "Microservice", beaucoup de dépendances sont incluses par défaut, aidant à la mise en route rapide. L’injection de dépendance est faite à la compilation en utilisant Micronaut (qui est un Microservice) depuis la version 4. La persistance des données est réalisée par Gorm, qui permet d'utiliser Hibernate, GraphQL, Cassandra ou MongoDB.</p>
<p>Le principe de Grails est “convention over configuration”. Le rôle d’une classe sera déterminé par son répertoire. Une telle classe sera dite “artéfact” dans la terminologie de ce framework.</p>
<p>Exemples d’artéfacts :<br>
- <strong>job</strong> pour planifier des tâches, les classes seront définies dans le répertoire job ;<br>
- <strong>service</strong> classes qui s’instancient automatiquement et peuvent être injectées dans d’autres artéfacts ;<br>
- <strong>controllers</strong> pour grouper les actions accessibles depuis le Web (petit goût de MVC);<br>
- <strong>domain</strong> pour les objets persistants utilisés par Gorm ;<br>
et d’autres. </p>
<p>On peut utiliser le langage Java si besoin, mais l'annotation de classe <code>@GrailsCompileStatic</code> offre déjà de bonnes performances.</p>
<p>Les applications Grails utilisent depuis la version 3 Gradle pour la gestion du build et des dépendances. </p>
<p>La version 5.0.0 est une mise à niveau des principales dépendances : passage à Groovy 3.0.7, gradle 7.2, Gorm 7.1, Micronaut 3 pour l’injection. Les versions testées de l’OpenJDK vont du 1.8 à la version 14. Le support de la version 17 du Jdk sera effectif avec Groovy 4, donc pour on sait pas vraiment quand.</p>
<p>J’allais oublier de préciser que la source d’inspiration plus ou moins évidente est RoR (Ruby on Rails).</p>
<p><a href="https://grails.org/">Grails (page en anglais)</a><br>
<a href="https://gorm.grails.org/">page de Gorm</a><br>
<a href="https://docs.grails.org/5.0.0/guide/single.html">Guide utilisateur en anglais</a></p>
<div><a href="https://linuxfr.org/users/yboy360/journaux/sortie-de-grails-5-0-0.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/125688/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/yboy360/journaux/sortie-de-grails-5-0-0#comments">ouvrir dans le navigateur</a>
</p>
YBoy360https://linuxfr.org/nodes/125688/comments.atomtag:linuxfr.org,2005:Diary/357652015-04-07T12:49:40+02:002015-04-07T12:49:40+02:00Essai serveur ARM chez cloud.online.netLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#les-r%C3%A9sultats-des-essais">Les résultats des essais</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ul><p>Il y a quelques jours, nous avons été invité à tester la futur offre de serveur basé sur des processeurs ARM sur le site cloud.online.net. Ces serveurs disposent de 2 Gio de ram, 20 Gio d’espace disque sur SSD, ils ne sont pas virtualisés, et disposent d'un SoC ARM V7 a 4 coeurs (ARMv7 Processor rev 2 (v7l) / Marvell Armada 370/XP pour les intimes).</p>
<p>Les applications que nous avons testées sont des applications d'entreprise classique, c.a.d. ayant peu d'utilisateur, mais faisant des choses plutôt lourd et très diverses. </p>
<p>Nous utilisons le framework grails, en version 2.4.3 et 2.5.0. Nous avons constaté un gains de 10 pour cent au démarrage avec la version 2.5.0, par rapport à la précédente, rien qu’avec le passage à Groovy 2.4.1 et la version 3 devrait apporter d'importants gains supplémentaires. </p>
<p>Grails, c'est RoR (Rubis on Rails), mais basé sur Spring. Spring va gérer la durée de vie des objets de votre application (contrôleur, services, beans), en les injectants par inversion de dépendance. Spring va également offrir de nombreux composants. Grails va ajouter un ORM basé sur Hibernate, ainsi qu'une grande facilité d'utilisation grâce à Groovy, et a un ensemble de conventions pour simplifier la configuration (convention over configuration).</p>
<p>Les plugins/composants que nous utilisons: <br>
- Spring security, <br>
- Spring webflow, <br>
- <strong><a href="http://eclipse.org/birt/">BiRT</a></strong> Projet Eclipse Business Intelligence Reporting Tool, permet de générer du xls, ods et de très simplement faire des rapports<br>
- Solr et Tika pour l’indexation des fichiers / objets métiers<br>
- <strong>LibreOffice</strong> et ImageMagick pour la génération des thumbnail pour les fichiers uploadés.<br>
- postgres extention pour pouvoir utiliser les maps, les tableaux, jsond, nativement dans postgres<br>
- Quartz pour la planification des jobs “applicatifs” (mailing, tâches de synchronisation).<br>
- Protobuff pour la communication avec CRM Android</p>
<p>Nous utilisons Postgres, avec un plugin de datamining <a href="http://madlib.net/">Madlib</a>. Il y a 2 instances de base de données, l'une pour les applications, l'autre pour les statistiques/datamining. Les stats sont synchronisées avec les différents ERP des filiales tous les jours, via l'<strong><a href="http://community.pentaho.com/projects/data-integration/">ETL Kettle</a></strong> (une merveille, libre en plus). Sans rentrer dans les détails, tous les ERP sont évidemment différents, et ne sont pas tous basée sur une base SQL…</p>
<p>Pour planifier le tout, on utilise <a href="http://rundeck.org/">Rundeck</a> / ssh. ça fonctionne un peu comme Ansible, c.a.d. qu’il n y a aucune dépendance ou d'agent installée sur les serveurs où les tâches son planifiée, hormis ssh.</p>
<p>Les applications que nous développons: CRM, EDI, Qualité, BI, plus la gestion d’utilisateur, de projet et l’upload des données sur les sites web (FR, US, CN, DE)…</p>
<p>Voila pour l’aspect applicatif, ce que l’on peut dire, c’est que nous avons pas mal de composant lourds, de plus, si nous utilisons une architecture en plugin pour ranger ce qu’il y a de commun entre les applications, chaque instance d’application utilise son propre espace (mémoire, poll de connexion, cache), l’occupation mémoire est importante, mais on peut faire ce que l’on veut, presque simplement, et le tout tourne bien sur un serveur moyen gamme, avec une grande souplesse et robustesse pour une soixantaine d'utilisateur dans le monde.</p>
<h2 id="les-résultats-des-essais">Les résultats des essais</h2>
<p>L’interface d’administration est très simple, les machines s’installe en une poignée de secondes, ça pourra gêner les bidouilleurs, mais il est possible de gérer sa propre image. En un ou 2 cliques, l’on peut instancier une nouvelle machine avec l’image de son choix, accéder au données et l’administrer.</p>
<p>La plate-forme semble très réactive, j’ai utilisé une Ubuntu sans SystemD (j’aurais aimé une Fedora ou autres avec SystemD). On ne sent pas que l’on est sur un CPU de téléphone portable à l’usage, je suis persuadé que les applications PHP vont très bien tourné, Ubuntu/Debian semble avoir fait du bon boulot pour l’optimisation de leur distribution sur cette architecture, mais comment mon application va t-elle fonctionner?</p>
<p>Après avoir fait de nombreux tests sur Raspberry Pi, je m’attendais à ce que le tout fonctionne, mais vraiment très lentement, avec de nombreux blocage, mais le Raspberry Pi avec ces 512 Mo est vraiment trop juste.</p>
<p>Ce qu’il faut savoir avant de lancer son Tomcat, c’est que l’on doit impérativement utiliser la version Java d’Oracle, car elle dispose du <a href="https://blogs.oracle.com/jtc/entry/comparing_jvms_on_arm_linux">c2 compiler</a> sur ARM v7, ce qui n’est pas le cas de l’OpenJDK. OpenJDK disposera du C2 compiler avec le jeu d’instruction ARM v8 (64-bit). Ça fonctionne avec l’OpenJDK, mais c’est vraiment hyper lent.</p>
<p>Concrètement, on démarre tomcat très simplement ainsi <br>
export JAVA_OPTS=" -Xms512m -Xmx1512m -server "<br>
et c’est tout.. En gros on dispose de 1,5 Gio pour les allocations.</p>
<p>Comme il ne reste plus grand chose pour postgres et solr, je les démarre avec les options par défaut.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Que dire? c’est a peu près 3 ou 4 fois plus lent que mon serveur Xeon à dd non SSD. C’est un exploit! Les applications sont largement utilisables (hors des stats si trop grosse requête). Alors que ces CPU sont réfléchis pour supporter un type de charge horizontal (peu de traitement par requête avec plein de requête), j’ai pu faire fonctionner ma stack logiciel complète, sur une sur une seul machine, sans aucune difficulté. </p>
<p>Pourquoi est-ce un exploit alors que c’est 4 fois plus lent? parce que les développeurs de compilateur, de java et autres optimisent leur code pour Intel depuis des décennies, en réalisant toutes sortes de micro optimisation favorisant Intel, il y a une personne qui travaille sur le C2 compiler pour ARM v7 chez Oracle…</p>
<p>De plus, Linux sur ARM est très agréable à l’usage, autant que sur Intel, il y a quasiment tout ce qu’il y a sur Intel, et le potentiel d’ARM me semble plus prometteur que celui d’Intel à long terme.</p><div><a href="https://linuxfr.org/users/yboy360/journaux/essai-serveur-arm-chez-cloud-online-net.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/105350/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/yboy360/journaux/essai-serveur-arm-chez-cloud-online-net#comments">ouvrir dans le navigateur</a>
</p>
YBoy360https://linuxfr.org/nodes/105350/comments.atom