bash, tri par longueur de ligne

2012-07-20

La commande sort ne permet pas de trier en fonction de la longueur des lignes. C’est dommage mais on peut utiliser awk, combiné avec sort pour avoir le même résultat. $ cat /usr/share/dict/words | awk ‘{ print length(), $0 | “sort -n” }’ | cut -d ’ ’ -f 2-

Continuer la lecture 


Jetty 8 et paramètres d'initialisation

2012-07-17

La documentation sur le net est obscure quant à la manière d’initialiser les paramètres de contexte avec jetty (hors du web.xml dans le webdefault.xml (équivalent du host.xml de tomcat)). J’ai cherché, cherché et cherché… Et puis j’ai trouvé :) Le nouveau code est le suivant : <?xml version=“1.0” encoding=“ISO-8859-1”?> <!DOCTYPE Configure PUBLIC “-//Mort Bay Consulting//DTD Configure//EN” “http://www.eclipse.org/jetty/configure.dtd"> <Configure class=“org.eclipse.jetty.webapp.WebAppContext”> <Set name=“sessionHandler”> <New class=“org.eclipse.jetty.server.session.SessionHandler”> <Arg> <New class=“org.eclipse.jetty.server.session.HashSessionManager”> <Set name=“storeDirectory”>jetty/sessions</Set> </New> </Arg> </New> </Set> <Get name=“ServletContext”> <Call name=“setInitParameter”> <Arg>driverSQL</Arg> <Arg>com.

Continuer la lecture 


Servlets et encoding...

2012-07-17

J’ai eu des petit soucis avec le charset… Un svi envoyait bien “text/csv; charset=utf-8” (curl) mais pour une raison x ou y, mon ihm qui l’appelait voyait “text/plain;charset=ISO-8859-1” ce qui faisait que le fichier était mal affiché. Dans le code ci-dessous, j’ouvre une connection et récupère le charset afin d’initialiser l’InputStreamReader et commencer les lectures… URL url = new URL(sviUrl); URLConnection conn = url.openConnection(); conn.connect(); InputStream in = null; try { String charset = “ISO-8859-1”; String contentType = conn.

Continuer la lecture 


mysql, importer un fichier csv

2012-07-16

Pour charger un fichier csv dans une table on peut utiliser la commande suivante : mysql> load data infile ‘/path/to/file.csv’ into table mytable character set ‘utf8’ fields terminated by ‘;’ IGNORE 1 lines; Query OK, 786 rows affected (0.13 sec) Records: 786 Deleted: 0 Skipped: 0 Warnings: 0 Ici, le charset est spécifié et la première ligne du fichier CSV est ignorée (titre des colonnes).

Continuer la lecture 


bash, récupérer les noms de fichiers renvoyés par diff -rb --brief

2012-07-16

La commande “diff -rb –brief” génère des lignes user-friendly qui sont malheureusement localisées. Pour récupérer le nom des fichiers qui diffèrent, il est possible d’utiliser la commande lsdiff du package patchutils. $ sudo apt-get install patchutils $ files_to_transfer=$(diff -x ‘*.zip’ -x ‘.svn’ -rb -U 1 fitnesse-install/FitNesseRoot/FrontPage/Project $dist_install/FrontPage/Project | lsdiff)

Continuer la lecture 


python, bash et encoding...

2012-07-16

En python, lorsque la sortie n’est pas de type tty, l’encoding est “ascii” ce qui provoque des erreurs sur les caractères accentués. La solution est d’exporter la variable PYTHONIOENCODING qui définit l’encoding à utiliser. $ python a.py é $ python a.py | cat Traceback (most recent call last): File “a.py”, line 3, in print u"\xe9"; UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe9’ in position 0: ordinal not in range(128) $ export PYTHONIOENCODING=utf-8 $ python a.

Continuer la lecture 


bash, moreutils

2012-07-13

Je viens de découvrir un paquet mettant à disposition des outils bien sympathiques pour faciliter l’écriture de scripts bash. Il s’agit du paquet moreutils $ sudo apt-get install moreutils Exemples d’utilisation : Pour envoyer un mail si des données sont lues sur l’entrée standard… $ find . -name core | ifne mail -s “Core files found” root Pour réécrire dans un même fichier sans avoir à créer un fichier temporaire… $ sed ‘…’ file | grep ‘…’ | sponge file

Continuer la lecture 


url et mot de passe

2012-07-03

Pour réduire mes logs, je viens d’utiliser la syntaxe suivante : http://user:password@host:port… Ici, le mot de passe doit être encodé lorsque des caractères non alphanumériques sont utilisés (comprenez 0-9a-zA-Z). Chaque caractère non alphanumérique doit être encodé avec le format “%xx” où xx sera remplacé par le code hexadécimal du caractère. Exemple: def conv(pw): r = ’' for c in pw: if not c.isalpha(): r += ‘%’ + ‘%X’ % ord(c) else: r += c return r

Continuer la lecture 


bash, fautes sur commande cd...

2012-07-02 | #bash #cdspell

Si l’option cdspell est positionnée, les fautes de frappe dans la commande cd seront corrigées. Les erreurs prises en compte seront les caractères transposés, les caractères manquants et les caractères trop nombreux. Si un correctif est trouvé, le chemin utilisé pour le cd sera affiché et la commande exécutée. L’option n’est utilisée que dans le cas des shells intéractifs. $ shopt -s cdspell $ cd /ec /etc $ shopt -u cdspell

Continuer la lecture 