Skip navigation.

exploreopera

| Help

Sign up | Help

digital-nation

Blog-note d'un informaticien procrastinate...

101 jours de 101 choses à faire en 1001 jours !

, ,

Voila. C’est fait ! Il ne reste maintenant que 101 jours pour arriver à terminer la liste établie il y a quelques temps. Plus précisément 900 jours…

Un long jeu auquel j’ai participé avec plaisir. Mais où en sont les autres ? Laissons-les répondre d’eux-mêmes dans leur blog respectif et passons les points qui me sont du.

5. faire une fête avec mes deux amis d’enfance ;
9. En complément du point 5, réussir à inviter ma meilleure amie ou faire la fête avec elle à part ;
14. Préparer un repas asiatique pour 4 personnes - minimum 3 services -, - réalisé dans le cadre d’une invitation de ma grand-mère et de ma cousine… 6 services, 4 heures de repas, 4 personnes. J’ai les photographies et je dois encore les publier ! (ouuups) ;
15. Faire un site pour mon amie ; Je me suis séparé depuis ... Donc dur ! Mais au moins maintenant je suis heureux :smile:
16. Et y exposer ses peintures ; voir point suivant !!
18. Mettre a jour plus souvent mon blog - a raison de 1 article tous les deux jours ? Pourquoi pas ! –
26. Et manger du caviar ; réalisé à la nouvelle année 2007/2008 ! Miam…
29. Reprendre contact avec ma cousine Nathalie - et avoir des nouvelles de mes petits cousins -,
37. Tenter d'installer Windows Xp 2000 - ai qu'une license de Xp ! - sur un 266Mhz avec 32 de RAM - Ai pas peur ! -, réalisé en janvier 2008 sur un vieux PC portable Compaq Presario, très lent mais opérationnel !
41. Me commander un mug ;
47. Acheter un vêtement d'une ONG ;
48. Acheter un shaker ;
49. Y préparer un quelques cocktails ;
52. Offrir un cadeau à ma mère ;
63. Avoir une photographie de Franck Paul et de son fils à Eurodisney, réalisé par F. Paul par ce billet ;
64. Avoir une photographie souriante de Tatou - à lire ses textes il ne doit pas beaucoup sourire, grrr - ; pas de chance, il n'est plus blogueur ! Hum...
65. Ne pas être saoul sur les fêtes de fin d'années - édition 2005/2006 - ; raté en toute beauté :whistle:
66. Passer commande sur Internet, réalisé le 1ier mai j’ai commandé l’album de nos fiançailles ! (dès réception je le photographie et le met en ligne :D )
69. Faire une liste de mes BD ;
70. Faire un pas important dans ma carrière ; réalisé dès septembre 2007 j’ai changé deux fois de travail pour enfin avoir le bon !
73. Manger dans un restaurant indien ;
75. M’acheter un nouveau portefeuille ; réalisé en 2007 (ai oublié quand !)
82. Offrir des sous-vêtements féminins ;
85. Profiter de mes vacances ; réalisé avec ma compagne lorsque nous étions à Djerba, pour une fois j’en ai « pas peté une ! » ;
87. Revoir mes amis Thierry et Ingrid ;
89. Ne pas m’acheter de PC supplémentaire ; (toujours réalisé !! Ouiii !!)
90. Ne pas utiliser de voiture en tant que conducteur pendant que la liste n’est pas terminée ; heu... raté ! Ma belle m'a réapris à conduire... Pour un cas d'urgence !
91. Ne plus dépenser plus 500€ de BD par mois tant que la période de 1001 jours n'est pas écoulée ; Réalisé, je barre déjà car mes priorités ont changés ! Donc je sais que c’est déjà un de gagné en plus !
92. Offrir un nouveau lit à ma mère - le sien est légèrement vieillot -,
93. Ne pas m'offrir le chien que je désire (le pauvre serait malheureux en appartement, surtout un Danois) ; réalisé et c’est toujours le cas ! Je suis encore et toujours en appartement…
98. Apprendre à ne plus faire de fautes orthographiques sur mon blog - ou du moins à les diminuer très fortement ! - ; c’est pas à moi de juger P:
98. Ne pas s'abonner à un magasine,

Attendons un peu que la blogosphère se mette au point... Et lisons leurs billets pour savoir où ils en sont !

AutoIt : créer un sondage

, , , ...

Dans les très petites entreprises, déployer un système de sondage est assez fastidieux... Mais surtout onéreux.

Toutefois, il y a des moyens gratuits et puis il y a le bricolage par le développement d'un petit outil... Regardons comment cela se passe !

Définissons en premier temps les propriétés de l'exécutable
; *********************************************************
; Propriétés de l'exécutable
; *********************************************************
#Region
#AutoIt3Wrapper_Version=dev
#AutoIt3Wrapper_outfile=eiq.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Logiciel d'enquête
#AutoIt3Wrapper_Res_Fileversion=0.0.1.1
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=© Groumphy 2008
#AutoIt3Wrapper_Res_Language=2060
#AutoIt3Wrapper_Res_Field=Company|Privé
#AutoIt3Wrapper_Icon=monIcone.ico
#EndRegion


Les obligatoires :
#NoTrayIcon
#include <GUIConstants.au3>


Les variables
; *********************************************************
; Déclaration des variables
; ********************************************************* 
Dim $s_fichierINI = "parametres.ini"
Dim $s_fichierResultat = "enquete.txt"
Dim $s_lectureSectionUtilisateur = IniReadSection($s_fichierINI, "UTILISATEURS")
Dim $i


L'appel des fonctions...
_version("DEV")
_verificationFichierResultat()


Les fonctions...

