Leed

Tontof

A simple and smart (or stupid) blog Voir les Non lu | Plus vieux en premier
ˆ

12 ans

Tontof par tontof le 18/04/2024 à 18:19:00 - Favoriser (lu/non lu)

Pour cet anniversaire je n'ai pas de nouveau code à publier mais un inventaire personnel que je voulais partager.

Je vous ai dit que j'étais un grand utilisateur d'emacs et j'ai même partagé ma configuration .emacs.d mais c'est officiel, je suis en train du passer du coté obscur et si je développe encore professionnellement avec emacs, je développe personnellement avec vim et j'envisage une conversion totale dans les semaines/mois qui arrivent. Je n'ai pas encore de configuration vim à partager parce que je suis en train d'étudier maintenant le passage à neovim mais quand ça sera fait, je la partagerai aussi. Je connaissais déjà un peu vim mais si j'ai une série de vidéos à vous conseiller pour débuter c'est la playlist de ThePrimeAgen que j'ai trouvé assez concise et complète et qui se termine aussi avec le passage à neovim...

Pour l'instant je ne pourrais pas complètement quitter emacs parce qu'orgmode n'étant pas entièrement supporté par vim il va falloir que j'étudie comment mettre à jour KrISS tuto

Si vous vous demandez pourquoi un tel changement, la réponse est simple l'efficacité. Attention, je ne parle pas ici d'efficacité liée à une quelconque rentabilité. C'est juste que j'essaye d'être de plus en plus sobre et qu'en pratique cela veut dire que j'ai remplacé mon ordinateur portable qui est en train de mourir par un RPI400. Si la différence de chargement d'un fichier entre emacs et vim sur mon ordinateur portable n'était que peu perceptible, vous n'imaginez pas à quel point il n'y a pas photo sur mon RPI400. Je ne savais pas trop si un tel support me permettrait de travailler dans de bonnes conditions mais après plus de 2 ans, je ne reviendrai pas en arrière. C'est vrai que l'installation est un peu plus compliquée en mode nomade parce qu'il y a plusieurs cables à brancher (alimentation, souris, écran (x3 pour mon écran portable Arzopa : cable d'alimentation usb-c sur la prise, cable usb-c/usb le RPI400 et cable hdmi), mais au quotidien il est posé sur un bureau branché et il n'y a donc qu'à brancher la prise d'alimentation au lieu d'appuyer sur un bouton de démarrage (d'ailleurs c'est même plus simple parce que mon RPI400 s'allume tout seul en branchant la prise contrairement à mon ordinateur pour lequel je branche la prise et j'appuye sur le bouton).

Pourquoi un RPI400 ?
- Pas de batterie (oui c'est un critère parce qu'en pratique je n'ai que très peu utilisé mon ordinateur portable sans fil et que la batterie avec le temps ne joue plus du tout son rôle).
- Pas cher (ce n'est pas vraiment le critère que je mets en premier parce que ça ne me dérange pas vraiment d'acheter un outil un peu plus cher s'il dure longtemps. Mon ordi a 9 ans et j'espère bien l'utiliser encore plusieurs années avec le ventilateur bruyant et le tour de l'écran recollé à la fibre de verre).
- Plus sécurisant (je transporte moins d'informations personnelles et/ou sensibles avec mon RPI400 qu'avec mon ordi. Je pourrais crypter mon disque dur mais j'ai préféré opter pour une clé USB avec LUKS que je trouve plus pratique à l'usage surtout quand on utilise différents outils (ordinateurs portables perso et non perso, RPI400, etc.) on retrouve tout ce dont on a besoin sur la clé). Merci Sebsauvage pour la découverte.

Au quotidien, je n'ai pas beaucoup de reproche à faire à mon RPI400 si ce n'est qu'il est parfois un peu limite sur certains sites web mais dans ce cas j'en veux plus au site web qu'à mon RPI400. Je n'imagine même pas comment se passerait l'ouverture du menu windows 11 dessus :-)

Et pour terminer, j'envisage un apprentissage du clavier Ergo-l. Merci Orangine Rouge pour le partage. J'ai tenté il y a plusieurs années le passage à bépo (clavier adapté à l'écriture en français) et contrairement à d'autres personnes :-p j'avoue ne pas avoir vraiment insisté. Comme je regrette un peu, je me dis que c'est l'occasion de se remettre à un apprentissage qui peut être enrichissant. Ergo-l étant adapté au français, à l'anglais et au code, je me dis que c'est l'occasion ou jamais parce que c'est clairement ce que j'utilise le plus et qu'au final le bépo n'aurait pas été le plus adapté. Comme je ne regarde déjà pas le clavier je me dis que je devrais pouvoir y arriver assez facilement et ça me permettra peut-être de perdre certains défauts de frappe...

À suivre
ˆ

11 : KrISS paol

Tontof par tontof le 16/04/2024 à 16:04:00 - Favoriser (lu/non lu)

11e et dernier bout de code de la série que j'avais promis pratiquement l'année passée pour les 11 ans de tontof.net. C'est promis je ne ferai plus de promesse que je ne pourrais pas tenir... Euh... Ça commence mal ? En tout cas, j'avoue que je n'avais pas imaginé que cela m'aurait pris autant de temps pour publier tous ces bouts de code.

Pour terminer la série voici donc KrISS paol un petit outil qui permet d'exploiter le système PAO pour retenir des suites de chiffres. PAO c'est pour Personne, Action et Objet et PAOL c'est avec un Lieu en plus. Des explications sont données sur la page consacrée au projet, je ne vais donc pas m'étendre sur le projet mais plutôt sur les données qui avec votre aide pourrait grandement s'améliorer.

Dans l'idée si vous devez retenir les décimales de π : 3.141592653, au lieu de les retenir directement vous apprenez la phrase : Dorothée loue une péniche à Limoux et avec la traduction du code chiffres - sons vous retrouvez les décimales ! Ça permet aussi de retenir des numéros de téléphone ou des codes pour certains accès (je m'en suis servi pour le code d'une imprimante que j'utilisais ponctuellement et après presque un an sans l'avoir utilisé, j'avais oublié le code mais pas la phrase qui m'a permis de le retrouver facilement !).

Actuellement, c'est déjà fonctionnel mais j'aimerais pouvoir améliorer les données pour avoir encore plus de choix dans les phrases proposées. Ce qu'il faut savoir c'est que la partie la plus délicate est la traduction d'un mot en phonétique pour ensuite le traduire en chiffres. Pour limiter certaines erreurs j'ai supprimé les mots qui avaient 2 prononciations différentes dans le wiktionary. Il y a donc des mots qui sont supprimés, comme par exemple le prénom Jean qui correspond à 6 mais qui peut aussi se prononcer DJean pour le vêtement et qui dans ce cas correspondrait à 16. Pour "Jean/jean", on pourrait faire la différence s'il s'agit d'une personne ou d'un objet mais à partir des données que j'ai pu extraire je n'ai pas vraiment pu gérer ce genre d'exception et "Jean/jean" ne sont donc pas proposés.

Pour la liste des personnes, j'ai utilisé les données de l'INSEE pour utiliser les prénoms français donnés entre 1900 et 2021 (les propositions sont ordonnées par fréquence d'apparition). Pour améliorer cette liste, une liste de personnalités/personnages seraient un plus, mais je n'ai pas trouvé de listes suffisamment fournie et intéressante pour pouvoir l'intégrer.
Plus de détails : https://github.com/tontof/kriss_paol/blob/main/data/person/script.bash

Pour les actions, j'ai trouvé une liste de verbes conjugués et je n'ai gardé que les temps présent et futur qui ont une prononciation différente. (Certains systèmes PAO utilisent seulement la traduction du verbe à l'infinitif, j'ai préféré prendre le son du verbe dans la phrase finale).
Plus de détails : https://github.com/tontof/kriss_paol/blob/main/data/action/script.bash

Pour les objets, c'est une donnée assez difficile à trouver et je suis donc parti d'une liste de noms assez générique. Le résultat n'est pas trop mal mais peut sûrement être amélioré.
Plus de détails : https://github.com/tontof/kriss_paol/blob/main/data/object/script.bash

Enfin pour les lieux, c'est encore sur l'INSEE que j'ai récupéré les communes de France. Mais là encore, il serait intéressant de pouvoir ajouter d'autres localités comme les villes assez connues d'autres pays (Londres, etc.), des noms de pays (Italie, etc.), des lieux précis (la tour Eiffel, etc.).
Plus de détails : https://github.com/tontof/kriss_paol/blob/main/data/location/script.bash

Tout est sur Github pour les infos un peu plus techniques mais si vous avez des pistes d'améliorations je suis preneur !
ˆ

10 : Kriss ecmd

Tontof par tontof le 10/04/2024 à 10:04:00 - Favoriser (lu/non lu)

Avant dernier bout de code avant le 11e prévu mardi prochain \o/

execCommand combiné à contenteditable est super pratique pour éditer une page html même s'il génère un code HTML un peu nul (par exemple les balises <i> ou <b> pour l'italique et le gras). Maintenant le problème ne se pose plus car l'usage de execCommand est devenu obsolète.

À ma connaissance il n'y a aucune alternative à execCommand et s'il existe des éditeurs HTML sympathiques, j'aimais bien ContentTools qui semble abandonné, j'avais envie d'étudier comment fonctionnaient les sélections en javascript et j'ai donc commencé KrISS ecmd.

C'est encore loin d'être complet, mais j'ai réussi à gérer plusieurs problèmes qui se posaient sur les sélections qui ne correspondaient pas toujours à ce que j'imaginais (quand on sélectionne du texte qui est dans une balise html, ça peut sélectionner le texte à l'intérieur dans les balises mais aussi le texte avec les balises) ainsi que sur la qualité du code HTML généré avec entre autres la fusion de même balises pour éviter la duplication de code (quand on veut mettre en gras du texte à côté de texte en gras, ça fusionne les 2 balises de gras).

L'objectif final de ce code serait de l'utiliser dans un projet de création de pages HTML statiques dans l'esprit de mobirise mais en plus simple, un KrISS edit ? En attendant le code est disponible sur Github.
ˆ

9 : KrISS klok

Tontof par tontof le 04/04/2024 à 16:04:00 - Favoriser (lu/non lu)

J'étais un peu trop à la bourre pour publier du code mardi et puis j'ai appris par hasard qu'aujourd'hui 4 avril était une fête un peu spéciale car pour ce que ça vaut, c'est la Saint Isidore de Séville le patron des internautes, des informaticiennes et informaticiens... En tout cas je m'en sers d'excuse pour publier KrISS klok aujoud'hui !

L'idée vient du « puzzle chess » qui adapte les horloges des jeux d'échecs aux puzzles et qui permet de les aborder d'une façon bien différente de ce qu'on a l'habitude de faire avec. Voici une vidéo de présentation.

KrISS klok est encore bien loin de ce que j'ai en tête, mais j'essaye de publier même en l'état : « Not perfect, just good enough »

En tout cas c'est fonctionnel même si grandement imparfait. Comme à mon habitude je n'ai pas vraiment passé du temps sur le graphisme et je suis allé à l'essentiel de la fonctionnalité de base. Contrairement aux horloges d'échecs classiques, KrISS klok offre la possibilité d'avoir plus de 2 horloges, l'idée finale étant de pouvoir découper l'espace de façon plus agréable pour qu'on puisse l'adapter en fonction de la position des personnes autour de l'écran. J'aimerais pouvoir utiliser un diagrame de Voronoï en pondérant les points pour avoir des zones de tailles plus ou moins égales.

J'ai voulu utiliser des ServiceWorker pour le rendre accessible hors ligne, mais comme il s'agit d'une simple page html, le charger dans le navigateur ou l'enregistrer en local permet aussi de s'en servir directement sans trop de complication, je verrai donc plus tard pour améliorer cette partie là.

Il faudrait aussi qu'on puisse l'inverser en mode chronomètre plutôt que décompte. Une chose est sûre, ce ne sont pas les idées qui manquent pour l'améliorer. Le code est dispo sur Github en attendant que je trouve le temps de voir comment je peux faire avec mon hébergement pour gérer les git de mon côté.

Bon puzzle chess avec KrISS klok !
ˆ

8 : KrISS aaaa : html

Tontof par tontof le 26/03/2024 à 19:04:00 - Favoriser (lu/non lu)

L'idée de Tom Butler pour la génération des pages PHP est vraiment originale. Son implémentation avec Transphporm montre une approche différente des autres projets plus classiques comme Twig. À ma connaissance c'est vraiment le seul projet qui utilise cette idée et théoriquement c'est très élégant dans le monde de la programmation object.

Pour mon approche plus impérative avec KrISS aaaa, j'ai imaginé l'utilisation d'un tableau associatif pour manipuler le code html à générer. Pour cela j'ai donc fait plusieurs fonctions pour transformer du code html en tableau associatif et vice versa.

En pratique, ça donne :
<?php include('src/helpers/html/html.php');

$string '
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Title</title>
  </head>
  <body>
    body
  </body>
</html>
'
;
$array html_to_array($string);
var_dump(array_to_html($array));
$arraySimplified array_html_simplify($array);
$arraySimplified['html']['head']['title'] = "New title";
$arraySimplified['html']['body'] = [["p" => "new body"]];
$arraySimplified['html']['body'][] = ["p" => "add body"];
var_dump($arraySimplified);
var_dump(array_to_html($arraySimplified)); ?>



Ce qui donne comme résultat :
string(110) "<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Title</title></head><body>body</body></html>"
array(2) {
  '!DOCTYPE' =>
  array(1) {
    '@' =>
    array(1) {
      [0] =>
      string(4) "html"
    }
  }
  'html' =>
  array(3) {
    '@' =>
    array(1) {
      'lang' =>
      string(2) "en"
    }
    'head' =>
    array(2) {
      'meta' =>
      array(1) {
        '@' =>
        array(1) {
          'charset' =>
          string(5) "utf-8"
        }
      }
      'title' =>
      string(9) "New title"
    }
    'body' =>
    array(2) {
      [0] =>
      array(1) {
        'p' =>
        string(8) "new body"
      }
      [1] =>
      array(1) {
        'p' =>
        string(8) "add body"
      }
    }
  }
}
string(140) "<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>New title</title></head><body><p>new body</p><p>add body</p></body></html>"



Une remarque importante, cela ne génère pas de code html avec des retours à la ligne et des indentations mais c'est un choix volontaire. Bien sûr cela peut poser problème avec les affichages inline-block qui ne réagissent pas exactement de la même façon s'il y a des espaces entre les balises ou non.

Le but étant de rester minimaliste, ce comportement est donc voulu !
It's not a bug it's a feature!
ˆ

7 : KrISS turn

Tontof par tontof le 19/03/2024 à 19:03:00 - Favoriser (lu/non lu)

Quand dans le dernier article j'ai écrit que je ne pourrais pas garder le rythme des publications, je pensais que je reprendrais tranquillement à l'automne mais force est de constater que c'est avec le printemps qui arrive que je vais pouvoir reprendre la publication de code.

C'est plus ou moins vrai avec KrISS turn qui est un peu un entre 2. J'ai écrit plusieurs fois à blasten pour savoir si je pouvais publier mes modifications à son projet turn.js mais mes messages sont restés sans réponse. Sur github son projet semble abandonné à la version 4 mais sur son site, il y a une version 5 qui est bien plus aboutie même si la démo qui affiche des pages en html n'est pas forcément très convainquante : http://turnjs.com/catalog/

J'ai donc apporté quelques modifications afin de pouvoir faire un lecteur PDF en intégrant la bibliothèque Mozilla PDF.js. Je n'ai pas modifié la bibliothèque turn.js, juste quelques lignes de son script principal qui utilise sa bibliothèque.

Comme je n'ai pas eu de répons, je ne publie pas sur github mais en regardant le code source il est assez facile de récupérer ce qu'il faut pour pouvoir héberger votre propre lecteur PDF sous forme de magazine.

Voici quelques exemples :
- https://tontof.net/turn/
- https://tontof.net/turn/?pdf=assets/pdf/classes.pdf
- https://tontof.net/turn/?pdf=assets/pdf/turnjs4-api-docs.pdf

J'ai 1 mois pour publier les 4 derniers projets, j'espère que je vais tenir le rythme !
ˆ

6 : KrISS lldc

Tontof par tontof le 11/06/2023 à 13:06:00 - Favoriser (lu/non lu)

Nous voilà à la moitié des présentations des codes (06/11 coïncidence je ne crois pas) et si j'ai réussi à garder à peu près le rythme depuis mon retour en ligne, je sens qu'avec l'été qui arrive, cela va être plus compliqué et je ne pense pas que je pourrais garder ce rythme. Il me reste 1 ou 2 projets à peu près présentables mais il y a encore un peu de boulot pour les derniers. Donc, pas d'inquiétude si je suis plus discret les prochaines semaines !

Je vous ai déjà parlé avec KrISS tuto d'un petit cours sur la compression de données où je présente les algorithmes classiques de compression sans perte (Huffman, Huffman adaptatif, le codage arithmétique, rle, lz77, lz78, lzw).

Pour la partie pratique, j'ai eu du mal à trouver des algorithmes qui fonctionnaient bien et qui permettaient d'illustrer ce que je montrais en cours. J'ai utilisé un temps https://sourceforge.net/projects/compressions/ mais la compilation n'était pas toujours simple et j'ai donc cherché des versions python que j'ai regroupé dans KrIIS lldc. C'est vraiment à but pédagogique et je ne vous invite pas à utiliser ce code pour compresser de vrais fichiers ! Personnellement je ne le ferai pas.

J'ai uniformisé l'usage des algorithmes et ajouté un petit bout de code pour le codage binaire du résultat. Les ordinateurs stockent l'information avec des octets (8 bits) mais quand on a besoin de stocker un nombre de bits précis qui n'est pas multiple de 8 c'est un peu compliqué, il faut trouver une méthode pour arriver à relire le résultat. J'imagine qu'il y a une solution existante mais je n'ai pas vraiment cherché et je me suis dit qu'il suffisait d'utiliser les 3 derniers bits d'un octet pour savoir combien de bits sont à supprimer.

"0": "00000100"
"1": "10000100",
"01": "01000011",
"010": "01000010",
"0110": "01100001",
"01110": "01110000",
"011110": "0111100000000111",
"0111110": "0111110000000110",
"01111110": "0111111000000101",
"011111110": "0111111100000100"

Il suffit de prendre les 3 derniers bits par exemple pour "0111110000000110" on a "110" ce qui donne 6 en décimal. On supprime donc les 3+6 derniers bits et on retrouve "0111110" qu'on voulait stocker à l'origine.
ˆ

6 : KrISS lldc

Tontof par tontof le 11/06/2023 à 13:06:00 - Favoriser (lu/non lu)

Nous voilà à la moitié des présentations des codes (06/11 coïncidence je ne crois pas) et si j'ai réussi à garder à peu près le rythme depuis mon retour en ligne, je sens qu'avec l'été qui arrive, cela va être plus compliqué et je ne pense pas que je pourrais garder ce rythme. Il me reste 1 ou 2 projets à peu près présentables mais il y a encore un peu de boulot pour les derniers. Donc, pas d'inquiétude si je suis plus discret les prochaines semaines !

Je vous ai déjà parlé avec KrISS tuto d'un petit cours sur la compression de données où je présente les algorithmes classiques de compression sans perte (Huffman, Huffman adaptatif, le codage arithmétique, rle, lz77, lz78, lzw).

Pour la partie pratique, j'ai eu du mal à trouver des algorithmes qui fonctionnaient bien et qui permettaient d'illustrer ce que je montrais en cours. J'ai utilisé un temps https://sourceforge.net/projects/compressions/ mais la compilation n'était pas toujours simple et j'ai donc cherché des versions python que j'ai regroupé dans KrIIS lldc. C'est vraiment à but pédagogique et je ne vous invite pas à utiliser ce code pour compresser de vrais fichiers ! Personnellement je ne le ferai pas.

J'ai uniformisé l'usage des algorithmes et ajouté un petit bout de code pour le codage binaire du résultat. Les ordinateurs stockent l'information avec des octets (8 bits) mais quand on a besoin de stocker un nombre de bits précis qui n'est pas multiple de 8 c'est un peu compliqué, il faut trouver une méthode pour arriver à relire le résultat. J'imagine qu'il y a une solution existante mais je n'ai pas vraiment cherché et je me suis dit qu'il suffisait d'utiliser les 3 derniers bits d'un octet pour savoir combien de bits sont à supprimer.

"0": "00000100"
"1": "10000100",
"01": "01000011",
"010": "01000010",
"0110": "01100001",
"01110": "01110000",
"011110": "0111100000000111",
"0111110": "0111110000000110",
"01111110": "0111111000000101",
"011111110": "0111111100000100"

Il suffit de prendre les 3 derniers bits par exemple pour "0111110000000110" on a "110" ce qui donne 6 en décimal. On supprime donc les 3+6 derniers bits et on retrouve "0111110" qu'on voulait stocker à l'origine.
ˆ

5 : KrISS json

Tontof par tontof le 26/05/2023 à 14:00:00 - Favoriser (lu/non lu)

Je vous ai dit que j'avais exploré la programmation fonctionnelle avec KrISS aaaa : middleware et il y a quelques années j'ai voulu testé cette même approche pour l'utilisation de schémas json https://json-schema.org

Le résultat final est plutôt chouette :

tests suite: nb tests nb files
draft3: 520/520 35/35
draft4: 735/735 38/38
draft6: 995/995 48/48
draft7: 1286/1286 57/57
draft2019-09: 1571/1651 59/68
draft2020-12: 1579/1677 58/68
draft-next: 1623/1724 58/68

C'était il y a quelques temps et j'ai dû faire 2/3 modifications pour valider les mises à jours des tests fournis par https://github.com/json-schema-org/JSON-Schema-Test-Suite pour continuer à valider les premiers drafts comme à l'époque où j'avais codé ça.

S'il n'y a qu'un seul fichier à regarder c'est la validation des URI/IRI à partir de la RFC
https://github.com/tontof/kriss_json/blob/main/schema/core/inc/rfc.php

Les validations proposées par PHP ne fonctionnaient pas pour tous les tests, j'ai donc dû lire un peu les RFC pour arriver à la validation de tous les tests. C'est à faire au moins une fois dans sa vie...

Pour valider un schéma json, il suffit d'inclure le fichier "json.php" et d'appeler la fonction "json_schema"

<?php 
include_once(__DIR__ '/schema/json.php');

$json 'https://json-schema.org/learn/examples/address.schema.json';
$address file_get_contents($json);

$data '
{
  "locality":"locality",
  "region":"region"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name",
  "post-office-box":"post-office-box"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name",
  "post-office-box":"post-office-box",
  "street-address":"street-address"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));
 
?>

Ce qui donne comme attendu :

bool(false)
bool(true)
bool(false)
bool(true)

En pratique, je vous invite à utiliser une approche plus classique https://json-schema.org/implementations.html#validator-php mais KrISS json reste intéressant de par son approche fonctionnelle
ˆ

5 : KrISS json

Tontof par tontof le 26/05/2023 à 14:00:00 - Favoriser (lu/non lu)

Je vous ai dit que j'avais exploré la programmation fonctionnelle avec KrISS aaaa : middleware et il y a quelques années j'ai voulu testé cette même approche pour l'utilisation de schémas json https://json-schema.org

Le résultat final est plutôt chouette :

tests suite: nb tests nb files
draft3: 520/520 35/35
draft4: 735/735 38/38
draft6: 995/995 48/48
draft7: 1286/1286 57/57
draft2019-09: 1571/1651 59/68
draft2020-12: 1579/1677 58/68
draft-next: 1623/1724 58/68

C'était il y a quelques temps et j'ai dû faire 2/3 modifications pour valider les mises à jours des tests fournis par https://github.com/json-schema-org/JSON-Schema-Test-Suite pour continuer à valider les premiers drafts comme à l'époque où j'avais codé ça.

S'il n'y a qu'un seul fichier à regarder c'est la validation des URI/IRI à partir de la RFC
https://github.com/tontof/kriss_json/blob/main/schema/core/inc/rfc.php

Les validations proposées par PHP ne fonctionnaient pas pour tous les tests, j'ai donc dû lire un peu les RFC pour arriver à la validation de tous les tests. C'est à faire au moins une fois dans sa vie...

Pour valider un schéma json, il suffit d'inclure le fichier "json.php" et d'appeler la fonction "json_schema"

<?php 
include_once(__DIR__ '/schema/json.php');

$json 'https://json-schema.org/learn/examples/address.schema.json';
$address file_get_contents($json);

$data '
{
  "locality":"locality",
  "region":"region"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name",
  "post-office-box":"post-office-box"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));

$data '
{
  "locality":"locality",
  "region":"region",
  "country-name":"country-name",
  "post-office-box":"post-office-box",
  "street-address":"street-address"
}
'
;
var_dump(json_schema(json_decode($address), json_decode($data)));
 
?>

Ce qui donne comme attendu :

bool(false)
bool(true)
bool(false)
bool(true)

En pratique, je vous invite à utiliser une approche plus classique https://json-schema.org/implementations.html#validator-php mais KrISS json reste intéressant de par son approche fonctionnelle
ˆ

4 : KrISS aaaa : middleware

Tontof par tontof le 19/05/2023 à 15:00:00 - Favoriser (lu/non lu)

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

Tontof par tontof le 19/05/2023 à 15:00:00 - Favoriser (lu/non lu)

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

Tontof par tontof le 05/05/2023 à 16:00:00 - Favoriser (lu/non lu)

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

Tontof par tontof le 05/05/2023 à 16:00:00 - Favoriser (lu/non lu)

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

Tontof par tontof le 28/04/2023 à 17:00:00 - Favoriser (lu/non lu)

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 !
ˆ

2 : KrISS cast

Tontof par tontof le 28/04/2023 à 17:00:00 - Favoriser (lu/non lu)

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 !
ˆ

1 : KrISS jams

Tontof par tontof le 21/04/2023 à 18:00:00 - Favoriser (lu/non lu)

Première présentation d'une mise à jour de KrISS jams

J'ai déjà présenté KrISS jams pour imprimer des étiquettes de confitures et Nono m'a rapidement demandé s'il était possible d'avoir une version pour les pots de miel.

Plutôt que de faire une autre version spécifique aux pots de miel, j'ai ajouté un petit éditeur qui permet de personnaliser les étiquettes puis d'exporter les infos dans l'URL. Ça me paraît assez complet et fonctionnel en l'état même s'il y aurait des améliorations à apporter. Par exemple pour les confitures, la couleur du texte dépend du parfum et ce n'est actuellement pas possible de le faire simplement avec l'éditeur qui impose la couleur du texte pour toutes les étiquettes.

Il n'y a pas vraiment de documentation, mais ça me paraît assez intuitif :
- Edit list gère la liste des variétés des étiquettes (pour les différents parfums)
- Edit template est utilisé pour éditer le nom d'une étiquette et ses éléments (texte, image)
- Edit labels permet la mise en page des étiquettes dans une page (pour l'impression)

Toujours avec les magnifiques images de Daria Ustiugova, voici un petit exemple de ce que ça pourrait donner pour des étiquettes de pots de miel
ˆ

1 : KrISS jams

Tontof par tontof le 21/04/2023 à 18:00:00 - Favoriser (lu/non lu)

Première présentation d'une mise à jour de KrISS jams

J'ai déjà présenté KrISS jams pour imprimer des étiquettes de confitures et Nono m'a rapidement demandé s'il était possible d'avoir une version pour les pots de miel.

Plutôt que de faire une autre version spécifique aux pots de miel, j'ai ajouté un petit éditeur qui permet de personnaliser les étiquettes puis d'exporter les infos dans l'URL. Ça me paraît assez complet et fonctionnel en l'état même s'il y aurait des améliorations à apporter. Par exemple pour les confitures, la couleur du texte dépend du parfum et ce n'est actuellement pas possible de le faire simplement avec l'éditeur qui impose la couleur du texte pour toutes les étiquettes.

Il n'y a pas vraiment de documentation, mais ça me paraît assez intuitif :
- Edit list gère la liste des variétés des étiquettes (pour les différents parfums)
- Edit template est utilisé pour éditer le nom d'une étiquette et ses éléments (texte, image)
- Edit labels permet la mise en page des étiquettes dans une page (pour l'impression)

Toujours avec les magnifiques images de Daria Ustiugova, voici un petit exemple de ce que ça pourrait donner pour des étiquettes de pots de miel
ˆ

11 ans

Tontof par tontof le 19/04/2023 à 19:00:00 - Favoriser (lu/non lu)

Même si officiellement cela fait 13 ans que Tontof existe, cela ne fait que 11 ans que tontof.net est en ligne.<br /> <br /> Après cette petite pause hivernale pour synchroniser administrativement nom de domaine et hébergement, j'ai prévu un retour avec 11 nouveautés/mises à jour que je vais essayer de présenter régulièrement, toutes les 1 ou 2 semaines.<br /> <br /> Première présentation d'une mise à jour vendredi 21 avril !
ˆ

11 ans

Tontof par tontof le 19/04/2023 à 19:00:00 - Favoriser (lu/non lu)

Même si officiellement cela fait 13 ans que Tontof existe, cela ne fait que 11 ans que tontof.net est en ligne.<br /> <br /> Après cette petite pause hivernale pour synchroniser administrativement nom de domaine et hébergement, j'ai prévu un retour avec 11 nouveautés/mises à jour que je vais essayer de présenter régulièrement, toutes les 1 ou 2 semaines.<br /> <br /> Première présentation d'une mise à jour vendredi 21 avril !
ˆ

Sobriété choisie

Tontof par tontof le 04/11/2022 à 11:04:00 - Favoriser (lu/non lu)

"Votre offre d'hébergement o2switch va expirer dans 6 jours."<br /> <br /> Tontof va disparaître... si ça peut vous rassurer, normalement, ça ne sera que pendant 5 mois et mon retour est prévu au printemps prochain à la date anniversaire du 18 avril. Cet hiver est soit disant sous le signe de la sobriété alors comme je pense déjà vivre sobrement au quotidien, je me suis dit que l'occasion était bien tombée pour décaler le prélèvement de mon hébergement à mi-avril comme celui de mes noms de domaine. Malheureusement, chez o2switch il n'est pas possible de faire un prélèvement de 5 ou 17 mois et la solution la plus simple pour que je synchronise les paiements de mon hébergement avec mes noms de domaines est donc de ne pas renouveler cet hébergement et d'attendre mi-avril pour en reprendre un nouveau. Pas besoin de chercher à comprendre, je n'aime pas les prélèvements automatiques et je trouve que c'est plus simple de payer tout à la même période (hébergement et noms de domaine).<br /> <br /> Je vis sobrement mais je ne le subis pas et c'est bien là toute la différence. Il faut déjà se dire que si ce ne sont pas des convictions intimes, la sobriété ne peut pas être envisagées facilement et je sais que tout le monde n'a pas la chance de pouvoir faire ce choix. Ce qui apparaît pour des contraintes ou des choses négatives pour certaines personnes sont pour moi le contraire. Combien de fois j'ai pu entendre, "mais pourquoi tu n'as pas un vrai téléphone ?" comprendre smartphone. Tout simplement parce que je n'en ai pas besoin, j'ai un accès à un ordinateur pratiquement quand je veux, qu'est-ce que je ferai d'un smartphone alors que mon téléphone fait déjà ce que je lui demande principalement, être joignable et envoyer/recevoir des messages textuels. Alors oui un smartphone peut être utile en dehors du quotidien, en week-end, en vacances, mais dans ce cas je ne suis pas tout seul et j'ai accès à un Fairphone qui nous suffit largement. Le téléphone est l'exemple le plus récurrent mais au quotidien je fais beaucoup de choix réfléchis qui interrogent et font réagir. C'est toujours intéressant de voir comment la société peut formater des habitudes sans s'en rendre compte et quand on en discute on se rend compte que ce ne sont pas toujours des choix personnels.<br /> <br /> En attendant le retour en ligne, j'essaye de faire le point sur tous mes projets en cours parce que je me rends compte que j'ai beaucoup de code à partager mais comme je n'aime pas trop partager des choses non abouties je me retrouve à ne rien publier et c'est dommage parce qu'il y a des choses bien sympathiques dans le tas.<br /> <br /> Bonne fin d'année 2022 et on se retrouve normalement le 18 avril 2023 !<br />
ˆ

Sobriété choisie

Tontof par tontof le 04/11/2022 à 11:04:00 - Favoriser (lu/non lu)

"Votre offre d'hébergement o2switch va expirer dans 6 jours."<br /> <br /> Tontof va disparaître... si ça peut vous rassurer, normalement, ça ne sera que pendant 5 mois et mon retour est prévu au printemps prochain à la date anniversaire du 18 avril. Cet hiver est soit disant sous le signe de la sobriété alors comme je pense déjà vivre sobrement au quotidien, je me suis dit que l'occasion était bien tombée pour décaler le prélèvement de mon hébergement à mi-avril comme celui de mes noms de domaine. Malheureusement, chez o2switch il n'est pas possible de faire un prélèvement de 5 ou 17 mois et la solution la plus simple pour que je synchronise les paiements de mon hébergement avec mes noms de domaines est donc de ne pas renouveler cet hébergement et d'attendre mi-avril pour en reprendre un nouveau. Pas besoin de chercher à comprendre, je n'aime pas les prélèvements automatiques et je trouve que c'est plus simple de payer tout à la même période (hébergement et noms de domaine).<br /> <br /> Je vis sobrement mais je ne le subis pas et c'est bien là toute la différence. Il faut déjà se dire que si ce ne sont pas des convictions intimes, la sobriété ne peut pas être envisagées facilement et je sais que tout le monde n'a pas la chance de pouvoir faire ce choix. Ce qui apparaît pour des contraintes ou des choses négatives pour certaines personnes sont pour moi le contraire. Combien de fois j'ai pu entendre, "mais pourquoi tu n'as pas un vrai téléphone ?" comprendre smartphone. Tout simplement parce que je n'en ai pas besoin, j'ai un accès à un ordinateur pratiquement quand je veux, qu'est-ce que je ferai d'un smartphone alors que mon téléphone fait déjà ce que je lui demande principalement, être joignable et envoyer/recevoir des messages textuels. Alors oui un smartphone peut-être utile en dehors du quotidien, en week-end, en vacances, mais dans ce cas je ne suis pas tout seul et j'ai accès à un Fairphone qui nous suffit largement. Le téléphone est l'exemple le plus récurrent mais au quotidien je fais beaucoup de choix réfléchis qui interrogent et font réagir. C'est toujours intéressant de voir comment la société peut formater des habitudes sans s'en rendre compte et quand on en discute on se rend compte que ce ne sont pas toujours des choix personnels.<br /> <br /> En attendant le retour en ligne, j'essaye de faire le point sur tous mes projets en cours parce que je me rends compte que j'ai beaucoup de code à partager mais comme je n'aime pas trop partager des choses non abouties je me retrouve à ne rien publier et c'est dommage parce qu'il y a des choses bien sympathiques dans le tas.<br /> <br /> Bonne fin d'année 2022 et on se retrouve normalement le 18 avril 2023 !<br />
ˆ

Sobriété choisie

Tontof par tontof le 04/11/2022 à 11:04:00 - Favoriser (lu/non lu)

"Votre offre d'hébergement o2switch va expirer dans 6 jours."<br /> <br /> Tontof va disparaître... si ça peut vous rassurer, normalement, ça ne sera que pendant 5 mois et mon retour est prévu au printemps prochain à la date anniversaire du 18 avril. Cet hiver est soit disant sous le signe de la sobriété alors comme je pense déjà vivre sobrement au quotidien, je me suis dit que l'occasion était bien tombée pour décaler le prélèvement de mon hébergement à mi-avril comme celui de mes noms de domaine. Malheureusement, chez o2switch il n'est pas possible de faire un prélèvement de 5 ou 17 mois et la solution la plus simple pour que je synchronise les paiements de mon hébergement avec mes noms de domaines est donc de ne pas renouveler cet hébergement et d'attendre mi-avril pour en reprendre un nouveau. Pas besoin de chercher à comprendre, je n'aime pas les prélèvements automatiques et je trouve que c'est plus simple de payer tout à la même période (hébergement et noms de domaine).<br /> <br /> Je vis sobrement mais je ne le subis pas et c'est bien là toute la différence. Il faut déjà se dire que si ce ne sont pas des convictions intimes, la sobriété ne peut pas être envisagées facilement et je sais que tout le monde n'a pas la chance de pouvoir faire ce choix. Ce qui apparaît pour des contraintes ou des choses négatives pour certaines personnes sont pour moi le contraire. Combien de fois j'ai pu entendre, "mais pourquoi tu n'as pas un vrai téléphone ?" comprendre smartphone. Tout simplement parce que je n'en ai pas besoin, j'ai un accès à un ordinateur pratiquement quand je veux, qu'est-ce que je ferai d'un smartphone alors que mon téléphone fait déjà ce que je lui demande principalement, être joignable et envoyer/recevoir des messages textuels. Alors oui un smartphone peut être utile en dehors du quotidien, en week-end, en vacances, mais dans ce cas je ne suis pas tout seul et j'ai accès à un Fairphone qui nous suffit largement. Le téléphone est l'exemple le plus récurrent mais au quotidien je fais beaucoup de choix réfléchis qui interrogent et font réagir. C'est toujours intéressant de voir comment la société peut formater des habitudes sans s'en rendre compte et quand on en discute on se rend compte que ce ne sont pas toujours des choix personnels.<br /> <br /> En attendant le retour en ligne, j'essaye de faire le point sur tous mes projets en cours parce que je me rends compte que j'ai beaucoup de code à partager mais comme je n'aime pas trop partager des choses non abouties je me retrouve à ne rien publier et c'est dommage parce qu'il y a des choses bien sympathiques dans le tas.<br /> <br /> Bonne fin d'année 2022 et on se retrouve normalement le 18 avril 2023 !<br />
ˆ

Lille / Saint-André-lez-Lille / Lyon et compression de données

Tontof par tontof le 15/04/2022 à 10:15:00 - Favoriser (lu/non lu)

Je pensais avoir plus de temps pour partager du code mais force est de constater que ça va faire presque 1 an que je n'ai rien posté. J'avais un service à demander aux éventuelles personnes qui se balade entre Lille et Lyon mais comme je ne voulais pas faire un article juste pour ça, j'en ai profité pour mettre à jour KrISS tuto

Lille / Saint-André-lez-Lille / Lyon


Dans l'idéal je suis à la recherche d'une personne qui voyage entre Lille et Lyon plus ou moins régulièrement et qui pourrait me récupérer 3 petits livres sur Saint-André-lez-Lille pour que je les récupère sur Lyon. Comme c'est un idéal, je me satisferais aussi d'une personne qui habite simplement vers Lille et qui pourrait me récupérer ces livres et me les garder plus ou moins longtemps et que je viendrai récupérer sur Lille pendant une sortie vélo qui n'est pas encore prévue mais que j'organiserai pour l'occasion (attention plus ou moins longtemps ça peut vouloir dire plus d'un an).
Pour préciser, je ne souhaite pas vraiment faire un envoi Mondial Relay/Autre car si j'aime acheté d'occasions, je n'aime pas pensé que ça s'accompagne toujours d'un envoi spécifique. J'organise donc régulièrement des vacances pour récupérer des objets que des gens m'ont gentiment gardé une plus ou moins longue période, record avec Émilie en Suisse qui entre temps à même déménagé et m'a gardé un jeu plus d'un an ! Ça s'est donc terminé avec un voyage en train jusqu'à Genève, un tour du lac Léman à vélo et un petit retour écourté par la météo sur la Via Rhôna ! À la sortie ça fait cher le jeu mais il faut voir ça comme un tout et en fait c'est surtout des vacances chouettes qui comme de par hasard se trouve sur la route d'un jeu tout aussi chouette.

Si j'abusais je dirai que je suis aussi intéressé par toute personne qui pourrait m'aider dans cette démarche qui vise à réduire mon impact en récupérerant et conservant des choses à l'occasion un peu partout en France. Si en plus vous vous rendez régulièrement ou occasionnellement sur Lyon c'est encore mieux. J'ai déjà plusieurs connaissances avec qui je m'arrange de temps en temps mais au cas où, je suis preneur de ce genre de bons plans :-)

Pour les personnes concernées, un petit mail sur keep à tontof.net en précisant votre possibilité de zone de récupération et vos éventuelles possibilités de remise sur Lyon. En fait j'indique Lyon mais je ne suis même pas de Lyon mais j'ai la possibilité de m'y rendre régulièrement. Sinon ça peut-être aussi autour de Saint-Étienne. En fait entre Saint-Étienne et Lyon je pourrais toujours me débrouiller pour qu'on se retrouve.

Merci d'avance !

La compression de données


Il s'agit d'une petite introduction à la compression de données sans perte. En plus des autres supports sur HTML/CSS/JS/PHP, j'ai dû ajouter la représentation d'arbres binaires grâce à RaphaelJs et les schémas avec ditaa. Pour le contenu, il est question d'entropie, de Huffman, Huffman adapatif, codage arithmétique, Run Length Coding, LZ77, LZ78, LZW. Pour utiliser concrètement les algos j'utilisais jusqu'à présent le code dispo sur https://sourceforge.net/projects/compressions/ mais cela ne me convenait pas vraiment. Cette année j'ai donc tenté une uniformisation avec du code python. J'essaye de vous partager tout ça avant l'été !

Bonne lecture !
ˆ

KrISS jams pour générer des étiquettes pour vos pots de confitures

Tontof par tontof le 22/06/2021 à 13:17:00 - Favoriser (lu/non lu)

Pots d'échappement



J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux personnes qui roulent en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.

Pots de confitures : KrISS jams



Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.

Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire KrISS jams un générateur d'étiquettes pour les pots de confitures.

Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. Techniquement c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de Daria Ustiugova parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.

Bel été et bonnes confitures 2021 à tout le monde.
ˆ

KrISS jams pour générer des étiquettes pour vos pots de confitures

Tontof par tontof le 22/06/2021 à 13:17:00 - Favoriser (lu/non lu)

Pots d'échappement



J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux routiers en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.

Pots de confitures : KrISS jams



Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.

Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire KrISS jams un générateur d'étiquettes pour les pots de confitures.

Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. Techniquement c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de Daria Ustiugova parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.

Bel été et bonnes confitures 2021 à tout le monde.
ˆ

KrISS jams pour générer des étiquettes pour vos pots de confitures

Tontof par tontof le 22/06/2021 à 13:17:00 - Favoriser (lu/non lu)

Pots d'échappement



J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux personnes qui roulent en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.

Pots de confitures : KrISS jams



Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.

Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire KrISS jams un générateur d'étiquettes pour les pots de confitures.

Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. Techniquement c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de Daria Ustiugova parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.

Bel été et bonnes confitures 2021 à tout le monde.
ˆ

Quelques nouvelles et une mise à jour de KrISS tuto

Tontof par tontof le 19/02/2021 à 19:02:00 - Favoriser (lu/non lu)

Plus d'1 an et demi sans article, que le temps passe vite.

Je pourrais résumé 2020 comme l'année de Merdouille. Cette simple phrase n'est pas anodine et correspond à quelques choses de très personnel, très loin de tout ce que se rappelleront la plupart des gens.

Parce qu'en ce moment des personnes ont besoin d'avoir des informations positives, je ne vais vous parler que de choses chouettes.

Accès à distance avec la banque à l'écureuil


Je ne parlerai donc pas de ma banque à l'écureuil qui depuis la mise en place de l'authentification par SMS ne me donne plus aucun accès sur internet et ne me propose aucune solution alternative. Même leur service technique n'a pas su m'expliquer pourquoi, la personne par téléphone m'a simplement dit que ça arrivait parfois et qu'il fallait demander à mon agence de me mettre sur liste blanche. Sauf que c'est sur décision du directeur d'agence et que ce dernier n'a pas voulu. En cherchant de mon côté je me suis aperçu que c'était lié à mon téléphone, mon nokia 1110 ne reçoit pas le SMS d'authentification, mais il reçoit bien celui du mot de passe de réinitialisation. J'ai bien sûr dit à ma banque que je n'allais pas changer de téléphone et que je voulais donc fermer mes comptes ce à quoi on m'a répondu de fournir mon relevé d'impôts... C'est quoi le rapport ??? Je n'avais déjà plus de chèque/carte bancaire sur ce compte, mais maintenant je me retrouve donc avec un compte vide chez l'écureuil après avoir effectué les virements nécessaires.

Linux Mint 20.1 et libinput


Je ne vous parlerai pas non plus de mes récents problèmes avec Linux Mint. C'est vrai que ça faisait longtemps que tout se passait bien sauf qu'à ma dernière mise à jour sur Linux Mint 20.1, écran noir au redémarrage bloqué sur grub. La solution était assez simple à trouver avec une live USB :
- sudo grub-install /dev/sda
- sudo update-grub
mais c'est assez déstabilisant parce que ça ne m'était jamais arrivé. Je n'ai pas cherché à comprendre mais peut-être que c'était lié à mon partitionnement sur mon disque qui était déjà bien découpé. Je n'abandonnerai pas pour autant tout ça pour passer à Windows 10 comme certaines personnes parce qu'au fond je sais que j'aurais encore plus de problèmes avec Windows. Je suis tout à fait d'accord avec Sebsauvage et j'ai beaucoup moins de demandes/problèmes depuis que j'ai passé mes proches à Linux que quand ces personnes étaient sous Windows (on parle de personnes qui ont un usage limité à la bureautique/internet avec les ordinateurs). Avec Linux Mint 20.1 j'ai également de temps en temps un problème avec mon touchpad à cause de la nouvelle bibliothèque libinput mais c'était annoncé : https://linuxmint.com/rel_ulyssa_mate.php et la solution proposée est très acceptable : apt install xserver-xorg-input-synaptics
Par contre je vais quand même faire un vrai reproche que je crois encore lié à libinput mais avant de l'imposer par défaut il faudrait s'assurer que ça fonctionne bien. Si vous utilisez des manettes et qu'il faut les calibrer vous ne pourrez pas le faire simplement. Avant il y avait jstest-gtk et il n'y a aucun équivalent avec la nouvelle version evtest-qt. Heureusement j'ai trouvé une solution grâce à python qui permet de faire un man in the middle avec la manette ! Mais il faut bien avouer que ce n'est pas à la portée de tout le monde.

MakeMKV


Et entre nous, je ne vais pas non plus vous embêter avec mes problèmes pour lire des DVD officiels d'une ancienne série. Aucun problème avec les 3 premières saisons et le premier DVD de la 4e et dernière saison (parce qu'il ne faut pas se le cacher mais quand une série est considérée terminée et que parce qu'il y a sûrement de l'argent à se faire on refait une saison des années plus tard, ça ne donne jamais des merveilles, je considère donc la saison 4 comme la dernière) mais à partir du 2e DVD de la saison 4, ce dernier se montait comme périphérique TSITFAT. La solution n'a pas été simple a trouvé mais maintenant tout fonctionne grâce à MakeMKV. Des personnes se demandent encore pourquoi des gens piratent des séries, mais même avec les DVD dans les mains j'ai dû regardé des épisodes en streaming le temps que je trouve comment corriger ce problème de TSITFAT... Et encore sur un ordi, merci VLC, on peut passer les menus parce que les annonces sur les DVD officiels pour dire que le piratage c'est mal et que sur un lecteur DVD de salon on ne peut pas passer, c'est vraiment mais alors vraiment la meilleure solution pour favoriser le piratage...

Mise à jour de KrISS tuto


Pour parler vraiment de choses chouettes, je suis resté dans le silence alors que je n'aurais jamais été autant prolifique cette année 2020. J'ai mis en production un projet pro qui aura duré plus d'un an et demi, ce qui explique aussi mon silence et qui maintenant est en place depuis fin octobre sans trop de problème, en tout cas pas forcément de ma faute. Les certificats Let's Encrypt ont changé et n'étaient plus compatibles avec les anciennes version d'Android, heureusement c'est de nouveau fonctionnel : https://letsencrypt.org/2020/12/21/extending-android-compatibility.html

J'ai aussi dû modifier mes cours comme jamais pour qu'ils puissent être adaptés aux cours à distance (avec le recul que de temps perdu quand on voit le résultat). J'ai dû mettre en place de nouvelles modalités pour évaluer mes matières (que de temps gagné pour la mise en place des futurs examens). Il était évident que l'évaluation à distance allait conduire à une triche massive de la part des étudiant⋅es. Le nombre de collègues qui ont fait comme si c'était une évaluation normale ont eu la surprise de voir des copies semblables/identiques, sérieusement ?

De mon côté j'ai mis en place des générateurs d'énoncés pour évaluer mes matières avec des thèmes différents (merci ÉS pour toutes ces propositions) et des questions différentes pour chaque copie et même avec ça, j'ai eu le droit à des réponses qui parlaient d'abeilles alors que la copie parlait de chèvres...
Quand j'aurais un peu de temps j'essayerai de partager tout ça parce que je pense que ça pourrait être utile. C'est autre chose que la génération de QCM avec LaTeX et il est sûr que ça prend plus de temps pour faire la correction, mais au moins on sait ce qu'on évalue. Petit aperçu pour l'évaluation de requêtes algébriques ou SQL :
- « Donner le nombre de membres des troupes qui se sont produites dans des festivités qui se sont déroulées dans des villes dont l'altitude est 75 »
- « Donner le genre musical du groupe qui a l'année de formation la plus grande (ou les genres musicaux des groupes si plusieurs groupes ont la même année de formation) »
Tout ceci est généré automatiquement et je suis assez fier du résultat mais beaucoup moins du code. Coder vite et bien ce n'est pas toujours simple.

J'avais prévu depuis longtemps de ne pas intervenir en cours fin 2020 et c'est plutôt bien tombé parce que l'organisation de la rentrée a été plutôt compliquée. C'est guère mieux pour ce 2e semestre, mais il y a un peu plus d'expérience et il semblerait acquis (avant de nouvelles annonces) que les examens à distance c'est terminé. J'en ai quand même profité pour mettre à jour mes cours HTML/CSS/JS/PHP en supprimant jquery, en remplaçant highlight.js par CodeMirror et en ajoutant Split Grid (un petit plus que j'ai ajouté pour changer la largeur de colonnes de l'éditeur quand j'en ai besoin).

Un petit aperçu avec une belle coloration syntaxique dans les slides et dans l'éditeur grâce à CodeMirror. L'éditeur qui s'adapte en fonction du code si c'est du HTML (2 colonnes) ou du PHP (3 colonnes).
https://tontof.net/tuto/html/#/slide-hello-world
https://tontof.net/tuto/php/#/slide-hello-world

Je pense être quelqu'un de très exigeant et je n'ai pratiquement plus rien à redire sur ces supports, je suis presque entièrement satisfait par mon approche pour faire ces cours. Je ne parle pas du fond mais bien de la forme. Je remercie vraiment GNU Emacs, Org Mode, reveal.js, org-reveal, PHP.js et MathJax.

À dans un an et demi ? Je devrais avoir plus de temps pour partager des choses, je pense donc que ça sera avant mais je ne préfère pas m'avancer, on ne sait jamais de quoi sera fait l'avenir.
ˆ

Quelques nouvelles et une mise à jour de KrISS tuto

Tontof par tontof le 19/02/2021 à 19:02:00 - Favoriser (lu/non lu)

Plus d'1 an et demi sans article, que le temps passe vite.

Je pourrais résumé 2020 comme l'année de Merdouille. Cette simple phrase n'est pas anodine et correspond à quelques choses de très personnel, très loin de tout ce que se rappelleront la plupart des gens.

Parce qu'en ce moment des personnes ont besoin d'avoir des informations positives, je ne vais vous parler que de choses chouettes.

Accès à distance avec la banque à l'écureuil


Je ne parlerai donc pas de ma banque à l'écureuil qui depuis la mise en place de l'authentification par SMS ne me donne plus aucun accès sur internet et ne me propose aucune solution alternative. Même leur service technique n'a pas su m'expliquer pourquoi, la personne par téléphone m'a simplement dit que ça arrivait parfois et qu'il fallait demander à mon agence de me mettre sur liste blanche. Sauf que c'est sur décision du directeur d'agence et que ce dernier n'a pas voulu. En cherchant de mon côté je me suis aperçu que c'était lié à mon téléphone, mon nokia 1110 ne reçoit pas le SMS d'authentification, mais il reçoit bien celui du mot de passe de réinitialisation. J'ai bien sûr dit à ma banque que je n'allais pas changer de téléphone et que je voulais donc fermer mes comptes ce à quoi on m'a répondu de fournir mon relevé d'impôts... C'est quoi le rapport ??? Je n'avais déjà plus de chèque/carte bancaire sur ce compte, mais maintenant je me retrouve donc avec un compte vide chez l'écureuil après avoir effectué les virements nécessaires.

Linux Mint 20.1 et libinput


Je ne vous parlerai pas non plus de mes récents problèmes avec Linux Mint. C'est vrai que ça faisait longtemps que tout se passait bien sauf qu'à ma dernière mise à jour sur Linux Mint 20.1, écran noir au redémarrage bloqué sur grub. La solution était assez simple à trouver avec une live USB :
- sudo grub-install /dev/sda
- sudo update-grub
mais c'est assez déstabilisant parce que ça ne m'était jamais arrivé. Je n'ai pas cherché à comprendre mais peut-être que c'était lié à mon partitionnement sur mon disque qui était déjà bien découpé. Je n'abandonnerai pas pour autant tout ça pour passer à Windows 10 comme certaines personnes parce qu'au fond je sais que j'aurais encore plus de problèmes avec Windows. Je suis tout à fait d'accord avec Sebsauvage et j'ai beaucoup moins de demandes/problèmes depuis que j'ai passé mes proches à Linux que quand ces personnes étaient sous Windows (on parle de personnes qui ont un usage limité à la bureautique/internet avec les ordinateurs). Avec Linux Mint 20.1 j'ai également de temps en temps un problème avec mon touchpad à cause de la nouvelle bibliothèque libinput mais c'était annoncé : https://linuxmint.com/rel_ulyssa_mate.php et la solution proposée est très acceptable : apt install xserver-xorg-input-synaptics
Par contre je vais quand même faire un vrai reproche que je crois encore lié à libinput mais avant de l'imposer par défaut il faudrait s'assurer que ça fonctionne bien. Si vous utilisez des manettes et qu'il faut les calibrer vous ne pourrez pas le faire simplement. Avant il y avait jstest-gtk et il n'y a aucun équivalent avec la nouvelle version evtest-qt. Heureusement j'ai trouvé une solution grâce à python qui permet de faire un man in the middle avec la manette ! Mais il faut bien avouer que ce n'est pas à la portée de tout le monde.

MakeMKV


Et entre nous, je ne vais pas non plus vous embêter avec mes problèmes pour lire des DVD officiels d'une ancienne série. Aucun problème avec les 3 premières saisons et le premier DVD de la 4e et dernière saison (parce qu'il ne faut pas se le cacher mais quand une série est considérée terminée et que parce qu'il y a sûrement de l'argent à se faire on refait une saison des années plus tard, ça ne donne jamais des merveilles, je considère donc la saison 4 comme la dernière) mais à partir du 2e DVD de la saison 4, ce dernier se montait comme périphérique TSITFAT. La solution n'a pas été simple a trouvé mais maintenant tout fonctionne grâce à MakeMKV. Des personnes se demandent encore pourquoi des gens piratent des séries, mais même avec les DVD dans les mains j'ai dû regardé des épisodes en streaming le temps que je trouve comment corriger ce problème de TSITFAT... Et encore sur un ordi, merci VLC, on peut passer les menus parce que les annonces sur les DVD officiels pour dire que le piratage c'est mal et que sur un lecteur DVD de salon on ne peut pas passer, c'est vraiment mais alors vraiment la meilleure solution pour favoriser le piratage...

