Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Un éradicateur de fichiers dupliqués gratuit !

Smarter Duplicate File Finder est un outil gratuit très malin : il permet de localiser les fichiers dupliqués dans une liste de répertoires pouvant se situer éventuellement sur des disques différents.

L'intelligence de SDFF se situe à plusieurs niveaux dont la recherche elle-même. Pour localiser les fichiers dupliqués l'utilisateur dispose de plusieurs méthodes : par le nom (casse indifférente), par le type et la taille, par un code de proximité phonétique sur le nom (4 algorithmes : soundex, metaphone, double metaphone et Daitch-Mokotoff, longueur de clé paramétrable de 2 à 50) ou bien par comparaison des contenus par le biais d'une clé de hash MD5 calculée à la volée.

On peut envoyer la liste des fichiers dans le presse-papiers, les déplacer vers tout répertoire ou bien les envoyer à la corbeille de Windows.

La sélection des fichiers montre aussi de l'intelligence : lorsque SDFF créé la liste des doublons il affecte à chaque groupe un code "groupe de proximité" pour pouvoir les traiter séparément. Il devient ainsi possible en un seul clic de sélectionner, pour le conserver, le plus gros, le plus petit, le plus récent ou le plus vieux fichier de chaque groupe. Il est bien entendu possible de sélectionner les fichiers à garder à la main (chaque fichier dans la liste est précédée d'une case à cocher).

Bref, un outil bien pratique. Il est tellement bien que je l'ai adopté tout de suite pour supprimer les doublons de ma collection de mp3 ou bien supprimer les fichiers dupliqués de dossiers clients copiés sur plusieurs disques. Bon, c'est vrai, j'aurais eu du mal à ne pas l'aimer cet outil puisque c'est moi qui l'ai fait :-)

Développé sous VS 2008 en C# 3.0 et framework 3.5 (que le setup installe si vous ne l'avez pas) et faisant appel à beaucoup de LINQ to Object, SDFF est auto-localisé en français et en anglais (mais on peut le forcer dans une langue par la ligne de commande). Le code source n'est pas distribué pour le moment, je travaille encore dessus.

Pour télécharger l'installeur msi c'est ici : http://www.e-naxos.com/download/SDFF1SetupFR.msi

C'est pas un joli cadeau ça ?

Alors Stay Tuned !

(et n'hésitez pas à me laisser un mot si vous avez des idées d'amélioration)

Une petite capture d'écran pour se faire une idée :

Nota: les mp3 de l'exemple sont tous enregistrés via Screamer dont je vous ai parlé dans mon billet coup de gueule sur le piratage. C'est donc du légal, enregistré à la radio et pas du donwload de la mule. Le résultat est rigoureusement le même, sauf que dans un cas on est un bon gars et dans le second on est passible de poursuites, de prison, d'amende et peut être même d'être fouetté en place publique par le patron d'une major. ça démontre la bêtise de la répression et des lois qui se contredisent. ne piratez pas, enregistrez des radios Internet achetez chez des labels indépendants et n'achetez plus rien aux majors ! 

Un excellent livre sur LINQ : "LINQ in Action"

LINQ (encore ! dirons certains, mais c'est justifié je vous l'assure) est une technologie qui décuple la puissance de C#, encore faut-il bien maîtriser toutes les nouveautés syntaxiques de C# 3.0 (voir mes articles sur ce sujet*) et bien comprendre comment tirer partie du meilleur de LINQ lui-même.

Pour cela rien ne vaut un bon livre. Sur le sujet ils ne sont pas très nombreux et quand on fait un peu le tri, il en reste fort peu qui valent l'achat. Ce n'est pas le cas de "LINQ in action" un excellent bouquin qui utilise une approche très pédagogique pour "monter en puissance" au fur et à mesure de la progression des chapitres. C'est d'ailleurs peut-être aussi parce que les auteurs reprennent justement cette logique que j'applique dans mes propres cours sur LINQ que j'apprécie ce livre.

Il s'agit bien entendu d'un ouvrage en anglais, si vous ne maîtriser pas la langue il faudra hélas passer votre chemin. Les concepts avancés dans le livre peuvent s'avérer suffisament sophistiqués en eux-mêmes sans ajouter la difficulté de décryptage si on n'est pas totalement à l'aise avec la prose d'outre-Atlantique.

