Author Archive
Super raccourcis sous Windows 7
by F5 on jan.26, 2012, under Mon PC et moi
Dans la catégorie Tuning de Windows (une de mes grandes passions), je reviens à la charge après la barre des tâche pour cette fois-ci parler des barres d’outils de raccourcis dans windows 7 (mais ça marche avec Vista et XP également).
C’est une technique que j’ai utilisée pour me connecter/déconnecter d’un réseau VPN ou pour changer des configurations de son windows rapidement.
Pour cet article, je vais prendre cette derniere manipulation comme exemple.
Par défaut pour désactiver votre périphérique haut-parleur par défaut dans windows, c’est super chiant. Je vous laisse faire la manipulation de base :
- clic droit sur l’icone par défaut pour le son dans la zone de notifications,
- choisir « Son » (la fenetre « Son » s’ouvre – par défaut à l’autre bout de l’écran – avec l’onglet « Sons » de windows, qui est sans doute la fenêtre la moins utile dans le monde de l’informatique)
- selection de l’onglet « Lecture », et enfin là on peut désactiver les drivers par défaut.
Mais oui ! Tout à fait ! C’est 5 secondes de perdues !
Avec ma technique, un clic suffira pour arriver à la même étape, sans parler du fait que c’est stylé devant les collègues.
- Créer dans votre PC un répertoire « Raccourcis »
- Dans ce répertoire, faire « clic droit », « Créer un raccourcis », et saisir « mmsys.cpl » (je sais, ça ne s’invente pas), valider.
- Cliquez droit sur le raccourcis, « Propriétés », et changez Cible en « C:\Windows\System32\rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0″. Validez.
- Sur la barre des tâches windows, « clic droit », « Nouvelle barre d’outils », sélectionner le répertoire de vos raccourcis récemment créé.
- Vous devriez voir l’icone du raccourcis que vous avez créé, avec le nom du fichier et le nom du répertoire de raccourcis. Tout ça est très moche.
- Sur la barre des tâches toujours dévérouillez votre barre des tâches en faisant : « clic droit », décocher « Verrouiller la barre des tâches ».
- Avec habileté, cliquez droit à coté du racourcis mais dans la barre d’outil, et selectionnez les options sympas, genre décochez « Afficher Texte », « Afficher le titre », mettre des grandes icones, etc. selon vos gouts.
- Revérouillez votre barre des tâches
- Allez chercher une belle icone de son sur PngFactory
- Cliquez droit sur le raccourcis, propriétés, bouton « Changer d’icone », allez à l’emplacement de votre belle icone. Validez.
- Subtil: pour que la fenetre de son s’ouvre « non loin » de la barre de raccourcis, et non pas à l’autre bout de l’écran ce qui se trouve être le comble du relou, téléchargez WindowManager, qui permettra une fois lancé de détecter les positions des fenetres ouvertes et de leur dire : « toi la prochaine fois tu t’ouvriras au même endroit à l’écran », à régler également selon vos besoins.
Et voilà ! Bon en fait, il y avait plusieurs astuces différentes dans ces 11 étapes, c’est aussi pour ça que j’ai trouvé ça intéressant. L’idée n’est évidemment pas de faire exactement comme j’ai fait moi, mais plutôt de connaître les différentes techniques pour avoir des raccourcis complètement personnalisables dans la barre des taches. Du coup c’est à vous de voir !
A+
Custom Model Binding en ASP.net MVC
by F5 on nov.14, 2011, under Prog
Je m’essaye pour la première fois au tuto Asp.net MVC, soyez indulgent c’est ma toute première fois !
Derrière le nom barbare du titre se cache une technique élégante de SoC (Separation of Concern, qu’on pourra traduire par « séparation des fonctionnalités ») proposée par Microsoft pour commencer à faire du code propre faire en sorte que dans votre action de contrôleur il n’y ait pas de code de conversion de données de formulaires envoyées en HTTP en objet complexe, de parsing de chaine ou toute opération qui n’aurait rien à faire dans le beau code du contrôleur. Surtout quand on récupère des données sérialisées à la one-again par le mec du bureau d’en face qui développe le jquery/Ajax…
Pour la démo, admettons donc que vous soyiez en train de travailler sur un énorme backoffice contenant une page de malade mental ; page qui, au chargement, affiche un Guid généré par l’action initiale (Index) dans une Div, et qui permet de poster cette même donnée en Jquery/Ajax. 0 intérêt : c’est pour l’exemple ! Surtout qu’Asp.net MVC gère par défaut le cast de string à Guid… Mais bon !
Voici la vue en question (le moteur de vue est Razor, ‘What else ?’):
@model Back.Models.GuidModel
<html>
<script type="text/javascript" src="../../Content/js/jquery.1.6.2.min.js"></script>
<script>
$(function()
{
$("#submitAjax").one("click", function(e)
{
e.preventDefault();
$.post(
"RefreshIt/PostGuid",
{id:$("#leguid").text()},
function(data)
{
$("#messageRetour").text(data.message);
},
"json"
);
});
});
</script>
<body>
<div>Guid Client</div>
<div id="leguid">@Model.Guid</div>
<p><input type="button" id="submitAjax" value="Poster" /></p>
<p id="messageRetour"></p>
</body>
</html>Plutôt simpliste : la vue affiche le guid généré par le serveur, et en jquery il y a un post du guid contenu dans la div d’id « leguid » quand on clique sur le bouton et ça affiche le message de retour dans la balise p qui va bien.
Le modèle est quant à lui d’une grande complexité :
public class GuidModel
{
public Guid Guid { get; set; }
}
Enfin voici le code du contrôleur tel que l’aurait développé Mariah Carey :
public class RefreshItController : Controller
{
public ActionResult Index()
{
GuidModel model = new GuidModel {Guid = Guid.NewGuid()};
return View(model);
}
public ActionResult PostGuid(string inputGuidStr)
{
/* Code moche */
Guid inputGuid = Guid.Empty;
Guid.TryParse(inputGuidStr, out inputGuid);
/* Fin du code moche */
FaireQuelqueChoseAvec(inputGuid);
return Json(new { message = "All by myself..." });
}
private void FaireQuelqueChoseAvec(Guid inputGuid)
{
return;
}
}Je passe sur la vue Index qui ne fait qu’instancier le modèle.
C’est dans l’action PostGuid, appelée par le jquery qu’il y a un problème. En effet, cette action exécute en quelque sorte 2 choses :
- elle parse le string envoyé par jquery pour le caster en Guid
- elle redirige la demande vers un autre « service », ici symbolisé par la fonction « FaireQuelqueChoseAvec » (qui en pratique se trouvera certainement dans une autre assembly)
C’est mauvais. Le code de l’action serait bien plus beau s’il se contentait de transmettre de l’information, de la vue au service d’accès au données par exemple. Ici, il effectue une basse tâche de cast, qui pollue le contrôleur… alors qu’on sait qu’un contrôleur contient facilement un certain nombre d’actions et qu’il n’a pas besoin d’être surchargé de lignes de codes, surtout quand elles sont d’un niveau d’abstraction assez bas comme du vulgaire parsing de chaine.
Mieux : donner ce rôle à un Custom Model Binder !
public class GuidModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
Guid IdParse = Guid.Empty;
if (bindingContext.ValueProvider.GetValue("id") != null)
Guid.TryParse(bindingContext.ValueProvider.GetValue("id").AttemptedValue, out IdParse);
return IdParse;
}
}Il implémente IModelBinder, interface n’exposant qu’une fonctionnalité : BindModel. Bon là j’ai fait un truc un peu crade quand même parce que je débute en tuto, mais l’idée est de rendre complètement transparente la transcription des formats de données renvoyées par la vue au contrôleur et inversement.
Ainsi, notre action PostGuid deviendra :
public class RefreshItController : Controller
{
public ActionResult Index()
{
GuidModel model = new GuidModel {Guid = Guid.NewGuid()};
return View(model);
}
public ActionResult PostGuid([ModelBinder(typeof(GuidModelBinder))] Guid inputGuid)
{
FaireQuelqueChoseAvec(inputGuid);
return Json(new { message="Le Custom Model Binding C'est Drolement Chouette !"});
}
private void FaireQuelqueChoseAvec(Guid inputGuid)
{
return;
}
}Le paramétrage de l’action change (un peu brutal d’ailleurs) mais j’imagine qu’on peut rendre ça encore plus clean avec des filtres… Enfin l’idée est là en tout cas !
Plutôt cool non ?
Pour information je répète : cet exemple est inutile en l’état car Asp.net MVC sait faire tout seul la conversion string -> Guid en paramètre d’une action, sans qu’il y ait besoin d’un binder customisé. Je l’ai personnellement plutôt utilisé pour caster des listes ou des objets complexes.
D’autres utilisations des Custom Model Binders sont possibles, notemment (surtout?) la validation des données mais j’estime personnellement qu’il devrait y avoir autant de couches de validations que de couches applicatives successives (un peu comme dans la philosophie du modèle OSI), ce qui à mon sens ne restreint pas les Model Binders à telle ou telle tâche spécifique.
En conclusion, je vois les Custom Model Binders comme un container applicatif de premier niveau permettant d’effectuer des tâches à tendance « ingrates ».
Voilà voilà ! N’hésitez pas à me faire des retours dans les commentaires si ce que j’ai écrit n’est pas exact ou si j’ai oublié des choses importantes.
A+
Windows 7 : la nouvelle barre des tâches
by F5 on nov.10, 2011, under Mon PC et moi
J’ai récemment fait la connaissance d’une des nouvelles fonctions complètement mirobolantes de Windows 7 ; fonction qu’on pourrait penser anecdotiques à première vue mais qui s’avère à l’usage assez puissante.
Dans un contexte professionnel ou plus généralement quand on désire accéder régulièrement et rapidement à un ensemble de fonctions d’applications (pourvu qu’elles aient prévu le fonctionnement des barres de taches Windows 7 justement, j’y reviendrai), on a tendance à avoir ou à se créer des automatismes liés aux anciennes versions de Windows : menu Démarrer plein à craquer et chiant à parcourir, barres de lancement rapide plutôt sympa mais pas très évoluée, applications de Dock ressemblant à celui de Max OS pour les plus perdus… Les possibilités sont plutot grandes pour se raccourcir les accès ; du coup on a fini par voir des gens acheter des produits Apple, c’est vous dire le marasme dans lequel Windows XP nous a fourrés sans le savoir !
Mais ça, c’était avant.
Aujourd’hui, Windows 7 propose des petites fonctions discrètes et bien sympas pour accéder rapidement à certaines ressources rapidement, sans se lancer dans des heures de customisation
! Là l’article est déjà super long donc je ne vais en présenter qu’une :
Le menu contextuel de la barre des tâches
Le menu contextuel (clic droit) sur une application de la barre des tâches est un petit bijou quand on sait bien s’en servir. Pour faire simple, il s’agit d’un container de fonctionnalités que vous pouvez modifier à loisir pourvu que l’application en question y expose des fonctions. Chaque fonction/élément du menu est supprimable, « épinglable » et/ou triable. Je like.
Le plus simple pour commencer : le menu de l’explorateur Windows. Si comme moi vous êtes perpétuellement à la recherche du chemin le plus court pour accéder à un dossier de votre PC, vous avez grâce à Windows 7 une nouvelle possibilité d’endroit où entreposer des raccourcis : dans la barre de taches directement.
Pour faire partie des 10% de la population qui savent, faites ceci : dans un dossier donné, saisissez-vous du pictogramme de dossier à gauche du chemin… 
…et glissez le directement dans la barre des taches, sur le raccourcis de l’explorateur (un message vous chuchotte alors : « Epinglez à Explorateur Windows »). Et hop, un raccourcis créé !
Note : Windows vous propose aussi des documents récents, que vous pouvez « épingler », ça les fera passer de la section « Récent » à « Epinglé ». Personnellement je trouve que c’est une tuerie.
Ça n’a peut-être l’air de rien pour vous, mais je peux vous dire que quand on bosse sur 4 projets par jour avec des fichiers à déplacer/copier/coller dans tous les sens, l’économie de clics est salutaire.
Miam.
Mais ça ne s’arrête pas là !
Certaines applications (qu’on appelera « les meilleures applis ») ont eu le bon goùt de s’interfacer avec ce système, c’est à dire de proposer elles-mêmes des raccourcis dans le menu contextuel de Windows 7.
Par exemple Spotify vous propose d’épingler des playlists, comme ceci :

Mais on voit que Spotify expose également quelques Tâches particulières, que les développeurs de Spotify ont choisies. Ils auraient pu aller plus loin, mais c’est déjà pas mal.
Visual Studio 2010 vous permet d’épingler des projets :
Pour Chrome et Firefox, ce sera les raccourcis (même si là l’utilité est réduite avec l’utilisation de la synchro directement dans leur interfaces resepectives), mais également lancer des fenêtres de navigation privée (pas forcément faciles à trouver par ailleurs), un nouvel onglet, etc.
L’ennui avec ce fameux menu, c’est que tous les développeurs d’applications Windows ne s’y sont pas forcément interfacés. Par exemple avec Notepad++, il n’y a rien de particulier dans le menu contextuel (alors que franchement, y mettre certains fichiers qu’on ouvre tout le temps comme « php.ini », « hosts », etc… aurait été utile).
A vous de trouver dans les applications que vous utilisez souvent des raccourcis sympas pour vous faciliter la vie !
A+
