make compliant with mistune update

pull/3/head
Yax 2 years ago
parent fc61c0b9c7
commit ae83dbaf80

@ -40,11 +40,11 @@ import unicodedata
from email import utils from email import utils
from pathlib import Path from pathlib import Path
import mistune
import requests import requests
import mistune
from pygments import highlight from pygments import highlight
from pygments.formatters import html
from pygments.lexers import get_lexer_by_name from pygments.lexers import get_lexer_by_name
from pygments.formatters import html
# set user locale # set user locale
locale.setlocale(locale.LC_ALL, "") locale.setlocale(locale.LC_ALL, "")
@ -52,19 +52,15 @@ locale.setlocale(locale.LC_ALL, "")
# initialize markdown # initialize markdown
class HighlightRenderer(mistune.HTMLRenderer):
class HighlightRenderer(mistune.Renderer):
options = {"escape": False, "hard_wrap": True}
def block_code(self, code, lang=None): def block_code(self, code, lang=None):
if not lang: if lang:
return "\n<pre><code>%s</code></pre>\n" % mistune.escape(code) lexer = get_lexer_by_name(lang, stripall=True)
lexer = get_lexer_by_name(lang, stripall=True) formatter = html.HtmlFormatter()
formatter = html.HtmlFormatter() return highlight(code, lexer, formatter)
return highlight(code, lexer, formatter) return '<pre><code>' + mistune.escape(code) + '</code></pre>'
markdown = mistune.Markdown(renderer=HighlightRenderer()) markdown = mistune.create_markdown(renderer=HighlightRenderer())
def fread(filename): def fread(filename):

32
poetry.lock generated

