PROJET AUTOBLOG


Tontof

Site original : Tontof

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

4 : KrISS aaaa : middleware

vendredi 19 mai 2023 à 15:00
La semaine passée était bien chargée et je n'ai pas eu le temps de partager un peu de code. Cette semaine, c'est un début de présentation d'un projet encore en cours. À l'image de KrISS MVVM qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, KrISS aaaa a le même but mais avec l'esprit programmation fonctionnelle. À l'heure où j'écris ces lignes KrISS aaaa n'est pas vraiment opérationnel mais j'ai déjà quelques briques que je vais présenter petit à petit après avoir mis en place quelques tests pour présenter comment tout cela fonctionne.

La programmation fonctionnelle n'a plus vraiment le vent en poupe mais je pense qu'elle peut être intéressante car plus facile à comprendre que la programmation orientée objet et j'espère donc trouvé du temps pour concrétiser tout ça. J'ai même pensé mettre à jour KrISS feed en utilisant ce principe, un jour peut-être...

Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/ mais en programmation fonctionnelle :

<?php include('src/helpers/middleware/middleware.php');

function 
before($object$next) {
    
$object[] = 'before';
    return 
$next($object);
}

function 
after($object$next) {
    
$object $next($object);
    
$object[] = 'after';
    return 
$object;
}

function 
core($object) {
    
$object[] = 'core';
    return 
$object;
}

$middleware middleware(['after''before''after''before'], 'core');

var_dump($middleware());
 
?>

Le résultat est le suivant

array(5) {
[0] =>
string(6) "before"
[1] =>
string(6) "before"
[2] =>
string(4) "core"
[3] =>
string(5) "after"
[4] =>
string(5) "after"
}

J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php

4 : KrISS aaaa : middleware

vendredi 19 mai 2023 à 15:00
La semaine passée était bien chargée et je n'ai pas eu le temps de partager un peu de code. Cette semaine, c'est un début de présentation d'un projet encore en cours. À l'image de KrISS MVVM qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, KrISS aaaa a le même but mais avec l'esprit programmation fonctionnelle. À l'heure où j'écris ces lignes KrISS aaaa n'est pas vraiment opérationnel mais j'ai déjà quelques briques que je vais présenter petit à petit après avoir mis en place quelques tests pour présenter comment tout cela fonctionne.

La programmation fonctionnelle n'a plus vraiment le vent en poupe mais je pense qu'elle peut être intéressante car plus facile à comprendre que la programmation orientée objet et j'espère donc trouvé du temps pour concrétiser tout ça. J'ai même pensé mettre à jour KrISS feed en utilisant ce principe, un jour peut-être...

Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/ mais en programmation fonctionnelle :

<?php include('src/helpers/middleware/middleware.php');

function 
before($object$next) {
    
$object[] = 'before';
    return 
$next($object);
}

function 
after($object$next) {
    
$object $next($object);
    
$object[] = 'after';
    return 
$object;
}

function 
core($object) {
    
$object[] = 'core';
    return 
$object;
}

$middleware middleware(['after''before''after''before'], 'core');

var_dump($middleware());
 
?>

Le résultat est le suivant

array(5) {
[0] =>
string(6) "before"
[1] =>
string(6) "before"
[2] =>
string(4) "core"
[3] =>
string(5) "after"
[4] =>
string(5) "after"
}

J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php

3 : KrISS tuto

vendredi 5 mai 2023 à 16:00
Une petite mise à jour pour garder le rythme d'un message par semaine !

Comme je suis un grand fan du duo OrgMode et RevealJs grâce à Org Reveal, j'ai voulu voir si je pouvais intégrer un cours de base de données.

Mission réussie grâce à SQL.js. Comme en plus j'ai besoin d'avoir certaines commandes basées sur MySQL/MariaDB, j'ai apporté quelques modifications pour gérer par exemple les dates, AUTO_INCREMENT, etc : https://github.com/tontof/kriss_tuto/blob/master/common/lib/sqlite/sqlite.js

