Gambas France BETA


Pas de compte ? Incription

Exemple de site Web en Gambas

12
AuteurMessages
linuxos#1 Posté le 11/2/2023 à 04:52:35
Un peu de sel, de poivre et la crevette sera... Bonjour,

A titre d'exemple de ce que l'on peut faire avec Gambas au niveau site Web, je viens de poster sur la Logithèque de Gambas une petite démo de Site Web Gambas utilisant pour le design le bootstrap BULMA.

Pour rappel, un bootstrap est un ensemble de fichier CSS que l'on ajoute à un projet Web, dans lequel tout un tas de classes CSS sont définies afin de donner un design uniforme et spécifique a un site Web.
Ceci est une description simpliste de ce qu'est un Bootstrap en language Web.

J'ai trouvé ce Bootstrap open source facile à utiliser et sans Javascript partout partout, donc plus simple à intégrer et à utiliser dans un projet Web Gambas.

Nom du projet démo: WebDemoBootstrap

Nota: De préférence, utilisez Gambas version 3.18, ou mieux encore la version de DEV, car le composant gb.web.gui est assez récent.

Voici les points intéressants pour ceux qui souhaiterait découvrir et créer des petites applications Web avec Gambas:

- La Demo présente une page de 'Login/Password' classique de nos jours pour sécuriser, basée sur SQlite comme base de données, ce qui présente l'avantage de pouvoir, au besoin, de gérer des paramètres pour chaque utilisateur qui se connecte, comme des restrictions a certaines parties du Site, etc...

- Sur la page principale, vous trouverez un échantillon des principaux Widgets disponible pour la création de page Web, mais aussi comment les utiliser rapidement:
- Exemple: le Widget pour envoyer un fichier au Site Web (Bouton Upload)
- Exemple: le Widget pour dessiner 'WebDrawingArea', ainsi que l'utilisation de la souris pour dessiner dedans. N'hésitez pas à essayer.
- Enfin le design complet, l'arrondie des boutons, l'arrondie des cadres et même des Menu PopUp.
- Comment charger un ou plusieurs fichiers CSS pour une page (Je n'ai pas trouvé de manière globale de le faire, ce doit être fait pour chaque page)

- L'intérêt de ce genre d'application Web, c'est qu'on les développe presque aussi facilement qu'une application Desktop (j'ai bien dit presque...) et elle ne nécessite pas d'installer tout un Serveur Web en frontal comme Apache ou autres.
- Il est trés facile de changer le port d'écoute de l'application Web et ainsi lancer plusieurs instances d'une même application Web sur la même machine.
- Exemple: GB_HTTPD_PORT=8080 gbr3 -H WebDemoBootstrap.gambas


A ce jour, j'utilise régulièrement 2 applications Web utilisant ce même design, avec Login/Password pour la sécurité bien sur.

J'espère que cela vous aidera à découvrir un peu plus cette partie de Gambas que je trouve personnellement assez impressionnante, de part sa simplicité et sa puissance.

N'hésitez pas demander plus d'information au besoin.

Olivier


Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#2 Posté le 11/2/2023 à 13:04:29
-- Unus Ex Altera --Bonjour Linuxos,
merci pour ce dépôt que j'ai de suite téléchargé et pas encore regardé.
Voilà bien une partie non décrite ni expliquée de Gambas qu'il s'agirait de combler.
Je vais tenté de comprendre comment cela fonctionne et au pire je me tournerais vers toi pour essayer de décrire le processus de création mis en oeuvre ici.
Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#3 Posté le 11/2/2023 à 13:12:33
-- Unus Ex Altera --Et bien,
ce n'est pas gagné. Je ne sais même pas comment on lance l'objet. Il doit y avoir des choses à préparer en amont que je ne connais pas et qui te sembles tout à fait évidentes.
Je suis comme une poule qui a trouvé un couteau que veux tu que j'en fasse?
Allo, docteur c'est comment qu'on démarre?
Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
linuxos#4 Posté le 12/2/2023 à 02:45:46
Un peu de sel, de poivre et la crevette sera... Bonjour Valaquarus,

