Causeries numériques

Aller au contenu | Aller au menu | Aller à la recherche

Des pingouins et des hommes

Fil des billets - Fil des commentaires

dimanche 7 juin 2009

Testez vos regexp en ligne

Tout est dans le titre ! regexr est un éditeur/testeur d'expressions régulières en ligne. On peut placer le texte que l'on veut pour tester, les principales options sont gérées, enfin bref que du bon ! Y'a même moyen d'en avoir une version off-line, mais il existe beaucoup d'autres outils équivalents dans ce cas.

mardi 11 novembre 2008

Un autre uniligne en Ruby

Renommer les fichiers qui composent un répertoire et souvent une galère à la main. J'ai un script qui me permet de le faire, mais je voulais voir si on pouvait le faire en une ligne de Ruby, la réponse est là :

ruby -e 'Dir.glob("*.txt").each{ |f| File.rename(f,f.gsub(/^(\d\d) /,%q[\1 - ]))}

L'option -e permet de faire exécuter la chaîne de caractères par l'interpréteur ruby. Pour éviter que bash n'interprète les instructions on les places entre apostrophes (ça permet de garder les guillemets pour la suite du programme).

  1. La méthode glob de la classe Dir liste tous les fichiers correspondant au motif placé en argument (ici, tous les fichiers en .txt)
  2. Un bloc est utilisé avec la méthode each, ce bloc est délimité par les accolades, la variable f prendra le nom d'un des fichiers à chaque itération.
  3. La méthode rename de la classe File est utilisée pour renommer le fichier.
  4. Le nouveau nom du fichier est construit à partir d'un expression régulière avec la méthode gsub. Les apostrophes ne pouvant pas être utilisés, on est obligé de passer par une notation %q[...]

Pour éviter de planter des fichiers, il est judicieux de tester la regexp avec un puts :

ruby -e 'Dir.glob("*.txt").each{ |f| puts f+"->"+f.gsub(/^(\d\d) /,%q[\1 - ])}'

edit du 13/11 glob peut être remplacé par [...]

ruby -e 'Dir["*.txt"].each{ |f| puts f+"->"+f.gsub(/^(\d\d) /,%q[\1 - ])}'

c'est valable pour le puts ou pour le File.rename.

De FAT vers NTFS

