C# et JSON

Si vous devez utiliser des données formatées avec le standard JSON, voici un truc simple pour démarrer (mais vous pouvez complexifier à votre guise ;)). J’utilise pour ce faire l’extension Web Essentials et le package NuGet Json.NET. Le fichier données JSON que j’utilise est celui-ci: Fichier exemple JSON (source).

Voici les étapes pour prendre les données JSON, générer les classes nécessaires et téléchargés les données et remplir ces nouvelles classes:

  • Installer l’extension Web Essentials
  • Créer une nouveau fichier de classe
  • Mettre dans le presse-papier un extrait ou l’ensemble des données JSON (Copier ou CTRL-C)
  • Cliquer-droit dans l’éditeur ou dans le menu EDITION/Collage Spécial et sélectionner “Coller le code JSON en tant que classes”

image

Ceci va créer des classes à partir du code JSON. Dans notre exemple, ceci donne les classes suivantes:

public class Rootobject
{
    public Items items { get; set; }
}

public class Items
{
    public Item[] item { get; set; }
}

public class Item
{
    public string id { get; set; }
    public string type { get; set; }
    public string name { get; set; }
    public float ppu { get; set; }
    public Batters batters { get; set; }
    public Topping[] topping { get; set; }
    public Fillings fillings { get; set; }
}

public class Batters
{
    public Batter[] batter { get; set; }
}

public class Batter
{
    public string id { get; set; }
    public string type { get; set; }
}

public class Fillings
{
    public Filling[] filling { get; set; }
}

public class Filling
{
    public string id { get; set; }
    public string name { get; set; }
    public float addcost { get; set; }
}

public class Topping
{
    public string id { get; set; }
    public string type { get; set; }
}

Par la suite, nous devons télécharger ce fichier depuis notre application pour afficher/traiter les données. Pour ce faire:

  • Ajouter le package NuGet Json.NET
  • Ajouter les usings suivants:
    • using Newtonsoft.Json;
      using System.Net.Http;
  • Utilisation de HttpClient et Json.Net pour extraire les données JSON et populer nos classes
    • private static async Task<Rootobject> GetData()
      {
          HttpClient client = new HttpClient();
          var response = await client.GetStringAsync("http://www.gabrielmongeon.com/public/blog/donuts.js");
          var root = JsonConvert.DeserializeObject<Rootobject>(response);
      
          return root;
      }

Voilà, vous avez une structure de données rempli avec des données provenant de JSON. Il ne reste plus qu’à trouver/créer une source de données et d’afficher/formater ces données dans votre application.

Bonne programmation

Politique de confidentialité pour Windows Store

Je connaissais le requis d’une politique de confidentialité pour le Windows Store (requis 4.1.1), mais lors de la publication de mon application elle me fut refusé sur la base que je devais absolument fournir cette politique car j’utilisais la connexion Internet. Donc même si vous ne récolté pas d’informations de vos utilisateurs, le simple d’être connecté requiert cette politique. C’est dommage que la validation de Visual Studio ne détecte pas ce problème et que ce soit plus tard lors de la soumission que cela est détecté.

La politique de confidentialité doit être disponible dans le “Settings charm” de l’application ainsi qu’un lien dans le Windows Store. Je me suis basé sur ce qu’a fait Jim dans ses applications (Voir plus bas pour un petit correctif) pour ajouter un lien dans mon application vers ma propre page web, si vous n’avez pas de site Internet vous pourriez utiliser gratuitement Azure.

image

Correctif pour le code de Jim

Il y a une petite erreur sur sa page, mais pas dans son projet exemple attaché à son blogue. Au point #5, le code aurait du se lire:

// Add the main call to the privacy policy
SettingsPane.GetForCurrentView().CommandsRequested += DisplayPrivacyPolicy;

Patiner sur le Windows Store

Après avoir fait une application similaire sur Windows Phone, je me suis amusé à faire une application similaire sur Windows 8: Patiner.

L’application permet de visualiser l’état des patinoires de l’ile de Montréal en naviguant sur la carte. C’est tout simple et c’est voulu ainsi, mais des améliorations sont déjà prévus dans les prochaines versions.

Les données proviennent de Patiner Montréal, qui offrent une excellent portail web et des liens vers des applications pour d’autres systèmes d’exploitation.

screenshot_02192014_200210

Si vous avez des suggestions ou des bogues, ce qui est peu probable, visiter le site de support.

Créer votre première application Services Mobile d’Azure

Il est très facile de créer votre première application Windows 8, Windows Phone 8 ou iOS avec les outils Services Mobile d’Azure. Dans ce billet je vais démontrer comment créer une application exemple “ToDo”. En fait, cela va vous prendre plus de temps lire ce billet que d’exécuter les étapes de celui-ci!

Loguer vous sur votre portail Windows Azure et rendez-vous dans la section Services Mobiles. Cliquer sur le lien Créer un service mobile.

image