Il y a 2 façons de lancer une application Web (plus exactement utilisant le composant gb.web.gui)

1) Directement par l'IDE, en chargeant tout d'abord le projet, puis dans le Menu Débogage -> Configuration -> Débogueur -> Utiliser le Serveur HTTP embarqué

- Choisir dans le Menu Débogage -> Configuration -> Débogueur -> 'Navigateur de débogage' que l'on souhaite: Interne, Firefox, Chrome
- Ajouter une variable d'environement pour selectionner le Port HTTP souhaité dans le Menu Débogage -> Configuration -> Environnement -> GB_HTTPD_PORT ---> 8080
- Enfin, lancer l'application simplement et l'application Web apparaitra dans le Navigateur choisi.

Nota: le Navigateur Interne de Gambas est moins performant coté rendu visuel parfois par rapport à Firefox ou Chrome, mais bien plus rapide à lancer lors des tests.

2) En compilant le projet par l'IDE pour obtenir un exécutable 'webdemobootstrap.gambas'. Ensuite, il faut ouvrir un 'Terminal' et lancer l'application par la commande suivante:

cd <chemin de l'executable>
GB_HTTPD_PORT=8080 gbr3 -H webdemobootstrap.gambas

L'application va se lancer et démarrer le Serveur Web intégré à l'application sur le port 8080 (le choix du port est libre, mais doit être >1024)

Enfin, il faut ouvrir un Navigateur Web vers l'URL: http://localhost:8080

Pas plus difficile que cela

Voilà
Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#5 Posté le 12/2/2023 à 17:23:29
-- Unus Ex Altera --Merci Olivier,
de toutes ces précisions qui m'ont aidé à faire fonctionner la chose.

Juste un détail, en choisissant firefox comme browser celui-ci a généré une nouvelle version de lui-même au lieu de garder "la mienne" ce qui m'a obligé à fouiner dans les fichiers cachés ou étaient les paramètres de ma version pour modifier le fichier ini pour retrouver mes paramètres avec tous mes marques pages et autres réglages.
Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#6 Posté le 13/2/2023 à 23:25:38
linuxos,
J'ai essayé le programme et il s'exécute sans souci sur la 3.18.

Par curiosité j'ai regardé dans le code de la webapp et là je ne reconnais plus gambas.
De nouveaux outils avec du css au milieu , des balises html le tout mixé avec du basic...

Personnellement, je préfère bien mieux un script cgi en gb façon la forge qui réagit beaucoup plus vite sans toutes ces surcouches graphiques.

En tout cas, les développeurs ont fait un travail remarquable et je leur envoi mes félicitations.

Qui va se lancer à créer unsite en gb après la forge et le wiki de gb?
;)
spheris#7 Posté le 26/2/2023 à 16:37:42
J'ajouterai trois liens très intéressants pour développer avec le composant web:

Un lien en rapport avec la discussion :
https://gambas-buch.de/doku.php?id=k24:k24.6:start

Surout les mises à jour:
https://gambas-buch.de/doku.php?id=k24:k24.6:k24.6.2:start

et enfin pour apprendre à interagir avec un serveur (Lighttpd):
https://gambas-buch.de/doku.php?id=k24:k24.6:k24.6.10:start

Utilisez google translate pour comprendre le chle.
:pirat:
linuxos#8 Posté le 28/2/2023 à 03:10:20
Un peu de sel, de poivre et la crevette sera... Bonjour Spheris,

Je comprends ton point et pour avoir pratiqué les 4 manières de faire un site web en Gambas, il y a des avantages et des inconvénients dans les 4:

Au final, l'utilisateur choisira la méthode qui lui convient le mieux.

Méthodes:

1 - Script/programme Gambas se comportant comme un script CGI.
On entend par là qu'un utilisateur fera une requête pour avoir une page Web à un serveur Web (Apache, Ngnix, etc...) qui lui-même ira exécuter ledit Script CGI Gambas pour qu'il génère le contenu de ladite page Web (page statique ou dynamique). Une fois générée, cette page sera envoyé en réponse au serveur Web, pour ensuite la renvoyer à l'utilisateur dans son Navigateur.