Pour acheter le livre au moins cher, je vous conseille l'excellent librairie anglaise The Book Repository qui livre en France et qui applique des tarifs généralement hors concurrence. La page du livre est ici "Linq in Action". L'ouvrage possède aussi son propre site avec le téléchargement des exemples ainsi qu'un forum.

(* Les nouveautés syntaxiques de C# 3.0 et Présentation des différentes facettes de LINQ )

Geek Attitude : Un GPS intégré au rétroviseur...

Voici un gadget que tout geek se devra de posséder dans sa voiture : MirrorPilot. C'est un GPS qui s'intègre au rétroviseur avec un miroir semi réfléchissant qui le rend invisible lorsqu'il est hors fonctionnement (le rétro reste donc parfaitement fonctionnel, même en mode GPS bien entendu).

Il y a des versions françaises et européennes (au moins pour les cartes, pour l'interface je ne suis pas sûr), et je ne pense pas que ce merveilleux gadget soit déjà importé chez nous... A suivre donc, car autant le petit carré lumineux qu'on devine sur le parebrise faisait furieusement geek il y a dix ans, autant maintenant je trouve que le GPS accroché comme ça dans la voiture ça fait ringard au possible, tous les beaufs en ont un, une honte pour tout geek qui se respecte un minimum ...

Le site : http://www.mirrorpilot.com/en/navigator/a_new_dimension/

Une petite image pour se faire une idée (c'est livré avec une télécommande aussi) :

 

La machine fonctionne sous Windows CE 5.0, on peut donc supposer pouvoir agrémenter la chose avec d'autres logiciels, c'est pas merveilleux ? Le prix semble être de 700€ en europe reste à trouver une boutique web pour l'acheter !

Stay Tuned !

LINQ et Réflexion pour obtenir les valeurs de System.Drawing.Color

LINQ... l'un de mes sujets préférés... Plus je l'utilise, à toutes les sauces, et plus je trouve cette technologie indispensable. Mais foin de propagande, voici encore un exemple qui prouve à quel point LINQ peut servir à tout, facilement.

Le but du jeu : récupérer la définition des couleurs de System.Drawing.Color, en faire un tableau trié par ordre alphabétique.

A la "main" je vous souhaite bien du plaisir... Avec LINQ cela donne la chose suivante :

namespace LinqColor
{
  class Program
  {
     static void Main(string[] args)
    {
       var color_type = typeof(System.Drawing.Color);
       var color_properties = from prop in color_type.GetProperties()
                                     where prop.PropertyType == color_type
                                     orderby prop.Name
                                     select prop;
       
       foreach (var color_property in color_properties)
       {
           var cur_color = (System.Drawing.Color) color_property.GetValue(null, null);
           uint rgb_int = (uint) cur_color.ToArgb() & (0x00ffffff);
           Console.WriteLine(" {0,-20} = ({1,-3},{2,-3},{3,-3}) = 0x{4:X00000000}",
           color_property.Name,
           cur_color.R, cur_color.G, cur_color.B,rgb_int);
       }
    }
  }
}

La sortie écran (console) donne la chose suivante :

Le projet VS 2008 pour les fénéants du clavier : LinqColor.zip (5,43 kb)

C'est pas merveilleux LINQ ?

Bien sûr que si... Alors Stay Tuned !

Internationalisez vos blogs et pages Web en 1 seul click avec Windows Live Translator

On aimerait parfois offrir certaines informations dans une langue étrangère mais traduire toutes les pages d'un site représente un coût non négligeable que seules de très grosses entreprises aux moyens financiers à la mesure d'une telle opération de communication peuvent se permettre.

Il existe toutefois une parade, certes pas absolue mais très pratique, elle s'appelle Windows Live Translator. En ajoutant un simple bout de script à vos pages les visiteurs pourront les consulter dans leur langue. J'ai ajouté cette fonction au présent blog (tout en haut à gauche), vous pouvez donc "jouer" avec pour vous rendre compte par vous mêmes de la qualité (assez bonne mais très variable malgré tout!) des traductions proposées.

Un Web totalement international, libre et sans frontières, c'est un rêve non ? (sauf si on est au gouvernement chinois bien entendu).

Stay Tuned !

44 videos pour apprendre Silverlight 2.0 !

[UPDATE SEPT 2009 : Les adresses proposées ici ont changé, reportez vous au billet 44 Videos US et 11 Ateliers en français sur Silverlight ! pour obtenir le lien vers le sommaire]

Mike Taulty a publié toute une série de vidéos d'apprentissage de Silverlight 2.0, 44 pour être précis ! Un travail incroyable et mis gratuitement à la disposition de la communauté.

Bien entendu ces casts sont en anglais, mais ils sont très faits et montrent de façon très pédagogiques des cas pratiques qui vont du "Hello Word !" au passage de paramètres à une page Silverlight en passant par l'appel de Web services ou le DataBinding.

A voir absolument !

Le sommaire  :

  1. Silverlight - Hello World
  2. Silverlight - Anatomy of an Application
  3. Silverlight - The VS Environment
  4. Silverlight - Content Controls
  5. Silverlight - Built-In Controls
  6. Silverlight - Width, Height, Margins, Padding, Alignment
  7. Silverlight - Using a GridSplitter
  8. Silverlight - Grid Layout
  9. Silverlight - StackPanel Layout
  10. Silverlight - Canvas Layout
  11. Silverlight - Databinding UI to .NET Classes
  12. Silverlight - Simple Styles
  13. Silverlight - Custom Types in XAML
  14. Silverlight - Binding with Conversion
  15. Silverlight - List Based Data Binding
  16. Silverlight - Simple User Control
  17. Silverlight - Templating a Button
  18. Silverlight - Resources from XAP/DLL/Site Of Origin
  19. Silverlight - Animations & Storyboards
  20. Silverlight - Uploads with WebClient
  21. Silverlight - Downloads with WebClient
  22. Silverlight - Calling HTTPS Web Services
  23. Silverlight - Calling Web Services
  24. Silverlight - Making Cross Domain Requests
  25. Silverlight - Using HttpWebRequest
  26. Silverlight - File Dialogs and User Files
  27. Silverlight - Using Sockets
  28. Silverlight - Using Isolated Storage
  29. Silverlight - .NET Code Modifying HTML
  30. Silverlight - Using Isolated Storage Quotas
  31. Silverlight - Calling JavaScript from .NET
  32. Silverlight - Evaluating JavaScript from .NET Code
  33. Silverlight - Handling HTML Events in .NET Code
  34. Silverlight - Handling .NET Events in JavaScript
  35. Silverlight - Calling .NET from JavaScript
  36. Silverlight - Displaying a Custom Splash Screen
  37. Silverlight - Passing Parameters from your Web Page
  38. Silverlight - Loading Media at Runtime
  39. Silverlight - Dynamically Loading Assemblies/Code
  40. Silverlight - Reading/Writing XML
  41. Silverlight - Multiple Threads with BackgroundWorker
  42. Silverlight - Insert/Update/Delete with the DataGrid
  43. Silverlight - Getting Started with the DataGrid
  44. Silverlight - Embedding Custom Fonts

le nouveau sommaire [edit sept.2009] : http://misfitgeek.com/blog/44-silverlight-videos/

Stay Tuned pour d'autres infos !

Deux outils gratuits pour WPF

Travailler sous WPF depuis VS 2008 est déjà extrêment pratique, mais on en veut toujours plus ! Voici deux petits outils gratuits qui pourront vous rendre bien des services...

XamlPadx

Il s'agit d'une version étendue du pad Xaml qui se trouve dans le SDK de .NET. Il est capable de parser et de faire le rendering de code Xaml. En dehors de ces fonctions de bases il offre un interpréteur, un explorateur d'arbre, le support pour des add-in et plein d'autres choses.

On le trouve ici : http://blogs.msdn.com/llobo/archive/2007/12/19/xamlpadx-v3-0.aspx

Snoop

Cet outil est un debugger visual pour WPF. Il permet de visualiser l'arbre des objets de toute application en cours de fonctionnement, d'inspecter leurs propriétés et de changer ces dernières.

On trouve ce petit soft ici : http://www.blois.us/Snoop/

Pour conclure

Ces outils "poids plume" entrent parfaitement dans la trousse de voyage du développeur et permettent d'intervenir ou de comprendre certains problèmes même sur des machines qui n'ont pas forcément VS 2008 installé. A mettre sur sa clé USB donc...

 

C'est l'histoire de quatre personnes....

Comme il faut bien se détendre, mais intelligemment, voici l'histoire de quatre personnes un peu spéciales.
L'histoire originale est en anglais et "fonctionne" bien mieux dans cette langue puisque les quatre personnes en question s'appellent Everybody (Tout le monde), Somebody (Quelqu'un), Anybody (N'importe qui, surnomé Quiconque) et Nobody (Personne).

Si vous lisez l'anglais, voici l'original, pour les autre je fais suivre une tentative de traduction en français :

This is the story of four people named Everybody, Somebody, Anybody, and Nobody.
There was an important job to be done and Everybody was asked to do it.
Anybody could have done it, but Nobody did it.
Somebody got angry about that, because it was Everybody's job.
Everybody thought Anybody could do it, but Nobody realized that Everybody wouldn't do it.
Consequently, it wound up that Nobody told Anybody, so Everybody blamed Somebody.

C'est l'histoire de quatre personnes "ToutLeMonde", "Quelqu'un", "N'importe qui" et "Personne".
Il y avait un travail important à faire et "ToutLeMonde" a été invité à le faire. 
"Nimporte qui" aurait pu le faire, mais "Personne" l'a fait.
"Quelqu'un" s'est fâché à ce propos parceque c'était le boulot de "ToutLeMonde".
"ToutLeMonde" pensait que "N'importe qui" aurait pu le faire, mais "Personne" ne réalisa que "ToutLeMonde" ne le ferait pas.
Par conséquent, il s'avéra que "Personne" n'en parla à "Quiconque", et que "ToutLeMonde" blâma "Quelqu'un".

Bon, en anglais c'est bien mieux, la langue se prête mieux à ce genre de tournures qui m'ont obligé en français à tricher avec les négations et à donner un surnom à "Anybody" pour que ça colle mieux, ce qui en fait du mauvais français alors que l'original est en bon anglais...

Si "Quelqu'un" a quelque chose à redire sur ma traduction, pas la peine d'en parler à "ToutLeMonde". "Quiconque" le ferait serait nul comme "Personne" ! :-)

Bon bain de soleil et Stay Tunded !

Plongez dans l'infini d'une image... Deep Zoom arrive !

Deep Zoom... Si le nom ne vous dit rien pour le moment dans quelques lignes de là vous voudrez vous aussi jouer avec et surtout faire plein de jolis sites Web...

Deep Zoom est une technologie intégrée à Silverlight 2.0 qui permet de zoomer dans une image de taille gigantesque qu'il serait impossible d'envoyer au browser en un seul morceau. L'impossibilité est lié à deux facteurs principaux : une image de 20.000 x 20.000 même en 16 bits par exemple ça peut être trop gros pour la RAM de l'utilisateur, et puis surtout il faudrait avoir des visiteurs très très très patients le temps que toute l'image arrive ! Autre point, si l'image est une composition d'images, toutes les images de cette dernière n'intéressent pas forcément le visiteur, autant qu'il choisisse lui-même sur lesquelles zoomer et donc lesquelles doivent être transmises dans une résolution plus haute au browser.

Bon, tout cela c'est de la phrasologie et dans le domaine du visuel rien ne vaut mieux que de ... voir pour comprendre.

Je vous ai fait une petite collection de sites Web qui démontrent Deep Zoom, du site de la nouvelle Laguna à un site de soutien à Obama, on trouve un peu de tout, et justement on comprend tout de suite mieux le potentiel énorme de cette technologie.

Deep Zoom est téléchargeable sur les sites de Microsoft, tout comme Blend 2.5 (preview de juin) ou Silverlight 2.0 et toutes ces nouvelles choses. Je vous laisse utiliser Live Search (ou Google si vous préférez) pour trouver les adresses de tout ça (pour info le soft de composition s'appelle Deep Zoom Composer).

Nota: pour voir les sites qui suivent en action, vous devrez bien entendu installer Silverlight 2.0, mais il s'agit maintenant de la version finale ce n'est donc pas une mauvaise idée que de l'avoir sur sa machine car de plus en plus de sites vont utiliser ce plug-in...

... Et un petit dernier qui n'utilise pas Deep Zoom mais juste Silverlight 2.0 avec une simulation du (vieux) jeu Asteroid. Pour les nostalgiques qui ont connu les vieilles consoles de jeu Amiga dans les salles d'arcades (l'époque de Lunar Lander en 1979, juste après Space Invaders en 1978.... ahhhh) !

 L'été est l'occasion rêvée pour se former à toutes ses belles technologies, n'hésitez pas !

 .. Et Stay Tuned !