Une fenêtre s’ouvre, entrez l’url, qui deviendra <monUrl>.azure-mobile.net. Vous indiquez si vous désirez créer une nouvelle base de données ou réutiliser une existante. Dans cet exemple nous allons en créer une. Finalement indiquez la région de votre service.

image

Puisque nous créons une nouvelle base de données, vous devez inscrire le nom, le serveur et l’utilisateur de cette nouvelle base de données.

image

Ensuite, attendez que la magie opère, et appuyer sur votre nouveau service.

image

Dans la page d’accueil du service, choisissez une plateforme, dans notre cas Windows Store pour une App Windows 8. Ensuite, dans la section Mise En Route, cliquer sur le lien Créer une application Windows Store.

image

À partir ce cette section, vous n’avez qu’à suivre les indications:

  1. Obtenez les outils, soit VS2012 Express pour Windows 8 et le SDK pour les Mobile Services pour vous permettre de modifier/exécuter l’application
  2. Créer une table TodoItem: ceci va créer une table dans la base de données que l’on a créé précédemment.
  3. Télécharger et exécuter l’application: sélectionnez la langue, soit C# ou JavaScript (moi je préfère la première option ;) ) et appuyez sur Télécharger.

image

Vous avez maintenant télécharger, sous format ZIP, votre application. Vous n’avez qu’à l’extraire, l’ouvrir dans VS2012 Express pour Windows 8 et l’exécuter(F5). Voilà, votre première App Windows 8 utilisant Azure comme base de données.

Vous avez pu remarquer que plusieurs options différentes s’offre à vous (plateforme, langage, base de données, connectez à votre App existante, etc.), il ne reste plus qu’à trouver quel sera votre App!

Bon développement dans le nuage!

Quoi de neuf?

J’ai récemment croisé une vieille connaissance qui m’a demandé sur quoi que je travaillais pr��sentement, ce qui m’a inspiré ce billet. Inquiété vous pas, je n’étalerai pas ma vie personnelle!

Dans le jour, je travaille comme développeur chez Alcero:

Dans mes temps libre:

  • Je fini mon dernier cours de maitrise en génie logiciel et je cherches mon sujet de mon essai.
  • Je mets à jour mon application Windows Phone Sports MTL.
  • J’ai installé Windows 8 sur un vieux laptop et je m’habitue à l’interface. La prochaine étape va être de faire une app.
  • En prévision de mon app Win8, j’ai commencé à regarder les nouveautés Windows Azure et faire du rattrapage depuis la dernière fois que j’ai joué avec.

Et vous, vous travaillez sur quoi?

Visual Studio 11: Attributs Caller

Une des nouveautés de Visual Studio 11 et du framework 4.5 sont les attributs Caller:

  • CallerMemberName: permet d'obtenir la méthode ou le nom de la propriété de l'appel à la méthode.
  • CallerFilePath: permet d'obtenir le chemin d'accès complet du fichier source qui contient l'appelant. C'est le chemin d'accès de fichier au moment de la compilation.
  • CallerLineNumber: permet d'obtenir le numéro de ligne dans le fichier source vers lequel la méthode est appelée.

Ces attributs permettent d’alléger le code selon certains scénarios, comme par exemple la journalisation(logging) ou lorsque que vous utiliser l’interface INotifyPropertyChanged (comme pour le MVVM) et devez passez le nom de la propriété appelante.

Voici un exemple très simple de leur utilisation dans le cadre de la journalisation:

    class Logger 
    { 
        public static void LogMessage(string msg, 
            [CallerMemberName] string member = "", 
            [CallerFilePath] string file = "", 
            [CallerLineNumber] int line = 0) 
        { 
            string message = String.Format("{0} : Member {1} in file {2} at line {3} = {4}", 
                        DateTime.Now.ToString(), member, file, line, msg); 
            Debug.WriteLine(message); 
            Console.WriteLine(message); 
        } 
    }

Pour inscrire une entrée dans la journalisation, il suffit simplement de fournir le message désiré et les attributs s’occuperont du reste!

class Program 
{ 
        static void Main(string[] args) 
        {
            Logger.LogMessage("Error!!!"); 
            Console.ReadLine(); 
        } 
}

Aussi simple que cela!

Bonne journalisation ;)

WP7 App: InterUrbain

MarketPlace_99x99

Voici une seconde application de mon cru: InterUrbain.

Cette application utilitaire permet de déterminer si les appels entre 2 numéros de téléphone sont locaux ou interurbains. Il suffit d’entrer le code régional et les 3 premiers chiffres du numéro pour déterminer leur distances. Simple, efficace et surtout gratuit!

SplashScreenPreCheck.frPostCheck.fr,png

Si vous avez des suggestions, commentaires ou besoin de support, n’hésitez pas à entrer en contact avec moi (voir le lien en haut de cette page).

Bon appels!

Publicités pour Windows Phone 7