Mise à jour de KrISS tuto


Pour parler vraiment de choses chouettes, je suis resté dans le silence alors que je n'aurais jamais été autant prolifique cette année 2020. J'ai mis en production un projet pro qui aura duré plus d'un an et demi, ce qui explique aussi mon silence et qui maintenant est en place depuis fin octobre sans trop de problème, en tout cas pas forcément de ma faute. Les certificats Let's Encrypt ont changé et n'étaient plus compatibles avec les anciennes version d'Android, heureusement c'est de nouveau fonctionnel : https://letsencrypt.org/2020/12/21/extending-android-compatibility.html

J'ai aussi dû modifier mes cours comme jamais pour qu'ils puissent être adaptés aux cours à distance (avec le recul que de temps perdu quand on voit le résultat). J'ai dû mettre en place de nouvelles modalités pour évaluer mes matières (que de temps gagné pour la mise en place des futurs examens). Il était évident que l'évaluation à distance allait conduire à une triche massive de la part des étudiant⋅es. Le nombre de collègues qui ont fait comme si c'était une évaluation normale ont eu la surprise de voir des copies semblables/identiques, sérieusement ?

De mon côté j'ai mis en place des générateurs d'énoncés pour évaluer mes matières avec des thèmes différents (merci ÉS pour toutes ces propositions) et des questions différentes pour chaque copie et même avec ça, j'ai eu le droit à des réponses qui parlaient d'abeilles alors que la copie parlait de chèvres...
Quand j'aurais un peu de temps j'essayerai de partager tout ça parce que je pense que ça pourrait être utile. C'est autre chose que la génération de QCM avec LaTeX et il est sûr que ça prend plus de temps pour faire la correction, mais au moins on sait ce qu'on évalue. Petit aperçu pour l'évaluation de requêtes algébriques ou SQL :
- « Donner le nombre de membres des troupes qui se sont produites dans des festivités qui se sont déroulées dans des villes dont l'altitude est 75 »
- « Donner le genre musical du groupe qui a l'année de formation la plus grande (ou les genres musicaux des groupes si plusieurs groupes ont la même année de formation) »
Tout ceci est généré automatiquement et je suis assez fier du résultat mais beaucoup moins du code. Coder vite et bien ce n'est pas toujours simple.

