Ce code postal existe, et est attribué à plusieurs villes. Néanmoins, une en particulier a attiré mon attention : 0.
Au départ, je pensais qu'une ville s'appelait "O" comme l'eau et je trouvais ça fou mais en le collant dans mon IDE, j'ai vu que c'était un chiffre.
Impossible me dis-je ! Que nenni ! Une recherche Googol me prouve le contraire avec le site education.gouv.fr. Il semble qu'officiellement 0 existe.
Passé l'étonnement, je clique sur "Localisez" et arrive sur cette page de localisation qui me dit toujours que "0" existe au code postal 24560. Arrivé à ce point, j'ai juste envie de déménager là bas. Sérieusement.
C'est pour que dans un dernier élan, je m'empresse de savoir où se trouve cette ville magique en cliquant sur situer sur la carte. Là, une Google Maps (sigh) s'ouvre ne me montrant pas une ville appelée 0 mais Faux. Et là, tout s'explique.
On sent bien que le gouverment utilise un tableur et que "Faux" s'est transformé en "0" et que rien n'a été corrigé après :)
]]>Plus comme un petit pense-bête qu'un vrai article, voici comment je monte/démonte un dossier via SSHFS
#!/bin/sh
sshfs -o port=2200,follow_symlinks user@192.168.0.42:/var/www/ /var/www/web
if [ "$?" -eq 0 ]; then
echo "/var/www/web volume mounted."
else
echo "Error mounting /var/www/web."
fusermount -uz /var/www/web
if [ "$?" -eq 0 ]; then
echo "/var/www/web volume unmounted"
fi
fi
En lançant ce script, ça toggle le mount/unmount. Utile quand on perd la connexion !
]]>Ce MOOC sur la plate-forme Fun MOOC avait pour intitulé « L'essentiel pour maîtriser Linux ».
Je ne savais pas trop à quoi m'attendre avec 30 minutes de vidéos par semaine pendant 6 semaines. C'est bien court pour tous les sujets abordés (distributions, lignes de commande, réseau, manipulations de fichier, …).
J'en suis fier même si…
Le sujet m'intéressait et j'avais déjà des connaissances en auto-didacte. Je voulais vérifier si elles étaient bonnes ; conclusion : elles le sont : voici mon attestation acquise avec une note de 98% − les 2% étant surtout dû à la plate-forme, j'y reviendrai.
J'ai signalé tous les défauts qui vont suivre à l'équipe suite à l'examen final, je n'ai donc aucune honte à les « afficher » ainsi.
C'est la 1ère fois que je suis un MOOC sur cette plate-forme et … je pense que c'est la dernière. Voici une liste (non-exhaustive) de ce qui m'a déçu, ralenti, bloqué, carrément fait vomir :
Je suis désolé pour l'équipe de professeurs qui n'ont sans doute pas le matériel adapté mais les vidéos étaient moches. Les leçons étaient lues depuis des slides toutes faites. Entendre quelqu'un lire un sommaire d'une voix monotone n'est pas motivant du tout.
Par conséquence, je n'ai regardé que la première entièrement, la seconde en avance rapide (seul avantage du lecteur vidéo) et pas du tout le reste.
Bien m'en a pris, j'ai réussi les quizzes sans les regarder. J'ai gagné du temps et de la confiance en ma capacité d'apprentissage en auto-didacte.
Pour avoir fait des MOOC sur d'autres plates-formes (coursera par exemple), d'habitudes après les leçons, je vais voir les commentaires, les questions ou des indices. Là, soit il n'y avait rien, soit des critiques, soit des questions (que je me posais) sur des questions de quiz incompréhensibles.
Je suis quand même bien content d'avoir cette attestation même si, en vérité, elle ne vaut pas son statut !
]]>Voici comment je m'y suis pris au final après pas mal de tatonnements et d'erreurs.
Ajouter ceci à la fin de /etc/ssh/sshd_config
:
# Subsystem sftp internal-sftp
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
# This section must be placed at the very end of sshd_config
# Match Group sftponly
Match User tartenpion
ChrootDirectory %h
ForceCommand internal-sftp
# ForceCommand /usr/lib/openssh/sftp-server
# For additional paranoia, disallow all types of port forwardings.
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
Redémarrer SSH avec sudo service ssh restart
par exemple
Il faut que /home
et /home/tartenpion
soit à root
en mode 755. Donc :
sudo chown root /home
sudo chown root /home/tartenpion
sudo chmod 755 /home
sudo chmod 755 /home/tartenpion
Par sécurité, on peut faire usermod tartenpion -s /bin/false
afin que tartenpion
ne puisse qu'utiliser SFTP et pas SSH.
Merci à partofthething pour la réponse au problème de droit que j'avais sur ma Debian 8 (la ligne Subsystem sftp internal-sftp -f AUTH -l VERBOSE
au lieu de Subsystem sftp internal-sftp
(qu'on voit partout) ou de Subsystem sftp /usr/lib/openssh/sftp-server
(que j'avais essayé et qui fonctionnait… presque)
Je me suis inspiré de ce plugin de Wordpress et je lui ai « piqué » la classe HTML2Markdown.
Ensuite, plutôt que de faire la requête à la main et donc passer beaucoup de temps à étudier le fonctionnement profond de known, j'ai fait un truc… sale… Oui… Idno\Common\Entity::getFromAll([], [], 99999);
Je récupère les 99999 premières entités de la base. Sachant que je devais en avoir une 100aine et sans filtrer. C'était pour gagner du temps :-(
Enfin, j'ai formaté le JSON de la même manière que le plugin Wordpress suscité et l'affaire était pliée.
Ce fichier exporté peut être importé directement dans une install propre de Ghost.
Si ça vous intéresse le repo est là. N'hésitez pas à forker !
]]>Il s'agit de challenges en bash. Une ligne de commande pour résoudre des problèmes de plus en plus difficiles.
Mes solutions à ce challenge ne sont pas forcément les plus simples mais elles sont justes et les plus courtes possibles ! À vous d'essayer :-)
]]>Et bien, je l'ai nettoyé, sécurisé un minimum (il reste un ticket à traiter) et mis en open-source. Vous pouvez donc maintenant l'installer sur n'importe quel serveur PHP.
Attention néanmoins, il faut que le serveur accepte l'envoi de mail, logique, mais je préviens ;-)
Vous pouvez trouver les sources sur son repo git.
]]>Mais au bout d'un moment, il ne fonctionnait plus aussi bien et avec plus de 2000 liens, il devenait ingérable. Entre temps, j'ai installé un shaarli.
Il m'en a fallu du temps pour comprendre qu'on pouvait facilement importer des liens dans Shaarli.
J'ai donc décidé de coder un p'tit script permettant de passer les liens de tumblr à shaarli.
Cela m'a pris 3 bonnes soirées : une pour comprendre comment fonctionnait un import depuis wordpress (plugin existant dont je me suis inspiré), une autre pour coder le script et un dernier pour le nettoyer et le documenter.
Mon shaarli a donc pris plus de 2000 liens, taggués comme il faut, d'un coup !
Le script est aussi hébergé sur github : https://github.com/Chouchen/tumblr2shaarli?rel=nofollow
]]>Il permet de faire une sauvegarde de fichiers, dossiers, base de données vers divers destinations via de nombreux protocoles via PHP
Utilisant pas mal les factory, ce script est donc extendable quasi à volonté. La seule limite est donc 1 seule backup pour 1 seul transport par scenario.
Ah oui, car, à la manière de backup-manager
ce script utilise des scenarii sous forme de JSON.
Dans ce scenario, vous décrivez 2 choses :
Ça donne un truc du genre :
{
"backup": {
"Mysql": {
"host" : "mysql host",
"login" : "mysql login",
"pwd" : "mysql password",
"db" : "mysql database",
"tables": "*"
}
},
"transport": {
"Sftp": {
"host" : "your URL or IP",
"port" : 22,
"login" : "your new user name",
"password" : "your new user password",
"folder" : "/backup"
}
}
}
Ensuite, le scenario est lancé en 1 ligne de code (ou presque, si on veut garder les choses propres) :
<?php
include_once 'path/to/Scenario.php';
try {
\Shikiryu\Backup\Scenario::launch('backup.json'); // whatever the file name you gave previously
} catch (\Exception $e) {
echo $e->getMessage();
}
]]>
(Quasiment) tous les ans, je fais une carte de vœux de bonne année pour ma famille sous forme d'une page web avec quelque chose d'original. Cette année, c'était un jeu de mots mêlés.
Ayant trop de données personnelles dans ce projet, mais étant fier du moteur, j'ai décidé de publier les sources de celui ci.
En gros, le principe, une grille de lettre, une liste de mots à trouver et joindre les 2 via une action utilisateur (le drag and drop pour simuler le traçage d'une droite) sur un canvas.
Niveau dépendance, rien de bien compliqué, utilisation de :
fabric (pour gérer le canvas facilement)
Le reste n'est que de l'algo de base. Je l'ai aussi hébergé sur Github