python, faire en sorte que stdin/stdout lisent et écrivent en binaire

2012-10-10 | #binary #fileno #os #python

J’ai écrit un petit programme qui s’inspire de cut en python. La lecture et l’écriture pouvant se faire sur l’entrée/sortie standard (sources ucut), j’avais des problèmes de “‘ascii’ codec can’t decode byte”… Pour y remédier, j’ai “transformé” les flux standard (mode texte) en flux binaires de la manière suivante : import sys import os sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0)

Continuer la lecture 


bash, vérifier si une variable matche une regexp

2012-10-10 | #bash #re #regexp

On peut facilement vérifier si une donnée contenue dans une variable est au bon format. Dans l’exemple ci-dessous, on vérifie si le numéro de version fourni est correct. if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Le numéro de version donné '$version' n'a pas le bon format." exit 1 fi Dans celui-ci si la valeur contient localhost ou itg [[ $environnement =~ localhost|itg ]] && echo 1 Attention, la regexp n’est pas entre quote ni double-quote.

Continuer la lecture 


vi et les macros

2012-09-27

Via un petit exemple… Permet de supprimer le premier mot de chaque ligne du buffer. gg permet d’aller en début de fichier qq démarre l’enregistrement de la macro de nom q (la 2e lettre) dwj supprime le premier mot et descend de ligne @q appelle la macro q pour revenir au mode de vi “normal” q pour terminer l’enregistrement de la macro @q pour appeler la macro

Continuer la lecture 


bash, swap de 2 fichiers

2012-09-25 | #bash #commande #mv #tempfile

Le code suivant à ajouter au bashrc permet de swapper ou plutôt échanger 2 fichiers rapidement. function swap() { if [[ -e "$1" && -e "$2" ]] # if files exist then local TMPFILE=$(tempfile) mv "$1" $TMPFILE mv "$2" "$1" mv $TMPFILE "$2" else echo "Error: Make sure the files exist." fi } Et son exemple : $ echo x>x $ echo y>y $ swap x e Error: Make sure the files exist.

Continuer la lecture 


bash, mv en masse

2012-09-25 | #commande #mmv #renommage en masse

Il y a quelques années, j’avais écris un petit programme qui permettait de changer l’extension de fichiers. A cette époque, je ne connaissais pas la commande mmv (comprendre “mass"mv) : $ sudo apt-get install mmv $ ls -l *.abc -rw-r--r-- 1 root root 0 2012-09-25 13:34 x.abc -rw-r--r-- 1 root root 0 2012-09-25 13:34 y.abc -rw-r--r-- 1 root root 0 2012-09-25 13:34 zzz.abc $ mmv "*.abc" "#1.ABC" $ ls -l *.

Continuer la lecture 


vi

2012-09-25

Depuis ma formation “coder au front end”, je me mets à vi… Voici une liste de ressources bien utiles pour s’y mettre : Un aide-mémoire textuel : http://www.lagmonster.org/docs/vi2.html Un petit jeu online pour apprendre de manière ludique : http://vim-adventures.com/ La chose que je n’avais pas saisi c’est que l’on peut opèrer par “commande” “mouvement”. Ainsi, c2f> supprime le texte jusqu’au 2e > inclus et met l’utilisateur en mode édition. On peut aussi couper un texte dans des cases mémoires différentes et réutiliser cette case par la suite.

Continuer la lecture 


java, déboires d'encoding...

2012-09-25 | #charset #encoding #iso-8859 #java #utf-8

Il y a quelques temps, j’ai eu de petits problèmes d’affichage d’accents sur une IHM d’un fichier qui était fourni par une autre appplication. Le charset n’était pas le bon. Il a fallu que je force l’écriture du charset et sa lecture. Pour l’écriture : package a.b.c; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.Writer; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.

Continuer la lecture 


Linux, niveau de la baterie

2012-09-23 | #acpi

Une petite commande pour connaitre le niveau de la baterie… $ acpi -V Battery 0: Charging, 25%, 01:59:29 until charged Battery 0: design capacity 4390 mAh, last full capacity 4390 mAh = 100% Adapter 0: on-line Thermal 0: ok, 37.0 degrees C Thermal 0: trip point 0 switches to mode critical at temperature 96.0 degrees C Thermal 0: trip point 1 switches to mode passive at temperature 106.0 degrees C Cooling 0: LCD 0 of 15 Cooling 1: Processor 0 of 10 Cooling 2: Processor 0 of 10 Cooling 3: Processor 0 of 10 Cooling 4: Processor 0 of 10 Cela peut être utile lorsque l’on est en mode console sur son portable…

Continuer la lecture 


bash, tester si un programme est installé

2012-09-21 | #apt-get install #commande #sponge #sudo #which

Pour tester si un programme est installé, on peut utiliser la commande which de différentes manières. La première en comptabilisant le nombre de lignes retournées. if [ $(which sponge | wc -l) -eq 0 ]; then echo "Installer le paquet 'moreutils'." echo "sudo apt-get install moreutils" exit 1 fi La seconde en utilisant le code de retour de la commande. if ! which sponge >/dev/null; then echo "Installer le paquet 'moreutils'.

Continuer la lecture 


Linux Mint Cinamon, touchpad et défilement à 2 doigts

2012-09-20

Le défilement à 2 doigts sur le touchpad ne fonctionnait pas. J’ai cherché dans les menus et je n’ai rien vu. Sur internet, des pages parlent de synclient. Effectivement, la ligne suivante $ synclient VertTwoFingerScroll=1 permet de faire fonctionner le défilement à 2 doigts. Mais malheureusement, la modification n’est pas persistente après un redémarrage… Pour la rendre persistente j’ai vu plein de docs ainsi que la page http://mixeduperic.com/ubuntu/ubuntu-1004-how-to-setup-two-finger-scroll-on-laptop-touch-pad.html Cette page peut donner des idées si des choses sont à effectuer lors de l’ouverture de la session X.

Continuer la lecture 