J'avais prévu depuis longtemps de ne pas intervenir en cours fin 2020 et c'est plutôt bien tombé parce que l'organisation de la rentrée a été plutôt compliquée. C'est guère mieux pour ce 2e semestre, mais il y a un peu plus d'expérience et il semblerait acquis (avant de nouvelles annonces) que les examens à distance c'est terminé. J'en ai quand même profité pour mettre à jour mes cours HTML/CSS/JS/PHP en supprimant jquery, en remplaçant highlight.js par CodeMirror et en ajoutant Split Grid (un petit plus que j'ai ajouté pour changer la largeur de colonnes de l'éditeur quand j'en ai besoin).

Un petit aperçu avec une belle coloration syntaxique dans les slides et dans l'éditeur grâce à CodeMirror. L'éditeur qui s'adapte en fonction du code si c'est du HTML (2 colonnes) ou du PHP (3 colonnes).
https://tontof.net/tuto/html/#/slide-hello-world
https://tontof.net/tuto/php/#/slide-hello-world

Je pense être quelqu'un de très exigeant et je n'ai pratiquement plus rien à redire sur ces supports, je suis presque entièrement satisfait par mon approche pour faire ces cours. Je ne parle pas du fond mais bien de la forme. Je remercie vraiment GNU Emacs, Org Mode, reveal.js, org-reveal, PHP.js et MathJax.

