La vie de développeur Belge francophone

Je tiens à commencer en précisant tout de suite que cet article n’est en rien contre la partie néerlandophone de notre belle Belgique et qu’il est tout naturellement centré sur mon expérience Continuer »

Créer sa première application sur Windows Phone 7

Téléchargement des outils Commencez par télécharger et installer les outils de développement gratuits : Création du projet Une fois les outils installés, lancez Visual Studio et créez un nouveau projet : Continuer »

Le blog de la WP7Team est arrivé !

Il y a quelques jours je vous parlais d’une surprise, là voilà. Avec quelques amis développeurs, nous lançons aujourd’hui la WP7Team. La WP7Team qu’est-ce que c’est ? Si vous avez déjà parcouru Continuer »

 

La vie de développeur Belge francophone

Je tiens à commencer en précisant tout de suite que cet article n’est en rien contre la partie néerlandophone de notre belle Belgique et qu’il est tout naturellement centré sur mon expérience en tant que développeur .NET (Je ne connais donc pas ce qui se passe du côté des autres communautés belges).

Mais les faits sont là, si vous êtes un développeur actif en Wallifornia qui souhaite participer à des évènements, hackatons, app-a-thon, rencontrer du monde, partager vos idées, etc. Vous aviez jusqu’il y a peu deux options :

Participer aux évènements nationaux

Si vous avez de la chance, ils seront peut-être organisés à Bruxelles. Mais dans les autres cas tenez vous prêt à traverser toute la Flandre car, c’est une réalité, la majorité des développeurs belges actifs sont néerlandophones. Et bien qu’ils aient l’amabilité de faire les présentations en anglais, ne soyez pas étonné si vous, et vos 2 amis que vous avez peut-être réussi à ramener jusque Antwerp, êtes les seuls francophones dans la salle. Sans oubliez la fameuse question d’accueil, bien représentative de l’état actuel des choses, souvent posée en néerlandais : “Tout le monde parle-t-il néerlandais ici ? Si oui, nous continuerons dans cette langue”. Je ne sais pas vous, mais moi ça me met mal à l’aise et j’hésite souvent à lever le doigt.

Participer aux évènements français

Aaaah la France, cette belle France ! S’il y a une chose qu’on ne peut y critiquer, c’est que la communauté y est très (très) active et qu’ils ont les moyens. Seulement voilà, même pour moi, habitant dans le Hainaut Occidental, je me vois mal faire 500 bornes sur une soirée pour ne passer qu’une heure ou deux sur Paris. Hors des hackatons où l’on a tout le weekend pour rentabiliser le trajet, ce n’est pas la meilleure des solutions.

Ai-je précisé que c’était jusqu’il y a peu ? Car oui, nous faisons notre petite révolution. Depuis quelques mois maintenant nous investissons aussi bien les évènements nationaux que la communauté de développeurs français. Mais ce n’est pas tout ! D’autres évènements purement walliforniens voient le jour. En voici quelques preuves :

Hackaton Windows Phone @ Le moulin de la Forge

Une équipe belge s’est rendue au prestigieux hackaton organisé par Microsoft France en Mars. Je n’y étais malheureusement pas présent mais vu le programme, vous vous doutez que l’équipe belge en est revenue avec de magnifiques souvenirs.

547441_390609874291802_987285191_n

Le Windows Phone Summit meetup au MIC

À l’occasion du Windows Phone Summit qui se tenait à San Francisco le 20 juin dernier, nous avons été invités au Microsoft Innovation Center Belgique afin de suivre l’évènement en live sur grand écran autour de quelques bières et pizzas.

BeMyApp Belgique

Le BeMyApp World Cup c’était un splendide challenge qui m’a permis de rencontrer un maximum de personnes qui, aussi surprenant que cela puisse être, étaient majoritairement francophones. Cet évènement s’est déroulé en 3 grandes étapes :

  1. Parmi plus de 100 participants, on retrouve environ 20-30% d’entre eux qui sont porteurs d’idées d’applications mobiles. Au cours du premier soir, ils présentent celles-ci et tentent de trouver des designers et développeurs qui seraient intéressés de développer celle-ci.
  2. Durant les 42 heures suivantes, les équipes se regroupent et après d’épiques brainstormings, développent l’application ou du moins une bonne partie (dormir plus de 2h, ou même se doucher, c’est tricher !).
  3. Enfin, le dimanche, les différentes équipes présentent leurs applications devant un jury qui délibèrera ensuite afin d’annoncer quelle est, selon eux, la meilleur application du weekend.

Durant ce hackaton hors du commun plein de code, de pizzas, de bières et de RedBull Angels, nous avons ainsi développé une application nommée « How To » dont l’idée est de développer une communauté de Do It Yourself simple et rapide.

