Dater un export dans phpMyAdmin

Quand on exporte sa base de données dans phpMyAdmin, il y a moyen de dater son export dans le nom de fichier.

En effet, en plus des formats de chaînes de type @VARIABLE@ (tels que @DATABASE@ ), on peut utiliser les formats de strftime.

Pour un nom de base de donnée suivi de la date au format YYYYmmdd_HHMM, on pourra écrire :

@DATABASE@_%Y%m%d_%H%M

Plus d’infos sur les mots-clés dans la FAQ phpMyAdmin.

Plus d’infos sur le format de date dans la documentation PHP de strftime.

Documenter un package avec des diagrammes UML

C’est bien beau Javadoc mais ça manque quand même cruellement de visuels. Je vais rapidement expliquer comment remédier à ça.

Avant de me lancer dans un développement, j’aime bien noter rapidement mes idées et notamment faire un petit diagramme de classes en UML. En Java, j’utilise PlantUML dans mon IDE IntelliJ. PlantUML a 2 principaux avantages : il fait le taf et il est gratuit.

Pour installer PlantUML, il suffit d’ajouter le plugin à IntelliJ.

PlantUML pluginPour créer un diagramme de classe, on peut créer un fichier PlantUML (click droit sur un package > New > PlantUML File).

Dans cet exemple, j’ai une classe abstraite et deux classes dérivées :

Fichier puml

Cette visualisation peut être exportée en format image. Comme elle est destinée à être utilisée dans la Javadoc, je l’exporte dans le répertoire javadoc/doc-files.

On peut maintenant simplement référencer cette image dans la javadoc comme ceci :

/** Moteur du quiz
 *  <p>
 *     <img alt="UML class diagram" src="../doc-files/Quiz.png" >
 */
public abstract class Quiz {
    // ...
}

Si vous voulez documenter un package, il suffira de créer un fichier nommé package-info.java directement dans le package. Il contiendra une ligne avec le nom du package précédée de la javadoc.

/**
 * Jeu créé en TP de la vidéo <a href="https://www.youtube.com/watch?v=hSB3qPUJ7qE">Java intermédiaire 42 - TP Quiz</a>
 * <p>
 *     <ul>
 *         <li>main() se trouve dans Quizmain</li>
 *         <li>L'engine de jeu peut être soit graphique soit en mode console
 *         <br><img alt="UML class diagram" src="../doc-files/Quiz.png" ></li>
 *         <li>Les sets de question portent sur les capitales ou des exercices de math
 *         <br><img alt="UML class diagram" src="../doc-files/QuestionsGenerator.png" ></li>
 *     </ul>
 */
package Quiz;

Ce qui donnera ce résultat :

Résultat dans la JavaDoc

Tadaaaa 😉

Ébullition de neurones…

Ça avait commencé doucement. Je lis tous les jours les infos de mes sites préférées via Liferea, mon lecteur de flux RSS sous Linux. J’aime commencer par les nouvelles les plus récentes mais quand on mélange tous les sites je trouve qu’il manque une colonne qui rappelle sur quel site on est. J’ai donc décidé, aussi par challenge technique, de développer “mon” liferea.

Liferea

Je replonge dans dans le développement Java et en une semaine, avec l’aide de la doc et de l’expérience des développeurs sur stackoverflow j’arrive à bricoler un lecteur qui me convient mieux. Il lit les flux, y compris les chaînes youtube, il retient ce qui a été lu ou pas et il ouvre les liens dans un browser externe. Je ferai peut-être un article dessus plus tard, voici juste une capture d’écran de l’état actuel.

"mon" liferea

C’est bien beau mais je suis lucide : certaines partie de code ne sont pas propres, je sens que je ne maîtrise pas tout, il me manque des bases. Retour donc à potasser Java.

Je commence par la base : le Delannoy. La bible ! Complet mais aride.

Puis je change de tactique : suivre un cours sur OpenClassrooms (beaucoup plus abordable) en parallèle.

Mais arrivée aux premier design pattern, je me dis que ça vaut la peine de creuser un peu plus et je m’égare quelques jours…

Comme environnement de développement, j’utilise IntelliJ iDEA. Je profite de mon lecteur de flux pour m’abonner à leur chaîne youtube et je vois qu’il y a une vidéo sur l’intégration à Git et GitHub. Git je connais mais je ne me suis jamais inscrite sur GitHub. Me voilà inscrite et à suivre les petites formations de présentation…