À dans un an et demi ? Je devrais avoir plus de temps pour partager des choses, je pense donc que ça sera avant mais je ne préfère pas m'avancer, on ne sait jamais de quoi sera fait l'avenir.
ˆ

Quelques nouvelles et une mise à jour de KrISS tuto

Tontof par tontof le 19/02/2021 à 19:02:00 - Favoriser (lu/non lu)

Plus d'1 an et demi sans article, que le temps passe vite.

Je pourrais résumé 2020 comme l'année de Merdouille. Cette simple phrase n'est pas anodine et correspond à quelques choses de très personnel, très loin de tout ce que se rappelleront la plupart des gens.

Parce qu'en ce moment des personnes ont besoin d'avoir des informations positives, je ne vais vous parler que de choses chouettes.

Accès à distance avec la banque à l'écureuil


Je ne parlerai donc pas de ma banque à l'écureuil qui depuis la mise en place de l'authentification par SMS ne me donne plus aucun accès sur internet et ne me propose aucune solution alternative. Même leur service technique n'a pas su m'expliquer pourquoi, la personne par téléphone m'a simplement dit que ça arrivait parfois et qu'il fallait demander à mon agence de me mettre sur liste blanche. Sauf que c'est sur décision du directeur d'agence et que ce dernier n'a pas voulu. En cherchant de mon côté je me suis aperçu que c'était lié à mon téléphone, mon nokia 1110 ne reçoit pas le SMS d'authentification, mais il reçoit bien celui du mot de passe de réinitialisation. J'ai bien sûr dit à ma banque que je n'allais pas changer de téléphone et que je voulais donc fermer mes comptes ce à quoi on m'a répondu de fournir mon relevé d'impôts... C'est quoi le rapport ??? Je n'avais déjà plus de chèque/carte bancaire sur ce compte, mais maintenant je me retrouve donc avec un compte vide chez l'écureuil après avoir effectué les virements nécessaires.