425094_10150971789037834_787985127_n

Pour plus d’informations à propos de ce weekend, je vous invite à lire ce superbe article de Renaud Dumont.

Le Microsoft Community Day 2012

Le Microsoft Community Day c’est LE rassemblement de tous les user-groups belges de l’année. C’est également, plus de 40 sessions, dans 6 salles différentes et même si, à nouveau, cela se situait en Flandre et que la majorité des participants étaient néerlandophones, nous étions à nouveau une équipe de francophones afin de représenter le sud du pays.

Les Windows 8 Summer app-a-thon

Les Windows 8 Summer app-a-thon ce sont deux journées entièrement dédiées au développement sur Windows 8. Et devinez-quoi ? Nous étions de nouveau présents à la première édition qui eut lieu ce 12 juillet au Casino de Blankenberge. Mais plus intéressant encore, nous serons également à la deuxième édition ce 8 aout à Zaventem.

394623_10151073096545050_821989209_n

Vous l’aurez compris, nous, développeurs belges francophones, comptons bien faire bouger les choses et faire bouger notre partie du pays afin qu’à l’instar de ces derniers mois, nous ne cessions d’agrandir notre communauté en la représentant le plus possible.

Si j’écris cet article c’est aussi pour que vous, développeurs, n’ayez plus peur de nous rejoindre pour les raisons que j’ai cité plus haut. Fini l’époque où nous n’allions pas à un évènement super intéressant de peur d’être le seul à lever la main quand on nous demande s’il y a des francophones dans la salle. Nous ne sommes plus seuls !

D’ailleurs je vous invite à faire deux choses très simples :

  • Inscrivez-vous aux Afterwork Party qui se dérouleront tous les jeudis de ce mois d’aout au MIC Belgique à Mons. Comme cela l’a été annoncé, le but de ces afterworks c’est principalement le networking. La discussion est ouverte, on y parle de tout : du bug qui vous empoisonne la vie depuis des semaines, au tout dernier framework que vous avez découvert, en passant par la pluie et .. la pluie encore. Tout cela, autour d’une bière et d’une bonne pizza.
  • Suivez-nous sur Twitter ! @kRapaille, @DumontRenaud, @MatthieuVdh, @svidouse et @JulienLebutte. Avec nous 5 dans votre timeline, vous ne risquez pas de manquer un seul event .NET !

Améliorez la lisibilité de votre code et simplifiez vous la vie avec NotifyPropertyWeaver

Quand vous réalisez votre ViewModel pour une application WPF, Windows Phone ou Silverlight, vous utilisez sans cesse OnPropertyChanged et avez à créer un code ressemblant très vite à ceci :

public class Person : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    private string givenNames;
    public string GivenNames
    {
        get { return givenNames; }
        set
        {
            if (value != givenNames)
            {
                givenNames = value;
                OnPropertyChanged("GivenNames");
                OnPropertyChanged("FullName");
            }
        }
    }

    private string familyName;
    public string FamilyName
    {
        get { return familyName; }
        set
        {
            if (value != familyName)
            {
                familyName = value;
                OnPropertyChanged("FamilyName");
                OnPropertyChanged("FullName");
            }
        }
    }

    public string FullName
    {
        get
        {
            return string.Format("{0} {1}", GivenNames, FamilyName);
        }
    }

    public virtual void OnPropertyChanged(string propertyName)
    {
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Alors que de base, vous pourriez très bien avoir ceci :

public class Person : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public string GivenNames { get; set; }
    public string FamilyName { get; set; }

    public string FullName
    {
        get
        {
            return string.Format("{0} {1}", GivenNames, FamilyName);
        }
    }

}

Pourquoi s’embêter avec tout ça ? Personnellement, je trouve ça chiant, long, et ça réduit fortement la lisibilité de mon code en me retrouvant avec 52 lignes de code au lieu de 16.

En lisant un article de Scott Hanselman sur sa première expérience de développement sur Windows Phone 7, j’ai découvert NotifyPropertyWeaver. Un plugin pour Visual Studio que j’ai trouvé réellement pratique et que j’ai donc décidé de partager avec vous.

[WPF] Comment créer un compte à rebours de A à Z

Si vous souhaitez intégrer un compte à rebours dans votre application WPF, voici comment faire.

Créer sa propre classe Timer

Pour réaliser mon compte à rebours, j’avais besoin de pouvoir facilement l’afficher dans ma fenêtre grâce au Binding, et qu’un évènement soit déclenché quand celui-ci arrive à 0 afin de pouvoir afficher mon message de style « BOUM ». J’ai donc créé ma propre classe Timer dont voici le code (Ne vous inquiétez pas, je vous explique tout cela en dessous) :