Bien sûr, il est possible de transmettre des paramètres lors de l'exécution du Script CGI et c'est ici la seule interaction que l'on puisse, à peu près, avoir (en simplifiant les choses).

Donc, il faut développer un script Gambas, qui va construire une page HTML (ne parlons pas l'encapsulation, des encapsulations, etc..., assez lourdes), dans un contexte de dialogue avec un serveur Web (plus ou moins complexe).

2 - Programme Gambas, se comportant comme un script CGI, mais dont les pages sont générés par des WebPages Gambas (ressemblant très fortement a du ASP ou PHP, ou autres interpréteurs). Ici les choses sont un petit peu plus simple, car on pose directement du code HTML, sans avoir à encapsuler tout ça dans un String, avec la possibilité (comme dans PHP ou ASP) d'insérer des bouts de code ou d'appeler des fonctions Gambas au milieu du HTML.
Il est même possible de se servir de WebPages comme Modèles qui seront insérés dans d'autre WebPages ce qui économise du code. Par exemple; l'entête de page sera une Webpage, le bas de page sera une autre WebPage, ainsi chaque page du site Web pourra intégrer l'Entête et le Bas de page en faisant référence au WebPages correspondantes, se qui fait gagner en clarté lors de l'écriture et de la lecture du code.
Il n'en reste pas moins que l'on doit installer/configurer un serveur Web comme dans le point 1, comprendre le HTML.
Toujours comme dans le point 1, il est possible de transmettre des paramètres, mais cela reste limité.

3 - Sur le principe du point 1 et 2, donc un programme Gambas qui se comportera comme un Script CGI, mais cette fois-ci on utilisera le serveur Web intégrer à Gambas pour desservir les pages Web demandées par l'utilisateur.
Bien sûr, cela demandera un peu plus de travail coté script Gambas pour gérer les requêtes et les chemins Web, mais surtout cela offrira beaucoup plus de souplesse du point de vue des paramètres transmis.
Le script pourra même s'appeler lui-même pour se faire faire travailler (ni plus ni moins que ce que fait PHP)
Le désavantage de cette solution, c'est que le serveur Web intégré à Gambas (basé sur libhttpserver) n'est pas fait pour être mis en production et recevoir des milliers de requêtes, mais l'avantage c'est que pour un certain usage léger, ton application sera portable et se lancera juste comme une application Gambas.

Je te laisse lire ce petit compte rendu des tests fait par Christof Thalhofer qui est un utilisateur Gambas que l'on voit souvent dans la Mailing-list.
https://lists.gambas-basic.org/pipermail/user/2020-January/068432.html

4 - L'utilisation du composant gb.web.gui + serveur Web intégré a Gambas.
Cette dernière solution est ma préférée, car elle permet vraiment de construire un site Web interactif, presque comme une application Gambas de bureau.
A ce jour tous les widgets pour une application Bureau (GTK ou QT) ne sont pas présents (développés) dans gb.web.gui, mais on s'en approche.
Ici l'immense avantage est que l'on ne touche pratiquement pas du code HTML, Javascript, la majeure partie du temps, on fait du code Gambas, et c'est ça qui est réellement plaisant.

Je mettrai un bémol quant au fait de développer COMME une application Bureau, en fait, il faut penser son code Gambas de manière un peu différente, due au fait de la technologie Web.

Par exemple, si lors du clic de la souris, par l'utilisateur, sur le page Web dynamique desservie par ton application Web Gambas, cela déclenchera un message de la page Web vers ton Application lui indiquant qu'un clic souris, sur un bouton par exemple, a été effectué par l'utilisateur.
Maintenant, coté de ton application, si tu désires afficher un message sur la page Web avant de lancer un gros travail en tache de fond, en réponse au clic bouton de l'utilisateur, tu ne pourras pas juste 'Afficher un message' et lancer ton travail dans la fonction lié à l'événement de ton clic bouton, car tant que la fonction ne sera pas terminée, aucune communication retour ne pourra être envoyée à ta page Web dans ton Navigateur.
Pour cela, il faudra demander d'afficher ton message dans la page Web, puis démarrer un petit Timer (10 ou 100ms) à la fin de la fonction. Ainsi la fonction sera terminée, la demande d'affichage sera envoyée à ta page Web et juste apres (10 ou 100ms), le Timer se déclenchera dans ton application pour lancer ton gros travail en tache de fond.

Dernier point, cette dernière méthode de développer des applications avec serveur Web intégré (en utilisant gb.web.gui) est beaucoup plus facile à aborder par un débutant du fait de la simplicité de Gambas et de l'abstraction d'une partie des difficultés que sont HTML, CSS, serveur Web à paramétrer, et d'autre.

Voilà, je me suis un peu étendu sur le sujet, n'hésitez pas à commenter et à argumenter, cela n'en sera que bénéfique pour tous.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
spheris#9 Posté le 28/2/2023 à 08:06:37
Merci pour cette explication claire sur le sujet.
J'ai une préférence pour le choix 1 comme je te disais.
Y a t il des exemples de post/get simple sur les cgi gambas?
Le code de la forge est illisible pour un novice comme moi.

Pour le choix 4, étant une technologie jeune sous gb3.18, cette solution, comme tu le dis parait simple mais manque cruellement de stabilité. (La mailing list regorge de bug sur les composants webgb.web.form)
Mais l'équipe fait un immense travail.
Je trouve qu'il existe des solutions web très faciles à mettre en place avec ou sans bdd genre zwii,pico,pluxml,guppy, worfpress et j'en passe.
Y a t il réellement une utilité à développer le coté web de gb autre qie pour le coté fun?

Si porjet avec transpiration de code il devrait y avoir, l'idée de gambix à savoir créer une appli autonome pour etre exécutée sur un pc sans gb, ça c'est vraiment classe!!!
(Un peu comme l'option bind de yabasic).

Enfin, je lance la question, qui, à part deux ou troi barbus au fin fond de la siberie dévéloperont un site en gb qui tourne sur un serveur homemade exécutés par un hébergeur homemade?

:tongue:
linuxos#10 Posté le 28/2/2023 à 14:25:34
Un peu de sel, de poivre et la crevette sera... Oui tu as un bon exemple dans la Forge Gambas, active la case Afficher les filtres -> Filtrer:, puis cherche 'smallwiki'

Le projet s'appele 'SmallWiki 1.0.1'

Il est assez simple à comprendre, je pense.

Pour pouvoir en faire un script CGI, il suffit de désactiver le serveur HTTP intégré et de l'exécuter.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
spheris#11 Posté le 1/3/2023 à 22:41:43
Je vais y jeter un coup d'oeil, merci pour l'info


EDITION :
celui là :

http://89.234.156.109/wiki/ensembledexemples/Web

J'ai copié/collé le code dans un projet en ligne de commande uniquement et j'ai l'erreur :

Session["login"] inconnu à la ligne 15.
valaquarus#12 Posté le 6/3/2023 à 16:36:19
-- Unus Ex Altera --Bonjour Olivier,
j'essaye de te joindre pour te poser une question bête.
Une fois qu'on a un super site web fait en Gambas que faut il déposer chez un hébergeur pour que cela fonctionne.
En html ou php je sais faire j'ai tout déposé à l'endroit nommé www chez mon hébergeur mais avec gambas j'ai l'air d'une poule qui a trouvé un couteau.
Y a t il des particularités et des choses à bien respecter.

Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#13 Posté le 6/3/2023 à 17:54:55
Si je me rappelle bien la conversation de gambix à l'époque, il était question pour faire tourner un site en gambas d'avoir un hébergeur qui a gambas installé sur son serveur...et ce n'est pas gagné.
Des solutions libres existent ou tu peux le faire chee toi mais nécessite ton ordi allumé 24/24 et certains fournisseurs d'accès n'aiment pas ce genre de musique.

Il faudrait voir quel hébergeur utilise la forge.
Seul gambix ou benoit ont cette info.
Linuxos, peut être plus d'infos?
...
valaquarus#14 Posté le 6/3/2023 à 18:36:03
-- Unus Ex Altera --Salut spheris,
je suis preneur de toutes ces infos concernant la possibilité de faire un serveur à la maison.

Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
linuxos#15 Posté le 6/3/2023 à 23:11:24
Un peu de sel, de poivre et la crevette sera... Bonjour Spheris, Valaquarus,


1) Différentes options sont disponibles coté Provider pour héberger ou faire son site Web.
La plus grande difficulté est concernant Gambas qui n'est malheureusement pas fourni (installé) sur la machine/VM proposées sur le Cloud.
Bien souvent l'ensemble LAMP (Linux+Apache+Mysql+PHP) sont proposés et prêts à l'emploi sans même avoir accès a l'OS dans bien des cas, mais rien n'empêche de prendre une VM et de choisir soit même le Linux que l'on souhaite.
À ce moment-là, Gambas n'est plus un problème, mais toute la configuration est à se palucher à la main si je puis dire: Apache/Ngnix + Mysql + autres si nécessaire.
Pour cela, il y a plein de tutoriels sur Internet pour s'en sortir sans trop de problème, et puis je peux aider au besoin.

2) Comment monter son affaire pour un site Web avec Gambas ?
Tout d'abords, il faut considérer le fait que le serveur Web va être exposé sur Internet (sinon autant l'avoir a la maison physiquement), donc il va falloir le protéger du potentiel nombre de requêtes qu'il va recevoir et donc que va recevoir l'application Gambas au final.
Le plus sûr est de mettre en frontal toujours un Serveur Web (je parle ici de Apache/NGnix, etc...) afin de pouvoir prendre la changer, gérer les sécurités, les certificats au besoin, mais aussi dans le but d'assurer la répartition de charge vers l'application Gambas.
En effet, si l'application Gambas agit comme un script CGI, c'est le serveur Web qui se chargera de gérer les multiples appels à l'application Gambas, comme l'appel a une même commande de multiples fois et de ce fait gérer le parallélisme des appels.
Si par contre l'application Gambas doit elle-même répondre sur un port aux requêtes Web, ben concrètement, elle n'est pas taillée pour cela, mais cela peut convenir peut-être dans un cadre privé à la maison avec peu de requêtes.