Linux Mint 20.1 et libinput


Je ne vous parlerai pas non plus de mes récents problèmes avec Linux Mint. C'est vrai que ça faisait longtemps que tout se passait bien sauf qu'à ma dernière mise à jour sur Linux Mint 20.1, écran noir au redémarrage bloqué sur grub. La solution était assez simple à trouver avec une live USB :
- sudo grub-install /dev/sda
- sudo update-grub
mais c'est assez déstabilisant parce que ça ne m'était jamais arrivé. Je n'ai pas cherché à comprendre mais peut-être que c'était lié à mon partitionnement sur mon disque qui était déjà bien découpé. Je n'abandonnerai pas pour autant tout ça pour passer à Windows 10 comme certaines personnes parce qu'au fond je sais que j'aurais encore plus de problèmes avec Windows. Je suis tout à fait d'accord avec Sebsauvage et j'ai beaucoup moins de demandes/problèmes depuis que j'ai passé mes proches à Linux que quand ces personnes étaient sous Windows (on parle de personnes qui ont un usage limité à la bureautique/internet avec les ordinateurs). Avec Linux Mint 20.1 j'ai également de temps en temps un problème avec mon touchpad à cause de la nouvelle bibliothèque libinput mais c'était annoncé : https://linuxmint.com/rel_ulyssa_mate.php et la solution proposée est très acceptable : apt install xserver-xorg-input-synaptics
Par contre je vais quand même faire un vrai reproche que je crois encore lié à libinput mais avant de l'imposer par défaut il faudrait s'assurer que ça fonctionne bien. Si vous utilisez des manettes et qu'il faut les calibrer vous ne pourrez pas le faire simplement. Avant il y avait jstest-gtk et il n'y a aucun équivalent avec la nouvelle version evtest-qt. Heureusement j'ai trouvé une solution grâce à python qui permet de faire un man in the middle avec la manette ! Mais il faut bien avouer que ce n'est pas à la portée de tout le monde.

MakeMKV


Et entre nous, je ne vais pas non plus vous embêter avec mes problèmes pour lire des DVD officiels d'une ancienne série. Aucun problème avec les 3 premières saisons et le premier DVD de la 4e et dernière saison (parce qu'il ne faut pas se le cacher mais quand une série est considérée terminée et que parce qu'il y a sûrement de l'argent à se faire on refait une saison des années plus tard, ça ne donne jamais des merveilles, je considère donc la saison 4 comme la dernière) mais à partir du 2e DVD de la saison 4, ce dernier se montait comme périphérique TSITFAT. La solution n'a pas été simple a trouvé mais maintenant tout fonctionne grâce à MakeMKV. Des personnes se demandent encore pourquoi des gens piratent des séries, mais même avec les DVD dans les mains j'ai dû regardé des épisodes en streaming le temps que je trouve comment corriger ce problème de TSITFAT... Et encore sur un ordi, merci VLC, on peut passer les menus parce que les annonces sur les DVD officiels pour dire que le piratage c'est mal et que sur un lecteur DVD de salon on ne peut pas passer, c'est vraiment mais alors vraiment la meilleure solution pour favoriser le piratage...

Mise à jour de KrISS tuto


Pour parler vraiment de choses chouettes, je suis resté dans le silence alors que je n'aurais jamais été autant prolifique cette année 2020. J'ai mis en production un projet pro qui aura duré plus d'un an et demi, ce qui explique aussi mon silence et qui maintenant est en place depuis fin octobre sans trop de problème, en tout cas pas forcément de ma faute. Les certificats Let's Encrypt ont changé et n'étaient plus compatibles avec les anciennes version d'Android, heureusement c'est de nouveau fonctionnel : https://letsencrypt.org/2020/12/21/extending-android-compatibility.html

J'ai aussi dû modifier mes cours comme jamais pour qu'ils puissent être adaptés aux cours à distance (avec le recul que de temps perdu quand on voit le résultat). J'ai dû mettre en place de nouvelles modalités pour évaluer mes matières (que de temps gagné pour la mise en place des futurs examens). Il était évident que l'évaluation à distance allait conduire à une triche massive de la part des étudiant⋅es. Le nombre de collègues qui ont fait comme si c'était une évaluation normale ont eu la surprise de voir des copies semblables/identiques, sérieusement ?

De mon côté j'ai mis en place des générateurs d'énoncés pour évaluer mes matières avec des thèmes différents (merci ÉS pour toutes ces propositions) et des questions différentes pour chaque copie et même avec ça, j'ai eu le droit à des réponses qui parlaient d'abeilles alors que la copie parlait de chèvres...
Quand j'aurais un peu de temps j'essayerai de partager tout ça parce que je pense que ça pourrait être utile. C'est autre chose que la génération de QCM avec LaTeX et il est sûr que ça prend plus de temps pour faire la correction, mais au moins on sait ce qu'on évalue. Petit aperçu pour l'évaluation de requêtes algébriques ou SQL :
- « Donner le nombre de membres des troupes qui se sont produites dans des festivités qui se sont déroulées dans des villes dont l'altitude est 75 »
- « Donner le genre musical du groupe qui a l'année de formation la plus grande (ou les genres musicaux des groupes si plusieurs groupes ont la même année de formation) »
Tout ceci est généré automatiquement et je suis assez fier du résultat mais beaucoup moins du code. Coder vite et bien ce n'est pas toujours simple.

J'avais prévu depuis longtemps de ne pas intervenir en cours fin 2020 et c'est plutôt bien tombé parce que l'organisation de la rentrée a été plutôt compliquée. C'est guère mieux pour ce 2e semestre, mais il y a un peu plus d'expérience et il semblerait acquis (avant de nouvelles annonces) que les examens à distance c'est terminé. J'en ai quand même profité pour mettre à jour mes cours HTML/CSS/JS/PHP en supprimant jquery, en remplaçant highlight.js par CodeMirror et en ajoutant Split Grid (un petit plus que j'ai ajouté pour changer la largeur de colonnes de l'éditeur quand j'en ai besoin).

Un petit aperçu avec une belle coloration syntaxique dans les slides et dans l'éditeur grâce à CodeMirror. L'éditeur qui s'adapte en fonction du code si c'est du HTML (2 colonnes) ou du PHP (3 colonnes).
https://tontof.net/tuto/html/#/slide-hello-world
https://tontof.net/tuto/php/#/slide-hello-world

Je pense être quelqu'un de très exigeant et je n'ai pratiquement plus rien à redire sur ces supports, je suis presque entièrement satisfait par mon approche pour faire ces cours. Je ne parle pas du fond mais bien de la forme. Je remercie vraiment GNU Emacs, Org Mode, reveal.js, org-reveal, PHP.js et MathJax.

À dans un an et demi ? Je devrais avoir plus de temps pour partager des choses, je pense donc que ça sera avant mais je ne préfère pas m'avancer, on ne sait jamais de quoi sera fait l'avenir.
ˆ

Filtre calendrier ICS

