Oiseaux
Bienvenue sur le site Estérel-Tech !
Mardi 25 juin 2019

ACCUEIL

Des projets et du code 'Estérel-Tech' sur GitLab et Framagit

Plusieurs projets et modules de code sont partagés sur GitLab ainsi que sur le site GitLab de Framasoft, Framagit.

  • Tokenizer : Éclatement d'une chaîne en un tableau selon un motif séparateur. Langage C.
  • MemBuf : Bloc mémoire de taille variable. Langage C.
  • PtrArr : Tableau dynamique de pointeurs. Langage C.
  • MenuCat : Menu d'applications par catégories pour système Linux. Langage C, interface graphique GTK+ >= 3.20.

Le projet MenuCat est encore en phase de test et sera accessible en mode public dans quelques jours. À l'origine, j'ai créé cette application pour un ordinateur portable ayant pour système d'exploitation la distribution GNU/Linux Debian "testing" avec l'environnement de Bureau OpenBox. Les autres environnements de bureau, comme les plus connus, Xfce, Gnome, Mate, KDE etc. ont leur propre menu d'applications, MenuCat est donc destiné à des environnements de bureau minimalistes et se montre très efficace avec un raccourci clavier. MenuCat est aussi disponible sur le dépôt GitLab Estérel-Tech, sur cette page : MenuCat. D'autres projets seront prochainement proposés sous forme d'applications système ou Web ou de didacticiels, principalement en langage C et utilisant les 'Widgets' GTK+ pour l'interface graphique utilisateur.

LMDB est plus rapide que l'éclair !

Parmi les technologies que j'utilise il y a une base de données embarquée transactionnelle de stockage clé-valeur (dite no-sql), héritière de Berkeley DB, que je considère (et je ne suis pas le seul) comme étant une des plus performantes : LMDB (Lightning Memory-Mapped Database).

Certains affirment même qu'elle est la plus rapide du monde !

C'est bien possible car ses performances sont surprenantes. Ce qui d'emblée m'a beaucoup plu est son interface de programmation en langage C qui est plus dépouillée et accessible que celle de Berkeley DB (que j'avais découvert en 2001 et dont LMDB s'inspire) comme le montre la documentation en ligne.

LMDB est la base de données idéale pour des sites internet hautes performances comme les modules Apache ou les applications FastCGI. La liaison du code du site ou de l'application à la bibliothèque partagée permet de se passer de serveurs comme MySQL/MariaDB, Postgresql, Firebird ou autres, consommateurs de ressources processeur ou de mémoire vive et c'est aussi une expérience fort intéressante pour tout programmeur qui souhaite s'affranchir du SQL obligatoire dans les serveurs de données précités. Berkeley DB étant passée dans le giron d'Oracle après son acquisition de Sleepycat Software en 2006, la licence originale (identique à GNU GPL) a été modifiée, LMDB, sa moderne et libre héritière, lui succède donc avantageusement : plus moderne, plus performante et libre. Son créateur, Howard Chu (Symas Corp.), présente en détail (en anglais) Lightning Memory-Mapped Database dans la vidéo ci-dessus (conférence donnée en 2015).

Estérel-Tech modifie son nom de domaine principal (.com vers .fr)

Depuis ce jour www.estereltech.com est redirigé vers www.estereltech.fr.

J'ai décidé de regrouper les services internet dont j'ai besoin : serveurs et noms de domaines dans une unique entreprise qui me donne entière satisfaction depuis plusieurs années, la société EvxOnline.

Modules Apache

Bien que les performances des exécutables FastCGI soient déjà très satisfaisantes j'ai décidé de tester plusieurs modules Apache - générateurs de contenu, tout d'abord en local puis sur des serveurs distants. Les résultats obtenus ont été très convaincants et le site est maintenant servi par ce type de technologie.

FastCGI me permettait de m'affranchir des langages de scripts interprétés car j'ai toujours privilégé le langage C et les modules Apache permettent de se passer de la communication inter-processus, ils sont compilés sous forme de bibliothèques partagées, sont chargés par le serveur et interceptent les requêtes.

Un module Apache générateur de contenu reçoit la requête HTTP du client avec tous les éléments qui la composent, la traite et envoie des données formatées en balisage HTML comme c'est le cas ici entre autres. Au cours du traitement de la requête, le code gère, entre autres, le filtrage des données reçues, les Cookies, les paramètres reçus des requêtes GET ou POST et les sessions HTTP.

Les modules développés avec les interfaces de programmation Apache "APR" (Apache Portable Runtime) et "APU" (Apache Portable Utility) sont donc portables et intègrent même des pilotes pour une gestion unifiée des principaux serveurs de bases de données comme MariaDB/MySQL, SQLite ou PostgreSQL.

Les possibilités sont nombreuses et l'ouverture du code du vénérable serveur HTTP Apache (1995) permet à qui s'en donne la peine (une bonne connaissance du protocole HTTP et du langage C sont un préalable) de créer des applications Web adaptées à tous les cas de figure.

La documentation en ligne ainsi que quelques livres sur le sujet dont l'excellent ouvrage de Nick Kew "The Apache Modules Book: Application Development with Apache" permettent d'apprendre à créer des modules et de profiter ainsi de leurs performances hors norme.

Mon serveur est une pieuvre violette qui aime bien les gnous

Je viens d'effectuer la mise à niveau du système d'exploitation libre du serveur qui héberge Estérel-Tech vers Debian GNU/Linux 9 "Stretch".

La pieuvre nommée "Stretch" est un personnage du film d'animation "Toy Story 3" de 2010.

Voici les principaux outils importants pour mon serveur fournis avec Debian 9 :

  • Noyau Linux 4.9.30-2
  • systemd 232 : initialisation, services et, entre autres, journalisation
  • Outils de compilation : gcc (GNU Compiler Collection) 6.3 : exécutable à position indépendante (PIE)
  • libc6 2.24-12 : bibliothèques partagées C et mathématique
  • Serveur HTTP : Apache 2.4.25. Les pages seront donc servies avec le protocole HTTP 2.0
  • MariaDB 10.1 qui remplace MySQL
  • PostgreSQL 9.6
  • Firebird 3.0
  • SQLite 3.16

Décision prise pour les développements futurs

Le développement d'applications pour le système d'exploitation Microsoft Windows est abandonné.

Je privilégie dorénavant le logiciel libre et les systèmes GNU/Linux; j'utilise Debian pour mon serveur internet ainsi que pour mes postes de travail fixes ou portables. Les outils de développement que j'utilise sont indiqués à la page "Informations".

Je me suis intéressé aux distributions Linux il y a maintenant plus de douze ans et ai commencé à prendre mes distances avec Windows à la sortie de Windows 8 en 2012. Je travaille sous Linux depuis bientôt cinq ans et regrette de ne pas avoir pris la décision plus tôt ! J'y ai trouvé tous les outils dont j'avais besoin et le code ouvert permet d'avancer très vite.

Je développerai donc des applications système et FastCGI sous Linux en utilisant les technologies et langages que je préfère dont le langage C ainsi que C++ pour quelques projets spécifiques. Pour les applications à interface graphique j'utilise dès à présent l'ensemble de bibliothèques logicielles GTK+.

J'ai commencé, modestement, à contribuer aux tests de paquets logiciels sous Linux Debian, comme dernièrement avec le paquet du serveur de données Firebird 3.01.

Les quelques applications en téléchargement sur "Estérel-Tech" ne seront donc pas mises à jour et le projet Wonderkeys++ qui était prometteur et presque finalisé est, de même et à regret, abandonné.


W3C HTML 5
Mise à jour : 18 mai 2019
W3C CSS