Catégorie: Divers

30/06/2011

Permalink 08:01:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Windows, Divers, .Net, 220 mots   French (FR) , Philippe Vialatte

[.NET][Windows] Déconnecter un utilisateur connecté en bureau à distance

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:

RemoteDesktopExceeed

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:

qwinsta

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.

18/02/2011

Permalink 23:33:00, Catégories: Récapitulatif .NET, Récapitulatif, Divers, .Net, 138 mots   French (FR) , Philippe Vialatte

[.NET] Un remplaçant open source pour Reflector

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 Sourire

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 Sourire

Vous devez être identifié pour poster un commentaire.

11/10/2010

Permalink 17:09:00, Catégories: Récapitulatif, Divers, 527 mots   French (FR) , Philippe Vialatte

Le métier de développeur

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 ?

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

27/09/2010

Permalink 21:51:00, Catégories: Récapitulatif .NET, Récapitulatif, Divers, .Net, ASP.NET, 110 mots   French (FR) , Philippe Vialatte

[.NET] Les cartes d’orientation des développeurs

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.

16/09/2010

Permalink 06:03:00, Catégories: Récapitulatif, Divers, Internet Explorer, ASP.NET, 81 mots   French (FR) , Philippe Vialatte

[Windows] Pour tous ceux qui, comme moi, ont manqué le keynote IE9

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.

14/09/2010

Permalink 19:45:00, Catégories: Récapitulatif Web, Récapitulatif, Divers, Internet Explorer, 197 mots   French (FR) , Philippe Vialatte

[Web][Windows] Septembre, la saison des beta

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.

28/07/2010

Permalink 13:32:00, Catégories: Récapitulatif, Divers, 206 mots   French (FR) , Philippe Vialatte

Fireshot, un nouvel outil dans la boîte…

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 :

https://addons.mozilla.org/fr/firefox/addon/5648/

Vous devez être identifié pour poster un commentaire.

19/04/2010

Permalink 10:53:00, Catégories: Récapitulatif .NET, Récapitulatif, Divers, .Net, Perso, 158 mots   French (FR) , Philippe Vialatte

[.NET] Avril, Avril, ou es-tu passé ?

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;
}

Et le second, l'infâme "je ne sais pas utiliser ToString", plus souvent représenté ainsi :
var strday = startDate.Day.ToString();
if (strday.Length.Equals(1))
tokens.Add("0" + startDate.Day.ToString());
else
tokens.Add(startDate.Day.ToString());

Refactorisé dans la minute en
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.

07/03/2010

Permalink 20:38:00, Catégories: Récapitulatif .NET, Divers, .Net, Récapitulatif Génie Logiciel, ASP.NET, 195 mots   French (FR) , Philippe Vialatte

[.NET][G. Logiciel] [Refactorisation] Le retour de l’eventHandler

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 :

protected void btnInsert_Click(object sender, EventArgs e){
 
InsertOrUpdate(new SuperObjet(),
      
objetAInserer => Manager.Insert(objetAInserer));
}

protected void btnUpdate_Click(object sender, EventArgs e){
 
InsertOrUpdate(Manager.LoadByPrimaryKey(currentId),
      
objetAMettreAjour => Manager.Update(objetAMettreAjour));
}

private void InsertOrUpdate(SuperObjet objetEncours, Action<SuperObjet> actionAEffectuer){
 
 
// une bonne dizaine de ligne de code
  actionAEffectuer(objetEncours);
 
// encore une bonne dizaine de ligne de code
}

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.

05/03/2010

Permalink 13:50:13, Catégories: Récapitulatif .NET, Récapitulatif, Divers, .Net, Récapitulatif Génie Logiciel, ASP.NET, 269 mots   French (FR) , Philippe Vialatte

[.NET][G. Logiciel] [Refactorisation] Extraire les méthodes des gestionnaires d’événement (EventHandler)

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.

01/03/2010

Permalink 17:32:00, Catégories: Récapitulatif .NET, Récapitulatif, Divers, .Net, 240 mots   French (FR) , Philippe Vialatte

[.NET] Optimisation à 2 francs : IndexOf, Contains et ToLower sont dans un bateau

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" :

  • chaine.ToLower().IndexOf(token) != -1
  • chaine.IndexOf(token, StringComparison.CurrentCultureIgnoreCase) != -1
  • chaine.ToLower().Contains(token)

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

25/02/2010

Permalink 12:45:00, Catégories: Récapitulatif, Récapitulatif SGBD, Divers, 208 mots   French (FR) , Philippe Vialatte

[SGBD] SQL Server 2008 : MediaInfo.xml introuvable

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 !!!

mediainfo

Et forcément, après lancement du setup "en manuel", tout fonctionne.

Vous devez être identifié pour poster un commentaire.

« Page Précédente 1 2 3 4 5 Page suivante »

Liste des blogs

Blog de Philippe Vialatte

Ce blog contient:
- des bouts de code
- quelques news
- des états d'âme

....et des fois, quelque chose d'intéressant ;)

Blog roll

Profil MVP

Réseaux sociaux



Catégories


Rechercher

<  Mai 2012  >
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      

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web