, Philippe Vialatte Une chose qui peut se révéler pour le moins frustrante, en travaillant une bonne partie de son temps sur des serveurs en RDP avec des équipes réparties, c'est le petit message suivant:
![]()
Dans notre cas précis, ces machines ne sont accessibles que par VPN, et dés que le réseau tombe, on à de fortes chances de se retrouver avec une session qui reste ouverte sur le serveur, mais l'impossibilité de s'y reconnecter.
Pour éviter d'aller taper à la porte des administrateurs tous les deux jours, il existe heureusement deux executables, qwinsta et logoff, qui nous permettent de régler le problème.
Première étape, avec qwinsta, il faut lister les sessions ouvertes sur la machine distante:
qwinsta /server:[adresse du serveur]
Par exemple, dans mon cas:

Notez, entouré en rouge, l'identifiant de la session.
Il ne nous reste plus qu'à déconnecter la session, en faisant:
logoff [ID de session] /server:[adresse du serveur]
Soit, dans le cas présent:
logoff 1 /server:IISServer
Attention, effectuer cette manipulation va déconnecter "de force" l'utilisateur, vérifiez bien que la session ne soit pas utilisée !!!
Edit: oui Cyril, le pré-requis est bien d'être connecté avec un compte qui a les droits suffisants pour délogger l'utilisateur en question (droits admin ou, au moins, Disconnect)
Vous devez être identifié pour poster un commentaire.
Il y'à deux semaines, j'avais mentionné la fin des haricots prochaine pour la version gratuite de Reflector.
Dans ce post, je disais préférer payer 25? que de passer de nombreux jours à écrire un décompilateur maison (oui, je sais, la flemme, le travail, les enfants, tout ca.).
Heureusement, d'autres, moins feignants (et probablement plus doués en développement winform.enfin, j'espère) s'en sont déjà chargés.
Premier avantage, c'est gratuit (c'est le descendant d'auvergnat qui parle)
Deuxième, et non le moindre, c'est un produit open-source, ce qui lui garantit (du moins, en théorie) de ne pas tomber dans le cas d'un Reflector dans quelques années ![]()
Ca se passe par ici : ILSpy
Pour le téléchargement, les binaires et le source sont disponibles ici: ILSpy Build Artefacts
Un projet à suivre, donc ![]()
Vous devez être identifié pour poster un commentaire.
Il y'a quelques jours, un post de zinzineti m'a refait penser à une de mes éternels bêtes noires, concernant le niveau de professionnalisme attendu des développeurs.
J'attends, allez jeter un oeil (c'est intéressant ;) ), je ne vais nulle part
Vous y êtes allés ?
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte La traduction est un peu littérale, mais elle à le mérite de bien faire passer le contenu.
Alors, à tous les développeurs qui se sont retrouvés un jour perdus dans l'océans de technos du framework .Net
A tous les architectes qui cherchent du référentiel sur Azure, WCF ou autre.
Ce site sur codeplex peut faire toute la différence entre chercher longtemps et trouver vite:
http://innovation.connect.microsoft.com/devguidancemaps
Et comme dans ce cas, je reprends du contenu de quelqu'un d'autre, pour une description beaucoup plus complète en anglais, ca se passe ici:
http://blogs.msdn.com/b/jmeier/archive/2010/09/27/microsoft-developer-guidance-maps.aspx
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte Je sais que cette information ne va pas intéresser tout le monde, mais, pour ceux qui auraient éventuellement voulu suivre le keynote d'hier soir, mais qui n'ont pas pu (enfant à s'occuper, match à la télé ou autre.), il est désormais disponible à l'adresse suivante:
http://www.studiosevent.com/newscenter/?id=ie9
Et une fois la keynote visualisée, il ne reste qu'à télécharger la beta ici :
http://www.beautyoftheweb.com/
PS/ pour ceux qui utilisent Windows XP...dommage :(
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte D'ici quelques heures, la beta de IE9 sera disponible.
L'occasion de se remettre à tester, mesurer et étalonner les navigateurs du marché (ma vue du marché étant bêtement réduite aux trois navigateurs pour lesquels je suis tenu de fournir des sites qui marchent ;) ).
Au programme des prochains mois, le nouveau mot-clef semble être l'accélération matérielle, que ce soit sur IE 9, Firefox 4, ou Chrome 7. Vient assez prés derrière HTML5 (mais pas supporté de la même manière par les différents navigateurs), et l'amélioration des moteurs de rendu javascript.
Tous les nouveaux navigateurs commencent à faire jeu égal sur l'interface (à mon humble avis de développeur à moitié daltonien), et de ce que j'ai vu, sur les outils de dev.
Pour le moment, de mes tests rapides et complètement partiaux, je vais encore rester un rien sur un combo FF 3.6/TheWorld (pour sa petite trace mémoire avec deezer ;) ) au travail (ne serait-ce que pour des questions de compatibilité), et probablement attendre Chrome 7 pour changer de navigateur. A la maison, à moins qu'IE9 ne propose de belles surprises, Firefox risque de rester encore installé un moment ;)
Et vous, quel navigateur utilisez vous ?
Vous devez être identifié pour poster un commentaire.
La vie d'un développeur/architecte étant rarement de tout repos, arrive toujours un moment ou, pour un site web, on voit se profiler avec terreur une quantité innomable de capture d'écran à réaliser.
Pour un designer.
Pour un manuel.
Pour logger des bugs.
Pour mettre à jour des spécifications (mais non, voyons, le rendu devant être défini dans la spec, pas de raison d'en changer :D)
Jusqu'à il y'à peu, ma vie était triste, je faisais plein de captures avec le bon vieil imprim Ecran de mon fidèle clavier (il commençait à s'user le pauvre), mais les captures d'écran de plus de 1024 étaient une souffrance quotidienne (oui, le concours Windows Phone me laissant peu de sommeil, je me sens d'humeur lyrique ;) ).
Jusqu'à Fireshot :) (Rev. Note: ajouter une petite musique d'ambiance.)
Fireshot est un petit module de Firefox qui, non content de capturer toute la page (et pas juste ce qui est à l'écran) permets aussi de rééditer, enregistrer, uploader ou imprimer une capture d'écran.
Donc, depuis, hop, dans les outils ;)
Pour vous aussi retrouver la joie des captures d'écran (et mettre ce bon vieil ImpEc à la retraite), ca se passe ici :
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte Une petite note en passant pour déplorer un mois d'Avril trop court, mangé par les urgences projet de tout type et autres vacances contre-productives (mais ô combien méritées).
Dans les semaines a venir, une période intense de débogage se profilant, il est fort possible que ce blog regorge de correction de style ou de bugs.
Les deux premiers de la liste, le fameux switch sur une enumeration pour les nuls, ou comment changer ca :
switch (actiontype.ToString()){
case "RENAME":
...
break;
case "DELETE":
...
break;
}
en ca :
switch (actiontype){
case EnumActions.RENAME:
...
break;
case EnumActions.DELETE:
...
break;
}
var strday = startDate.Day.ToString();
if (strday.Length.Equals(1))
tokens.Add("0" + startDate.Day.ToString());
else
tokens.Add(startDate.Day.ToString());
tokens.Add(startDate.Day.ToString("00"));
(et oui, les deux bouts de code sont du même développeur)
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte Comme quoi on n'arrête pas le progrès.
Après avoir posté ce Vendredi un billet sur le sujet, ca m'a titillé pendant presque tout le week-end.
Comment faire pour se passer de ce fichu if qui vient nous augmenter la complexité cyclomatique et qui fait un peu point noir ??
Et la, du coup, en parcourant mes flux rss, ce je tombe sur le post suivant, de Derick Bailey, expliquant comment résoudre mon problème de if avec des lambdas. Comme quoi, c'est quand on ne cherche plus que la réponse arrive ;).
Le résultat final est le suivant :
Et vous, qu'en pensez-vous ?
Cette syntaxe vous parait-elle assez lisible ?
Je suis d'avis que oui, mais j'aimerais surtout des retours de personnes qui ne pannent rien aux lambdas (pour voir à quel point c'est difficile à "vendre")
Vous devez être identifié pour poster un commentaire.
, Philippe Vialatte Vu récemment sur un projet, le code suivant (édité pour des raisons de confidentialité
) :
Dans la page Web :
1: <asp:Button runat="server" Id="btnUpdate" Text="Update" OnClick="btnUpdate_Click" />
2: ...
3: <asp:Button runat="server" Id="btnInsert" Text="Insert" OnClick="btnInsert_Click" />
Dans le code-behind :
1: protected void btnInsert_Click(object sender, EventArgs e){
2: var objetAInserer = new SuperObjet();
3: // une bonne dizaine de ligne de code
4: Manager.Insert(objetAInserer);
5: // encore une bonne dizaine de ligne de code
6: }
7:
8: protected void btnUpdate_Click(object sender, EventArgs e){
9: var objetMisAJour = Manager.LoadByPrimaryKey(currentId);
10: // une bonne dizaine de ligne de code, les mêmes que pour Insert
11: Manager.Update(objetMisAJour );
12: // encore une bonne dizaine de ligne de code, les mêmes que pour Insert
13: }
Et donc, à la maintenance, deux procédures identiques à maintenir…
Et en plus, un bug de copier-coller dans les deux.
Le copier-coller étant une plaie, et le précepte DRY en tête, une petite dizaine de minute de refactorisation donne le code suivant :
1: protected void btnInsert_Click(object sender, EventArgs e){
2: InsertOrUpdate(false);
3: }
4:
5: protected void btnUpdate_Click(object sender, EventArgs e){
6: InsertOrUpdate(true);
7: }
8:
9: private void InsertOrUpdate(bool isUpdate){
10: var objetEnCours = new SuperObjet();
11: if (isUpdate){
12: objetEnCours= Manager.LoadByPrimaryKey(currentId);
13: }
14: // une bonne dizaine de ligne de code
15: if (isUpdate){
16: Manager.Update(objetEnCours);
17: }else{
18: Manager.Insert(objetEnCours);
19: }
20: // encore une bonne dizaine de ligne de code
21: }
Vous allez me dire que ce n’est pas transcendant, mais apparemment, trop de personnes ignorent cette bonne pratique de ne pas traiter l’événement dans le gestionnaire d’événements !
Vous devez être identifié pour poster un commentaire.
Une idée pas forcément très intéressante m'est venue récemment, en terme de comparaison de performances.
Entre ces trois notations, fonctionnellement identiques, laquelle est la plus "performante" :
Vous devez être identifié pour poster un commentaire.
Il y'à quelques temps, j'avais déjà été confronté à des problèmes avec l'installation de SQL Server 2008. Mais bon, comme je dois avoir des cotés SM, il à bien fallu que je réinstalle (encore) SQL Server Express 2008 récemment (et non, je ne m'étendrais pas sur les raisons incroyablement stupides qui me forcent à ré-ré-réinstaller SQL Server.)
Ceci dit, après toutes les manips. précédemment effectuées, j'étais à peu prés sur que cette fois ci, tout allait bien se passer.
.et bien non !
En cours d'installation, une nouvelle erreur apparait, signalant l'absence du fichier MediaInfo.xml.
Redémarrage, recherche, sacrifice de bouc, offrande de rhum, rien n'y fait...
Après une pause café (ou deux), et quelques recherches qui n'ont rien donné de bien concluant, je me dis que je n'ai plus qu'à essayer de taper dans l'installeur. Et la, ô joie, l'installeur étant en fait un bête zip auto-exécutable (et pas un msi), je n'ai qu'à le dézipper pour voir le contenu.
Et magie, le fichier MediaInfo.xml est bien à la racine du répertoire dézippé.mais pas à la racine du répertoire temporaire !!!

Et forcément, après lancement du setup "en manuel", tout fonctionne.
Vous devez être identifié pour poster un commentaire.
Ce blog contient:
- des bouts de code
- quelques news
- des états d'âme
....et des fois, quelque chose d'intéressant ;)




| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Copyright © 2000-2012 - www.developpez.com