class Timer : INotifyPropertyChanged
{
	#region Properties
	private TimeSpan _cooldown = TimeSpan.Zero;
	public TimeSpan Cooldown {

		get {
			return _cooldown;
		}

		set {
			if (value != _cooldown)
			{
				_cooldown = value;
				OnPropertyChanged("Cooldown");
			}
		}
	}
	#endregion

	private TimeSpan duration;
	private DispatcherTimer timer;

	public Timer(TimeSpan duration)
	{
		this.duration = duration;
		Cooldown = duration;

		timer = new DispatcherTimer();
		timer.Interval = TimeSpan.FromSeconds(1);
		timer.Tick += new EventHandler(timer_Tick);
	}

	public void Start()
	{
		timer.Start();
	}

	public void Stop()
	{
		timer.Stop();
	}

	public void Restart()
	{
		Cooldown = duration;
		if (!timer.IsEnabled)
			timer.Start();
	}

	void timer_Tick(object sender, EventArgs e)
	{
		Cooldown = Cooldown.Subtract(TimeSpan.FromSeconds(1));

		if (Cooldown == TimeSpan.Zero)
		{
			timer.Stop();
			NotifyCooldownEnd();
		}
	}

	#region Events
	public event EventHandler CooldownEnd;
	private void NotifyCooldownEnd()
	{
		EventHandler handler = CooldownEnd;
		if (null != handler)
		{
			handler(this, new EventArgs());
		}
	}

	public event PropertyChangedEventHandler PropertyChanged;
	protected void OnPropertyChanged(string name)
	{
		PropertyChangedEventHandler handler = PropertyChanged;
		if (handler != null)
		{
			handler(this, new PropertyChangedEventArgs(name));
		}
	}
	#endregion
}

Les applications Metro qui ne se lancent pas sur Windows 8

Windows 8 Developer Preview est sorti depuis bientôt une semaine maintenant et vous vous êtes surement empressé de le télécharger afin de l’installer sur votre tablette Windows 7 qui traîne dans un coin à cause de son ergonomie invivable ! Voilà la version installée, c’est magnifique ! Mais voilà, vous vous rendez compte que les applications Metro, contrairement aux applications Desktop ne se lancent pas. Que se passe t’il ?

Dans la précipitation vous aurez surement oublié de lire que pour lancer les applications Metro, il faut avoir une résolution 1024*768. Hors, beaucoup de tablettes/netbooks n’ont qu’une résolution 1024*600 max. Damn ! Tout ça pour rien alors ? Et bien non !

Après avoir beaucoup bidouillé, fait n’importe quoi, réinstallé Windows Developer Preview 4-5 fois, j’ai trouvé sur le web un petit tutoriel qui permet de forcer votre tablettes/netbooks à vous permettre de forcer la résolution 1024*768.

Lire un fichier excel en C#

Il existe différentes manières de lire un fichier Excel en C#. Pour n’en citer que deux : ADO.NET (oledb) et Automation.

Je vais vous présenter ici comment lire des données avec ADO.NET. Cette solution ne permet pas de lire la mise en forme du fichier excel, ni les éléments graphiques intégrés à celui-ci, mais vous offre néanmoins des performances plus qu’acceptables. Ce qui n’est pas le cas avec Automation.

Cela est assez simple. Imaginons que j’ai un fichier excel contenant des informations sur une liste de personnes. Voici ce à quoi va ressembler mon code :

const string filePath = @"C:\MaListeDePersonnes.xls";

var list = new List();

var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" + filePath;
connectionString += @"; Extended Properties =""Excel 12.0;HDR=YES;IMEX=1"";";

OleDbConnection connection = null;

try
{
	using (connection = new OleDbConnection(connectionString))
	{
		connection.Open();

		var dataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

		if (dataTable == null)
			return;

		var sheetsNames = from DataRow row in dataTable.Rows select row["TABLE_NAME"].ToString();

		var cmdText = "SELECT * FROM [" + sheetsNames.FirstOrDefault() + "]";
		var command = new OleDbCommand(cmdText, connection);
		var reader = command.ExecuteReader();

		if (reader == null || !reader.HasRows) return;

		while (reader.Read())
		{
			var myPersonne = new Personne
			{
				Nom = reader[0] as string,
				Prenom = reader[1] as string,
				Age = reader[2] as string,
			};

			list.Add(myPersonne);
		}
	}
}
catch (Exception)
{
	return;
}
finally
{
	if (connection != null) connection.Close();
}

Que ce passe t’il dans ce code ?