Tontof par tontof le 27/06/2019 à 19:06:00 - Favoriser (lu/non lu)

Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser https://icalfilter.com/

Je serai curieux de savoir si c'est possible de le faire avec un https://framagenda.org mais en utilisant un parseur et un formatteur PHP c'est plutôt simple.

Si ça peut être utile à d'autres.

Dans le fichier composer.json

{
"require": {
"johngrogg/ics-parser": "^2",
"jsvrcek/ics": "*@dev"
}
}


On installe tout ce qu'il faut avec
composer install


Dans un fichier index.php

<?php 
  
require_once 'vendor/autoload.php';
  use 
ICal\ICal;
  use 
Jsvrcek\ICS\Model\Calendar;
  use 
Jsvrcek\ICS\Model\CalendarEvent;
  use 
Jsvrcek\ICS\Model\Relationship\Attendee;
  use 
Jsvrcek\ICS\Model\Relationship\Organizer;
  
  use 
Jsvrcek\ICS\Utility\Formatter;
  use 
Jsvrcek\ICS\CalendarStream;
  use 
Jsvrcek\ICS\CalendarExport;

  try {
      
      
$ical = new ICal('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics', array(
         
'defaultSpan'                 => 2,     // Default value
         
'defaultTimeZone'             => 'UTC',
         
'defaultWeekStart'            => 'MO',  // Default value
         
'disableCharacterReplacement' => false// Default value
         
'filterDaysAfter'             => null,  // Default value
         
'filterDaysBefore'            => null,  // Default value
         
'replaceWindowsTimeZoneIds'   => false// Default value
         
'skipRecurrence'              => false// Default value
         
'useTimeZoneWithRRules'       => false// Default value
         
));
  } catch (\
Exception $e) {
      die(
$e);
  }
  
  
$forceTimeZone false;

  
$newCal = new Calendar();
  
$newCal->setProdId($ical->cal['VCALENDAR']['PRODID']);
  
$newCal->setVersion($ical->cal['VCALENDAR']['VERSION']);
  
$newCal->setName($ical->cal['VCALENDAR']['X-WR-CALNAME']);
  
$newCal->setCalendarScale($ical->cal['VCALENDAR']['CALSCALE']);
  
$newCal->setMethod($ical->cal['VCALENDAR']['METHOD']);
  
$newCal->setCustomHeaders(["X-WR-TIMEZONE" => $ical->cal['VCALENDAR']['X-WR-TIMEZONE']]);
  
  
$events $ical->events();
  foreach (
$events as $event) {
      
// add custom filter here
      
if (preg_match('/.*DST*/'$event->summary)) {
          
$newEvent = new CalendarEvent();
          
$newEvent->setStart(new DateTime($event->dtstart));
          
$newEvent->setEnd(new DateTime($event->dtend));
          
$newEvent->setSummary($event->summary);
          
$newEvent->setUid($event->uid);
          
$newEvent->setStatus($event->status);
          
$newCal->addEvent($newEvent);
      }
  }
  
  
$calendarExport = new CalendarExport(new CalendarStream, new Formatter());
  
$calendarExport->addCalendar($newCal);

  
header('Content-type: text/calendar; charset=utf-8');
  echo 
$calendarExport->getStream();
 
?>


ˆ

Filtre calendrier ICS

Tontof par tontof le 27/06/2019 à 19:06:00 - Favoriser (lu/non lu)

Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser https://icalfilter.com/

Je serai curieux de savoir si c'est possible de le faire avec un https://framagenda.org mais en utilisant un parseur et un formatteur PHP c'est plutôt simple.

Si ça peut être utile à d'autres.

Dans le fichier composer.json

{
"require": {
"johngrogg/ics-parser": "^2",
"jsvrcek/ics": "*@dev"
}
}


On installe tout ce qu'il faut avec
composer install


Dans un fichier index.php

<?php 
  
require_once 'vendor/autoload.php';
  use 
ICal\ICal;
  use 
Jsvrcek\ICS\Model\Calendar;
  use 
Jsvrcek\ICS\Model\CalendarEvent;
  use 
Jsvrcek\ICS\Model\Relationship\Attendee;
  use 
Jsvrcek\ICS\Model\Relationship\Organizer;
  
  use 
Jsvrcek\ICS\Utility\Formatter;
  use 
Jsvrcek\ICS\CalendarStream;
  use 
Jsvrcek\ICS\CalendarExport;

  try {
      
      
$ical = new ICal('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics', array(
         
'defaultSpan'                 => 2,     // Default value
         
'defaultTimeZone'             => 'UTC',
         
'defaultWeekStart'            => 'MO',  // Default value
         
'disableCharacterReplacement' => false// Default value
         
'filterDaysAfter'             => null,  // Default value
         
'filterDaysBefore'            => null,  // Default value
         
'replaceWindowsTimeZoneIds'   => false// Default value
         
'skipRecurrence'              => false// Default value
         
'useTimeZoneWithRRules'       => false// Default value
         
));
  } catch (\
Exception $e) {
      die(
$e);
  }
  
  
$forceTimeZone false;

  
$newCal = new Calendar();
  
$newCal->setProdId($ical->cal['VCALENDAR']['PRODID']);
  
$newCal->setVersion($ical->cal['VCALENDAR']['VERSION']);
  
$newCal->setName($ical->cal['VCALENDAR']['X-WR-CALNAME']);
  
$newCal->setCalendarScale($ical->cal['VCALENDAR']['CALSCALE']);
  
$newCal->setMethod($ical->cal['VCALENDAR']['METHOD']);
  
$newCal->setCustomHeaders(["X-WR-TIMEZONE" => $ical->cal['VCALENDAR']['X-WR-TIMEZONE']]);
  
  
$events $ical->events();
  foreach (
$events as $event) {
      
// add custom filter here
      
if (preg_match('/.*DST*/'$event->summary)) {
          
$newEvent = new CalendarEvent();
          
$newEvent->setStart(new DateTime($event->dtstart));
          
$newEvent->setEnd(new DateTime($event->dtend));
          
$newEvent->setSummary($event->summary);
          
$newEvent->setUid($event->uid);
          
$newEvent->setStatus($event->status);
          
$newCal->addEvent($newEvent);
      }
  }
  
  
$calendarExport = new CalendarExport(new CalendarStream, new Formatter());
  
$calendarExport->addCalendar($newCal);

  
header('Content-type: text/calendar; charset=utf-8');
  echo 
$calendarExport->getStream();
 
?>


ˆ

Filtre calendrier ICS

Tontof par tontof le 27/06/2019 à 19:06:00 - Favoriser (lu/non lu)

Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser https://icalfilter.com/

Je serai curieux de savoir si c'est possible de le faire avec un https://framagenda.org mais en utilisant un parseur et un formatteur PHP c'est plutôt simple.

Si ça peut être utile à d'autres.

Dans le fichier composer.json

{
"require": {
"johngrogg/ics-parser": "^2",
"jsvrcek/ics": "*@dev"
}
}


On installe tout ce qu'il faut avec
composer install


Dans un fichier index.php

<?php 
  
require_once 'vendor/autoload.php';
  use 
ICal\ICal;
  use 
Jsvrcek\ICS\Model\Calendar;
  use 
Jsvrcek\ICS\Model\CalendarEvent;
  use 
Jsvrcek\ICS\Model\Relationship\Attendee;
  use 
Jsvrcek\ICS\Model\Relationship\Organizer;
  
  use 
Jsvrcek\ICS\Utility\Formatter;
  use 
Jsvrcek\ICS\CalendarStream;
  use 
Jsvrcek\ICS\CalendarExport;

  try {
      
      
$ical = new ICal('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics', array(
         
'defaultSpan'                 => 2,     // Default value
         
'defaultTimeZone'             => 'UTC',
         
'defaultWeekStart'            => 'MO',  // Default value
         
'disableCharacterReplacement' => false// Default value
         
'filterDaysAfter'             => null,  // Default value
         
'filterDaysBefore'            => null,  // Default value
         
'replaceWindowsTimeZoneIds'   => false// Default value
         
'skipRecurrence'              => false// Default value
         
'useTimeZoneWithRRules'       => false// Default value
         
));
  } catch (\
Exception $e) {
      die(
$e);
  }
  
  
$forceTimeZone false;

  
$newCal = new Calendar();
  
$newCal->setProdId($ical->cal['VCALENDAR']['PRODID']);
  
$newCal->setVersion($ical->cal['VCALENDAR']['VERSION']);
  
$newCal->setName($ical->cal['VCALENDAR']['X-WR-CALNAME']);
  
$newCal->setCalendarScale($ical->cal['VCALENDAR']['CALSCALE']);
  
$newCal->setMethod($ical->cal['VCALENDAR']['METHOD']);
  
$newCal->setCustomHeaders(["X-WR-TIMEZONE" => $ical->cal['VCALENDAR']['X-WR-TIMEZONE']]);
  
  
$events $ical->events();
  foreach (
$events as $event) {
      
// add custom filter here
      
if (preg_match('/.*DST*/'$event->summary)) {
          
$newEvent = new CalendarEvent();
          
$newEvent->setStart(new DateTime($event->dtstart));
          
$newEvent->setEnd(new DateTime($event->dtend));
          
$newEvent->setSummary($event->summary);
          
$newEvent->setUid($event->uid);
          
$newEvent->setStatus($event->status);
          
$newCal->addEvent($newEvent);
      }
  }
  
  
$calendarExport = new CalendarExport(new CalendarStream, new Formatter());
  
$calendarExport->addCalendar($newCal);

  
header('Content-type: text/calendar; charset=utf-8');
  echo 
$calendarExport->getStream();
 
?>


ˆ

KrISS tuto : html, css, php et maintenant javascript

Tontof par tontof le 07/02/2019 à 19:02:00 - Favoriser (lu/non lu)

Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style

<SCRIPT LANGUAGE="JavaScript">...</SCRIPT>

Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version 4.3.89). D'ailleurs si vous connaissez une alternative je suis preneur...

Heureusement maintenant c'est fini parce qu'après HTML/CSS et PHP j'ai enfin agrémenter KrISS tuto de JS !

Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !

En plus je peux générer le PDF de mon cours grâce à l'attribut print-pdf dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.

J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème

pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf

Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version java mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.

Première tentative avec psselect:

pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps

L'option -o pour odd (impair) et -e pour even (pair).
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!
À part le fait qu'au final j'ai bien le résultat attendu, ce n'est vraiment pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...

Deuxième tentative avec qpdf:

qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf

Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :

pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2

et avec l'utilisation de seq pour générer la liste des pages impaires

seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

pour les pages paires il suffit de commencer seq à 2

seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :

file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"

Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !
Vive la ligne de commande
ˆ

KrISS tuto : html, css, php et maintenant javascript

Tontof par tontof le 07/02/2019 à 19:02:00 - Favoriser (lu/non lu)

Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style

<SCRIPT LANGUAGE="JavaScript">...</SCRIPT>

Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version 4.3.89). D'ailleurs si vous connaissez une alternative je suis preneur...

Heureusement maintenant c'est fini parce qu'après HTML/CSS et PHP j'ai enfin agrémenter KrISS tuto de JS !

Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !

En plus je peux générer le PDF de mon cours grâce à l'attribut print-pdf dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.

J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème

pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf

Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version java mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.

Première tentative avec psselect:

pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps

L'option -o pour odd (impair) et -e pour even (pair).
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!
À part le fait qu'au final j'ai bien le résultat attendu, c'est juste pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...

Deuxième tentative avec qpdf:

qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf

Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :

pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2

et avec l'utilisation de seq pour générer la liste des pages impaires

seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

pour les pages paires il suffit de commencer seq à 2

seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :

file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"

Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !
Vive la ligne de commande
ˆ

KrISS tuto : html, css, php et maintenant javascript

Tontof par tontof le 07/02/2019 à 19:02:00 - Favoriser (lu/non lu)

Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style

<SCRIPT LANGUAGE="JavaScript">...</SCRIPT>

Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version 4.3.89). D'ailleurs si vous connaissez une alternative je suis preneur...

Heureusement maintenant c'est fini parce qu'après HTML/CSS et PHP j'ai enfin agrémenter KrISS tuto de JS !

Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !

En plus je peux générer le PDF de mon cours grâce à l'attribut print-pdf dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.

J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème

pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf

Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version java mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.

Première tentative avec psselect:

pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps

L'option -o pour odd (impair) et -e pour even (pair).
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!
À part le fait qu'au final j'ai bien le résultat attendu, ce n'est vraiment pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...

Deuxième tentative avec qpdf:

qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf

Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :

pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2

et avec l'utilisation de seq pour générer la liste des pages impaires

seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

pour les pages paires il suffit de commencer seq à 2

seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :

file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"

Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !
Vive la ligne de commande
ˆ

Make our politic great again

Tontof par tontof le 08/01/2019 à 19:01:00 - Favoriser (lu/non lu)

Je n'aime pas écrire ce genre d'article... Je vous avais déjà dit que je n'aimais pas la (les) politique(s), mais en ce moment, c'est un sujet qui revient souvent. Je vous ai dit pour qui j'ai voté au premier tour, et même si ce n'était pas un vote d'adhésion pour la personne, c'était surtout parce que c'était le seul programme à proposer une VIe république. Et je fais partie de ceux et celles qui pensent qu'il faut effectivement remettre sur la table un certain nombre de choses.

