26 Sep 2011

Des couleurs foncées dans Visual Studio

L'une des premières choses que je fais quand je réinstalle Visual Studio est de changer le thème de couleurs pour un plus foncé. Pourquoi? La raison est très simple, c'est moins fatiguant pour les yeux de lire du texte blanc sur un fond noir (ou du moins, foncé). De plus, avec l'habitude, je trouve ça plus lisible comme ça.

J'ai cherché longtemps le jeu de couleurs idéal jusqu'à ce que je tombe sur celui-ci:

Theme_son_of_obsidian
Son of Obsidian

Il est disponible en téléchargement ici pour Visual Studio 2005, 2008 et 2010.
7 Oct 2010

Des trucs pour cibler facilement Internet Explorer 6 en CSS

Internet-explorer-logo-with-pi

Si comme moi vous êtes tannés de faire des arabesques pour faire fonctionner une page dans les différents navigateurs majeurs, y compris Internet Explorer 6 et 7, vous serez peut-être contents d'apprendre ce petit truc.

Internet Explorer 6 et 7 avaient des bugs d'interprétation du CSS qui nous permettent de les cibler spécifiquement. On les appelle souvent le "underscore hack" et le "asterisk hack". Le bug du "underscore" a été corrigé en IE7, alors que le bug du "asterisk" l'a été en IE8. De ce fait, il est possible de cibler IE6 directement en préfixant une propriété CSS d'un "_", et cibler IE6 et IE7 préfixant une propriété CSS d'un "*".

Si, par exemple, un div particulier devait avoir une hauteur différente dans les différentes version de IE, voici comme on pourrait procéder:

div#exemple{
   height: 500px;
   *height: 450px; /* S'applique à IE6 et IE7 */
   _height: 400px; /* S'applique à IE6 uniquement */
}

En espérant que ça puisse vous sauver autant de temps que moi!

7 Sep 2010

Des coins arrondis en CSS dans tous les navigateurs

En CSS3, il existe une propriété border-radius qui sert spécifiquement à arrondir les coins de boîtes de contenu. Évidemment, la majorité des navigateurs populaires ne le supportent pas encore. J'ai découvert ce matin une solution très simple qui fonctionne avec tous les navigateurs majeurs, y compris IE6! Pour Firefox, il suffit d'ajouter le préfixe -moz à la propriété, ce qui donne -moz-border-radius. Pour les versions plus anciennes de Chrome et Safari, parce que les nouvelles supportent le CSS3, il faut ajouter le préfixe -webkit à la propriété, donc -webkit-border-radius. Le cas de notre cher IE est plus compliqué... un peu. Il faut utiliser un fameux behavior pour y arriver. Heureusement, celui-ci est simple et peu volumineux (4.5 Ko environ). Il peut être téléchargé ici: http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser. Voici donc ce dont aura l'air notre code CSS pour obtenir des coins arrondis dans tous les navigateurs principaux: -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; behavior: url(border-radius.htc); C'est aussi simple que ça. Fini les images et les codes HTML incompréhensibles et incohérents!
26 Aug 2010

Arduino: microcontrôleur "pour les nuls"

J'ai trouvé ce matin cet intéressant vidéo sur le Arduino, un microcontrôleur pouvant être programmé simplement en langage C, branché à un ordinateur via USB, Bluetooth ou même Wifi. De plus, il se vend aux environs de 30$ au Canada, ce qui en fait un jouet très intéressant à donner en cadeau à tout geek.
26 May 2009

Quelques nouveautés du C# 3.0

Je suis plus d'un an en retard, mais j'ai découvert aujourd'hui quelques nouveautés dans le langage C# version 3.0 que j'ai envie de partager avec vous. Je ne nommerai pas toutes les fonctionnalités ici, mais simplement celles qui m'ont le plus intéressé. Variables typées implicitement Tout programmeur étant habitué avec les langages de script tel que PHP et JavaScript connait les variables typées implicitement. Il sont déclarées sans que leur type ne soit défini. C# 3.0 introduit cette façon de faire. À partir de maintenant, il ne suffit que de préfixer toute déclaration de variable par le type var, et le tour est joué. À la première initialisation, la variable sera typée. Par exemple:
var age = 29; // Variable typée implicitement en int
var nom = "Sébastien"; // Variable typée implicitement en string
Initialisateurs d'objets Une autre grosse nouveauté, c'est la possibilité de pouvoir initialiser un objet directement, sans devoir passer par un constructeur avec paramètres. Il ne suffit que d'assigner des valeurs aux propriétés de l'objet entres accolades, immédiatement après son instantiation:
Personne moi = new Personne() { Nom = "Sébastien", Age = 29 };
Propriétés auto implémentées Qui n'a jamais eu à écrire une longue classe, avec plusieurs propriétés pour exposer des membres, sans pour autant écrire de code spécifique à chacune. Le fait d'exposer directement les membres de la classe devenait tentant, malgré le fait que la pratique n'était pas recommandée. Qu'à cela ne tienne, maintenant c'est possible de le faire de façon plus élégante. Ce qui autrefois donnait ceci:
class Personne {
    private int m_Age;
    private string m_Prenom;
    private string m_Nom;

    public int Age {
        get { return m_Age; }
        set { m_Age = value; }
    }

    public string Prenom{
        get { return m_Prenom; }
        set { m_Prenom= value; }
    }

    public string Nom{
        get { return m_Nom; }
        set { m_Nom= value; }
    }
}
Devient aujourd'hui:
class Personne {
    public int Age { get; set; }
    public string Prenom { get; set; }
    public string Nom { get; set; }
}
Le comportement final sera le même, puisque le compilateur se chargera de générer les membres de la classe "sous le capot". Voilà, en espérant que ces quelques exemples pourront en aider quelques-uns. Je n'ai pas nommé toutes les nouveautés du langage, parce qu'il y en a encore plusieurs, mais plutôt celles que j'avais trouvées les plus intéressantes. Si vous avez des commentaires ou suggestions, n'hésitez pas à m'en faire part. Je vais essayer dans le futur d'écrire des articles de ce type un peu plus souvent.

Sébastien Légaré

Papa du meilleur petit garçon, chum comblé et développeur .NET et (bientôt) iOS le reste du temps.