Il n'a actuellement pas de contenu pour le cours mais des exemples qui montrent comment intégrer du SQL pour présenter un cours de base de données :
- Exécuter du SQL directement : https://tontof.net/tuto/bdd/#/slide-requetes-simples
- Charger un fichier SQLite : https://tontof.net/tuto/bdd/#/slide-fichier-sql
- Afficher une table à partir d'un fichier : https://tontof.net/tuto/bdd/#/slide-sql-integre

Pour le code source Org correspondant : https://github.com/tontof/kriss_tuto/blob/master/bdd/index.org

3 : KrISS tuto

vendredi 5 mai 2023 à 16:00
Une petite mise à jour pour garder le rythme d'un message par semaine !

Comme je suis un grand fan du duo OrgMode et RevealJs grâce à Org Reveal, j'ai voulu voir si je pouvais intégrer un cours de base de données.

Mission réussie grâce à SQL.js. Comme en plus j'ai besoin d'avoir certaines commandes basées sur MySQL/MariaDB, j'ai apporté quelques modifications pour gérer par exemple les dates, AUTO_INCREMENT, etc : https://github.com/tontof/kriss_tuto/blob/master/common/lib/sqlite/sqlite.js

Il n'a actuellement pas de contenu pour le cours mais des exemples qui montrent comment intégrer du SQL pour présenter un cours de base de données :
- Exécuter du SQL directement : https://tontof.net/tuto/bdd/#/slide-requetes-simples
- Charger un fichier SQLite : https://tontof.net/tuto/bdd/#/slide-fichier-sql
- Afficher une table à partir d'un fichier : https://tontof.net/tuto/bdd/#/slide-sql-integre

Pour le code source Org correspondant : https://github.com/tontof/kriss_tuto/blob/master/bdd/index.org

2 : KrISS cast

vendredi 28 avril 2023 à 17:00
L'utilisation d'une présentation classique à l'aide de reveal.js par l'intermédiaire de Org mode comme pour KrISS tuto avec le mode présentation (touche 's') permet de vidéoprojecter une fenêtre spécifique mais reste quand même limitée.

J'avais un besoin assez spécifique. Je voulais partager mon écran sur un vidéoprojecteur sans avoir à tourner la tête pour voir ce que j'écrivais dans un terminal. La solution la plus simple est de dupliquer l'écran. Sauf que je voulais aussi avoir la possibilité d'ouvrir d'autres applications que je ne voulais pas projecter et dans ce cas la duplication ne fonctionne plus.

Au départ, je pensais pourvoir projecter un bureau linux spécifique mais je n'ai pas vraiment trouvé comment faire. En partageant des applications sur plusieurs bureaux je pense qu'on peut s'en sortir avec un gnome ou KDE. Sauf que de toute façon avec lightdm, je ne pense pas que j'aurais pu m'en sortir.

Après avoir cherché rapidement, je n'ai pas trouvé non plus d'application qui réponde à mon besoin alors j'ai pensé au partage d'écran sur Firefox (ou un autre navigateur) et après quelques lignes de javascript KrISS cast est né !

C'est assez basique mais ça fait le job. On ouvre une fenêtre avec KrISS cast dedans et on vidéoprojète la fenêtre. On clique sur ▶ en haut à gauche pour sélectionner la fenêtre à partager et c'est parti. Grâce à Split Grid, j'ai ajouté la possibilité de partager plusieurs fenêtres en même temps.

Pour résumé :
- les boutons + permettent de partager la fenêtre courante en 2 en fonction du bouton cliqué
- ▶/■ en haut à gauche démarre ou arrête le partage d'écran
- ⨯ en haut à droite ferme la fenêtre courante
- ⛶ en bas à gauche met en plein écran la fenêtre courante
- 🗖 en bas à droite met en plein écran la fenêtre globale

Quelques petits bonus :
- tous les vidéoprojecteurs n'ont pas l'option pour faire un écran noir, il suffit de découper la fenêtre en 2 et d'agrandir la zone pour avoir le même effet. Pratique pour écrire au tableau tout en vidéoprojetant
- pour zoomer la fenêtre projetée il suffit de redimensionner la fenêtre partagée d'origine

Pour utiliser KrISS cast directement ajouter #cast dans l'url. Vous pouvez également télécharger un seul fichier index.html compilé de 17K. Comme d'habitude les sources sont disponibles sur Github.

Bon partage d'écran !