J'utilise souvent le 2eme cas personnellement, car ce ne sont pas des Sites Web public et que c'est beaucoup moins lourd a installé. Pas de serveur Web à configurer, juste à partir l'application Gambas et le tour est joué.
Je parle en connaissance de cause concernant les serveurs Web, je fais du Linux depuis 30 ans maintenant, mais même en connaissant bien ça reste plus lourd à configurer qu'une simple commande à lancer dans un terminal.


3) Il existe une pléthore de serveur Web (application agissant comme serveur Web) tel que Apache/Ngnix, etc.
Il n'est donc pas nécessaire de partir, tout de suite, avec le canon pour tuer la souris.

Voici quelques petits serveurs Web, simples et très efficaces pour une bonne partie de nos projets:

- Caddy (très intéressant, car il peut générer à la volée les certificats auto-signés, donc pouvoir faire du HTTPS facilement)

Je l'utilise d'ailleurs pour certains de mes projets juste pour avoir le HTTPS pour mes petits sites Web Gambas

- Lighthttpd

- OpenLiteSpeed

- Cherokee (L'interface Web d'administration de Cherokee et simple et bien fait, avis de quand je l'ai utilisé)


4) Comment lancer son application Gambas Web tel un service sur son système ?

En fait, c'est assez simple, il suffit de créer un fichier 'service' pour Systemd et de l'activer au boot de la machine:

Exemple: Mon application WebSitePerso.gambas (fait avec gb.web ou gb.web.gui)

Créer le fichier: /etc/systemd/system/websiteperso.service

$ cat /etc/systemd/system/websiteperso.service
[Unit]
Description=Mon Site Web Perso

[Service]
Type=simple
Environment="GB_HTTPD_PORT=9090"
ExecStart=/usr/bin/gbr3 -H <Chemin vers mon appli>/gbTranslateWeb.gambas
StandardOutput=null
Restart=on-failure
KillMode=process
User=toto
Group=toto

[Install]
WantedBy=multi-user.target
Alias=websiteperso.service
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
12