En parallèle, comme ça fait quelques années que mon PC sous Debian n’avait plus été réinstallé proprement mais avait accumulé un tas de paquets pour le développement web, je décide de lui offrir un petit rafraîchissement en réinstallant Debian.

Debian 10 Buster s’installe sans aucun problème de driver et en quelques heures j’ai un PC tout beau tout propre. Oui mais… Gnome n’est quand même pas très ergonomique… Le simple fait que les programmes sont organisés dans la barre de tâches dans l’ordre de leur ouverture (et change donc tout le temps) est révélateur.

Je change donc pour Cinnamon (et je passe mes programmes en mode dark… mais non je préfère light, retour à light…).

Et tiens, tant qu’on y est, j’essaie le browser web Brave. Pas mal  du tout. Plus rapide que Firefox, il me semble. Seul défaut, je n’ai pas encore trouvé comment ouvrir un fichier dans un programme tiers directement. On ne peut faire qu’une sauvegarde locale.

Bref, en deux semaines j’ai réinstallé mon PC, changé d’environnement de bureau et de browser web et repris le développement d’applications. Ah, et j’oublie quelque-chose : je viens de commander un Raspberry PI pour en faire un media-center dans le salon. Plus qu’à trouver comment concilier tout ça avec un peu de lecture et l’entretien du potager.

 

Renouveau

Bienvenue sur kroghimor.be.

Comme vous le constatez, le site fait peau-neuve. Après avoir été délaissé quelques temps, il revient avec de nouveaux articles techniques ou plus personnels.

Mes activités de développement étant passées de web à desktop, maintenir à jour un site en PHP basé sur CodeIgniter n’avait plus vraiment d’intérêt technique. Place donc à un site WordPress tout simple.

En ce qui concerne les articles techniques, je vais surtout publier ici des infos tirées de mon expérience personnelle. Si je galère sur un problème technique, ça veut dire que sa solution vaut bien un article.

Pour la partie perso, j’avais envie de sortir de l’emprise des réseaux sociaux et de leurs algorithmes favorisant les contenus légers et émotionnels. Quand un jeu de mots en image fait 10 fois plus de “likes” qu’un texte personnel, quand un texte n’a aucune vue sans illustration, il est temps de se poser les bonnes questions.

Bienvenue ici donc .

Menu Applications dans Gnome Classic

Si vous utilisez la version classique de Gnome sous Linux, le menu “Applications” est votre ami. Ce menu, qui présente les applications installées, regroupées par type, se génère automatiquement. Vous pouvez néanmoins le personnaliser. Nous allons voir ici comment faire manuellement, sans passer par des outils tels que alacarte ou menulibre.

J’aime travailler par”workspace”. Dans le premier workspace j’ai mes applications quotidiennes (mail, internet, gedit avec mes notes, calibre,…) que je ferme le soir. Dans le 2e workspace j’ai mes applications de développement (JEdit, Meld, internet pour l’aide) que je ferme quand j’ai fini de travailler. Voyons comment faire pour pouvoir lancer ces groupes d’applications en un click, comme sur la photo.

Capture d'écran du menu Applications

Capture d’écran du menu Applications

Les fichiers bash

Tout d’abord, il va falloir créer 2 fichiers bash qui vont lancer les applications pour le workspace de base et le workspace et le workspace de développement. Je crée ces fichiers dans Home/Documents/Linux. Voici ce que contient le premier fichier :

#!/bin/sh
#lancement des programmes du workspace de base
thunderbird </dev/null &>/dev/null &
firefox-esr </dev/null &>/dev/null &
gedit </dev/null &>/dev/null &
calibre </dev/null &>/dev/null &

Je le nomme wksp_basic.sh et je lui donne les droits d’exécution.

Je vous passe les détails du 2e fichier…

Pour tester, on clique dessus. Ca fonctionne. Parfait.

Les applications

Chaque application correspond à un fichier *.desktop situé dans /home/.local/share/applications/ pour ce qui est spécifique à l’utilisateur courant et /usr/share/applications/ pour les applications communes à tous les utilisateurs.

Ces fichiers de configuration sont au format texte. Chaque fichier précise a quelle(s) catégorie(s) appartient l’application par une entrée Categories.

Les fichiers desktop des applications sont automatiquement installés avec leur paquet mais vous pourriez avoir envie d’ajouter une application pour lancer un fichier batch ou toute autre outils que vous avez créé.