Alors bien sûr, depuis l'élection j'ai toujours un sentiment particulier. Quand j'entends « Vous m'avez élu » je revois cette vidéo de la statistique expliquée à mon chat qui montre simplement qu'à la base il y a un problème avec les règles définies pour l'élection. Il existe pourtant des alternatives... Clairement il est difficile de savoir à qui correspond vraiment ce « vous » et combien de personnes ont vraiment voté « pour » (entre les personnes qui ont été influencées par les sondages, celles qui ont votées contre d'autres personnes, etc.).

Une chose est sûre, ce n'est pas avec 18% au premier tour des personnes inscrites qu'on peut légitiment penser que tout ce qu'on va faire, va être accepter par le « peuple ». Mais ce n'est pas tout, je pense qu'il y a un autre point pour lequel les gens en ont plus qu'assez. C'est le sentiment que les (certains) politiques ne sont pas honnêtes et cherchent avant tout à défendre leurs propres intérêts.
- Bruno Le Maire (avant) : « La réalité c'est que Emmanuel Macron, c'est une coquille vide »
- Bruno Le Maire (après) : ministre de l'économie
- François Bayrou (avant) : « Je ne me reconnais pas dans ce qu'Emmanuel Macron incarne »
- François Bayrou (après) : ministre d'état, garde des sceaux, ministre de la justice
- Marielle de Sarnez (avant) : « il dit un certain nombre de choses et après en général il recule toujours »
- Marielle de Sarnez (après) : ministre auprès du ministre de l'Europe et des affaires étrangères chargée des europpéennes

En vidéo c'est encore plus drôle... si on peut dire que c'est drôle... Par contre, en prenant les initiales des prénoms de l'ordre choisi par FranceInfo dans cette vidéo, ça fait BFM, et ça c'est plutôt drôle ? Non toujours pas...
https://www.youtube.com/watch?v=XX0rNWLZEPs
- Gérald Darmanin (avant) : « Partout où il va dans une région, il insulte les habitants de la région, il va en Bretagne, il y a les illettrés, il va en Guadeloupe, il s'expatrie, il va dans les hauts de France, il considère qu'il a de l'alcoolisme et du tabac en très grand nombre donc c'est quelqu'un qui ne connaît le pays d'abord »
- Gérald Darmanin (après) : « Moi j'ai vu un président de la république plusieurs fois, dans plusieurs déplacements, en Guyane, dans ma commune à Tourcoing, d'une écoute, d'une empathie, d'une volonté de convaincre »

https://www.facebook.com/naceur.hamadi/posts/2377653542263725
- Édouard Philippe (avant) : « Quand il s'exprime sur tout plein de choses, je me dis que c'est dommage qu'il n'ait pas été ministre de l'Économie juste avant parce qu'il aurait pu le faire, ah pardon, il était ministre de l'Économie avant et il ne l'a pas fait »
- Édouard Philippe (après) : premier ministre

https://www.youtube.com/watch?v=olVCanjtgrM

Nul n'est dupe et tout le monde est d'accord pour dire qu'il y a des problèmes. Personnellement je ne pense pas que le grand débat permettra de changer les choses en profondeur. Quand on nous prévient que de toute façon, le but ne sera pas de faire changer les choses alors même que c'est ce qui est demandé, à quoi bon vouloir débattre. Cause toujours tu m'intéresses... J'entends parler d'un RIC (CARL), mais je ne pense pas que c'est LA solution. C'est sûr que ça serait un début pour considérer le peuple, mais clairement il y a trop de paramètres à considérer pour espérer qu'il sera bien appliqué. Je ne demande qu'à voir cependant.

Enfin tout ça pour dire que j'espère qu'en 2019 on aura du neuf...
ˆ

Make our politic great again

Tontof par tontof le 08/01/2019 à 19:01:00 - Favoriser (lu/non lu)

Je n'aime pas écrire ce genre d'article... Je vous avais déjà dit que je n'aimais pas la (les) politique(s), mais en ce moment, c'est un sujet qui revient souvent. Je vous ai dit pour qui j'ai voté au premier tour, et même si ce n'était pas un vote d'adhésion pour la personne, c'était surtout parce que c'était le seul programme à proposer une VIe république. Et je fais partie de ceux et celles qui pensent qu'il faut effectivement remettre sur la table un certain nombre de choses.

Alors bien sûr, depuis l'élection j'ai toujours un sentiment particulier. Quand j'entends « Vous m'avez élu » je revois cette vidéo de la statistique expliquée à mon chat qui montre simplement qu'à la base il y a un problème avec les règles définies pour l'élection. Il existe pourtant des alternatives... Clairement il est difficile de savoir à qui correspond vraiment ce « vous » et combien de personnes ont vraiment voté « pour » (entre les personnes qui ont été influencées par les sondages, celles qui ont votées contre d'autres personnes, etc.).

Une chose est sûre, ce n'est pas avec 18% au premier tour des personnes inscrites qu'on peut légitiment penser que tout ce qu'on va faire, va être accepter par le « peuple ». Mais ce n'est pas tout, je pense qu'il y a un autre point pour lequel les gens en ont plus qu'assez. C'est le sentiment que les (certains) politiques ne sont pas honnêtes et cherchent avant tout à défendre leurs propres intérêts.
- Bruno Le Maire (avant) : « La réalité c'est que Emmanuel Macron, c'est une coquille vide »
- Bruno Le Maire (après) : ministre de l'économie
- François Bayrou (avant) : « Je ne me reconnais pas dans ce qu'Emmanuel Macron incarne »
- François Bayrou (après) : ministre d'état, garde des sceaux, ministre de la justice
- Marielle de Sarnez (avant) : « il dit un certain nombre de choses et après en général il recule toujours »
- Marielle de Sarnez (après) : ministre auprès du ministre de l'Europe et des affaires étrangères chargée des europpéennes

En vidéo c'est encore plus drôle... si on peut dire que c'est drôle... Par contre, en prenant les initiales des prénoms de l'ordre choisi par FranceInfo dans cette vidéo, ça fait BFM, et ça c'est plutôt drôle ? Non toujours pas...
https://www.youtube.com/watch?v=XX0rNWLZEPs
- Gérald Darmanin (avant) : « Partout où il va dans une région, il insulte les habitants de la région, il va en Bretagne, il y a les illettrés, il va en Guadeloupe, il s'expatrie, il va dans les hauts de France, il considère qu'il a de l'alcoolisme et du tabac en très grand nombre donc c'est quelqu'un qui ne connaît le pays d'abord »
- Gérald Darmanin (après) : « Moi j'ai vu un président de la république plusieurs fois, dans plusieurs déplacements, en Guyane, dans ma commune à Tourcoing, d'une écoute, d'une empathie, d'une volonté de convaincre »

https://www.facebook.com/naceur.hamadi/posts/2377653542263725
- Édouard Philippe (avant) : « Quand il s'exprime sur tout plein de choses, je me dis que c'est dommage qu'il n'ait pas été ministre de l'Économie juste avant parce qu'il aurait pu le faire, ah pardon, il était ministre de l'Économie avant et il ne l'a pas fait »
- Édouard Philippe (après) : premier ministre

https://www.youtube.com/watch?v=olVCanjtgrM

Nul n'est dupe et tout le monde est d'accord pour dire qu'il y a des problèmes. Personnellement je ne pense pas que le grand débat permettra de changer les choses en profondeur. Quand on nous prévient que de toute façon, le but ne sera pas de faire changer les choses alors même que c'est ce qui est demandé, à quoi bon vouloir débattre. Cause toujours tu m'intéresses... J'entends parler d'un RIC (CARL), mais je ne pense pas que c'est LA solution. C'est sûr que ça serait un début pour considérer le peuple, mais clairement il y a trop de paramètres à considérer pour espérer qu'il sera bien appliqué. Je ne demande qu'à voir cependant.

Enfin tout ça pour dire que j'espère qu'en 2019 on aura du neuf...
ˆ

Make our politic great again

Tontof par tontof le 08/01/2019 à 19:01:00 - Favoriser (lu/non lu)

Je n'aime pas écrire ce genre d'article... Je vous avais déjà dit que je n'aimais pas la (les) politique(s), mais en ce moment, c'est un sujet qui revient souvent. Je vous ai dit pour qui j'ai voté au premier tour, et même si ce n'était pas un vote d'adhésion pour la personne, c'était surtout parce que c'était le seul programme à proposer une VIe république. Et je fais partie de ceux et celles qui pensent qu'il faut effectivement remettre sur la table un certain nombre de choses.

Alors bien sûr, depuis l'élection j'ai toujours un sentiment particulier. Quand j'entends « Vous m'avez élu » je revois cette vidéo de la statistique expliquée à mon chat qui montre simplement qu'à la base il y a un problème avec les règles définies pour l'élection. Il existe pourtant des alternatives... Clairement il est difficile de savoir à qui correspond vraiment ce « vous » et combien de personnes ont vraiment voté « pour » (entre les personnes qui ont été influencées par les sondages, celles qui ont votées contre d'autres personnes, etc.).

Une chose est sûre, ce n'est pas avec 18% au premier tour des personnes inscrites qu'on peut légitiment penser que tout ce qu'on va faire, va être accepter par le « peuple ». Mais ce n'est pas tout, je pense qu'il y a un autre point pour lequel les gens en ont plus qu'assez. C'est le sentiment que les (certains) politiques ne sont pas honnêtes et cherchent avant tout à défendre leurs propres intérêts.
- Bruno Le Maire (avant) : « La réalité c'est que Emmanuel Macron, c'est une coquille vide »
- Bruno Le Maire (après) : ministre de l'économie
- François Bayrou (avant) : « Je ne me reconnais pas dans ce qu'Emmanuel Macron incarne »
- François Bayrou (après) : ministre d'état, garde des sceaux, ministre de la justice
- Marielle de Sarnez (avant) : « il dit un certain nombre de choses et après en général il recule toujours »
- Marielle de Sarnez (après) : ministre auprès du ministre de l'Europe et des affaires étrangères chargée des europpéennes

En vidéo c'est encore plus drôle... si on peut dire que c'est drôle... Par contre, en prenant les initiales des prénoms de l'ordre choisi par FranceInfo dans cette vidéo, ça fait BFM, et ça c'est plutôt drôle ? Non toujours pas...
https://www.youtube.com/watch?v=XX0rNWLZEPs
- Gérald Darmanin (avant) : « Partout où il va dans une région, il insulte les habitants de la région, il va en Bretagne, il y a les illettrés, il va en Guadeloupe, il s'expatrie, il va dans les hauts de France, il considère qu'il a de l'alcoolisme et du tabac en très grand nombre donc c'est quelqu'un qui ne connaît le pays d'abord »
- Gérald Darmanin (après) : « Moi j'ai vu un président de la république plusieurs fois, dans plusieurs déplacements, en Guyane, dans ma commune à Tourcoing, d'une écoute, d'une empathie, d'une volonté de convaincre »

https://www.facebook.com/naceur.hamadi/posts/2377653542263725
- Édouard Philippe (avant) : « Quand il s'exprime sur tout plein de choses, je me dis que c'est dommage qu'il n'ait pas été ministre de l'Économie juste avant parce qu'il aurait pu le faire, ah pardon, il était ministre de l'Économie avant et il ne l'a pas fait »
- Édouard Philippe (après) : premier ministre

https://www.youtube.com/watch?v=olVCanjtgrM

Nul n'est dupe et tout le monde est d'accord pour dire qu'il y a des problèmes. Personnellement je ne pense pas que le grand débat permettra de changer les choses en profondeur. Quand on nous prévient que de toute façon, le but ne sera pas de faire changer les choses alors même que c'est ce qui est demandé, à quoi bon vouloir débattre. Cause toujours tu m'intéresses... J'entends parler d'un RIC (CARL), mais je ne pense pas que c'est LA solution. C'est sûr que ça serait un début pour considérer le peuple, mais clairement il y a trop de paramètres à considérer pour espérer qu'il sera bien appliqué. Je ne demande qu'à voir cependant.

Enfin tout ça pour dire que j'espère qu'en 2019 on aura du neuf...
ˆ

Tontof.com est en ligne

Tontof par tontof le 24/11/2018 à 18:11:00 - Favoriser (lu/non lu)

C'est officiel depuis le 13 novembre 2018 https://tontof.com et https://fr.tontof.com sont en ligne. Après quelques retours et corrections, je suis fier de vous présenter la version actuelle qui est encore en phase de test mais qui est présentable !

J'espère que le site vous plaira et même si je n'ai pas encore tout optimisé, je pense qu'il est plutôt léger et loin de ce qu'on peut trouver classiquement. Je pense faire un article de tous les choix techniques que j'ai fait parce qu'il y a vraiment beaucoup de choses à dire.

Pour le lancement, j'ai décidé de mettre un prix libre ce qui permet à tout le monde de tester gratuitement. Sur la page du panier il suffit de mettre 0 pour faire apparaître un bouton qui permet de valider le panier sans carte bancaire.

Bon pliage à tous !

Tontof en lign
ˆ

Tontof.com est en ligne

Tontof par tontof le 24/11/2018 à 18:11:00 - Favoriser (lu/non lu)

C'est officiel depuis le 13 novembre 2018 https://tontof.com et https://fr.tontof.com sont en ligne. Après quelques retours et corrections, je suis fier de vous présenter la version actuelle qui est encore en phase de test mais qui est présentable !

J'espère que le site vous plaira et même si je n'ai pas encore tout optimisé, je pense qu'il est plutôt léger et loin de ce qu'on peut trouver classiquement. Je pense faire un article de tous les choix techniques que j'ai fait parce qu'il y a vraiment beaucoup de choses à dire.

Pour le lancement, j'ai décidé de mettre un prix libre ce qui permet à tout le monde de tester gratuitement. Sur la page du panier il suffit de mettre 0 pour faire apparaître un bouton qui permet de valider le panier sans carte bancaire.

Bon pliage à tous !

Tontof en lign
ˆ

Tontof.com est en ligne

Tontof par tontof le 24/11/2018 à 18:11:00 - Favoriser (lu/non lu)

C'est officiel depuis le 13 novembre 2018 https://tontof.com et https://fr.tontof.com sont en ligne. Après quelques retours et corrections, je suis fier de vous présenter la version actuelle qui est encore en phase de test mais qui est présentable !

J'espère que le site vous plaira et même si je n'ai pas encore tout optimisé, je pense qu'il est plutôt léger et loin de ce qu'on peut trouver classiquement. Je pense faire un article de tous les choix techniques que j'ai fait parce qu'il y a vraiment beaucoup de choses à dire.

Pour le lancement, j'ai décidé de mettre un prix libre ce qui permet à tout le monde de tester gratuitement. Sur la page du panier il suffit de mettre 0 pour faire apparaître un bouton qui permet de valider le panier sans carte bancaire.

Bon pliage à tous !

Tontof en lign
ˆ

Le format SVG dans tous ces états

Tontof par tontof le 29/06/2018 à 08:08:00 - Favoriser (lu/non lu)

Si vous connaissez ce format, je vous invite à lire uniquement le dernier paragraphe.

Pour les personnes qui ne le savent pas, les images sont souvent séparées en 2 catégories, les plus classiques sont les images matricielles (jpg, gif, png, bmp, etc.) qui sont représentées sous la forme d'un tableau de pixels et les images vectorielles (svg : Scalable Vector Graphics) qui sont décrites par le contenu à l'aide de formes et couleurs. Ces dernières sont principalement utilisées pour les logos et les images/présentations à afficher dans n'importe quelle dimension sans avoir l'effet de pixellisation.

Inkscape est le logiciel que j'utilise le plus. Je m'en suis servi pour ma présentation des origamis, mais je m'en sers aussi pour mettre en page facilement des photos, réaliser des étiquettes pour les confitures que je mets à jour toutes les années en ligne de commande (On peut effectivement utiliser Inkscape directement dans le terminal), etc.

Il est parfois possible de convertir une image matricielle en image vectorielle. Inkscape possède un outil qui marche plus ou moins bien mais quand j'en ai eu vraiment besoin, j'ai obtenu de meilleurs résultats avec des outils en ligne comme Vector Magic (qui semble être devenu payant depuis).

SVG est également un format supporté par tous les navigateurs (ou presque) et en fait donc un format privilégié pour le web. Il est parfois utilisé pour les polices d'écriture/d'icône. Il s'utilise aussi facilement avec javascript et il existe plusieurs bibliothèques :
- RaphaelJS est la plus complète qui supporte jusqu'à IE 6, oui, oui vous avez bien lu ??? « Raphaël currently supports Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ and Internet Explorer 6.0+ »
- Snap.svg est plus récente et ne s'intéresse qu'aux navigateurs récents « Modern features for modern browsers »
- SVG.js est la version minimaliste et légère

Je suis un grand fan de ce format et je connaissais quelques outils sympathiques comme Sozi qui permet de faire des présentations animées ou svgo pour réduire la taille des fichiers (Inkscape stocke beaucoup d'infos inutile au rendu de l'image) mais je viens découvrir 2 nouveaux usages:
- Des icônes responsives : http://responsiveicons.co.uk
- Des logos responsives : http://responsivelogos.co.uk/
(Il faut redimensionner le navigateur pour voir la magie opérée)
Je suis tombé dessus grâce à cet article
https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6
qui présente ce logo
https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg
ˆ

Le format SVG dans tous ces états

Tontof par tontof le 29/06/2018 à 08:08:00 - Favoriser (lu/non lu)

Si vous connaissez ce format, je vous invite à lire uniquement le dernier paragraphe.

Pour les personnes qui ne le savent pas, les images sont souvent séparées en 2 catégories, les plus classiques sont les images matricielles (jpg, gif, png, bmp, etc.) qui sont représentées sous la forme d'un tableau de pixels et les images vectorielles (svg : Scalable Vector Graphics) qui sont décrites par le contenu à l'aide de formes et couleurs. Ces dernières sont principalement utilisées pour les logos et les images/présentations à afficher dans n'importe quelle dimension sans avoir l'effet de pixellisation.

Inkscape est le logiciel que j'utilise le plus. Je m'en suis servi pour ma présentation des origamis, mais je m'en sers aussi pour mettre en page facilement des photos, réaliser des étiquettes pour les confitures que je mets à jour toutes les années en ligne de commande (On peut effectivement utiliser Inkscape directement dans le terminal), etc.

Il est parfois possible de convertir une image matricielle en image vectorielle. Inkscape possède un outil qui marche plus ou moins bien mais quand j'en ai eu vraiment besoin, j'ai obtenu de meilleurs résultats avec des outils en ligne comme Vector Magic (qui semble être devenu payant depuis).

SVG est également un format supporté par tous les navigateurs (ou presque) et en fait donc un format privilégié pour le web. Il est parfois utilisé pour les polices d'écriture/d'icône. Il s'utilise aussi facilement avec javascript et il existe plusieurs bibliothèques :
- RaphaelJS est la plus complète qui supporte jusqu'à IE 6, oui, oui vous avez bien lu ??? « Raphaël currently supports Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ and Internet Explorer 6.0+ »
- Snap.svg est plus récente et ne s'intéresse qu'aux navigateurs récents « Modern features for modern browsers »
- SVG.js est la version minimaliste et légère

Je suis un grand fan de ce format et je connaissais quelques outils sympathiques comme Sozi qui permet de faire des présentations animées ou svgo pour réduire la taille des fichiers (Inkscape stocke beaucoup d'infos inutile au rendu de l'image) mais je viens découvrir 2 nouveaux usages:
- Des icônes responsives : http://responsiveicons.co.uk
- Des logos responsives : http://responsivelogos.co.uk/
(Il faut redimensionner le navigateur pour voir la magie opérée)
Je suis tombé dessus grâce à cet article
https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6
qui présente ce logo
https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg
ˆ

Le format SVG dans tous ces états

Tontof par tontof le 29/06/2018 à 08:08:00 - Favoriser (lu/non lu)

Si vous connaissez ce format, je vous invite à lire uniquement le dernier paragraphe.

Pour les personnes qui ne le savent pas, les images sont souvent séparées en 2 catégories, les plus classiques sont les images matricielles (jpg, gif, png, bmp, etc.) qui sont représentées sous la forme d'un tableau de pixels et les images vectorielles (svg : Scalable Vector Graphics) qui sont décrites par le contenu à l'aide de formes et couleurs. Ces dernières sont principalement utilisées pour les logos et les images/présentations à afficher dans n'importe quelle dimension sans avoir l'effet de pixellisation.

Inkscape est le logiciel que j'utilise le plus. Je m'en suis servi pour ma présentation des origamis, mais je m'en sers aussi pour mettre en page facilement des photos, réaliser des étiquettes pour les confitures que je mets à jour toutes les années en ligne de commande (On peut effectivement utiliser Inkscape directement dans le terminal), etc.

Il est parfois possible de convertir une image matricielle en image vectorielle. Inkscape possède un outil qui marche plus ou moins bien mais quand j'en ai eu vraiment besoin, j'ai obtenu de meilleurs résultats avec des outils en ligne comme Vector Magic (qui semble être devenu payant depuis).

SVG est également un format supporté par tous les navigateurs (ou presque) et en fait donc un format privilégié pour le web. Il est parfois utilisé pour les polices d'écriture/d'icône. Il s'utilise aussi facilement avec javascript et il existe plusieurs bibliothèques :
- RaphaelJS est la plus complète qui supporte jusqu'à IE 6, oui, oui vous avez bien lu ??? « Raphaël currently supports Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ and Internet Explorer 6.0+ »
- Snap.svg est plus récente et ne s'intéresse qu'aux navigateurs récents « Modern features for modern browsers »
- SVG.js est la version minimaliste et légère

Je suis un grand fan de ce format et je connaissais quelques outils sympathiques comme Sozi qui permet de faire des présentations animées ou svgo pour réduire la taille des fichiers (Inkscape stocke beaucoup d'infos inutile au rendu de l'image) mais je viens découvrir 2 nouveaux usages:
- Des icônes responsives : http://responsiveicons.co.uk
- Des logos responsives : http://responsivelogos.co.uk/
(Il faut redimensionner le navigateur pour voir la magie opérée)
Je suis tombé dessus grâce à cet article
https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6
qui présente ce logo
https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg
ˆ

Bookmarklet pour contourner Scribd

Tontof par tontof le 04/05/2018 à 11:00:00 - Favoriser (lu/non lu)

Quand je cherche des informations sur des livres, je tombe souvent sur des liens scribd. Je ne vous cache pas que je n'aime pas du tout ce site et malheureusement bugmenot ne vous sera pas d'une grande aide. Si vous pouvez enrichir scribd site sans compte, la consultation est plus contraignante.

Donner, do-o-nner, donner, do-o-nner moi
Donner, do-o-nner, scribd le gardera...
...et ne vous le rendra pas...

Heureusement, souvent je ne cherche que des informations spécifiques et pas à télécharger des pdf. Et je ne comprends pas trop leur fonctionnement, mais quand vous commencez à lire, au bout d'un moment un filtre apparaît en surbrillance et vous ne pouvez plus lire et il faut vous connecter...

En apparence oui, mais tout est chargé dans le navigateur et quelques règles CSS permettent facilement de contourner le problème.

Du coup, un petit bookmarklet et plus de problème



code = ".autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}"
var style = document.createElement('style');
style.type = 'text/css';

if (style.styleSheet) {
// IE
style.styleSheet.cssText = code;
} else {
// Other browsers
style.innerHTML = code;
}

document.getElementsByTagName("head")[0].appendChild( style );


Merci https://martijnbrekelmans.com/bookmarkletify/
et https://stackoverflow.com/questions/707565/
ˆ

Bookmarklet pour contourner Scribd

Tontof par tontof le 04/05/2018 à 11:00:00 - Favoriser (lu/non lu)

Quand je cherche des informations sur des livres, je tombe souvent sur des liens scribd. Je ne vous cache pas que je n'aime pas du tout ce site et malheureusement bugmenot ne vous sera pas d'une grande aide. Si vous pouvez enrichir scribd site sans compte, la consultation est plus contraignante.

Donner, do-o-nner, donner, do-o-nner moi
Donner, do-o-nner, scribd le gardera...
...et ne vous le rendra pas...

Heureusement, souvent je ne cherche que des informations spécifiques et pas à télécharger des pdf. Et je ne comprends pas trop leur fonctionnement, mais quand vous commencez à lire, au bout d'un moment un filtre apparaît en surbrillance et vous ne pouvez plus lire et il faut vous connecter...

En apparence oui, mais tout est chargé dans le navigateur et quelques règles CSS permettent facilement de contourner le problème.

Du coup, un petit bookmarklet et plus de problème



code = ".autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}"
var style = document.createElement('style');
style.type = 'text/css';

if (style.styleSheet) {
// IE
style.styleSheet.cssText = code;
} else {
// Other browsers
style.innerHTML = code;
}

document.getElementsByTagName("head")[0].appendChild( style );


Merci https://martijnbrekelmans.com/bookmarkletify/
et https://stackoverflow.com/questions/707565/
ˆ

Bookmarklet pour contourner Scribd

Tontof par tontof le 04/05/2018 à 11:00:00 - Favoriser (lu/non lu)

Quand je cherche des informations sur des livres, je tombe souvent sur des liens scribd. Je ne vous cache pas que je n'aime pas du tout ce site et malheureusement bugmenot ne vous sera pas d'une grande aide. Si vous pouvez enrichir scribd site sans compte, la consultation est plus contraignante.

Donner, do-o-nner, donner, do-o-nner moi
Donner, do-o-nner, scribd le gardera...
...et ne vous le rendra pas...

Heureusement, souvent je ne cherche que des informations spécifiques et pas à télécharger des pdf. Et je ne comprends pas trop leur fonctionnement, mais quand vous commencez à lire, au bout d'un moment un filtre apparaît en surbrillance et vous ne pouvez plus lire et il faut vous connecter...

En apparence oui, mais tout est chargé dans le navigateur et quelques règles CSS permettent facilement de contourner le problème.

Du coup, un petit bookmarklet et plus de problème



code = ".autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}"
var style = document.createElement('style');
style.type = 'text/css';

if (style.styleSheet) {
// IE
style.styleSheet.cssText = code;
} else {
// Other browsers
style.innerHTML = code;
}

document.getElementsByTagName("head")[0].appendChild( style );


Merci https://martijnbrekelmans.com/bookmarkletify/
et https://stackoverflow.com/questions/707565/
ˆ

TONTOF: Your own unique origami and paper toys

Tontof par tontof le 20/04/2018 à 12:00:00 - Favoriser (lu/non lu)

Bonjour à tous,

Je n'ai pas pris le temps de faire un article sur les résultats du dernier vote parce que j'étais sur le sprint final et je voulais vous faire la surprise en vous annonçant le lancement officiel du projet Kickstarter de Tontof.

https://www.kickstarter.com/projects/tontof/tontof-your-own-unique-origami-and-paper-toys/

Je vous remercie d'avance de partager ce lien en espérant que le projet plaira au plus grand nombre. C'était un peu une date anniversaire et j'ai donc fait le maximum pour pouvoir faire le lancement à temps.

Merci encore à tous pour vos partages.
ˆ

TONTOF: Your own unique origami and paper toys

Tontof par tontof le 20/04/2018 à 12:00:00 - Favoriser (lu/non lu)

Bonjour à tous,

Je n'ai pas pris le temps de faire un article sur les résultats du dernier vote parce que j'étais sur le sprint final et je voulais vous faire la surprise en vous annonçant le lancement officiel du projet Kickstarter de Tontof.

https://www.kickstarter.com/projects/tontof/tontof-your-own-unique-origami-and-paper-toys/

Je vous remercie d'avance de partager ce lien en espérant que le projet plaira au plus grand nombre. C'était un peu une date anniversaire et j'ai donc fait le maximum pour pouvoir faire le lancement à temps.

Merci encore à tous pour vos partages.