Lorsque l’on développe des applications, on veut toujours rentabiliser notre investissement et même peut-être faire un peu de profit. Avec Windows Phone 7 (WP7) il y a 2 méthodes pour généré des revenus: l’achat de l’app et par l’affichage d’annonce. Cet article s’intéresse à la seconde méthode.

Création d’un compte pubCenter

Il faut tout d’abord créer un compte sur le Microsoft Advertising pubCenter. pubCenter est le hub pour les annonces WP7 et les apps Windows 8. Très simple et facile d’utilisation donc je vais omettre les détails de création dans cet article.

Enregistrer une application

Dans pubCenter, vous devez premièrement enregistrer une application. Cette application doit être unique par app WP7. Ceci permet de mieux gérer les rapports, performance et revenus, mais ne représente pas un bloc d’annonce comme tel, seulement l’application.

EnregistrerApp

Vous obtenez ainsi un ID pour votre application:

Enregister App Reussi

Création d’un bloc d’annonce

Il faut ensuite créer un bloc d’annonce qui affichera les publicités. Celui-ci est indépendant des applications et peut être utilisé plusieurs dans la même application et même dans des application différentes.

Format de l’annonce

Pour WP7, il existe 2 format d’annonces: X-Large (300x50) et XX-Large (480x80). Je suggère le format XX-Large, car celui-ci prend la largeur de l’écran et est plus intéressant au niveau de l’expérience utilisateur.

Creer bloc dannonce

Catégories

Les catégories permettent de cibler les annonces qui seront affichés, vous permettant d’avoir un bloc ayant des annonces en liens avec votre app.

Creer bloc dannonceCategories

Exclusion d’URLs

Vous pouvez filtrer les URLs d’annonces qui seront affichés.

Creer bloc dannonceUrlExclues

Insertion d’une annonce dans votre application

Pour insérer un bloc d’annonce dans votre app, vous devez télécharger le kit de développement logiciel (SDK) Microsoft Advertising pour WP7 pour Visual Studio 2010. Ensuite, vous devez insérer votre contrôle dans votre page.

AnnonceToolbox

Votre XAML va ressembler à ceci, où ApplicationId est le Guid de votre application dans pubCenter et l’AdUnitId est un nombre à 5 chiffres désignant le bloc d’annonce pour ce contrôle.

            <my:AdControl 
                ApplicationId="9E3BDC69-DD3D-4DAB-BC6E-26C525E5E1DF"
                AdUnitId="99999"
                />

Et un exemple à l’intérieur de l’émulateur dans un app minimal.

SC

Conclusion

Il est plus rapide d’insérer un bloc d’annonces dans votre application que le temps que vous avez mis pour lire cette article! Une belle façon de générer un peu de revenus pour financer votre prochain projet!

Bon développement!

Ma première App – Sports MTL

MPLargeApplicationIcon

Après quelques mois d’essai avec la programmation pour Windows Phone 7, mais sans vraiment publier l’application, j’ai décidé d’essayer de me lancer dans une application qui allait être publier: Sports MTL. Une application permettant de connaitre l’état des différents lieux de loisirs/sports tel que les patinoires, glissades et pistes de ski de fond.

Cette application est disponible en français et en anglais, en version d’essai ou payante. Si vous avez des suggestions ou commentaires au sujet de cette application, allez consulter le site UserVoice de Sports MTL.


Développement

Rien de bien spectaculaire, plus une première incursion dans le développement d’application pour WP7. Cela m’a permis de me familiariser avec les concepts suivants:

Il y a encore bien des choses que je veux faire sur cette application, alors restez à l’écoute! J’en suis déjà à ma 3ième version sur le MarketPlace ;)

Voici quelques écrans, aussi visible sur Sports MTL

Splash

ArrondissementDetailPatinoireStatut

SharePoint 2010: bogue avec WebConfigModification

Lorsque vous désirez apporter des modifications au fichier web.config de votre application SharePoint 2010, vous pouvez utiliser deux méthodes:

  • Créer un fichier webconfig.<votre_nom>.xml que vous ajouter au répertoire \CONFIG (Source sur MSDN)
  • Le faire à l’aide de la programmation et utiliser les objets SPWebConfigModification et SPWebApplication.WebConfigApplication (Source sur MSDN).

Cependant, lorsque vous utilisez la seconde méthode et que vous enlever les modifications du fichier à l’aide de Remove(), les modifications ne s’enlèvent pas. Et ce même si vous utiliser le .Update() et .ApplyWebConfigModifications(). Cela peut n’avoir comme effet que votre modification se retrouve plusieurs fois dans le fichier web.config, mais si vous insérez des modifications plus sensible à l’unicité, comme pour un HttpModule, alors cela crée une erreur qui empêche le site de fonctionner (Erreur 500).

Une question posée en ce sens sur les forums MSDN nous permet de découvrir que cela est un bogue connu de Microsoft (Office14 831708) et qu’éventuellement celui-ci devrait être corrigé. Pendant ce temps, vous pouvez essayer ce script PowerShell, mais dans mon cas, cela n’a pas fonctionné!

Bonne chance!