@ -27,7 +27,7 @@ python-versions = ">=3.5"
[[package]] [[package]]
name = "mistune" name = "mistune"
version = "2.0.3" version = "2.0.4"
description = "A sane Markdown parser with useful plugins and renderers" description = "A sane Markdown parser with useful plugins and renderers"
category = "main" category = "main"
optional = false optional = false
@ -61,7 +61,7 @@ use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
[[package]] [[package]]
name = "urllib3" name = "urllib3"
version = "1.26.10" version = "1.26.11"
description = "HTTP library with thread-safe connection pooling, file post, and more." description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main" category = "main"
optional = false optional = false
@ -78,31 +78,19 @@ python-versions = "^3.8"
content-hash = "16357752f231675078b90f65812ed06814c93bbf28d5e2066a912c83e2566fb1" content-hash = "16357752f231675078b90f65812ed06814c93bbf28d5e2066a912c83e2566fb1"
[metadata.files] [metadata.files]
certifi = [ certifi = []
{file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, charset-normalizer = []
{file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"},
]
charset-normalizer = [
{file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"},
{file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"},
]
idna = [ idna = [
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
] ]
mistune = [ mistune = [
{file = "mistune-2.0.3-py2.py3-none-any.whl", hash = "sha256:e3964140c0775535fba50bd616fe180920044a64bc21850253267b07bff89924"}, {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"},
{file = "mistune-2.0.3.tar.gz", hash = "sha256:d7605b46b6156b53b7d52a465202b29a6f00f4ea4130ad5d25e9d5547d6b7e50"}, {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"},
]
pygments = [
{file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
]
requests = [
{file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
{file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
] ]
pygments = []
requests = []
urllib3 = [ urllib3 = [
{file = "urllib3-1.26.10-py2.py3-none-any.whl", hash = "sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec"}, {file = "urllib3-1.26.11-py2.py3-none-any.whl", hash = "sha256:c33ccba33c819596124764c23a97d25f32b28433ba0dedeb77d873a38722c9bc"},
{file = "urllib3-1.26.10.tar.gz", hash = "sha256:879ba4d1e89654d9769ce13121e0f94310ea32e8d2f8cf587b77c08bbcdb30d6"}, {file = "urllib3-1.26.11.tar.gz", hash = "sha256:ea6e8fb210b19d950fab93b60c9009226c63a28808bc8386e05301e25883ac0a"},
] ]

@ -10,7 +10,7 @@ des versions précédentes ou d'autres distrib les bonnes étapes pour Karmic.
D'abord il faut installer le paquet usb-modeswitch fourni dans les dépôts D'abord il faut installer le paquet usb-modeswitch fourni dans les dépôts
standards (version actuelle 1.0.2-1) : standards (version actuelle 1.0.2-1) :
``` shell ```shell
sudo apt-get install usb-modeswitch sudo apt-get install usb-modeswitch
``` ```
@ -19,7 +19,7 @@ périphérique de stockage et non pas comme un périphérique de communication.
C'est là  que la usb-modeswitch intervient... Cette commande doit être C'est là  que la usb-modeswitch intervient... Cette commande doit être
lancée à chaque branchement de la clef : lancée à chaque branchement de la clef :
``` shell ```shell
sudo usb_modeswitch --default-vendor 0x19d2 --default-product 0x2000 sudo usb_modeswitch --default-vendor 0x19d2 --default-product 0x2000
--target-vendor 0X19d2 --target-product 0x0052 -s 8 --message-endpoint 0x01 --target-vendor 0X19d2 --target-product 0x0052 -s 8 --message-endpoint 0x01
--message-content 55534243123456782000000080000c85010101180101010101000000000000 --message-content 55534243123456782000000080000c85010101180101010101000000000000

@ -20,7 +20,7 @@ fr.org/ffmpeg) pour ffmpeg apporte l'essentiel de la solution à part une
coquille sur un paramètre et le nom des librairies h264 qu'il faut adapter. La coquille sur un paramètre et le nom des librairies h264 qu'il faut adapter. La
commande ultime est donc : commande ultime est donc :
``` shell ```shell
ffmpeg -i [input_file] -r 29.97 -vcodec libx264 -s 640x480 -aspect 16:9 -flags +loop -cmp ffmpeg -i [input_file] -r 29.97 -vcodec libx264 -s 640x480 -aspect 16:9 -flags +loop -cmp
+chroma -deblockalpha 0 -deblockbeta 0 -b 768k -maxrate 1500k -bufsize 4M -bt 256k +chroma -deblockalpha 0 -deblockbeta 0 -b 768k -maxrate 1500k -bufsize 4M -bt 256k
-refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7

@ -8,7 +8,7 @@ rajouter le mode dynamiquement. J'ai privilégié la seconde option. La commande
gtf permet de calculer les bons paramètres en fonction d'une résolution et gtf permet de calculer les bons paramètres en fonction d'une résolution et
d'un taux de rafraîchissement : d'un taux de rafraîchissement :
``` shell ```shell
$ gtf 1280 800 60 $ gtf 1280 800 60
# 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz # 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz
Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync
@ -17,7 +17,7 @@ Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSy
Le résultat peut être passé à la commande xrandr pour ajouter le mode Le résultat peut être passé à la commande xrandr pour ajouter le mode
dynamiquement. Voici le script complet à exécuter au démarrage : dynamiquement. Voici le script complet à exécuter au démarrage :
``` shell ```shell
xrandr --newmode "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync xrandr --newmode "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync
xrandr --addmode LVDS1 "1280x800_60.00" xrandr --addmode LVDS1 "1280x800_60.00"
xrandr --output LVDS1 --mode "1280x800_60.00" xrandr --output LVDS1 --mode "1280x800_60.00"

@ -20,13 +20,13 @@ CI](http://jenkins-ci.org/) dans le conteneur de Servlet
[Tomcat](http://tomcat.apache.org/) sous Ubuntu Server 10.4. D'abord on installe [Tomcat](http://tomcat.apache.org/) sous Ubuntu Server 10.4. D'abord on installe
Tomcat 6 avec le système de paquets : Tomcat 6 avec le système de paquets :
``` shell ```shell
sudo apt-get install tomcat6 sudo apt-get install tomcat6
``` ```
Ensuite on installe manuellement le WAR de Jenkins CI : Ensuite on installe manuellement le WAR de Jenkins CI :
``` shell ```shell
# move to tomcat webapps dir # move to tomcat webapps dir
cd /var/lib/tomcat6/webapps cd /var/lib/tomcat6/webapps
sudo wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war sudo wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
@ -35,7 +35,7 @@ sudo wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
Si Tomcat était lancé, Jenkins va être déployé et disponible en quelques Si Tomcat était lancé, Jenkins va être déployé et disponible en quelques
secondes. Sinon démarrez Tomcat : secondes. Sinon démarrez Tomcat :
``` shell ```shell
sudo /etc/init.d/tomcat6 start sudo /etc/init.d/tomcat6 start
``` ```

@ -44,7 +44,7 @@ qui appelle le script PERL de teebeenator et qui sauve les donnée dans un
fichier texte. Cette collecte est réalisée toutes les 5 minutes grâce à fichier texte. Cette collecte est réalisée toutes les 5 minutes grâce à
CRON. CRON.
``` shell ```shell
perl livebox.pl --user=admin --pass=<VotreMotDePasse> perl livebox.pl --user=admin --pass=<VotreMotDePasse>
-page=infosys_main -v 2>/dev/null | html2text >/adsl_stats.txt -page=infosys_main -v 2>/dev/null | html2text >/adsl_stats.txt
``` ```
@ -68,7 +68,7 @@ unités, le libellé de chaque variable graphée
Voici shell script du plugin adsl_download qui collecte la valeur de la bande Voici shell script du plugin adsl_download qui collecte la valeur de la bande
passante descendante : passante descendante :
``` shell ```shell
if [ $# = 1 ]; then if [ $# = 1 ]; then
echo "graph_title Bandwidth - Download" echo "graph_title Bandwidth - Download"
echo "graph_category ADSL" echo "graph_category ADSL"

@ -21,7 +21,7 @@ le développement d'un logiciel écrit en Java qui utilise le système de build
[Apache Maven](http://fr.wikipedia.org/wiki/Apache_Maven) pour construire le [Apache Maven](http://fr.wikipedia.org/wiki/Apache_Maven) pour construire le
projet. D'abord il faut installer Maven projet. D'abord il faut installer Maven
``` shell ```shell
$ apt-get install maven2 $ apt-get install maven2
``` ```

@ -21,7 +21,7 @@ exécutables pour Fedora
Voici le source du fichier INSTALL Voici le source du fichier INSTALL
``` shell ```shell
cp tuxboot.pro tuxboot-pro.bak cp tuxboot.pro tuxboot-pro.bak
sed -i '/^RESOURCES/d' tuxboot.pro sed -i '/^RESOURCES/d' tuxboot.pro
lupdate-qt4 tuxboot.pro lupdate-qt4 tuxboot.pro

@ -16,7 +16,7 @@ télécharger les sources Python. Les manipulations suivantes sont réalisées
sur une Debian 6 avec Python, Nginx et OpenSSH installés. sur une Debian 6 avec Python, Nginx et OpenSSH installés.
``` shell ```shell
# on installe sous /srv # on installe sous /srv
cd /srv cd /srv
wget http://sourceforge.net/projects/sabnzbdplus/files/sabnzbdplus/0.7.6/ wget http://sourceforge.net/projects/sabnzbdplus/files/sabnzbdplus/0.7.6/
@ -32,7 +32,7 @@ générale et **aussi restreindre l'adresse d'écoute** à l'interface localhost
allons mettre en place par la suite. On peut automatiser le démarrage en allons mettre en place par la suite. On peut automatiser le démarrage en
rajoutant un script sabnzbd sous /etc/init.d tel que celui-ci : rajoutant un script sabnzbd sous /etc/init.d tel que celui-ci :
``` shell ```shell
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: sabnzd # Provides: sabnzd
# Required-Start: $local_fs $remote_fs # Required-Start: $local_fs $remote_fs
@ -80,7 +80,7 @@ On active ce script sous Debian avec update-rc.d sabnzbd defaults. Finalement on
configure Nginx comme proxy. Je me suis borné à un accès HTTP protégé par configure Nginx comme proxy. Je me suis borné à un accès HTTP protégé par
une authentification utilisateur / mot de passe mais HTTPS est recommandé. une authentification utilisateur / mot de passe mais HTTPS est recommandé.
``` nginx ```nginx
server { server {
listen 80; listen 80;
server_name www.yourserver.yourdomain; server_name www.yourserver.yourdomain;
@ -107,7 +107,7 @@ Nginx. A ce stade SABnzbd fonctionne à moitié :-) En effet SABnzbd ne va pas
servir toutes les ressources (HTML / CSS) et il faut les lier statiquement à servir toutes les ressources (HTML / CSS) et il faut les lier statiquement à
Nginx. Nginx.
``` shell ```shell
# on lie les ressources statiques du thème Plush # on lie les ressources statiques du thème Plush
mkdir -p /var/www/www/sabnzbd mkdir -p /var/www/www/sabnzbd
ln -s /srv/sabnzbd/interfaces/Plush/templates/static /var/www/www/sabnzbd/static ln -s /srv/sabnzbd/interfaces/Plush/templates/static /var/www/www/sabnzbd/static

@ -78,7 +78,7 @@ leur fonctionnement en groupe. Pour cela, on doit générer une clef d'authenfic
les noeuds du cluster. L'utilitaire **corosync-keygen** permet de générer cette clef à partir d'entrées clavier les noeuds du cluster. L'utilitaire **corosync-keygen** permet de générer cette clef à partir d'entrées clavier
pseudo-aléatoires qu'il faut ensuite sécuriser et copier sur les autres noeuds. pseudo-aléatoires qu'il faut ensuite sécuriser et copier sur les autres noeuds.
``` shell ```shell
# génération de la clef depuis vm-node1 # génération de la clef depuis vm-node1
corosync-keygen corosync-keygen
mv authkey /etc/corosync/authkey mv authkey /etc/corosync/authkey
@ -217,7 +217,7 @@ Vous remarquerez qu'on va plus loin que la définition d'une ressource Apache. L
Pacemaker d'utiliser la page de statut d'Apache pour décider d'une bascule. Il ne faut donc pas oublier de Pacemaker d'utiliser la page de statut d'Apache pour décider d'une bascule. Il ne faut donc pas oublier de
configurer cette URL dans Apache pour que cela fonctionne : configurer cette URL dans Apache pour que cela fonctionne :
``` apache ```apache
<Location /server-status> <Location /server-status>
SetHandler server-status SetHandler server-status
Order deny,allow Order deny,allow

@ -31,7 +31,7 @@ avoir une trace des fichiers synchronisés. J'ai dégoté le programme [blat](ht
pour l'envoi d'email facile depuis un batch, il y en a sûrement plein d'autres. Voici un pour l'envoi d'email facile depuis un batch, il y en a sûrement plein d'autres. Voici un
script batch assez proche de celui que j'utilise : script batch assez proche de celui que j'utilise :
``` bat ```bat
REM ================================================================ REM ================================================================
REM Synchroniser les changements REM Synchroniser les changements
REM ================================================================ REM ================================================================

@ -54,7 +54,7 @@ L'installation de PEAR sur Debian est galette.
Puis, on enregistre le canal Horde sur Pear et on installe les composants Puis, on enregistre le canal Horde sur Pear et on installe les composants
nécessaires : nécessaires :
``` shell ```shell
mkdir -p /var/www/horde mkdir -p /var/www/horde
cd /var/www/horde cd /var/www/horde
pear channel-discover pear.horde.org pear channel-discover pear.horde.org
@ -74,7 +74,7 @@ Dans le cas de NginX sur Debian, il faut ajuster les permissions du répertoire.
Et il faut créer les fichiers de configuration de chaque application à partir Et il faut créer les fichiers de configuration de chaque application à partir
des modèles fournis : des modèles fournis :
``` shell ```shell
cd /var/www/horde/config cd /var/www/horde/config
for f in *.dist; do cp $f `basename $f .dist`; done for f in *.dist; do cp $f `basename $f .dist`; done
cd /var/www/horde/kronolith/config cd /var/www/horde/kronolith/config
@ -90,7 +90,7 @@ for f in *.dist; do cp $f `basename $f .dist`; done
Il reste à configurer NginX. Je force l'utilisation de HTTPS en redirigeant les Il reste à configurer NginX. Je force l'utilisation de HTTPS en redirigeant les
requêtes HTTP vers la version sécurisée du site. requêtes HTTP vers la version sécurisée du site.
``` nginx ```nginx
server { server {
listen 80; listen 80;
server_name groupware.exemple.fr; server_name groupware.exemple.fr;

@ -34,7 +34,7 @@ Il faut remplacer *0* par *127.0.0.1* dans le fichier
Voici la version modifiée : Voici la version modifiée :
``` shell ```shell
QMAILDUID=`id -u qmaild` QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild` NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/lib/qmail/control/concurrencyincoming` MAXSMTPD=`cat /var/lib/qmail/control/concurrencyincoming`

@ -152,7 +152,7 @@ nouveau s'adresser aux sentinelles pour récupérer l'adresse du Redis maître.
Voici un exemple typique de code en Python : Voici un exemple typique de code en Python :
``` python ```python
from redis.sentinel import Sentinel from redis.sentinel import Sentinel
sentinel = Sentinel( sentinel = Sentinel(
[('192.168.0.51', 26379), ('192.168.0.52', 6379)], socket_timeout=0.1) [('192.168.0.51', 26379), ('192.168.0.52', 6379)], socket_timeout=0.1)

@ -28,7 +28,7 @@ l'arrêt fiable du processus en manipulant son PID.
Voici un exemple de script d'init à la sauce Debian pour un programme Voici un exemple de script d'init à la sauce Debian pour un programme
JAVA : JAVA :
``` shell ```shell
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: monprog # Provides: monprog
# Required-Start: $local_fs $remote_fs $network $syslog # Required-Start: $local_fs $remote_fs $network $syslog
@ -185,7 +185,7 @@ Dans cet exemple, on envoie un signal SIGINT à monprog pour lui demander un arr
#### Interception d'un signal SIGINT en JAVA #### Interception d'un signal SIGINT en JAVA
``` java ```java
// register a shutdown hook // register a shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread() { Runtime.getRuntime().addShutdownHook(new Thread() {
@Override @Override

@ -17,7 +17,7 @@ En pré-requis, on suppose que Qemu est installé sur le système hôte. On
vérifie que le processeur ARM du Raspberry est supporté par Qemu avec la vérifie que le processeur ARM du Raspberry est supporté par Qemu avec la
commande suivante : commande suivante :
``` shell ```shell
$ qemu-system-arm -cpu ? $ qemu-system-arm -cpu ?
``` ```
@ -34,7 +34,7 @@ La modification d'un fichier est nécessaire pour que la distribution
fonctionne avec Qemu. On effectue donc un premier démarrage particulier avec fonctionne avec Qemu. On effectue donc un premier démarrage particulier avec
BASH en processus INIT pour la réaliser. BASH en processus INIT pour la réaliser.
``` shell ```shell
$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2014-06-20-wheezy-raspbian.img $ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2014-06-20-wheezy-raspbian.img
``` ```
@ -66,7 +66,7 @@ D'abord on élargit le disque avec l'utilitaire qemu-resize.
Ensuite on démarre la Raspbian avec Qemu Ensuite on démarre la Raspbian avec Qemu
``` shell ```shell
$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2014-06-20-wheezy-raspbian.img $ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2014-06-20-wheezy-raspbian.img
``` ```

@ -37,7 +37,7 @@ codes](https://wiki.archlinux.org/index.php/Color_Bash_Prompt). Il ne faut pas
oublier de réinitialiser la couleur en fin de prompt pour que ça ne coule pas oublier de réinitialiser la couleur en fin de prompt pour que ça ne coule pas
sur le reste de la ligne avec un reset. je suis adepte des prompts concis : sur le reste de la ligne avec un reset. je suis adepte des prompts concis :
``` shell ```shell
White='\e[0;37m' # White White='\e[0;37m' # White
Red='\e[0;31m' # Red Red='\e[0;31m' # Red
Reset=$(tput sgr0) Reset=$(tput sgr0)
@ -55,7 +55,7 @@ est un parfait exemple facile à configurer.
les alias sont des substitutions de commandes. On peut les utiliser pour éviter les alias sont des substitutions de commandes. On peut les utiliser pour éviter
de mémoriser des paramètres compliquées en définissant de nouvelles commandes : de mémoriser des paramètres compliquées en définissant de nouvelles commandes :
``` shell ```shell
alias la='ll -A' # 'la' : voir les fichiers cachés alias la='ll -A' # 'la' : voir les fichiers cachés
alias lk='ls -lSr' # 'lk' : trier par taille alias lk='ls -lSr' # 'lk' : trier par taille
``` ```
@ -63,7 +63,7 @@ alias lk='ls -lSr' # 'lk' : trier par taille
Ou bien on peut redéfinir le comportement d'une commande en créant un alias du Ou bien on peut redéfinir le comportement d'une commande en créant un alias du
même nom forçant des paramètres : même nom forçant des paramètres :
``` shell ```shell
# forcer une demande de confirmation pour éviter les boulettes # forcer une demande de confirmation pour éviter les boulettes
alias rm='rm --interactive --verbose' alias rm='rm --interactive --verbose'
alias mv='mv --interactive --verbose' alias mv='mv --interactive --verbose'
@ -77,7 +77,7 @@ exécutables accessibles dans le PATH (/usr/local/bin au hasard).
Voici les deux fonctions que j'utilise assez régulièrement : Voici les deux fonctions que j'utilise assez régulièrement :
``` shell ```shell
function bak() { cp "$1" "$1_`date +%Y-%m-%d_%H-%M-%S`" ; } function bak() { cp "$1" "$1_`date +%Y-%m-%d_%H-%M-%S`" ; }
function extract() # Handy Extract Program function extract() # Handy Extract Program
@ -111,7 +111,7 @@ bashrc testent si dircolors est présent et l'utilise en rajoutant --color à
ls par le biais d'un... alias (bravo à ceux qui n'ont pas lâché). Généralement, ls par le biais d'un... alias (bravo à ceux qui n'ont pas lâché). Généralement,
on a une section de ce genre dans notre .bashrc : on a une section de ce genre dans notre .bashrc :
``` shell ```shell
# enable color support of ls # enable color support of ls
if [ -x /usr/bin/dircolors ]; then if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
@ -204,7 +204,7 @@ pour l'affichage des répertoire mais en style non gras, je mets par contre en
gras les répertoire ouverts à tous les vents (avec les droits d'écriture sur le gras les répertoire ouverts à tous les vents (avec les droits d'écriture sur le
groupe *other*), et en rouge non gras les fichiers exécutables. groupe *other*), et en rouge non gras les fichiers exécutables.
``` shell ```shell
export LS_COLORS="di=00;34:ow=01;34:ex=00;31" export LS_COLORS="di=00;34:ow=01;34:ex=00;31"
``` ```

@ -21,7 +21,7 @@ Python dans un *virtualenv* de préférence, avec le gestionnaire de paquets
Voici un exemple d'envoi d'e-mail en Python : Voici un exemple d'envoi d'e-mail en Python :
``` python ```python
import requests import requests
headers = {'Content-Type': 'application/json; charset=utf-8'} headers = {'Content-Type': 'application/json; charset=utf-8'}
msg = { msg = {
@ -38,7 +38,7 @@ else:
Et voici le même exemple en ligne de commande avec CURL : Et voici le même exemple en ligne de commande avec CURL :
``` shell ```shell
curl -X POST -H "Content-Type: application/json; charset=utf-8" curl -X POST -H "Content-Type: application/json; charset=utf-8"
-d '{"to":"bill@phoenix.com", "subject":"Got it", -d '{"to":"bill@phoenix.com", "subject":"Got it",
"content":"See you soon!\n\n-- John"}' "content":"See you soon!\n\n-- John"}'

@ -93,7 +93,7 @@ déroulée.
Voici donc les grandes lignes de la partie **récupération des données** : Voici donc les grandes lignes de la partie **récupération des données** :
``` shell ```shell
# Les fichiers de configuration de NginX # Les fichiers de configuration de NginX
cp -r /etc/nginx/* $TARGET_DIR/nginx/. cp -r /etc/nginx/* $TARGET_DIR/nginx/.
@ -119,7 +119,7 @@ synchronisée par Owncloud car on l'a copié en douce. Il faut forcer Owncloud
rescanner son répertoire avec la commande suivante exécutée en tant rescanner son répertoire avec la commande suivante exécutée en tant
qu'utilisateur *www-data*: qu'utilisateur *www-data*:
``` shell ```shell
su -c "/usr/bin/php /var/www/owncloud/console.php files:scan all" \ su -c "/usr/bin/php /var/www/owncloud/console.php files:scan all" \
-s /bin/sh www-data -s /bin/sh www-data
``` ```

@ -157,7 +157,7 @@ le fichier */etc/fail2ban/action.d/sendmail-cron.conf* complet :
Dans mon cas, la tâche CRON est journalière : Dans mon cas, la tâche CRON est journalière :
``` shell ```shell
# fail2ban report # fail2ban report
@daily touch /var/run/fail2ban/mail.flag @daily touch /var/run/fail2ban/mail.flag
``` ```

@ -40,7 +40,7 @@ ajoute la directive *display-setup-script* dans la section SeatDefaults :
et voici le script **lightdm-monitor.sh** : et voici le script **lightdm-monitor.sh** :
``` shell ```shell
if (xrandr | grep "VGA1 disconnected"); then if (xrandr | grep "VGA1 disconnected"); then
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \ xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
--rotate normal --output DP1 --off --output VGA1 --off --rotate normal --output DP1 --off --output VGA1 --off
@ -63,7 +63,7 @@ programme en ligne de commande de configurationde XFCE) adéquate.
Finalement, cela donne le script **xfce-monitor.sh** au démarrage de la session: Finalement, cela donne le script **xfce-monitor.sh** au démarrage de la session:
``` shell ```shell
sleep 3 sleep 3
if (xrandr | grep "VGA1 disconnected"); then if (xrandr | grep "VGA1 disconnected"); then
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \ xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \

@ -110,7 +110,7 @@ jour et envoie un e-mail par évènement avec le fichier ICS en pièce jointe.
L'envoi est réalisé par l'utilitaire **mpack**. Le résultat final espéré pour L'envoi est réalisé par l'utilitaire **mpack**. Le résultat final espéré pour
notre exemple est ce script : notre exemple est ce script :
``` shell ```shell
# #
STARTDATE="`date -d '2015-09-14 10:30:00-000' '+%a %e %b %R'`" STARTDATE="`date -d '2015-09-14 10:30:00-000' '+%a %e %b %R'`"
SUMMARY="Déjeuner avec M." SUMMARY="Déjeuner avec M."
@ -167,7 +167,7 @@ régulière.
Voci le script awk complet : Voci le script awk complet :
``` awk ```awk
BEGIN { BEGIN {
FS="\n" FS="\n"
OFS="" OFS=""

@ -131,7 +131,7 @@ s'inspirant de [cette
discussion](http://askubuntu.com/questions/360466/ubuntu-touch-officially-launched-version-how-to-sync-contacts) discussion](http://askubuntu.com/questions/360466/ubuntu-touch-officially-launched-version-how-to-sync-contacts)
sur AskUbuntu. D'abord on configure syncevolution : sur AskUbuntu. D'abord on configure syncevolution :
``` shell ```shell
# les valeurs username, password et syncurl doivent être adaptées # les valeurs username, password et syncurl doivent être adaptées
syncevolution --keyring=no --configure --template webdav username=yax password=??? syncurl="mycloud.madyanne.fr" target-config@owncloud syncevolution --keyring=no --configure --template webdav username=yax password=??? syncurl="mycloud.madyanne.fr" target-config@owncloud
syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud
@ -163,7 +163,7 @@ valeurs dans le shell script qu'on va lancer en CRON, merci
[Alexandre](http://askubuntu.com/questions/611761/syncevolution-in-cronjob-to-sync-the-ubuntu-phone-via-caldav-arddav). [Alexandre](http://askubuntu.com/questions/611761/syncevolution-in-cronjob-to-sync-the-ubuntu-phone-via-caldav-arddav).
Donc finalement c'est ce script qu'on va mettre sous CRON : Donc finalement c'est ce script qu'on va mettre sous CRON :
``` shell ```shell
export DISPLAY=:0.0 export DISPLAY=:0.0
export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35) export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35)
syncevolution owncloud contacts syncevolution owncloud contacts

@ -64,7 +64,7 @@ port 80 alors qu'on l'attaque sur le port 8080. Un moyen de contourner ce
problème si l'application n'est pas configurable, consiste à installer un NginX problème si l'application n'est pas configurable, consiste à installer un NginX
sur la machine hôte pour faire office de proxy. sur la machine hôte pour faire office de proxy.
``` nginx ```nginx
# Proxy # Proxy
upstream vbox-vm { upstream vbox-vm {

@ -71,7 +71,7 @@ Golang pour gérer la concurrence de traitement.
Pour les fans de code, voici celui du serveur HTTP avec cache : Pour les fans de code, voici celui du serveur HTTP avec cache :
``` go ```go
package main package main
import ( import (

@ -73,7 +73,7 @@ jette dans le puits, où il resteront... jusqu'au prochain redémarrage du serve
Voici le script en Korn Shell : Voici le script en Korn Shell :
``` shell ```shell
#!/bin/ksh #!/bin/ksh
if [ $# != 1 ]; then if [ $# != 1 ]; then

@ -57,8 +57,7 @@ page.
Voici le *template* Hugo des commentaires qui utilise la fonction **getJSON** pour récupérer les commentaires Voici le *template* Hugo des commentaires qui utilise la fonction **getJSON** pour récupérer les commentaires
de la page en cours : de la page en cours :
``` html ```html
{% raw %}
<div id="stacosys-comments"> <div id="stacosys-comments">
{{ $restParam := (printf "/comments?token=%v&url=%v" .Site.Params.widgets.stacosys_token .URL) }} {{ $restParam := (printf "/comments?token=%v&url=%v" .Site.Params.widgets.stacosys_token .URL) }}
{{ $resp := getJSON .Site.Params.widgets.stacosys_url $restParam }} {{ $resp := getJSON .Site.Params.widgets.stacosys_url $restParam }}
@ -80,13 +79,11 @@ de la page en cours :
</p> </p>
{{ end }} {{ end }}
</div> </div>
{% endraw %}
``` ```
et un exemple de données renvoyée par Stacosys : et un exemple de données renvoyée par Stacosys :
``` json ```json
{% raw %}
{ {
"data": [ "data": [
{ {
@ -103,7 +100,6 @@ et un exemple de données renvoyée par Stacosys :
} }
] ]
} }
{% endraw %}
``` ```
Il reste une interaction entre le serveur HTTP et Stacosys pour poster des Il reste une interaction entre le serveur HTTP et Stacosys pour poster des

@ -99,7 +99,7 @@ A ce niveau, on peut essayer de faire communiquer deux applications à travers R
Code du producteur : Code du producteur :
``` python ```python
#!/usr/bin/env python #!/usr/bin/env python
import pika import pika
import sys import sys
@ -122,7 +122,7 @@ connection.close()
Code du consommateur : Code du consommateur :
``` python ```python
#!/usr/bin/env python #!/usr/bin/env python
import pika import pika
import sys import sys

@ -20,7 +20,7 @@ A ce stade, vous pensez : *"c'est bizarre il ne nous a pas encore bassiné avec
La mise en prod a pris 15 minutes chrono : écriture d'un docker-compose en utilisant [mon image pour les applications Python](https://hub.docker.com/r/kianby/pythonapp/) et déploiement sur le serveur de containers. La mise en prod a pris 15 minutes chrono : écriture d'un docker-compose en utilisant [mon image pour les applications Python](https://hub.docker.com/r/kianby/pythonapp/) et déploiement sur le serveur de containers.
``` docker ```docker
popforward: popforward:
image: kianby/pythonapp:latest image: kianby/pythonapp:latest
environment: environment:

Loading…
Cancel
Save