vendredi 13 janvier 2012

Détecter les Clé/lecteur USB en PowerShell

Bien que l'instruction Get-PSDrive fournisse déjà une information bien utile (la liste des lecteurs), celle-ci n'était pas suffisante.
En effet, j'ai besoin de localiser un lecteur spécifique (une clé USB) ayant de surcroit un nom de volume spécifique (la bonne Clé USB, celle qui ne nomme "Cruizer").

Voici un petit script vraiment très utile que j'ai trouvé ici sur PowerShell.Com.
Merci à Brian Hagerty pour ce post vraiment très utile.

# DESCRIPTION: Checks to see if a USB logical drive is present, if so, then alerts the user and rechecks 
function CheckFor-USBDrive () { 
    # Gets the USB logical drive  
    $USBDrive_Present = Get-WmiObject -Class Win32_LogicalDisk | Where-Object {($_.DriveType -eq 2) -and ($_.DeviceID -ne "A:")} 
    $count = 0 
         
    # If a USB drive is present then sound 'alert' five times and show message box 
    while($USBDrive_Present) { 
        Write-Host -NoNewline "`a`a`a`a`a" # Alert tone (5) 
        # Checks whether this is the first time the message box is displayed. 
        if($count -lt 1) { 
            Show-MessageBox "ATTENTION: USB Drive" "`nThere is a USB Flash Drive present. Please remove then click OK." 
            $count++ 
        } 
        # If its not the first time then display a different message 
        else { Show-MessageBox "ATTENTION: USB Drive" "`nThe USB Flash Drive was not removed. Please remove then click OK." } 
           
        # Recheck for USB flash drive, then continue while loop if applicable 
        $USBDrive_Present = Get-WmiObject -Class Win32_LogicalDisk | Where-Object {($_.DriveType -eq 2) -and ($_.DeviceID -ne "A:")} 
    } 
} 

dimanche 8 janvier 2012

Dessiner des flèches avec Gimp

Bien que le meilleur logiciel pour faire cette tâche soit Shutter (Ubuntu) ou FastStone Screen Capture (Windows), il est assez ennuyant de passer par un tel logiciel de capture pour de telles tâches si le reste du travail se fait sous Gimp.

Script Gimp
J'ai eu l'occasion de trouver un script gimp pour remplir cette tâche de façon assez élégante.
Ce script est disponible dans le gnome registry http://registry.gimp.org/node/20269
Il faut placer le fichier arrows.scm dans le répertoire script de gimp (répertoire caché) puis ensuite redémarré Gimp.
Dans mon cas, il s'agit de:
  ~/.gimp-2.6/scripts/ 
Comment utiliser le plugin:
  1. Créer un chemin (habituellement <B>) en commençant par la pointe de la flèche (premier point d'ancrage) et ensuite la queue de la flèche (second poinr d'anchrage). 
  2. Appeler le script qui s'est lui même ajouter dans le menu "Tools"/"Outil"
    (J'utilise <AltGr+P> comme raccourcis car  "Pfeil" est le mot allemand pour désigner "flèche").
Dans ma version de gimp, le script est disponible dans le menu "Outils | Flèche".

Modification des options
L'activation du script affiche une boite de paramétrage.
Le seul que j'ai vraiment changé c'est Brush Tickness que j'ai placé à 5 (au lieu de la valeur relative - nombre négatif)
Source: Registry.gimp.org
Brosses
Il est aussi possible d'utiliser des brosses en utilisant des templates.
C'est une méthode que je n'ai pas encore exploré... mais dès que j'ai l'occasion je m'y attarde.
Pour plus d'information sur ce point voir ce thread sur Ubuntu-fr.
Et pour la galerie de flèches et WebDings, suivez ce lien vers jsitebuilder sur deviantart.com.

samedi 31 décembre 2011

Livres lus en 2011


L'enfant Allemand de Camilla Lackberg du 13 décembre au 30 décembre 2011
L'oiseau de mauvaise augure de Camilla Lackberg du 08 novembre au 12 décembre 2011
Harry Potter à l'école des sorciers (volume 1) de JK Rowling du 04 octobre au 07 novembre 2011
Les cathédrales du vide de Henri Loevenbruck du 10 septembre au 03 octobre 2011
Cessez d'être gentil, soyez vrai (communication non violente) 1è partie de Thomas d'Ansembourg du 21 Août au 09 septembre 2011
Le Burn Out - Comprendre et vaincre l'épuisement professionnel de Suzanne Peters et Dr Patrick Mesters du 17 Août au 20 Août 2011
Le pourquoi du comment de Daniel Lacotte du 11 Août au 16 Août 2011
Le tailleur de Pierre de Camilla Läckberg du 13 juillet au 10 Août 2011
Seras-tu là de Guillaume Musso du 03 juillet au 12 juillet 2011
Fragments d'une femme perdue de Patrick Poivre d'Arvor du 21 juin au 02 juillet 2011
Freedom de Daniel Suarez du 13 juin au 20 juin 2011
Le musée perdu de Steve Berry du 05 juin au 13 juin 2011
Napoléon - vol 4 - L'immortel de Sainte-Hélène de Max Gallo du 03 mai au 04 juin 2011
Napoléon - vol 3 - L'empereur des Rois de Max Gallo du 16 mars au 02 mai 2011
Daemon de Daniel Suarez du 01 mars au 15 mars 2011
Le concours de Millénaire vol 1-2 & 3 de Roger Zelasny du 20 décembre au 28 février 2011

mercredi 21 décembre 2011

Imprimer avec Python

Cela fait un moment que je travaille avec PowerShell.
Si c'est un environnement de scripting efficace, je suis quand même tombé sur un OS.
Pas facile de générer et d'imprimer des documents complexes (Texte et graphique, code barre, etc) à partir de PowerShell.

Dans ma déveine, je me demandais si Python pouvait faire mieux pour voir ?
J'ai trouvé deux références prometteuses:
Qui sait, peut-être que je devrais un jour laisser tomber PowerShell pour utiliser Python?
Mais sur une machine Windows, ce n'est pas certain que c'est gagné d'avance (j'utilise énormément d'automation Excel et Word) :-/

Programme par défaut sous Windows 7 - quand il est impossible de le changer

Changer une association de fichier
Sous Win7 Pour changer le programme par défaut associé à une extension de fichier, il existe le programme "Programme par défaut" fournit disponible dans le menu démarré.
En choisissant l'option "", il est possible d'associer un programme particulier à un extension de fichier (ou un protocole).
Programme a démarrer

Option à choisir

Comment changer de programme


Quand il n'est pas possible de changer l'association
Cependant, il existe des cas où cette option ne fonctionne pas.
En effet, l'option "Toujours utiliser le programme sélectionner pour ouvrir ce type de fichier" reste désespérément grisé/incessible !

Dans ce cas, voici une méthode beaucoup plus directe trouvé dans une conversation sur Clubic (ici).
Au moins celle là fonctionne parfaitement. Merci Clubic :-)

