Archives pour janvier, 2011
Ma vision pour résoudre les problèmes qui durent
1J’ai la chance que l’on me confie souvent des problèmes complexes à résoudre, qui durent en général depuis pas mal de temps, et où plusieurs personnes s’y sont déjà, comment dire… »cassé les dents » ?
Je parle bien de chance, car c’est à travers ces expériences que j’apprends souvent le plus. Toutes les solutions classiques ont déjà été essayées plusieurs fois, et il faut donc « innover » pour trouver le grain de sable, le petit détail qui va faire la différence !
Voici les quelques règles/approches que j’applique :
- Ne pas se faire expliquer tout ce qui a été essayé. On construit un diagnostic à partir d’hypothèse, que l’on vérifie, et dont on considère ensuite les résultats comme réputés « surs ». Il va ensuite se passer un long moment avant que l’on remette en question ces résultats et que l’hypothèse soit évaluée à nouveau. Si la personne qui a passé X jours ou heures dessus vous explique tout ce qu’elle a fait et les résultats qu’elle a eu, et qu’elle est convaincante, vous allez vous aussi construire ensuite à partir de ces informations et arriver à la même impasse. Il peut s’avérer que certains résultats soient erronés, ou qu’ils soient arrivés avec un concours de circonstance ou ne soient plus d’actualité. Vous avez la chance unique d’avoir un regard neuf, absent de tout cela. Et vous n’avez qu’un essai, car vous allez vous aussi émettre bientôt des hypothèses et rentrer dans l’entonnoir ! L’inconvénient est que vous allez certainement perdre du temps en essayant des choses qui ont déjà été testées à maintes reprises, mais c’est le prix à payer pour résoudre le problème. L’objectif est de comprendre juste le problème.
- Avoir accès à tout ce qui est nécessaire. Il est crucial de pouvoir s’incruster dans toutes les couches (système/réseau/sécurité), afin de comprendre l’ensemble. Bien sûr cela se complique avec la taille de la structure et sa segmentation. Cela passe parfois par des ruses techniques afin de ne devoir attendre une validation organisationnelle ou technique.
- Pouvoir reproduire le même le test ou scénario. Pour vérifier les idées et hypothèses, il faut valider le changement de comportement ou non en fonction des modifications, et donc pouvoir reproduire le problème à volonté.
- Utiliser ses propres outils. Vous travaillez tout le temps avec Wireshark et là il n’y a que Network Monitor ? Il faut se battre pour utiliser ce que vous connaissez, pour plusieurs raisons. Déjà c’est un gain de temps immédiat. Un outil n’a d’intérêt que si l’on sait s’en servir. Aucun doute que l’on peut arriver au même résultat avec 2 outils, mais il faut être parfaitement à l’aise, afin de se concentrer sur que l’on voit (dans l’exemple, les paquets réseaux), et non pas sur comment mettre un filtre pour masquer ou afficher certains détails.
- Valider les hypothèses majeures 2 fois et par deux outils si possible. Se tromper sur une hypothèse de ce type, et on risque de ne pas trouver avant longtemps. Si l’on construit d’après des connaissances d’une version précédente (sous Windows 2003 ça fonctionnait comme cela) alors qu’on est sur du Windows 2008, vérifier la documentation officielle pour entériner l’hypothèse.
- Ne pas hésiter à générer des erreurs. Si l’on pense qu’un paramètre est complètement hors de cause, ne pas hésiter à le rendre faux et valider qu’il n’impacte toujours pas le problème.
Comme tout « sport », on prend des réflexes au fur et à mesure
Et vous, comment résolvez-vous vos problèmes ?
Le mot de la fin : Si vous aussi vous avez des cadavres et autres problèmes de préférence « insolubles », pensez à moi !
Popularity: 7% [?]
PowerShell: Measure-Command et Write-Output
1Measure-Command permet de mesurer le temps d’exécution d’un bloc de code PowerShell, de façon simple et efficace. Cependant, cela génère une contrainte:
Measure-Command n’affiche aucun write-output à l’écran!
Il faut alors utiliser par exemple write-host, qui lui envoi le texte directement à la console, et n’est donc pas impacté. Utiliser write-host peut générer des impact:
- Une redirection de la sortie écran vers un fichier ne fonctionnera pas ( > monlog.txt).
- L’ordonnanceur ORSYP ne gère pas bien les sorties faites par Write-host, alors que les write-output ne posent pas de problème
- …
Voici un script pour illustrer le sujet (ou à télécharger ici lotp_test_measure-command):
#******************************************************************************
#
# Titre: lotp_test_measure-command.ps1
#
# Description: test de measure-command
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************
#purge de l’écran
Clear
#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Write-Output « Test 01: fait un sleep de 2s dans un measure-command«
$temps=Measure-Command { sleep -Seconds 2}
Write-Output « temps d’exécution du test 01: $temps«
Write-Output « ############«
Write-Output « Test 02: fait un write-output dans un measure-command«
$temps=Measure-Command {Write-Output « ce message est supprimé par measure-command, vous ne le verrez pas« }
Write-Output « le message n’est pas apparu mais la commande est exécutée quand même«
Write-Output « temps d’exécution du test 02: $temps«
Write-Output « ############«
Write-Output « Test 03: fait un write-host dans un measure-command«
$temps=Measure-Command {Write-host « ce message est envoyé à la console, vous le voyez même dans un measure-command« }
Write-Output « temps d’exécution du test 03: $temps«
Popularity: 10% [?]
Powershell : tableau multidimensionnel (array de array)
3J’ai dû récemment stocker des valeurs dans des tableaux (array) multidimensionnel en PowerShell. J’ai quelques peu galéré, et je me suis dit que je ne devais pas être le seul. Mes recherches d’infos via Google ne ramenaient pas grand chose, il est donc temps d’y remédier…
L’objectif est de stocker plusieurs ensembles de valeurs dans un tableau, afin de pouvoir les appeler dans une boucle for.
Ce qui m’a induit en erreur: Si on ne met pas une virgule au départ, cela ne fonctionne pas….Sauf si on met plus d’un élément lors de l’initialisation du tableau de tableau…Tout se complique quand on change et ne met plus qu’un seul élément… Patatras!
Voici un script qui explicite les différents cas, le dernier étant celui qu’il faut utiliser:
Egalement en téléchargement ici: lotp_test_array_of_array
#******************************************************************************
#
# Titre: lotp_test_array_of_array.ps1
#
# Description: test sur des array
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************
#purge de l’écran
Clear
#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Function afficherTableau($array)
{
for ($i=0;$i -lt $array.Length;$i++)
{
Write-Output « boucle N°: $i »
Write-Output $array[$i][0]
Write-Output $array[$i][1]
Write-Output $array[$i][2]
Write-Output « ——– »
}
}
#Ce tableau ne fonctionne pas du tout comme prévu (il manque la virgule au début pour cela)
$tableauMauvais=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
Write-Output « Affichage mauvais tableau »
afficherTableau $tableauMauvais
#Ce tableau fonctionne mais la construction n’est pas correcte (pas de virgule au début, mais ok car 2 éléments)
$tableauPasCorrect=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »),(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne mais mal construit »
afficherTableau $tableauPasCorrect
#Tableau multidimensionnel construit correctement
#creation du tableau avec un seul élément (virgule avant la parenthèse)
$tableauCorrect=,(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
#Ajout d’un élément
$tableauCorrect+=,(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne et bien construit »
afficherTableau $tableauCorrect
Pour la coloration syntaxique dans le blog, j’ai utilisé le script PowerShell proposé ici:
http://helgeklein.com/blog/2010/01/syntax-highlighting-powershell-code-in-html-with-a-powershell-script/
Popularity: 16% [?]
Prise en main du Google Nexus S / android 2.3
1La poste ayant fait son travail, me voici l’heureux possesseur du dernier de Google, le Nexus S. J’utilisais depuis 9 mois le premier de la firme, le Nexus One.
J’ai été saisi tout de suite par la fluidité de l’écran et la vitesse entre les écrans du wizard de démarrage. La mise à jour vers Android 2.3 n’étant pas encore sortie pour le Nexus One, je ne sais pas dire si cela vient essentiellement du matériel ou de l’OS, mais j’imagine des deux réunis.
La première chose demandée est bien sûr un compte Google. Comme pour le précédent, le téléphone n’a pas les paramètre correctes pour la 3G, il faut donc avoir un accès Wifi a porté!
Voici les paramètres à positionner dans les réglages:
- Ecran plus grand
- Fluidité et rapidité
- Un coup de « polish » sur l’interface
- Caméra avant et arrière, les 2 à 5M pixels
- 16Go de stockage
- Boot + vite
- Les sonneries sont moins sympas
- Le bouton power sur le côté droit est perturbant
- Les comptes Google Apps sont toujours laissés de côté
Popularity: 11% [?]