La première instruction que nous intéresse (et la plus importante ici), c’est la connectionString. Trois choses sont à retenir ici :

  1. Le filePath dans lequel on indique la chemin d’accès à notre fichier Excel.
  2. HDR = YES ; cela nous permet de signaler que la première ligne de notre fichier Excel est la ligne des titres, et qu’il ne faut donc pas la lire.
  3. IMEX = 1; ceci indique à notre programme que notre feuille Excel contient des valeurs mixes, c’est à dire qu’il y a aussi des chiffres. Il est conseillé de l’activer afin d’être sûr que vos données seront correctement lues et éviter ainsi de se retrouver avec des null non voulus

La seconde partie :

var dataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
var sheetsNames = from DataRow row in dataTable.Rows select row["TABLE_NAME"].ToString();

Permet de récupérer les noms des différentes worksheets (à ne pas confondre avec workbook qui est un ensemble de worksheets et qui correspond à votre fichier entier.) Ainsi, comme Ffmahk l’a mentionné en commentaire à cet article, vous n’aurez pas de soucis si quelqu’un renomme un worksheet.

Enfin, la dernière instruction est l’affectation de la commande. Il s’agit d’une requête SQL typique où l’on sélectionne tout ce qui se trouve dans la première worksheet.

Ainsi si, par exemple, vous désirez sélectionner les données qui se trouvent dans la page « foo » de votre fichier Excel. Vous utiliserez la commande « SELECT * FROM [foo$]« . Mais si vous désirez sélectionner la seconde page, quelque soit son nom, vous utiliserez « SELECT * FROM [" + sheetsNames.ToList()[1] + « ] ».

Les quelques commandes qui suivent ne doivent pas être trop compliquées pour vous à suivre. On parcourt la worksheet ligne par ligne. Pour lire la valeur de la première colonne de la ligne en cours, on lit notre reader à l’indice 0. Pour la seconde, à l’indice 1. Et ainsi de suite.. sans oublier de caster le résultat.

Vous devriez maintenant pouvoir assez facilement lire les données de vos fichiers Excel. Si vous avez la moindre question ou remarque, n’hésitez pas à poster cela en commentaire.

Si vous souhaitez avoir plus d’informations sur la connectionString (qui est la source de la majorité des exceptions), je vous invite à vous rendre sur ce site :  http://www.connectionstrings.com.

La WP7Team passe au JT !

Ce dimanche 3 Avril 2011, je suis passé avec la WP7Team au JT de 13h sur La Une (RTBF).

Si vous avez raté l’émission, voici le reportage :

Créer sa première application sur Windows Phone 7

Téléchargement des outils

Commencez par télécharger et installer les outils de développement gratuits :

Attention prévoyez d’avoir du temps libre, l’installation est très longue

Création du projet

Une fois les outils installés, lancez Visual Studio et créez un nouveau projet :

Création d'un nouveau projet

S’enregistrer sur le Marketplace pas à pas !

Bonjour à tous,

Un nouvel article est disponible sur le blog de la WP7Team. Il vous montrera la marche à suivre pour se créer un compte sur l’AppHub.

Je vous laisse le découvrir : http://www.wp7team.com/senregistrer-sur-le-marketplace-pas-a-pas/

Le blog de la WP7Team est arrivé !

Il y a quelques jours je vous parlais d’une surprise, là voilà. Avec quelques amis développeurs, nous lançons aujourd’hui la WP7Team.

La WP7Team qu’est-ce que c’est ?

Si vous avez déjà parcouru un peu ce blog, vous savez que depuis maintenant presque 2 mois, je me suis lancé dans le développement sur Windows Phone 7. Bien qu’ayant déjà des bases en programmation, il s’agissait de ma première expérience avec Silverlight et j’en prends, aujourd’hui, un réel plaisir !

Alors pourquoi ne pas partager ce plaisir ? Mes amis-collègues et moi-même nous sommes donc mis dans l’idée, il y a quelques jours à peine, de créer une équipe de développeurs francophones axée sur WP7. L’idée est la suivante : mettre en commun nos expériences, nos découvertes et nos connaissances pour offrir du contenu à la communauté francophone et à tous les développeurs (en herbe ou confirmés) désireux de se lancer dans l’aventure Windows Phone 7.

Le temps d’aménager un peu notre nouveau blog et ça y est, nous sommes là !

Je ne vais pas vous présenter toute l’équipe ici, mais je vous invite dès à présent à visiter notre blog !

Si le projet vous intéresse, n’hésitez pas à « Aimer » notre page Facebook, à nous retweeter et à parler de nous autour de vous. Cela ne peut que nous motiver encore plus !

Petite surprise en préparation.

Tiens, plus de nouveau articles sur le blog depuis quelques jours, mais que se passe t’il ?

Pour ceux qui se poserait là question, je vous prépare une petite surprise. Je n’en dirais pas plus pour le moment. Je vous tiens au courant aussi vite que possible !