Ouvre l'Editeur du registre (clic-droit + Exécuter en tant qu'administrateur dans Vista ou 7):

C:Windows\regedit.exe

Sous la ruche HKEY_CLASSES_ROOT sont toutes les extensions de fichiers enregistrées. Je te donnerai un exemple pour changer le programme d'ouverture et l'icône par défaut pour les fichiers audio .mp3.

Double-clique sur la clé HKEY_CLASSES_ROOT\.mp3, et cherche une valeur sans nom (Par défaut) disant le type de fichier associé à l'extension .mp3 Par exemple: (par défaut) REG_SZ mp3file

Ceci te dit que l'extension .mp3 est associée à mp3file. Maintenant double-clique sur la clé HKEY_CLASSES_ROOT\mp3file

Dans la sous-clé DefaultIcon il y a une valeur REG_SZ avec le répertoire du fichier contenant l'icône utilisée par ce type de fichier.

Tu peux double-cliquer sur cette valeur et changer ses données. Par exemple "C:\Program files\Winamp\winamp.exe", 3

Pour changer le programme qui ouvre ce type de fichier par défaut, double-clique sur la clé HKEY_CLASSES_ROOT\mp3file\shell\open\command puis sur la valeur REG_SZ dedans et change les données pour le répertoire du programme désiré suivi de "%1". Par exemple "C:\Program files\Winamp\winamp.exe" "%1"

lundi 19 décembre 2011

Excel 2010 - Formatage conditionel sur une colonne

Le formatage conditionnel c'est bien mais par défaut il ne s'applique qu'a une seule cellule !
Lorsque l'on veut généraliser le formatage sur une colonne entière, les choses deviennent vite frustrantes.
C'est que rien dans l'interface ne vient vous aider pour trouver la bonne réponse.

C'est entre autre ce qui m'est arrivé lorsque je voulais mettre en lumière les différences entre le stock enregistré (dans le logiciel) et celui d'un inventaire.
Sur plus de 600 lignes, dupliquer le formatage conditionel n'était pas une option mais une nécessite.

Le principe
En fin de compte, c'est assez simple. Il suffit d'utiliser une formule dans le formatage conditionnelle pour comparer les cellules.
En dupliquant le formatage conditionnel, on duplique aussi la formule qu'il utilise. Si on a une formule utilisant une comparaison relative, cela devient alors très simple.
 Seulement voila, il faut le savoir pour le faire.

Marche à suivre
1) Sélectionner la cellule sur laquelle s'applique le formattage conditionnel.
2) Activer le formatage conditionnel

3) Encoder la formule type pour comparer les valeurs entre cellule
Mais attention, il est important de retirer les signes "$" pour permettre le déférencement relatif lorsque l'on copiera la formule sur toutes les cellules. (Sinon la comparaison se fera toujours entre $F$2 et $E$2 même après copie de la formule).
3) Copier la formule et le formatage conditionnel sur toutes les cellule de la colonne

Petite amélioration
La comparaison d'une valeur par rapport a #N/A est toujours fausse.
Dans mon cas, le #N/A indique que l'inventaire n'a pas répertorié la référence de l'article.
Donc, un Stock de 6 par rapport à #N/A devrait déclencher le formatage conditionnel mais il ne le fait par car 6 <> #N/A est faux.

Pour résoudre ce problème, il suffit de tester le contenu de la cellule pour savoir si elle contient #N/A.
Le test suivant permet de tester ce la valeur #N/A de la cellule F2 (elle retourne 0 si F2 est #N/A sinon retourne la valeur F2)
=SI(ESTNA(F2)=VRAI;0;F2)

Le formatage conditionnel devient donc
=(SI(ESTNA(F2)=VRAI;0;F2)=E2)

lundi 12 décembre 2011

Font pour Code Barre

Si vous avez besoin d'imprimer des codes barres, vous pouvez toujours jeter un oeil sur le site Free Linear Barcode Image Online Generator (IDAutomation).
Outre la mise a disposition d'un outil en ligne, le site de IDAutomation propose également un zone de téléchargement permettant de se procurer les fonts nécessaire.

J'ai aussi noté la mise à disposition de la font UPC, EAN & GTIN qui devrait permettre de générer des codes barres EAN (13 positions). Cependant, je ne suis pas arrivé à produire de code barre lisible par un scanner.

Par contre, The Code Project publie l'article "Creating EAN-13 BarCode" sur la génération des codes barres en C#.
Malheureusement rien d'utilisable directement en PowerShell (snif)

Ressources: