Le menu
À retenir
Outils
- Convertisseur de code source en HTML
- Générateur de lien en (x)HTML
- Traduction Français-Esperanto online
Vie pratique
Portfolio
Présidentielles
Culture
- Respect des droits d'auteurs et droits voisins — Refus des Mesures Techniques de Protection (MTP)
- Licence globale : finalement je suis contre...
- Lettre à la SACEM : Réaction par rapport au projet de loi DADVSI
- Reprenons en main la culture !
- Gestion Numérique des droits (DRM) : une question de confiance
- Gestion Numérique des droits (DRM) : une question de confiance (2)
Archives
- Septembre 2008
- Aout 2008
- Juillet 2008
- Juin 2008
- Mai 2008
- Avril 2008
- Mars 2008
- Février 2008
- Janvier 2008
- Décembre 2007
- Novembre 2007
- Octobre 2007
- Septembre 2007
- Aout 2007
- Juillet 2007
- Juin 2007
- Mai 2007
- Avril 2007
- Mars 2007
- Février 2007
- Janvier 2007
- Décembre 2006
- Novembre 2006
- Octobre 2006
- Septembre 2006
- Aout 2006
- Juillet 2006
- Juin 2006
- Mai 2006
- Avril 2006
- Mars 2006
- Février 2006
- Janvier 2006
- Décembre 2005
- Novembre 2005
- Octobre 2005
- Septembre 2005
- Aout 2005
- Juillet 2005
- Juin 2005
- Mai 2005
- Avril 2005
- Mars 2005
- Février 2005
- Janvier 2005
- Décembre 2004
- Novembre 2004
- Octobre 2004
Spornikethon
- Mes créations vous plaisent ?
- Vous voulez me soutenir financièrement ?
- Cliquez sur un des boutons ci-dessous selon le montant du dons.
- Merci !
Rouleaux de blogs
Mes préférés
Les amis
- Les bla-blas de Chibi
- Lysel
- Orpheelin
- Nae-chan in Psycholand
- Circée
- Faery Book
- Les bijoux de Hime-Decco
Divers
Mes liens
- Non à la brevetabilité des logiciels en Europe
- Promotion d'artistes proposant de la musique légale et gratuite à télécharger
- Associations pour le Maintien d’une Agriculture Paysanne
- La Bible
- Wikipédia
- Le Trésor de la Langue Française Informatisé
- Liste prête à l'emploi pour Adblock
- Partitions pour guitare classique
- Forum francophone pour les collectionneurs et créateurs de poupées
- Association sportive et culturelle du 13ème arrondissement
Bombardement Google
Rendre une application HTML5 disponible hors connexion avec les Service Workers
Le 21 Novembre 2016 à 05:55
Le contexte
Maintenant que j'ai installé les outils indispensable au développement HTML5 (node.js, npm, bower et yeoman actuellement), j'ai commencé à me faire la main en utilisant le générateur FountainJs et son exemple d'application "todo list".
Après avoir ajouté une sauvegarde en utilisant le stockage local, il me fallait rendre l'application disponible hors connexion (pas de réseau sous un tunnel dans le RER par exemple...) afin de pouvoir utiliser ce pense-bête sans contrainte de connectivité.
J'allais partir sur les "appcache" quand je suis tombé sur les pages de Mozilla indiquant que cette technique était considérée comme "dépréciée" et qu'il fallait plutôt utiliser les Service Workers pour les nouveaux projets. En dehors de la complexité plus élevée que appcache, la contrainte d'avoir un site en HTTPS n'est pas un problème pour moi, puisque le serveur sur lequel je déploie l'application —un Raspberry Pi— répond exclusivement à ce genre de requête.
Donc le seul obstacle qu'il reste, c'est la mise en œuvre, et pour ça, j'ai simplement cherché un plugin utilisable avec gulp (l'outil de fabrique et d'empaquetage mis en place par le modèle de FountainJs) pour faire le gros du travail. J'ai finalement choisi sw-precache (Software Worker Precache) qui m'a l'air assez poussé, bien documenté, tout en restant simple pour mon petit projets : je mets tous mes fichiers en cache.
Générer le Service Worker
Il n'y a pas de difficulté particulière, mais il va falloir exclure le fichier généré de la tâche de vérification du code avec eslint. Le service worker sera généré dans le fichier sw-app-cache.js
.
Récupérer sw-precache
npm install --save-dev sw-precache
Créer les tâches gulp
// variables de configurations (gulp.conf.js) /** * precache global conf values */ exports.precacheSpecs = { target: 'sw-app-cache.js', staticFilesGlob: '/**/*.{js,html,css,png,jpg,gif,svg,eot,ttf,woff}' }; // définition des tâches (nouveau fichier : precache.js) // noter la distinction entre l'environnement de développement et l'environnement d'utilisation const gulp = require('gulp'); const path = require('path'); const swPrecache = require('sw-precache'); const conf = require('../conf/gulp.conf'); // gulp tasks declaration gulp.task('precache', precache); gulp.task('precache:dist', precacheDist); function precache(done) { doPrecache(conf, conf.path.src()+'/', '/'); done(); } function precacheDist(done) { doPrecache(conf, conf.path.dist()+'/', conf.baseHref.default); done(); } function doPrecache(conf, rootDir, appPrefix) { swPrecache.write(path.join(rootDir, conf.precacheSpecs.target), { staticFileGlobs: [rootDir + conf.precacheSpecs.staticFilesGlob], stripPrefix: rootDir, replacePrefix: appPrefix }); } // Inscription des tâches dans la fabrique (gulpfile.js) // on met à jour les tâche "build" et "serve" gulp.task('build', gulp.series('partials', gulp.parallel('inject', 'other'), 'build', 'precache:dist')); gulp.task('serve', gulp.series('inject', 'precache', 'watch', 'browsersync'));
Exclure le fichier de la vérification de code
Cette étape est indispensable pour ne pas bloquer les tâches gulp. Dans mon cas, j'ai donc patché ma tâche scripts
comme suit :
diff --git a/gulp_tasks/scripts.js b/gulp_tasks/scripts.js index f3d2482..5044c2b 100644 --- a/gulp_tasks/scripts.js +++ b/gulp_tasks/scripts.js @@ -1,14 +1,20 @@ const gulp = require('gulp'); const eslint = require('gulp-eslint'); +const filter = require('gulp-filter'); const conf = require('../conf/gulp.conf'); gulp.task('scripts', scripts); function scripts() { + // do not lint the generated service worker + const jsFilter = filter(conf.path.tmp('**/*.js','!sw-app-cache.js'), {restore: true}); + return gulp.src(conf.path.src('**/*.js')) + .pipe(jsFilter) .pipe(eslint()) .pipe(eslint.format()) + .pipe(jsFilter.restore) .pipe(gulp.dest(conf.path.tmp())); }
Utiliser le Service Worker généré
Maintenant que la génération du service worker est en ordre de marche, on doit écrire le code qui le référence pour que le navigateur puisse l'utiliser.
J'ai repris le code de démonstration disponible, auquel j'ai rajouté les directives suivantes pour désactiver les plaintes de eslint (on n'est pas dans le code angular de mon application, donc je me permets de le faire) :
/* eslint default-case: "off", angular/log: "off" */
Ubuntu : installer une version à jour de nodeJs
Le 19 Novembre 2016 à 07:12
Voici donc la conclusion de ma série d'article axés sur l'ajout de dépôts tiers de paquetages.
- Ubuntu : Vérifier une clé servant à ajouter un dépôt de paquetages externe
- Ubuntu : Lister les dépôts tiers utilisés comme sources des paquetages
- Ubuntu : gestion des dépôts tiers de paquetages
L'objectif était de comprendre la réponse trouvé sur askubuntu concernant les commandes explicites à employer pour utiliser NodeSource comme fournisseur des paquetages récent de node.js.
D'ailleurs, ce travail ne m'a pas été inutile, car si j'en crois le macro-planning des versions supportées sur le long terme de node.js, en janvier au plus tard, je devrais basculer sur les dépôts contenant la version 6.
Ubuntu : gestion des dépôts tiers de paquetages
Le 15 Novembre 2016 à 22:44
Dans l'article précédent, on a vu comment lister les sources de paquetages tiers déjà déclarés, pour déterminer si certaines de ces sources doivent être enlevées suites à l'ajout d'une nouvelle source.
C'est exactement ce qui arrive dans les scripts d'installation de nodesource.com, qui supprime un éventuel dépôt précédemment utilisé pour obtenir node.js.
Nous allons donc voir comment utiliser apt-add-repository
pour enlever ou rajouter un dépôt.
Enlever un dépôt
Utilisons le script de l'article précédent pour faire un état des lieux :
--> /etc/apt/sources.list http://www.openprinting.org/download/printdriver/debian/ https://deb.nodesource.com/node_4.x --> /etc/apt/sources.list.d/foo.list http://foo.foo
On veut supprimer le dépôt "http://foo.foo", on affiche le contenu de foo.list
.
#test pour le remove deb http://foo.foo trusty main
On supprime le dépôt en fournissant la ligne complète à la commande apt-add-repository -r
(le "tiret-r" donne l'instruction de supprimer le dépôt à la commande).
sudo apt-add-repository -r "deb http://foo.foo trusty main"
Vérification
--> /etc/apt/sources.list http://www.openprinting.org/download/printdriver/debian/ https://deb.nodesource.com/node_4.x --> /etc/apt/sources.list.d/foo.list
On voit bien que la ligne a disparu.
Ajouter un dépôt
Nous sommes prêt à ajouter le dépôt ! Pour node.js en version 4.x, on invoquera donc la commande :
sudo apt-add-repository "deb https://deb.nodesource.com/node_5.x $(lsb_release -sc) main"
La séquence $(lsb_release -sc)
est interprétée comme la commande lsb_release
à invoquer pour utiliser le résultat. Cette commande retourne le nom de la distribution Ubuntu, dans mon cas trusty
.
Ubuntu : Lister les dépôts tiers utilisés comme sources des paquetages
Le 14 Novembre 2016 à 21:59
Dans l'article précédent, j'ai détaillé comment retrouver et ajouter une clé servant à authentifier un dépôt de paquetages, en l'occurrence un dépôt contenant une version à jour de node.js.
Maintenant, il faut ajouter ce dépôt, mais auparavant, il me semble essentiel de pouvoir lister les dépôts actuellement utilisés : il se peut qu'un autre dépôt ait été ajouté auparavant (par exemple, on a précédemment ajouté le dépôt pour les version 4.x de node.js, et maintenant on voudrait utiliser une version 5.x).
Il n'y a malheureusement pas encore de commande pour établir cette liste, alors voici un petit script de ma composition :
#!/bin/bash # #List repositories that are not from ubuntu.com function listExtraRepo() { echo "--> $1" grep -e '^deb.*$' $1 | grep -v -e 'ubuntu\.com' | grep -o -e '[^ ]*\:\/\/[^ ]*' } for l in `find /etc/apt -name "*.list"`; do listExtraRepo $l done
En français, on cherche tous les fichiers "*.list" se trouvant dans /etc/apt
, et pour chacun d'eux, on affiche le chemin et le nom du fichier, puis toutes les urls n'étant pas dans "ubuntu.com".
Plus précisement, on filtre le fichier en 3 étapes:
- D'abord on ne garde que les lignes déclarant un dépôt (exit les commentaires et les lignes vides),
- Ensuite on rejette toutes les lignes contenant "ubuntu.com",
- Enfin, on extrait l'url de chaque ligne restante.
Sur mon poste, j'obtiens le résultat suivant (on remarquera que le dépot nodesource est déjà présent, puisque j'écris cet article à postériori) :
--> /etc/apt/sources.list http://www.openprinting.org/download/printdriver/debian/ https://deb.nodesource.com/node_4.x
Ubuntu : Vérifier une clé servant à ajouter un dépôt de paquetages externe
Le 03 Novembre 2016 à 20:31
Je me suis mis récemment à la programmation d'application HTML5, et pour cela, il faut installer un outil essentiel : node.js
Malheureusement, la version proposé via les dépôts de base d'Ubuntu pour ma "vieille" version (14.04 LTS) est trop vieille et ne sera pas mise à jour, et de toute façon l'outil évolue trop vite. J'ai donc cherché et trouvé un dépôt alternatif : NodeSource
Cependant, la méthode d'installation préconisé implique l’exécution d'un script avec les droits administrateur. Aidé d'un post sur askubuntu, j'ai examiné les commandes à exécuter.
La première commande implique d'ajouter une clé de chiffrement au trousseau utilisé par ubuntu pour récupérer les paquetages de logiciels : sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 68576280
. Mais est-ce bien la bonne clé ?
Comment vérifier la clé ?
Aller sur le site keyserver.ubuntu.com (en https), et chercher 'nodesource', qui est le nom du domaine à rajouter. Puis chercher '68576280' qui est l'empreinte courte à rajouter : on trouve effectivement la signature du site.
On peut ensuite comparer cette signature à celle référencée dans le script : si elle sont bien semblable, c'est bon.
Comment lister les clés reconnues ?
Il suffit d'invoquer la commande :
apt-key list
Ce qui affiche une liste comme celle qui suit :
/etc/apt/trusted.gpg -------------------- pub 1024D/437D05B5 2004-09-12 uid Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com> sub 2048g/79164387 2004-09-12 pub 1024D/FBB75451 2004-12-30 uid Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com> pub 4096R/C0B21F32 2012-05-11 uid Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com> pub 4096R/EFE21092 2012-05-11 uid Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com> pub 1024D/3E5C1192 2010-09-20 uid Ubuntu Extras Archive Automatic Signing Key <ftpmaster@ubuntu.com> pub 2048R/4CFD1E2F 2013-02-27 uid OpenPrinting (OpenPrinting Key) <webmaster@openprinting.org> sub 2048R/D28F4FAC 2013-02-27 pub 4096R/68576280 2014-06-13 uid NodeSource <gpg@nodesource.com> sub 4096R/AA01DA2C 2014-06-13
Ma routine sportive : 10 minutes 3 fois par semaine
Le 05 Juin 2016 à 17:11
Depuis janvier, j'ai fabriqué l'habitude de pratiquer quelques exercices de sport au réveil. On est maintenant en juin, l'habitude est donc prise et je vais donc décrire ma routine, qui prend 10 minutes seulement trois fois par semaines, par exemple le lundi, le mercredi et le vendredi.
Bien entendu, il faut une condition physique compatible avec une activité physique, consultez votre médecin et augmentez progressivement l'intensité de l'effort.
Cliquer sur les liens pour obtenir les planches descriptives.
Tout d'abord on s'échauffe environ 2 minutes en sautant sur place et en agitant les bras.
Ensuite on enchaîne la série d'exercices suivante :
- 10 flexions
- 10 pompes
- 10 secondes de gainage
On répète cette série un nombre de fois qui dépend du niveau de forme.
À la fin des répétitions, il est conseillé de marcher quelques minutes et de s'étirer.
Personnellement j'ai commencé à 4 répétitions, et j'ai attendu 2 semaines avant d'augmenter ce nombre, passant ainsi à 5, puis à 6 répétitions.
Lorsque j'ai attrapé la grippe, je n'ai pas pratiqué cette routine par précaution -je ne le sentais pas-, puis j'ai repris depuis le début (4 répétitions puis 5 puis 6)
Pour aller plus loin
Maintenant qu'un semestre est passé et que ma condition physique le permet, je viens de modifier l'exercice de flexion pour l'adapter à ma pratique de l'aïkido : avec un bokken, je fais un mouvement de coupe (suburi) en même temps que les flexions (évidemment je fais attention au plafond alors mon mouvement n'est pas optimal).
On verra à la fin de l'année pour rajouter un autre exercice !
Fessée or not fessée ?
Le 08 Mars 2015 à 19:12
Le 4 mars 2015, le Comité Européen des Droits Sociaux (CEDS), un
organe du Conseil de l'Europe, a condamné la France pour ne pas avoir
prévu dans son droit d'interdiction suffisamment
claire, contraignante et précise des châtiments corporels infligés aux
enfants ni par la loi ni par la jurisprudence
.
Je suis assez perplexe sur l'éventualité d'une interdiction de la fessée, car c'est grâce à ce que j'appelle rétrospectivement «La Grosse Fessée du Printemps» que j'ai réussi ma scolarité en primaire (j'ai même eu +10 points du jour au lendemain, une fois). Il serait toutefois hasardeux de généraliser ma réaction personnelle à l'ensemble des éduqués, ainsi que de généraliser le discernement de mes parents à l'ensemble des éducateurs.
En outre, j'ai l'intime conviction que cette interdiction arrivera aussi en France tôt ou tard, qu'on le veuille ou non.
À partir de là, au lieu de s'apitoyer sur le chaos social qui nous menace comme le font beaucoup de monde –à en croire les médias–, je pense qu'il est plus profitable de se familiariser avec des principes éducatifs qui rendraient les châtiments corporels inutiles (je parle de principes plutôt que de méthodes, car chaque enfant est différent), et de les mettre en application du mieux possible.
Je suis d'autant plus motivé que je peux appliquer dès maintenant ces principes. J'ai donc commencé à lire un premier ouvrage sur le sujet.
Affaire à suivre...
Marinade à l'asiatique
Le 23 Février 2015 à 07:30
Cette marinade pour les viandes est une adaptation de celle proposée par Norbert Tarayre dans son émission "Commis d'office" à l'occasion d'une poêlée asiatique. La différence avec la recette d'origine : je n'utilise pas d'huile de sésame (moins par goût que par non envie d'acheter une bouteille spécialement pour ça) ; je n'utilise pas le nuoc mam que je trouve très très fort, je le remplace par du vinaigre de Xérès pour donner à la place une touche d'aigre ; je remplace une c.a.s. de miel par 2 c.a.s. de mirin. Au final, on obtient donc une saveur aigre-douce-salée plutôt que du sucré-salé.
Ingrédients
- 1 c.a.s. de miel
- 2 c.a.s. de mirin
- 2 c.a.s. de sauce d'huître
- 3 c.a.s. de vinaigre de Xérès
- 4 c.a.s. de sauce de soja
- 1 citronnelle finement émincée
- râpé de zeste de citron vert
Recette
Mélanger tous les ingrédients. Faire mariner la viande finement émincée. Saisir la viande quelques instants dans un wok très chaud avec un peu d'huile.
Bonnes résolutions 2015
Le 02 Février 2015 à 19:00
Mieux vaut tard que jamais, voici une liste de bonnes résolutions publiques pour cette années (cette liste n'inclut donc pas les bonnes résolutions d'ordre privées).
- Publier régulièrement des articles sur ce blog.
- Travailler sur la suite de mon roman : consolider les éléments du récit, la description du monde, etc... La rédaction initiale DOIT être terminée fin 2015, pour publication courant 2016.
- Figer une version de mon plugin maven pour générer des Javabeans à partir d'une description en XML.
- Utiliser ce plugin pour commencer la réécriture/refonte de mon framework générique pour les jeux 2D.
Recharger son passe Navigo sous Linux
Le 01 Décembre 2014 à 06:45
J'ai testé avec succès ce matin la procédure décrite à cette adresse.
Le point important est de faire croire au site navigo qu'on est sur un système connu (Windows ou OSX), et donc d'avoir une description complète de l'user agent.
En l'occurrence, j'ai utilisé les valeurs suivantes :
- User agent
- Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
- App code name
- Mozilla
- App Name
- Netscape
- App version
- 5.0 (Windows)
- Platform
- Win64
Pour rappel (au cas où la page d'origine disparaît), voici la procédure en gros :
- Déterminer le modèle de lecteur avec
lsusb
- Pour ma part, j'ai un lecteur compatible PC/SC, donc j'installe les outils
pcsc_scan
(packagepcsc-tools
pour ubuntu) etpcscd
. - Je vérifie que ça fonctionne avec
pcsc_scan
(reconnaissance du lecteur, lecture de la carte) - Sur le site navigo, je change d'user agent pour faire croire que j'utilise un système officiellement supporté.
- Et voilà !