Maintenant (bon c'est pas du très nouveau...) que Ubuntu supporte bien le format NTFS, on va pouvoir convertir tous les lecteurs en NTFS. La commande est simple convert d: /fs:ntfs pour le lecteur d: (à changer bien sur en fonction du lecteur !!!). En plus, si le lecteur n'est pas accessible (fichiers encore ouverts, ...) la conversion peut être programmée au prochain démarrage de Windows.

lundi 20 octobre 2008

Uniligne en Ruby

Mes listings d'étudiants me sont fournis au format suivant

...
DUPONT,PAUL
DURAND,PIERRE
...

La présentation "tout en majuscules" ne me plaît pas beaucoup ; je préfère une majuscule en début de nom et en début de prénom. Plutôt que m'amuser à tout faire à la main, j'ai écrit un petit uniligne qui fait tout d'un coup.

Pour obtenir un comportement uniligne en ruby, on utilise plusieurs options sur la ligne de commande (l'option -e est obligatoire). Les principales options sont les suivantes :

  • -e permet de créer un uniligne, en spécifiant les instructions depuis la ligne de commande (les instructions sont placées entre apostrophes pour éviter que le shell ne les interprète).
  • -n Ruby place les instructions dans une boucle (while gets ... end) en utilisant le fichier (dont le nom et placé en argument sur la ligne de commande) comme source.
  • -p est identique à -n avec en plus un affichage de $_ (la ligne lue) à la fin de la boucle.

L'uniligne obtenue est le suivant :

ruby -ne 'puts $_.split(",").each{|n| n.capitalize!}.join(",") ' TD.csv > TDmaj.csv

La ligne lue (dans le fichier TD.csv) est découpée en utilisant split puis une boucle each permet de traiter chaque élément avec capitalize! pour passer que la première lettre en majuscule. Le contenu du tableau (issue du each) et transformé en une chaîne en utilisant join avec la virgule comme caractère de jointure. Une redirection finale (> TDmaj.csv) envoie tout ça dans un nouveau fichier.

mardi 23 septembre 2008

Le lien du développeur

Le site gotAPI regroupe la majorité des API des langages usuels. Le site est pratique et paramétrable via des onglets pour choisir les langages qu'on utilisent. L'intérêt de la manip' c'est qu'on ne garde qu'un onglet sous Firefox, ça évite d'avoir une douzaine d'onglets d'ouverts quand on travaille sur plusieurs langages en même temps.

jeudi 8 novembre 2007

Liste des polices LaTeX

Le choix des polices sous LaTeX est toujours délicat car il est nécessaire de recompiler le document pour voir le résultat. De plus les polices n'ont pas vraiment des noms très explicites. Sans vraiment le chercher, je suis tombé sur un site qui référence les différentes polices LaTeX (livrées en standard ou à installer) : Font Catalogue

Les polices peut être triées par type (serif[1], sans serif, avec support des mathématiques,...)

Notes

[1] Une police avec serif a des "petites pattes" aux extrémités voir wikipédia

dimanche 30 septembre 2007

Installation de Piklab sous ubuntu

Les microcontrôleurs Microchip PIC sont beaucoup utilisés par l'amateur d'électronique (avec les Atmel AVR) . La suite de développement fournie par Microchip est très efficace mais ne fonctionne pas sous Linux et ne propose pas de compilateur C en standard. Nous allons faire d'une pierre deux coups en installant Piklab qui permet de compiler (en assembleur mais aussi en C via SDCC), simuler et programmer des PIC sous Ubuntu.

Lire la suite...

vendredi 7 septembre 2007

Le paquet du mois...

Un titre un peu gros pour attirer le regard... Un paquet méconnu d'Ubuntu est gtklp, il est le complément idéal d'Adobe Reader. Il est présent en standard sur Ubuntu, donc pour l'installer :

sudo aptitude install gtklp

Ensuite, dans Acrobat Reader, choisir une imprimante custom et remplir la ligne avec /usr/bin/gtklp. gtklp va alors intercepter toutes les impressions et proposer de nombreuses options comme 2 pages par feuille, contrôle du recto-verso pour les imprimantes qui le supportent, colorimétrie, copies groupées, bandeaux, filigrane...

vendredi 31 août 2007

vim et Latex

Le plugin Latex pour vim pose quelque difficulté pour les francophones : des accents sont remplacés par certains raccourcis. Dans le fichier ~/.vim/ftplugin/tex.vim (le créer s'il n'existe pas), il faut ajouter les lignes suivantes :

imap <C-b> <Plug>Tex_MathBF
imap <C-c> <Plug>Tex_MathCal
imap <C-l> <Plug>Tex_LeftRight
imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine

Les trois premières lignes remplacent les commandes ALT+B,ALT+C et ALT+L par CTRL+B,CTRL+C et CTRL+L. pour mémoire, leurs fonctions sont les suivantes :

  • ALT+B place le caractère précédent dans une commande \mathbf{}
  • ALT+C place le caractère précedent dans \mathcal{}, s'il n'y a pas de caractères, place une commande \cite{}
  • ALT+L propose plusieurs fonctions :
    • si le caractère précédent est (,[,|,{ ou < elle complète l'expression par le caractère de fermeture associé ;
    • précédée de q elle insère le bloc \lefteqn{<++>}<++> ;
    • dans tous les autres cas, elle place une commande \label{<++>}<++>.

La dernière ligne permet l'auto complétion de la commande \item, il suffit de taper \it pour que la commande \item soit insérée.

Tous les accents sont alors possibles sans passer par les commandes Latex \',...

jeudi 30 août 2007

Dictionnaire français avec vim

Suite à une réinstallation d'Ubuntu, le dictionnaire français (UTF-8) de vim était introuvable, conduisant à l'avertissement suivant lors de l'exécution de vim (ou gvim)

Alerte: Liste de mots "fr.utf-8.spl" ou "fr.ascii.spl" introuvable

Bien entendu, il n'y avait plus de correction orthographique... Pour installer le dictionnaire français, il suffit de se placer dans le répertoire /usr/share/vim/vim70/spell puis de télécharger les deux fichiers avec les commandes :

sudo wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.sug
sudo wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.spl

mardi 14 août 2007

Compilation automatisée de fichier Latex

La compilation de document écrit avec Latex devient vite compliquée si différents types de fichiers entrent en jeu. Un script ou un Makefile permet de simplifier cette tâche.

Lire la suite...

vendredi 10 août 2007

Installation du drivers Wifi pour un chipset BCM4306

Mon Dell Latitude est équipé d'un chipset BCM4306 pour le wifi. Par défaut ce chipset n'est pas géré par Ubuntu Feisty Fawn, mais l'installation est très simple.

Il faut commencer par installer le paquet bcm43xx-fwcutter. Une erreur est provoqué lors du téléchargement du fichier wl_apsta.o. L'installation va se finir "à la main" :

  1. Télécharger le fichier wl_apsta.o
  2. Extraire le driver de la carte : sudo bcm43xx-fwcutter -w /lib/firmware wl_apsta.o
  3. Mettre à jour le noyau avec sudo bcm43xx-fwcutter -w /lib/firmware/2.6.XX-YY wl_apsta.o2.6.XX-YY est le répertoire qui correspond au noyau utilisé.

A partir de maintenant le wifi fonctionne, par exemple, avec Network Manager, éventuellement rebooter le système.

Cette manipulation devra être réitérée à chaque mise à jour du noyau.

mercredi 13 juin 2007

Manipulation de tags mp3 avec Perl, Ruby et Python

Pour les petits scripts de quelques lignes, trois langages se partagent le terrain : Perl, Python et Ruby. Le problème du jour est la modification de tags ID3 ainsi que le renomage de fichiers.

Lire la suite...

vendredi 8 juin 2007

Désintaller Samba

Après une mise à jour d'Ubuntu, Samba a décidé de mettre son bazard... Même plus moyen de le supprimer ! J'obtenais l'erreur E: Sub-process /usr/bin/dpkg returned an error code (1). Pour pouvoir désinstaller Samba, j'ai du aller dans /etc/rc2.d et détruire (sudo rm) le fichier K09samba ( ce fichier peut porter un autre nom). Ensuite, j'ai pu désinstaller Samba avec aptitude puis remettre mon système à jour.

mercredi 2 mai 2007

Supprimer les ^M dans des fichiers texte

Les fichiers texte ayant transité par d'autres systèmes d'exploitations sont souvent légèrement modifiés ; les caractères de fin de lignes ne sont pas les mêmes. Par exemple, lors d'une transitions Windows vers Linux, on voit apparaitre des ^M à la fin de chaque ligne. La commande suivante sous vi et tous ses clones (donc vim, gvim,...) permet de supprimer ces caractères : :%s/^M//g L'opération réalise un rechercher-remplacer (%s) en utilisant le motif ^M comme recherche et rien comme motif de remplacement et ce sur tout le fichier (options g à la fin de la commande). Le ^M s'obtient en tapant CTRL+V puis CTRL+M, il ne faut pas utiliser le caractère ^ puis la lettre M !

mardi 1 mai 2007

Griser une ligne sur deux dans OpenOffice Calc

Sur de grands listings, il est plus agréable pour la lecture de colorer une ligne sur deux (ou plus) en couleur. Cette manœuvre est assez facile a réaliser sous Open Office Calc. Il faut commencer par définir un (ou plusieurs) style(s) de remplissage. La touche F11 fait apparaitre la fenêtre "Styles et formatages". Un clic droit dans cette boite de dialogue permet de créer un nouveau style. Lui attribuer un nom (par ex. Gris) et modifier ses propriétés, notamment l'arrière plan en gris.

Il faut maintenant sélectionner une cellule (ici la cellule A1) et dans le menu Format, cliquer sur Formatage conditionnel..., dans la boite dialogue qui apparait placer la formule suivante :

 SI(MOD(CELLULE("ROW";$A1);2)<>1)

et choisir l'option Formule est (en cliquant sur Valeur est) et choisir le style de cellule crée si dessus (Gris dans notre exemple). Sélectionner la cellule (CTRL+C) puis sélectionner les cellules, faire un collage spécial (CTRL+MAJ+V) et ne choisir que la case Format.

Si tout c'est bien passé, une ligne sur deux a pris le style Gris.

jeudi 15 juin 2006

Oh le joli poster !

O'Reilly propose gratuitement un poster chronologique de tous les langages (ici). Le problème c'est que ce poster fait un format de poster ;-) . Pour l'imprimer sur une imprimante normale, il faut le découper en petits morceaux. Dans un premier temps j'ai pensé que dans le package pdfjam j'allais trouver ma vie. Pas d'outils pour découper des pdf, seulement pour en regrouper :-( Par contre le package poster permet de créer des posters à partir de fichiers .ps. Donc à partir du fichier original, il suffit de faire :

 pdf2ps -sDEVICE=epswrite prog_lang_poster.pdf
 poster -s1 prog_lang_poster.ps > poster_parties.ps
 ps2pdf13 -dPDFSETTINGS=/prepress poster_parties.ps

Pour imprimer la dernière partie n'est pas obligatoire car les fichiers .ps s'impriment très bien sous Linux ! Et voilou...