Vous l’aurez compris, c’est très simple : il s’agit juste d’ajouter un nouveau fichier *.desktop dans le répertoire local ou partagé (si on a les droits root), par exemple en s’inspirant d’une autre application, modifier son nom (“Name”) et la manière de la lancer (“Exec”).

Je crée donc un fichier desktop pour wksp_basic.sh, que je nomme Basics.desktop et dont voici le contenu :

[Desktop Entry]
Version=1.1
Type=Application
Name=Basics
Comment=A small descriptive blurb about this application.
Icon=applications-other
Exec=/home/audrey/Documents/Linux/wksp_basic.sh
Actions=
Categories=Workspaces;

Comme il n’y a pas encore de répertoire “Workspaces”, on ne le verra pas tout de suite mais on continue…

Les répertoires

Les catégories du menu correspondent aux catégories des applications. Chaque répertoire correspond à un fichier *.directory situé dans /home/.local/share/desktop-directories/ pour ce qui est spécifique à l’utilisateur courant et /usr/share/desktop-directories/ pour ce qui est commun à tous les utilisateurs.

Ces fichiers de configuration sont aussi au format texte.

Je crée un nouveau fichier Workspace.directory qui contient ces lignes :

[Desktop Entry]
Version=1.1
Type=Directory
Name=Workspaces
Comment=Mes workspaces
Icon=folder

Menu personnel

Pour que tout celà apparaisse dans le menu, il faut aller éditer le fichier /home/.config/menus/gnome-applications.menu

Pour chaque catégorie, vous avez une entrée <Menu> qui contient les applications dans l’ordre qui sera affiché

On va donc en ajouter une pour la partie Workspaces :

<Menu>
<Name>Workspaces</Name>
<Directory>Workspaces.directory</Directory>
<DirectoryDir>/home/audrey/.local/share/desktop-directories</DirectoryDir>
<Include>

<Filename>basics.desktop</Filename>
<Filename>development.desktop</Filename>
</Include>
<Layout>
<Merge type="menus"/>
<Merge type="files"/>
</Layout>
</Menu>

Voilà, on a maintenant un nouveau menu “Workspaces” qui lance les bash des applications.

Si on veut que “Workspaces” soit inséré ailleurs dans le menu, c’est en fin de fichier que ça se passe. On ajoute une ligne telle que

	<Menuname>Workspaces</Menuname>

dans la partie <layout> et voilà.

C’est propre, c’est simple, c’est efficace.

Internet de tout et de n’importe quoi

Docu Arte

Je viens de regarder ce reportage sur Arte : Internet de tout et de n’importe quoi

En résumé :
– Pourquoi “faut-il” de la 5G ? (réponse : pour pouvoir connecter un maximum d’objets)
– Pourquoi “faut-il” connecter un maximum d’objets ? (réponse : parce que les assistants de Google et Apple veulent se rendre indispensable afin de récolter un maximum de données personnelles)
– Je n’ai rien à cacher, pourquoi ça me gênerait que Google sache par ex quels vêtements j’achète ? (réponse : parce que si on n’achète que des vêtements XXL, par ex, des assureurs peuvent estimer que ça traduit un risque pour la santé)

Et plus :
– En dehors de ce qu’on sait qu’on partage comme données (en postant sur un réseau social, en faisant une recherche,…) il y a toutes les données dont on n’est pas conscient qu’on partage, comme la vitesse de frappe qui donne des infos sur son état d’esprit (on écrit moins vite que d’habitude avant un épisode dépressif) ou ses achats “innocents” qui permettent de prédire une grossesse
– Toutes ces infos personnelles peuvent être revendues, à n’importe qui.
– Même si ce n’est pas revendu, si c’est connecté, ça peut être piraté, et si ça peut être piraté, ça sera piraté. Que ce soit un site web d’une école communale, un robinet “smart”, une voiture connectée ou toutes les infos qu’un gouvernement possède de ses citoyens,… s’il y a moyen, il y a des gens qui vont le faire.

Bref, regardez ça, puis réfléchissez à ce qu’on vous vend, surtout si c’est “trop stylé”

Pointer pointer…

Si vous ne trouvez plus votre curseur de souris (ou si vous avez 10 minutes à tuer en philosophant gaiement sur l’incroyable créativité des développeurs) je vous suggère vivement d’aller voir pointerpointer.com