Table des matières
4 billet(s) pour janvier 2026
| AWX sur K8S Kind - partage de fichier pour les blob - Execution pods | 2026/01/26 10:15 | Jean-Baptiste |
| Notes rsh rcp | 2026/01/21 18:08 | Jean-Baptiste |
| Git - Duplication d'un dépôt | 2026/01/19 10:22 | Jean-Baptiste |
| Exemple simple de conf Nagios | 2026/01/14 10:07 | Jean-Baptiste |
Notes génériques RedHat Centos Rocky AlmaLinux
Alternatives à RedHat / CentOS :
- AlmaLinux
- Rocky Linux
CERN supports both RHEL and AlmaLinux, and in addition CentOS 7 ELS
Notes GED qrcode
Lien :
zbar à l'air moins capricieux que zxing
java -cp /opt/srv/plugins/GedPlugin/lib/zxing/javase.jar:/opt/srv/plugins/GedPlugin/lib/zxing/core.jar com.google.zxing.client.j2se.CommandLineRunner /tmp/ged/SKM_C224e16042810430_NOK-00.jpg --try_harder --multi
Erreur
file:/tmp/ged/SKM_C224e16042810430_NOK-00.jpg: No barcode found
Avec Zbar
zbarimg SKM_C224e16042810430_NOK-00.jpg
QR-Code:ged;002071 QR-Code:ged;002071 scanned 2 barcode symbols from 1 images in 0.6 seconds
Notes install sur CentOS7
Lien :
Install des dépendances
yum install ImageMagick-c++ libXv libv4l
Install
wget wget https://copr-be.cloud.fedoraproject.org/results/mmraka/epel7-addons/epel-7-x86_64/zbar-0.10-15.fc19/zbar-0.10-15.el7.centos.x86_64.rpm rpm -Uvh zbar-0.10-15.el7.centos.x86_64.rpm
Notes gdb debug
Voir :
Voir aussi
$ python3 -c "import pymssql ; conn = pymssql.connect(server='127.0.0.1', port='1433', user=r'ACME\user1', password=r'P@ssw0rd!', database='dbname')" Segmentation fault (core dumped)
$ gdb --args python3 -c "import pymssql ; conn = pymssql.connect(server='127.0.0.1', port='1433', user=r'ACME\user1', password=r'P@ssw0rd!', database='dbname')" (gdb) r (gdb) bt
Automount montage automatique clef USB
Brouillon
Source :
Voir :
Voir aussi :
- udevil
- udisks2
- Autofs
- udisks-glue
- usbmount
Contexte
Pas d’environnement graphique.
Manip
Voir aussi udisks2
Hack avec la commande at. Voir notes_systemd_udev
apt-get install pmount
/etc/udev/rules.d/90-automount.rules
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/usr/local/bin/h_pmount.sh %k" ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/usr/local/bin/h_pumount.sh /dev/%k"
/usr/local/bin/h_pmount.sh
#! /bin/bash echo "/usr/bin/pmount -r $*" |at now
/usr/local/bin/h_pumount.sh
#! /bin/bash echo "/usr/bin/pumount $*" |at now
# udevadm control --reload udevadm control --reload-rules udevadm trigger
Notes
udevadm control --log-priority=err unbuffer udevadm monitor --environment
blkid -o value -s UUID /dev/sda1
usbmount
Source : https://github.com/rbrito/usbmount
Debug
Troubleshooting USBmount :
- Do you have HAL running ? Any GNOME or KDE daemon automounting devices ?
- Let's suppose that the partition containing the filesystem that you want USBmount to automatically handle is /dev/sda1 (your case may, quite possibly, vary). Then, check the result of the following command :
udevadm test --action=add /sys/class/block/sda1
The command above just gives diagnostics of what USBmount would do with the device, but it doesn't actually mount or interfere with the device. It is intended for debugging purposes. Be careful that it generates a lot of output. Many screens, depending on the device.
- Under the same assumptions as the above, another good diagnostic tool is the following :
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
Autres
Remounting filesystems without physical removal
udevadm trigger --action=add /dev/sdd2
Plop
/etc/udev/rules.d/automount.rules
# automounting usb flash drives # umask is used to allow every user to write on the stick # we use --sync in order to enable physical removing of mounted memory sticks -- this is OK for fat-based sticks # I don't automount sda since in my system this is the internal hard drive # depending on your hardware config, usb sticks might be other devices than sdb* #SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd[b-z][1-9]", RUN+="/usr/bin/pmount --sync --umask 000 %k" SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd[b-z][1-9]", RUN+="/usr/bin/pmount --read-only --charset utf8 %k" SUBSYSTEMS=="usb",ACTION=="remove", KERNEL=="sd[b-z][1-9]", RUN+="/usr/bin/pumount %k"
/etc/udev/rules.d/automount.rules
ACTION=="add",KERNEL=="sd[a-z][0-9]",RUN+="/usr/bin/pmount -r 000 %k" ACTION=="remove",KERNEL=="sd[a-z][0-9]",RUN+="/usr/bin/pumount /dev/%k" ACTION=="add", KERNEL=="sd[b-z]*", PROGRAM="/bin/sh -c '/bin/sleep 2; /sbin/blkid -c /dev/null -s UUID -o value /dev/%k", RUN+="/bin/sh -c '/bin/sleep 3 ; /usr/bin/pmount -r --charset utf8 %c'" ACTION=="remove", KERNEL=="sd[b-z]*", RUN+="/usr/bin/pumount %k"
Notes Gambas
Voir :
Voir aussi :
- Programmation orientée objets
- ResEdit / ResHack
Différences avec Visual Basic : http://gambaswiki.org/wiki/doc/diffvb?l=fr
Tutos
Demo rapide :
Visual Programming using Gambas in Linux
CURSO GAMBAS LINUX :
Gambas report short demo / tutorial
Notions
- Classes
- Objects
- Properties
- Methods
- Controls
- Containers
- Code
- Events
- Procedural
Configuration
Tools - Preferences - Highlighting theme :
- ~~Amber~~
- Blue
- Obsidienne
- Pastel
- Zen
Pour forcer une lib graphique particulière
#GB_GUI=gb.gtk3 gambas3 GB_GUI=gb.qt5 gambas3
Compilation et autres
Execution
Pour pouvoir exécuter le code Gambas, seul le Runtime (et quelques autres composants) sont nécessaires. Le Runtime est ici :
/usr/bin/gbx3 (paquet gambas3-runtime)
Pour lancer un programme Gambas il suffit de lancer gbx3 en étant à la racine du projet
Compilation et création d'un fichier exécutable
Pour compiler en ligne de commande un projet Gambas vous pouvez utiliser gbc3
Exemple
gbc3 -a
Une archive correspond à un exe presque autonome (le Runtine est tout de même nécessaire)
Pour créer une archive Gambas il suffit de lancer la commande gba3 en étant à la racine du projet. Un fichier .gambas est crée. C'est du bytecode avec le shebang /usr/bin/gbr3 (lien symbolique vers gbx3)
Scripting
Voir :
Il est possible de scripter en langage Gambas
Exemple
hello.gbs
#!/usr/bin/env gbs3 Public Sub Main() Print "Hello Wolrd" End
chmod +x hello.gbs
gbs3 -c -S -w hello_world.gbs
Le langage Gambas
Les commentaires et autres
Pour commenter il suffit de procéder le commentaire du caractère apostrophe “'”
Le multiligne s'effectue grâce au caractère “_” (blanc souligné)
Les class
Startup class Each project must have a startup class. This startup class must define a static public method named Main with no arguments.
Creating a class
From the Integrated Development Environment file, create a class file rhubarbstructure.class as follows:
PUBLIC foo AS STRING PUBLIC bar AS INTEGER
It is now possible to define a variable utilizing that class, by creating an appropriate definition in the code module as follows:
DIM rhubarb AS rhubarbstructure
Les variables
Voir :
In Gambas it is necessary to declare every variable. To dimension a variable, the code is:
Dim variablename as type
You can just skip the word Dim , so the following is also correct:
variablename as type
Remplacer Dim par Static pour que la variable ne soit pas détruite à la sortie de la procédure / fonction mais seulement à la fermeture de l'application.
Gambas also supports the += and -= shorthand
Pour le type Variant voir l'instruction VarType
Les tableaux
Les tableaux peuvent avoir plusieurs dimension (60 !?)
Dim Tab(15,5)
Tab(1,2) = 10
Création de structure (Struct)
PUBLIC STRUCT Article Ref AS STRING Designation AS STRING Prix AS INTEGER Poids AS INTEGER END STRUCT
Utilisation
Dim ArticleAchete As Article Dim ArticleVendu As Article Articlechete.Poids = 10 ArticleVendu = ArticleAchete
? Existe t-il un ORM pour faire le mapping entre l'objet créé et la base de données ?
Variables glocales
Il n'y a pas de variables globales en Gambas
Un contournement et de les mettre dans le module Main et de les déclarer comme Public
Si vous n'avez pas de module Main dans votre projet mais un Main form, vous pouvez les déclarer as Static Public.
Pour accèder à ces variables vous devez utiliser le nom du module ou du formulaire Main.
MyMainModule.MyGlobalVariable or MyMainForm.MyGlobalVariable
Les boucles
Exemple
Sub Option1_Click () Dim i For i = 1 To 10 Beep Next End Sub
Les chaînes de caractères
String concatenation operator : “&”
Path concatenation with “&/” operator
This operator deals with trailing slashes
Examples
Print "/home/gambas" &/ ".bashrc" Print "/home/gambas" &/ "/tmp" &/ "foo.bar"
Les fichiers
Voir :
Ouvrir un fichier
Dim handle As File handle = Open "myfile" For Read
Traduction
Translate
Print ("Tranlate me") Print "But do not translate me!"
Substitution
Substitution avec Subst
Print Subst(("Substitution of &1, &2 and &3"), "first", "second", "third")
Les procédures / fonctions
Voir :
Exemple de syntaxe d'une fonction qui additionne deux nombres
Fonction
Function Fonc1(Param1 As Float, Param2 As Float) As Float Dim Ret As Float Ret = Param1 + Param2 Return Ret End Function
Appel de la fonction
Print (Fonc1(2, 3))
Autres
Dépendances du projet
$ dpkg -S $(strace --trace=%file -f ./testg.gambas 2>&1 |egrep -v "ENOENT|exited|^strace:" |sed -e 's/^.*"\//\//g' |sed -e 's/",.*$//g' |sort -u |grep gambas3) gambas3-runtime: /usr/lib/gambas3/gb.draw.so gambas3-gb-form: /usr/lib/gambas3/gb.form.gambas gambas3-runtime: /usr/lib/gambas3/gb.geom.so gambas3-gb-gtk3: /usr/lib/gambas3/gb.gtk3.so gambas3-gb-gtk3-x11: /usr/lib/gambas3/gb.gtk3.x11.so gambas3-runtime: /usr/lib/gambas3/gb.gui.base.gambas gambas3-gb-gui: /usr/lib/gambas3/gb.gui.so gambas3-gb-image: /usr/lib/gambas3/gb.image.so
Questions / Réflexions
Comment faire pour :
- Accéder simplement à une API Rest
- Gérer le Multithreading
- Génerer une appli Gambas autonome avec toutes les dépendances inclus (DLL, runtime, comme avec VB msvbvm60.dll)
- Chiffrer simplement un mot de passe (Vault) ?
- Créer dynamiquement des “Controles” ?
- You can create controls and menu dynamically, just by instantiating them with the NEW instruction.
- “caster” ou forcer le type d'une varaible ?
- Faire appel à du code écrit dans un autre langage (mais dans un autre langage compiler tel que Go) peut-être via les IPC, les sockets, via API Rest Microservices ?
- Forcer un backend graphique (Si GTK et QT sont tous les deux installés) ?
- Porter un code Python simple en Gambas
- Créer des tableaux nommés / dictionnaires
Questions :
- Il n'y a pas de Current Directory dans Gambas. Comment faire ?
- Existe-il une technique similaire à ResHack ?
- Quel est le langage le plus ressemblant syntaxiquement à Gambas pour avoir la coloration syntaxique avec d'autres outils (Git, wiki etc…)
- Existe-il des linter et formateur (tel que black ou flake8 sous Python ou encore à
go fmtsous Go) - Pourquoi n'y a t-il pas de Package Manager avec des dépôts de libs et frameworks en ligne?
- Ne serait-il pas souhaitable d'inclure un didacticiel intégré comme sur Visual Basic ?
- Que manque t-il pour le portage des applis gérées sur ARM Android ?
- Pourquoi VB a disparu ? (ou a t-il été remplacé par VB .NET ?)
- Existe t-il un ORM pour faire le mapping entre l'objet créé et la base de données ? (voir plus haut)
Limitation :
- La commande Shell n'est pas capable de récupérer la STDERR !?
- Voir les instructions SHELL, EXEC et la class Process
- Ils n'y a pas d'équivalents à Map, Reduce, Filter
Notes marketing :
- Mettre en avant la simplicité d'utilisation de Gambas
- Mettre en avant les améliorations par rapport à VB
- Support commercial ?
- Renommer ou insister sur programmation événementiel / objet. Car le mot “Basic” fait peur ou du moins fait vieux
- Crossfounding ?
- Mettre en avant la capacité à générer facilement des paquets Debian, RedHat, Archinux, Slackware, Autotools, Opensuze…
- Mettre à jours car beaucoup de liens morts concernant des vieux projets