Vérifie que le nom d'utilisateur se trouvant dans le fichier INI est bien de valeur Y (pour yes), si la valeur est bien Y, lance la GUI pour l'enquête...
Func _routineIdentification()
For $i = 1 To $s_lectureSectionUtilisateur[0][0]
If $s_lectureSectionUtilisateur[$i][0] = @UserName Then
If $s_lectureSectionUtilisateur[$i][1] = "Y" Then _GUI()
Else
;MsgBox(0, "", "Ne rien faire")
EndIf
Next
EndFunc


La GUI principale.
Elle affiche deux labels, une combox qui permet un choix, ce choix est récolté et placé dans un fichier texte.
Func _GUI()
MsgBox(0, "", "lancement GUI")
#Region ### START Koda GUI section ### Form=i:\script\en développement\enquete satisfaction it\gui_enqueteinformatique.kxf
GUICreate("Enquête informatique", 272, 219, 246, 115)
GUICtrlCreateLabel("Afin d'optimiser son efficacité, le service informatique ", 10, 10, 254, 17)
GUICtrlCreateLabel("vous demande de répondre à la question suivante :", 10, 30, 256, 17)
GUICtrlCreateGroup(" Qualité du support : ", 25, 55, 225, 105)
GUICtrlCreateLabel("Veuillez choisir dans la liste déroulante.", 35, 75, 185, 17)
GUICtrlCreateLabel("Quelle est la qualité du support donné ?", 35, 95, 190, 17)
$cbx_ChoixListeDeroulante = GUICtrlCreateCombo("Sélectionnez votre choix", 35, 115, 200, 25, -1, -1)
GUICtrlSetData($cbx_ChoixListeDeroulante, "Excellente|Très bonne|Bonne|Médiocre|Très mauvaise")
GUICtrlSetTip($cbx_ChoixListeDeroulante, "Faite votre choix dans la liste déroulante")
GUICtrlSetCursor ($cbx_ChoixListeDeroulante, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btn_Valider = GUICtrlCreateButton("&Valider", 160, 175, 100, 33, 0)
GUICtrlSetTip($btn_Valider, "Valider l'enquête informatique")
GUICtrlSetCursor ($btn_Valider, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
;Case $cbx_ChoixListeDeroulante
Case $btn_Valider
$cbx_ChoixListeDeroulante = GUICtrlRead($cbx_ChoixListeDeroulante)
If $cbx_ChoixListeDeroulante = "Sélectionnez votre choix" Then
MsgBox(0 + 32, "Information", "Vous n'avez effectué aucun choix dans la liste déroulante.")
Else
MsgBox(0, "Tracking", "Choix : " & $cbx_ChoixListeDeroulante)
GUISetState(@SW_HIDE)
; Lancer l'écriture dans un fichier texte !!
Dim $s_OuvertureFichier
$s_OuvertureFichier = FileOpen($s_fichierResultat, 1)
FileWriteLine($s_OuvertureFichier, @UserName & @TAB & $cbx_ChoixListeDeroulante)
FileClose($s_OuvertureFichier)
_ChangeValeurINI("N")
MsgBox(0, "", "Valeur changée en N, sortie")
EndIf
EndSwitch
WEnd
EndFunc


Une fonction permettant de changer la valeur du nom d'utilisateur... Le plus simple possible.
Func _ChangeValeurINI($s_Valeur)
IniWrite($s_fichierINI, "UTILISATEURS", @UserName, $s_Valeur)
EndFunc


Fonction vérifiant la présence des fichiers obligatoires...
Func _verificationFichierResultat()
If NOT FileExists($s_fichierResultat) Then 
MsgBox(0, "Erreur", "Pas de fichier résultat !")
Exit
ElseIf NOT FileExists($s_fichierINI) Then
MsgBox(0, "Erreur", "Pas de fichier d'initialisation")
Exit
Else
_routineIdentification()
EndIf
EndFunc


Une fonction Goonie pour débuter et vérifier l'état d'avancement de la fonction...
Func _version($s_typeVersion)
If $s_typeVersion = "DEV" Then
$s_typeVersion = "Le logiciel lancé est en devélopement et est présenté à titre d'idée. V.DEV"
ElseIf $s_typeVersion = "ALPHA" Then
$s_typeVersion = "Le logiciel lancé est en développement et nécessite encore des améliorations " & @CR & _
"toutefois il est parfaitement exploitable. V.ALPHA"
ElseIf $s_typeVersion = "BETA" Then
$s_typeVersion = "Le logiciel lancé est en version de test et nécessite encore des corrections " & @CR & _
"Merci de faire un feedback à xxxx. V.BETA"
ElseIf $s_typeVersion = "PROD" Then
$s_typeVersion = ""
EndIf
If NOT $s_typeVersion = "" Then
MsgBox(0 + 64, "Information", $s_typeVersion)
EndIf
EndFunc


Simple et efficace. C'était une simple idée. Mais elle est fonctionnelle. C'est le principal.

Mais que contiennent les autres fichiers ?
Le fichier INI :
[UTILISATEURS]
USER1=Y
USER2=Y
# on continue les utilisateurs au fur et à mesure, 
# seul le login compte. La valeur N ne fera aucun effet sur la fonction


Le fichier résultats comportera les valeurs suivantes :
USER1 (espace blanc, tabulation...) CoteDonnées (ici Médiocre, bonne, excellente...)
USER2 Bonne
USER3 Excellente


Les résultats du fichier texte sont utilisables dans un tableur, une base de données, etc.
Pour lancer l'enquête, il faut placer simplement un appel dans le NETLOGON pourquoi pas...

Qu'en pensez-vous ?

Les puces RFID

, , ,

Lorsque l'on parle de big brother, on en vient rapidement aux puces électronique et à leur futur.
Une des plus connues est la RFID. Mais c'est aussi celle qui cause le plus de polémique. Une émission est passée en minute sur la télévision belge La Une. Elle parlait des dites puces RFID !

Certains propos sont choquants, d'autres poignants, parfois c'est même très inquiétant.

Microsoft Outlook Express ou Windows Authentique ou Microsoft Office 2007

, , , ...

Comme beaucoup de personne j'ai commencé par avoir une adresse Hotmail... De Microsoft. Que j'utilise maintenant pour éviter le SPAM sur mes autres adresses (pro, GMail, etc.).

Un des logiciels que je trouvais particulièrement bien "roulé" de Microsoft (si bien paramétré bien entendu), et pour une fois gratuit c'était Microsoft Outlook Express.

Et les deux se combinaient à merveille. Et ce malgré le fait que quelques années par la suite, le logiciel était bridé pour relever le courrier sur Hotmail (du fait d'un fameux Service Pack 2... Mais cela est une autre histoire).

Mais quel ne fut pas ma surprise de recevoir ce jour, ce mail :

Cher utilisateur de Microsoft Outlook,

Merci d'utiliser Microsoft® Office Outlook®. D'après les informations dont nous disposons, vous utilisez Outlook pour accéder à un compte de messagerie Windows Live™ Hotmail® avec un protocole appelé DAV (Distributed Authoring and Versioning). Tout comme POP3 ou IMAP, DAV est la façon dont un client de messagerie communique avec un serveur de messagerie Web.

Nous avons tenu à informer nos utilisateurs les plus fidèles qu'à partir du 30 juin 2008, Microsoft désactivera le protocole DAV, ce qui signifie que vous ne pourrez plus accéder à votre boîte de réception Hotmail via Outlook.

En conséquence, nous vous conseillons de télécharger Microsoft Office Outlook Connector pour Windows Live Hotmail, complément gratuit de Microsoft Office Outlook 2007 et 2003. La dernière version de ce complément vous permettra de gérer facilement votre compte de messagerie Windows Live Hotmail à partir d'Outlook, de même que vos autres comptes de messagerie POP3/IMAP. Mieux encore : Microsoft Office Outlook Connector synchronisera également vos contacts, ainsi que votre calendrier* (si votre service le prend en charge) !

Téléchargez Microsoft Office Outlook Connector pour Windows Live Hotmail.

http://www.microsoft.com/Downloads/details.aspx?FamilyID=7aad7e6a-931e-438a-950c-5e9ea66322d4&displaylang=fr

Merci encore d'utiliser Outlook ! Il ne fait aucun doute que vous serez tout aussi satisfait par le de Microsoft Office Outlook Connector pour Windows Live Hotmail.



L'équipe Windows Live Hotmail



Questions fréquemment posées :

Pourquoi désactiver le protocole DAV ?

DAV est un protocole d'ancienne génération qui gère mal l'accès à des boîtes de réception volumineuses. Or, nous avons progressivement augmenté la capacité des boîtes de réception de nos utilisateurs (jusqu'à une capacité gratuite de 5 Go aujourd'hui), ce qui rendait nécessaire l'utilisation d'un protocole plus efficace.

Qu'est-ce qui remplace le protocole DAV ?

Nous avons mis au point un nouveau protocole, DeltaSynch, qui est beaucoup plus performant que DAV, en particulier pour gérer les boîtes de réception volumineuses. Il permet aux clients de messagerie de télécharger uniquement les modifications enregistrées depuis la dernière consultation du serveur. Ce fonctionnement est beaucoup plus efficace que celui de DAV, qui télécharge systématiquement tous les en-têtes de tous les dossiers.

DeltaSynch est-il compatible avec Outlook ?

Microsoft Office Outlook Connector pour Windows Live Hotmail offre un accès DeltaSynch pour Outlook.

J'ai une version d'Outlook antérieure à 2003. Puis-je utiliser Microsoft Office Outlook Connector ?

Microsoft Office Outlook Connector pour Windows Live Hotmail est compatible uniquement avec Microsoft Office Outlook 2007 et 2003. Pour synchroniser avec Windows Live Hotmail, vous devez passer à Microsoft Office Outlook 2007, qui vous aide à gérer votre temps et vos informations grâce à de nouvelles fonctionnalités très intéressantes. Vous pouvez ainsi retrouver en un clin d'oeil le message dont vous avez besoin, gérer facilement vos priorités quotidiennes grâce à la nouvelle Barre des tâches et communiquer avec vos contacts en publiant votre calendrier en ligne ou en envoyant des cartes de visite électroniques personnalisées !

Microsoft propose également Windows Live Mail, client gratuit de nouvelle génération qui permet de gérer facilement plusieurs comptes de messagerie (Windows Live Hotmail et autres) prenant en charge les protocoles POP3/IMAP. Windows Live Mail s'intègre également très bien aux autres services Windows Live, est optimisé pour une utilisation avec Windows Live Hotmail et offre les avantages suivants :

Utilisation hors connexion
Regroupement des comptes Windows Live Hotmail pour les utilisateurs disposant de plusieurs comptes Hotmail
Regroupement des comptes de messagerie POP et IMAP
Puissance des fonctionnalités de partage de photos
Recherche avancée via une intégration à Desktop Search
Outils garantissant la sécurité (fonctionnalités de protection contre les virus, le hameçonnage et le courrier indésirable pour tous les utilisateurs dépourvus de logiciel antivirus)
Intégration aux services Windows Live, y compris Windows Live Spaces
Regroupement des flux RSS (Real Simple Syndicat)
Possibilité d'envoyer des SMS à un appareil mobile à partir de Windows Live Mail
Vous pouvez télécharger Windows Live Mail à partir de : http://get.live.com/wlmail/overview.



*La synchronisation du calendrier, des tâches et des notes n'est pas disponible pour tous les services. Si votre service propose la synchronisation du calendrier, il assurera aussi celle des tâches et des notes. Pour en savoir plus, consultez la liste des possibilités offertes par votre service.



Microsoft respecte votre vie privée. Pour plus d'informations, consultez notre déclaration de confidentialité en ligne.

Microsoft Corporation, One Microsoft Way, Redmond, WA 98052, États-Unis


Est-ce que de fait Microsoft Windows Live remplacera-t-il ce client de messagerie avec tout autant de grace qu'à vécu Microsoft Outlook Express ?

Je ne le pense pas. Car lorsque j'arrive sur la page de téléchargement de Microsoft Outlook Collector il y a une demande de téléchargement du Windows Genuine Adventage... Et le Microsoft Windows Live n'est pas accessible sans avoir le Messenger Live, lui-même accessible que par le Windows Genuine Adventage.

Heureusement qu'il nous reste Microsoft Office 2007 ! (hum, c'est ironique !)

CSS Naked Day

Il y a peu, précisément une année, j'avais dit que j'allais participer... Certes cette fois c'est tard, mais j'y participe. Le CSS Naked Day.

Et pour marquer le coup, je le laisse à mon avis plus longtemps. Parce que je le désire mais surtout parce que je désire rattraper le retard.
A vous de voir donc le blog sans mise en forme (oui pour les néophytes, c'est fait exprès !).

AutoIt : rechercher sur Google

, ,

Pourquoi n'y ai-je pas pensé avant ?

#Include <IE.au3>

Dim $s_iptBox
$s_iptBox = InputBox("Recherche Google","Que désirez-vous chercher sur Google ?")
_GoogleSearch($s_iptBox)
Exit

Func _GoogleSearch($strSearch)
    Local $o_IE
    $strSearch = StringReplace($strSearch," ","+")
    $o_IE = _IECreate ("http://www.google.com/search?hl=en&q=" & $strSearch)
EndFunc


Simple, mais plutôt efficace.

AutoIt : interface conviviale

, ,

AutoIt dans sa version 3 permet de faire des interfaces graphiques. Ce n’est un secret pour personne.
Toutefois il y a des leçons à tirer sur les GUI (interface graphique) afin de les rendre conviviales.
Passons en revue quelques méthodes simples.
Créons une feuille.
#include <GUIConstants.au3>
$GUI_NomFeuille = GUICreate("Nom de la feuille", 340, 210, -1, -1)
GUISetState(@SW_SHOW)

Que pouvons-nous constater ?
  1. nous utilisons des valeurs rondes pour la dimension de la feuille ;
  2. nous laissons l’emplacement de la feuille par défaut ;
  3. la feuille est nommée d’un nom compréhensible de l’endroit où elle se trouve ou de l’action qu’elle mène (exemple : Aide si c’est la feuille Aide etc.)

Identiquement à une interface web, nous pouvons rajouter un (des) menu(s).
$mn_Fichier = GUICtrlCreateMenu("&Fichier")
$ssMn_Ouvrir = GUICtrlCreateMenuItem("&Ouvrir", $mn_Fichier)
$ssMn_Quitter = GUICtrlCreateMenuItem("&Quitter", $mn_Fichier)
$MenuItem1 = GUICtrlCreateMenu("&Aide")
$ssMn_APropos = GUICtrlCreateMenuItem("A &propos", $MenuItem1)
$ssMn_Aide = GUICtrlCreateMenuItem("A&ide", $MenuItem1)

Que pouvons-nous remarquer ?
  1. nous utilisons des noms de menu dit « classique » (tel Fichier, A propos) ;
  2. les sous-menus sont eux aussi de noms « classique » ;
  3. chaque menu et sous-menu dispose d’une clé d’accès (éperluette devant la lettre servant de clé d’accès) ;
  4. les menus sont placés dans un ordre logique rappelant les logiciels les plus connus (par exemple Fichier suivis de Editions, suivis de Affichage, suivis de A propos/Aide etc.) ;

Une interface graphique permet la plupart du temps de faire de nombreuses actions. Il est généralement conseillé de grouper les actions similaires ou de séparer les types d’actions.
Cela se fait généralement par un groupe.
Créons en un :
$Gp_GroupeAction = GUICtrlCreateGroup(" Groupe de l'action : ", 10, 10, 320, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Nous pouvons dire d’emblée les choses suivantes :
  1. le groupe est créé et fermé ;
  2. des valeurs rondes sont utilisées sur le groupes ;
  3. des valeurs logiques sont utilisées pour placer le groupe mais aussi pour déterminer sa largeur (ainsi je place mon groupe à 10 pixels du bord de la feuille mais je sais aussi que sa fin sera « amputée » de 10 pixels du bord droit de la feuille ; ce qui nous fait la largeur de la GUI [340] soustraite des 10 du bord gauche et du bord droit ce qui nous donne 320 en largeur) ;

Dans le groupe nous pouvons placer différents éléments. Notamment des « labels » et des boutons qui permettent de faire des actions.
 $btn_Ouvrir = GUICtrlCreateButton("&Ouvrir", 200, 32, 110, 30, 0)
GUICtrlSetTip($btn_Ouvrir, "Ouvrir un fichier dans la mémoire")
GUICtrlSetCursor ($btn_Ouvrir, 0)
$lbl_BtnOuvrir = GUICtrlCreateLabel("Ouvrir un fichier dans la mémoire", 20, 40, 160, 20)

Ici aussi quelques petits détails doivent nous sauter aux yeux :
  1. nous utilisons toujours des valeurs rondes ;
  2. les contrôles d’actions disposent d’une infobulle ;
  3. les contrôles d’actions disposent d’un autre curseur que celui de l’interface graphique ;
  4. pour déterminer les infobulles et le curseur nous n’utilisons pas la valeur par défaut (égale à -1) mais bien le nom de la variable qui détermine le contrôle ;

Les boutons placés en bas de la GUI, hors de tout groupes, non accompagné de label, etc. seront les boutons généraux (par exemple : Quitter, Aide, etc.) et bien souvent repris dans le menu Fichier.

Comme vous l’aurez compris, pour avoir une interface graphique agréable, l’homogénéité devra être présente, l’accessibilité tout autant (via les clés d’accès) etc.

En parlant d’accessibilité, il est bon de rappeler qu’il est correct de mettre des données incorrectement introduite dans une autre couleur… Toutefois qui ne vous dit pas que la personne qui utilise votre script ne confond pas les couleurs ?

Il serait tout aussi correct (par exemple) d’utiliser la couleur et des astérisques pour informer que les données ne sont pas correctes.

Nous pourrions par exemple utiliser une routine de ce type sur un Input :

Création de l’Input
 $gp_GroupeAction2 = GUICtrlCreateGroup(" Encodage du nom : ", 10, 85, 320, 65)
$btn_Verifier = GUICtrlCreateButton("&Vérifier", 200, 105, 110, 30)
GUICtrlSetTip(-1, "Vérifier les données encodées")
GUICtrlSetCursor (-1, 0)
$ipt_EncoderNom = GUICtrlCreateInput("Encoder votre nom", 20, 110, 170, 20)
GUICtrlSetTip(-1, "Encodez votre nom et poussez par la suite sur le bouton Vérifier")
GUICtrlCreateGroup("", -99, -99, 1, 1)

La routine de contrôle
Case $btn_Verifier
If GUICtrlRead($ipt_EncoderNom) <> "pwouet" Then
Dim $tmp = GUICtrlRead($ipt_EncoderNom)
GUICtrlSetData($ipt_EncoderNom, "***" & $tmp & "***")
GUICtrlSetColor($ipt_EncoderNom, 0xff0000)
GUICtrlSetData($btn_Verifier, " => Revérifier")
GUICtrlSetColor($btn_Verifier, 0xff0000)
Else
MsgBox(0 + 64, "Information", "Données encodées correcte.")
EndIf

Il est bon de retenir que ce qui s’applique sur le web, s’applique sur les GUI… Tous les trucs, astuces, modes sont bons pour pouvoir donner une « consistance » à une interface graphique !

Installation d’imprimante par script AutoIt

, , , ...

Dans un réseau d’entreprise, il n’est pas rare qu’on utilise encore les script en MS-DOS pour installer une imprimante. Cela se fait grâce à l’utilitaire Con2Prt.exe de Microsoft.

Il suffit alors de composer un petit script dans le style :
REM DEFINITION DES VARIABLES
SET PRTSRV=NOMSERVERIMPRESSION
SET PRTSRVBCK=NOMSERVERIMPRESSIONBACKUP
CHANGE CLIENT /DEFAULT_PRINTERS
REM SUPPRESSION IMPRIMANTE
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /F
IF %CLIENTNAME%==NOMDELASTATION Goto NOMSIGNET
:AUTRES
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /CD \\%PRTSRV%\NOMDEPARTAGE
GOTO END
:NOMSIGNET
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /CD \\%PRTSRV%\NOMDEPARTAGE
GOTO END
:END

EXIT

Toutefois il y a moyen de faire cela plus sympathiquement : j’entend en AutoIt…
Passons en revue deux manières simples.
La première est d’utiliser similairement l’application CON2PRT.EXE de Microsoft, la seconde la DLL permettant l’installation d’une imprimante réseau : PRINTUI.DLL.

Vu que nous pouvons tout aussi bien utiliser le nom de la machine ou le nom d’utilisateur, et vu que j’ai déjà présenté dans le script MS-DOS que c’était le nom de la machine, changeons cela avec le nom d’utilisateur.
Décentralisons nos informations dans un fichier INI tel :
[SERVERS]
PRINTSERVER=NomDuServerImpression
LOGONSERVER=LogonServer
[USERNAME]
GROUMPHY=Imprimante1|Imprimante2
GROUMPHY2=0

Groumphy et Groumphy2 sont les noms d’utilisateurs standards…
Enregistrons ce fichier.
Commençons par définir ce fichier en variable.
Global Const $s_INI = "InstImpNetLogon.ini"

Si nous utilisons CON2PRT.EXE rajoutons pourquoi pas :
Global Const $s_C2P = "con2prt.exe"

Rajoutons une structure pour pouvoir vérifier la présence de nos fichiers nécessaire :
Func _test()
            If NOT FileExists(@ScriptDir & "\" & $s_INI) Then _error($s_INI)
            If NOT FileExists(@ScriptDir & "\" & $s_C2P) Then _error($s_C2P)
EndFunc
Func _error($param1)
            MsgBox(0 + 16, "Error", "Fatal Error. Application 'Core' File Not Found." & @CR & _
                                                                                  "Error Code : " & @ScriptLineNumber & @CR & _
                                                                                  "File Code : " & $param1 & " not found." & @CR & @CR & _
                                                                                  "Please contact your System Administrator",10)
            Exit
EndFunc

Avant de commencer il est bon de supprimer toutes les imprimantes (identiquement à notre script MS-DOS).
Func _deletePrt()
            RunWait(@ScriptDir & "\" & $s_C2P & " /f")
EndFunc

Et de poser les variables :
Global Const $s_PrtServer = IniRead($s_INI, "SERVERS", "PRINTSERVER", "")
Global Const $s_LogonServer = IniRead($s_INI, "SERVERS", "LOGONSERVER", "")
Dim $s_UserName, $s_iniRead, $s_Compteur
            $s_UserName = @UserName
            $s_iniRead = IniRead($s_INI, "USERNAME", $s_UserName, "")
            $s_iniRead = StringSplit($s_iniRead, "|")

Parfais. La structure de base est en place.
Comme vous pouvez le constater dans le fichier INI j’ai mis « 0 » pour l’utilisateur Groumphy2. « 0 » m’indique que je ne dois pas installer d’imprimante.
Faisons une petite structure conditionnelle de ce type alors :
If $s_iniRead[1] = 0 Then
            MsgBox(0 + 64, "Information", "No printers to install... Exit of script.", 10)
            Exit
EndIf

Mais si nous devons installer des imprimantes, il nous faut une boucle permettant de faire cela :
$s_Compteur = 0
Do
            $s_Compteur = $s_Compteur + 1
            _installPrt($s_iniRead[$s_Compteur])
Until $s_Compteur = $s_iniRead[0]

Dans cette boucle, j’appele la function _installPrt que voiçi :
Func _installPrt($param2)
            RunWait("\\" & $s_LogonServer & "\" & $s_C2P & " /c " & "\\" & $s_PrtServer & "\" & $param2)
EndFunc

Et il ne faut rien de plus.

Pour maintenant rajouter un nouvel utilisateur nous n’aurons plus qu’à changer le fichier INI.

Nous avons aussi la possibilité de définir l’imprimante par défaut. Pour ce faire il suffit de rajouter une structure conditionnelle dans la fonction _installPrt pour que la première imprimante prise dans la zone de mémoire soit celle par défaut (installable avec /CD en place de /C).

Pour installer l’imprimante avec PRINTUI.DLL nous ferons exactement de même… Sauf que nous aurons la commande suivante :
$comm = RunWait("rundll32 printui.dll,PrintUIEntry /in /q /n\\" & $s_PrtServer & "\" & $param2, "", @SW_HIDE)


Plus simple, nous ne pouvons le faire. Cela fonctionne correctement en pratique…

AutoIt : récupérer les arguments

, , , ...

En regardant encore les scripts qui sont fournis nativement dans AutoIt, et notamment l'excellent AutoUpdateIt, j'ai découvert une petite fonction assez sympathique servant à récupérer les arguments passé en ligne de commande à un exécutable.

; Auteur : Rob Saunders
; Original script : AutoUpdateIt
Func _StringInArray($a_Array, $s_String)
Local $i_ArrayLen = UBound($a_Array) - 1

For $i = 0 To $i_ArrayLen
If $a_Array[$i] = $s_String Then
Return $i
EndIf
Next
SetError(1)
Return 0
EndFunc


Pourquoi réinventer la roue ?
Alors comment fonctionne-t-il ?

Très simplement :

  • Dans le script AutoIt :
    If _StringInArray($CmdLine, "/coucou") Then MsgBox(0, "", "Coucou trouvé !")
    

  • Lancement en ligne de commande (si le script s'appelle test.exe) :
    C:\chemin_complet>test.exe /coucou
    



Pratique mais rarement utilisé toutefois !

Goog ?

, ,

Vous le saviez-vous ?
Et par hasard... Ou pas !

Mais bon cela vous le saviez non ?

FOSDEM 2008

, ,

On en parle beaucoup dans la blogosphère, ce W.E. c'est le FOSDEM.
Comme chaque année, l'événement majeur dans le monde du logiciel libre se tiens à l'ULB ! Et comme chaque année on y retrouve les grands noms : la Mozilla Foundation, Novel (pour openSUSE), etc.

Mais on y retrouvera aussi des grands blogueurs, des grands noms de la blogosphère européenne... Et enfin un petit informaticien qui y passera une petite heure cet après-midi en compagnie de sa future femme et fille*.

Si vous lisez ce blog et que vous me croisez au FOSDEM, n'hésitez pas à m'interpeler.







* : vous ne saviez pas que c'était une fille ? Et bien vous voila prévenu...

Passage de variable de MS-DOS vers VBS

, ,

Après quelques instant de repos, un retour en douceur…
J’ai eu il y a quelques temps une question sur laquelle j’ai cherché pendant pas mal de temps une solution :

Passer des paramètres de fichier BATCH en fichier BATCH ou de fichier BATCH vers un fichier BATCH… Mais que le dernier qui était lancé renvoyait la valeur des variables mandées vers le premier.

Partageons donc la solution :

Le BATCH
@ECHO OFF
CLS

ECHO ---------------------------------
ECHO Variables
ECHO ---------------------------------
ECHO Fichier : %~s0
ECHO Utilisateur : %1
ECHO (Vide au lancement du BATCH)
ECHO Password : %2
ECHO (Vide au lancement du BATCH)
PAUSE

WSCRIPT.EXE MSG.VBS %~s0

EXIT

Et le VBS :

' Passage de Variable BATCH VBS BATCH
' v0.3.19 (c) Groumphy


' Pose des variables
Dim Variable, UserName, Password, Executable

' Récupération du premier argument passé dans le VBS
' par le BATCH. Ligne de commande :
' WSCRIPT.EXE MSG.VBS Argument
Variable = wscript.arguments(0)

'Exposition de la variable récupérée
WScript.Echo "La variable est : " & Variable

' Demande du nom d'utilisateur par InputBox
UserName = InputBox("Quel est le nom d'utilisateur ?")

    ' Si le nom d'utilisateur est vide
    If IsNull(UserName) Then
        ' Message d'information d'erreur
        MsgBox "Erreur - Nom d'utilisateur incorrect."
    ' Sinon lancement de la suite de la procédure
    Else
        ' Demande du mot de passe par InputBox
        Password = InputBox("Quel est le mot de passe associé au nom d'utilisateur " & UserName)
        ' Si le mot de passe est vide
        If IsNull(Password) Then
            ' Message d'information d'erreur
            MsgBox "Erreur - Mot de passe incorrect."
        ' Sinon poursuite de la procédure
        Else
            ' Affichage de la variable, du nom d'utilisateur et du mot de passe
            WScript.Echo Variable & " " & UserName & " " & Password
            ' Définition de la variable en tant qu'objet du Shell
            Set Executable = CreateObject("WScript.Shell")
            ' Lancement de l'objet Shell contenant la variable, le nom
            ' d'utilisateur et le mot de passe
            Executable.Run Variable & " " & UserName & " " & Password
        End If
    End If


Comme d’habitude j’ai commenté la source … Rien de bien extraordinaire, mais j’ai été surpris de ne pas encore voir la solution dans beaucoup de forum.
Maintenant cela peut être utile.

Bien entendu le BATCH peut avoir une forme différente. Nous pourrions utiliser une petite ligne supplémentaire telle que :
SET TEST=%1
IF NOT DEFINED TEST1 GOTO END

Et juste avant la sortie du script :
:END
EXIT

Cela fermera le script si la variable renvoyée est vide…
Plutôt simple non ?

2008, 3 ans... Et du repos

Premier billet de l'année, pour plein de petites choses :

  • vous souhaiter une excellente année 2008, que celle-ci soit pleine de bonheur, de joie et de bonnes choses... (Classique, mais sincère)
  • 3 ans que le blog existe ! Oui cela ne nous rajeunis pas, et la ligne éditoriale que je m'étais fixée dès le début change sans cesse... Mais c'est toujours avec le même plaisir que j'essaie d'être présent ;
  • du repos : oui cela fait longtemps que je n'écris plus, mais je ne laisse pas mourir le blog, loin de là. Encore merci à tous, de le faire vivre !


Et pour terminer, une petite photographie de ma belle et moi lors de nos fiançailles :


A très bientôt, (moins souvent, mais toujours présent !)

Commerce alternatif...

Un petit e-mail envoyé ce jour...
Mesdames, Messieurs,

Faisant suite à la publicité parue dans le Metro de ce jour, je désirais faire une commande d'un "livre photographie".
Malheureusement il ne m'est pas possible de pouvoir passer cette commande, en effet il est obligatoire de télécharger un logiciel (exécutable) uniquement compatible avec Microsoft Windows, hors je suis un utilisateur Linux.

Excepté si votre politique commerciale se limite aux utilisateurs de Microsoft Windows, auriez-vous une solution pour les utilisateurs étant sous un système d'exploitation basé sur Linux ?

D'avance un grand merci,

Libération.fr : allez les belges !

, ,

ZazouMiniWebBrowser

, , , ...

A l'heure actuelle, ZazouMiniWebServeur est certainement le plus léger de tous les serveurs web (300Ko) et le plus pratique (un double clic et vous avez un Serveur Web !), malgré un défaut (il ne fonctionne que sous Microsoft Windows).

Que pouvions nous demander de plus ?
Simplement un navigateur activant en même temps le Serveur Web ! Voila qui est fait avec la sortie de ZazouMiniWebBrowser...







(Ce message est en soutien avec le projet ZMWS - ZMWSB)
Message à caractère privé (@ Xavier) : le dev de ZLAAM est un peu stoppé... Je reprend as soon as possible !

Fun et autres choses !

Only for the fun... Le plaisir de ne rien faire !

77% Geek


El Paso Dating
online dating

Et puis encore addict à 73% au café... Que des trucs bien sur ce site !!

Et puis spécifiquement pour les assiduts du HTML et du CSS : How Many HTML Elements Can You Name in 5 Minutes ? - How Many CSS Properties Can You Name in 7 Minutes ? ...

Serait-ce bientôt un membre de Alsacréations qui aura le record ?

Coloration syntaxique

, , , ...

Alors que je recherchais quelques petites fonctions en javascript (que j'aurais mieux fait de faire moi-même) je suis tombé sur un script sympathique de coloration syntaxique multiple (prenant en compte autant le Javascript, le CSS, etc...).

Comment utiliser cette "librairie" ? Tout simplement en insérant le code suivant dans l'en-tête :
<link type="text/css" rel="stylesheet" href="css/SyntaxHighlighter.css"></link>
<script language="javascript" src="js/nom_du_langage.js"></script>
<!-- nom_du_language.js doit être remplacé par un élément existant et correspondant au language désirée, 
exemple pour le CSS : shBrushCss.js -->


Par la suite il suffit de nommer le conteneur du code avec le nom code (name="code") et d'indiquer dans la classe de l'élement conteneur le style de language (class="css") et c'est tout !
Donnant en résumé ceci :
<pre name="code" class="c-sharp">
 // Début du code... etc...
</pre>


Simple non ?

Il existe en plus de nombreuses options et une évolution certaine !
Du point de vue accessibilité, cela ne pose aucun problème. Que demander de plus ?

Le web vu de la Chine

, , , ...

Je suis bloqué... Et vous ?

Merci Obni

Windobe

, ,

<code poet>
  <windows>
  Linux : because rebooting is only for installing new hardware !
  </windows>
</code poet>



Et je pense achetter cela pour mon/ma petit/e ! (voir ceci)

Les réseaux sociaux

, ,

Les réseaux sociaux, mine d'or pour les chasseurs de tête ?
L'article du jour...

Quant à moi je pense qu'il s'agit d'un moment de passage, principalement pour les réseaux "sociaux" non professionnel (entendons ici Facebook) ; mais qu'il puisse s'agir d'une véritable carte de visite pour certains (pensons principalement à LinkedIn !).

Pour rappel, mon profil LinkedIn et Facebook

"Reading level" de ce blog

cash advance

Par contre si j'encode Groumphy.net :

cash advance

AutoIt : les clés d'accès

, , , ...

A l'image d'un site internet, une interface graphique doit pouvoir facilement se manipuler au clavier.
Il existe donc quelques trucs et astuces de pouvoir intégrer dans votre interface graphique des « clés d'accès », des ordres de tabulations etc.

Les différents contrôles permettant d'être activés au clavier sont les suivants : GUICtrlCreateMenu (pour la création d'un menu), GUICtrlCreateMenuItem (pour un élément d'un menu précédemment créé), GUICtrlCreateRadio, GUICtrlCreateTab (pour l'interface contenant les tabulations), GUICtrlCreateTabItem (pour les différents éléments de tabulation), GUICtrlCreateButton et GUICtrlCreateCheckBox.

Par la suite dans l'interface graphique il y a moyen de déterminer un ordre de tabulation sur les contrôles.

Voyons comment faire en détail :
$filemenu = GUICtrlCreateMenu ("&File")
$fileitem = GUICtrlCreateMenuitem ("&Open",$filemenu)


Cela se fait simplement et uniquement via l'esperluette ! En effet, identiquement au Visual Basic, Visual Basic for Application, la clé ou l'entrée d'accès au contrôle se fait de manière identique. Il faudra pour l'avoir (par exemple ci-dessus le menu) pousser sur la touche Alt de votre clavier qui mettra en valeur (soulignement) les lettres permettant l'accès à la touche, au bouton, au menu etc.

Concernant l'ordre de tabulation, il est paramétrable dans le Koda Interface Designer... Lorsque vous éditez les propriétés ou lorsque votre interface utilisateur (GUI) contenant les contrôles est terminée, faîtes-y un simple clic avec le bouton droit de la souris et choisissez l'option Tab Order.

Pourquoi créer une telle opérationnalité ? Comme vous le savez la rapidité du clavier n'est plus à démontrer, cela donnera un gain de rapidité ; mais aussi du professionnalisme à votre interface de script / application. Mais le plus important reste l'utilisabilité ainsi que l'accessibilité de celle-ci... Votre but premier.

Prague, les photographies

, , , ...

Un nouvel album photos sur Prague, un W.E. avec ma future femme...

Utilisabilité & ergonomie

,

La phrase du jour :
En moyenne, un produit / une interface va présenter 40 disfonctionnement ; corriger un problème en phase de développement coûte 10 fois plus cher que de le corriger en phase de conception ; si le système est en production, cela peut couter 100 fois plus !


Photographies, la suite

, ,

Et hop... Un nouvel album : Tunisie (Djerba) 2007.

Photos

, ,

Quelques rajouts de photographies dans les albums :



Comment toujours c'est en petite dimension... Mais si vous le désirez, vous avez la possibilité d'avoir les grandes dimensions sur simple demande.
(N'oubliez pas la "licence" libre, CreativeCommon :D )

Photographies

, ,

Un nouvel album photographique... Sur les Pays-Bas !
Vos avis sont toujours les bienvenus (système de vote ou commentaire).

Concours photographique

, ,

Le magasine Photo lance son grand concours annuel de photographie !
Un événement à ne pas rater, tant les prix sont exceptionnel... Plus d'information sur le billet qui m'a mis la puce à l'oreille et bien entendu sur le site officiel (et règlement).

Cela me fait remarque que je n'ai plus mis de mes photos depuis bien longtemps en ligne. Affaire à rattraper d'urgence !

A mettre aussi en corélation, la suite des billets de Tristan sur la photographie.

Teasing : la fin

, , , ...

Je vous annonçait depuis quelques temps un petit teasing qui était en cours sur mon blog. J'y avais dispersé quelques indices et... Rien ne fut trouvé.

Mais où étaient-ils ?
Dispersé sur la colonne de droite, il y avait des « countdown » (décompte), quelques renseignements sur un nouveau blog (la barre latérale se met à jour avec les flux RSS)...

Et plein d'autres petites choses de ce style. Cela conforte donc l'idée que bien souvent seul le contenu est lu (le plus souvent par le flux, rarement par le blog) et que tout ce qui est autour est « skippé » !

Mais qu'ai-je donc à vous annoncer ? La diminution des fautes d'orthographe ? Certainement pas.
Alors voici :

#Include <Date.au3>
Dim $acc, $delai, $alphabet, $msg1, $msg2
$acc = _DateToDayValue("2008","05","28")
Select
    Case ($acc - 31) < $acc
        SplashTextOn("Patienter", "Veuillez encore quelques temps 
patienter, " & @CR & _
                    "Construction en cours...", -1, -1, -1, -1)
        While ($acc - 31) < _DateToDayValue(@YEAR, @MON, @MDAY) > ($acc 
- 14)
            Sleep(1000)
        WEnd
        SplashOff()
    Case ($acc - 14) < _DateToDayValue(@YEAR, @MON, @MDAY) > ($acc + 14)
        SplashTextOn("Ouin", "Les jours sont comptés, cela " & _
                        "peut arriver d'une minute à l'autre !" & @CR & _
                        "Albine & Xavier sont heureux de " & _
                        "vous annoncer la venue au monde de ...")
        While ($acc - 14) < _DateToDayValue(@YEAR, @MON, @MDAY)
            Sleep(1000)
        WEnd
        SplashOff()
    Case $acc = _DateToDayValue(@YEAR, @MON, @MDAY)
        MsgBox(0 + 64, "Ouin !", "Albine et Xavier sont heureux " & _
                    "de vous annoncer la venue au monde de ..." & @CR & _
                    "Les autres informations, ne peuvent vous " & _
                    "être divulguée maintenant")       
EndSelect


Vous ne pensiez quand même pas que j'allais vous annoncer cela aussi facilement... Toutefois vous pouvez facilement comprendre en lisant le code :wink:

Futur(e) geek(ette) ? :D
Et qui dit tel événement dit une naissance digitiale aussi... Neuf mois et trois !
May 2008
MTWTFSS
April 2008June 2008
1234
567891011
12131415161718
19202122232425
262728293031