Archives d’Auteur: JC Vasselon

Changer l’écran d’un Kindle 4

J’adore la liseuse d’Amazon, j’ai été un des premiers acquéreurs et elle m’a permis de me remettre à lire. Ca ne prend pas de places et cela supporte pas mal de bouquins pour les vacances, les transports en commun, les files d’attentes, …

Par contre, c’est fragile…

Lire la suite

Publicités

Hey le dév ! t’as pas un 06 ?

Vous êtes chasseurs de têtes ? Vous voulez faire craquer tous les développeurs ? Vous voulez augmenter votre reach ? Ces conseils sont pour vous !

Lire la suite

Héberger ses packages sur Visual Studio Online

Depuis Novembre 2015, Visual Studio Online permet de gérer l’hébergement de packages au travers d’un service nuget. Voyons comment cela fonctionne.

Lire la suite

Obtenir des MaidSafeCoins en 4 étapes

MaidSafe est une entité qui est en train de mettre au point un « nouvel internet » totalement décentralisé et anonyme. Un projet réellement ambitieux mais qui peut rendre internet vraiment anonyme et faciliter la persistance d’une information.
Ce système se base sur une monnaie, les MaidSafeCoins qui sont indexés sur l’espace de stockage mis à disposition par les utilisateurs du réseau. Voyons comment acheter des MaidSafeCoins.

Lire la suite

Obtenir des bitcoins en France

Nous allons voir dans cet article comment acheter des bitcoins de manière sécurisée en étant français avec des euros.
Cet article sera purement technique, et a pour vocation d’expliquer la procédure d’achat des premiers bitcoins plutôt que la philosophie derrière.

Lire la suite

Récupérer une session perdue sous firefox

Je suis un grand fan des onglets mais il arrive que Firefox crashe inopinément et me perde ma 100aine de sites que je dois regarder…

Mais on peut heureusement les récupérer !

Sous Windows (et uniquement sous Windows)

Attention : Si vous aviez plusieurs fenêtres ouvertes et que vous avez fermé par inadvertance la mauvaise, vous pouvez peut-être encore tenter de cliquer sur “historique” dans le menu (appuyez sur la touche alt pour l’ouvrir) puis “fenêtres récemment fermées”. Sinon, si c’est dû à un caprice de firefox après fermeture, essayez la procédure suivante :

1. Fermez Firefox

2. Rendez-vous dans votre dossier AppData/Roaming/Mozilla/Firefox/Profiles ou entrez directement %APPDATA%/Mozilla/Firefox/Profiles dans la barre d’adresse de l’explorer.

image

3. Ensuite ouvrez le répertoire au nom bizarre : xxxxx.default.

Et cherchez un fichier répondant au nom de sessionstore.bak. Vérifiez que le contenu correspond bien à vos onglets en l’ouvrant avec un éditeur de texte (clic droit / Ouvrir avec…). Si ce n’est pas les bons sites, cherchez le fichier sessionstore.bak le plus récent (il peut y en avoir plusieurs).

4. Copiez-le dans un endroit sûr au cas-où puis renommez-le en sessionstore.js

5. Réouvrez Firefox, vos onglets devrez être là ! Dans ce cas, vous pouvez supprimer la copie faite au point 4 (Ne touchez plus au sessionstore.js !)

6. Partagez cet article, vous sauverez sûrement d’autres personnes !

PS : Si vous ne trouvez malheureusement pas votre sessionstore dans ce répertoire, il est possible que vous n’ayez pas choisi de conserver vos onglets, ou que votre version de firefox soit trop vieille. Dans ce cas, je suis désolé, cet article ne pourra vous aider plus…

Par JCVASSELON

[Windows 8] Réimplémenter le RemoveBackEntry

Dans le cas d’un projet, il me fallait empêcher le retour sur la page précédente mais revenir sur une page particulière. Exemple : MainPage –> Page Sommaire –> Page 1 –> Page 2 –> Page 3
Le bouton précédent depuis les pages 1 à 3 devait me ramener sur la page Sommaire.

Ma première réflexion a été d’utiliser le GoBack juste avant de naviguer vers la page suivante. Sur PC, ce retour en arrière ne se voyait pas mais sur une tablette ARM, le chargement de la page précédente puis de la suivante était flagrant et inésthétique.

J’ai donc cherché le RemoveBackEntry comme il existe sur Windows Phone pour supprimer la page précédente, mais malheureusement il n’existe pas en WinRT… Mais il est possible de manipuler la pile de navigation !

Manipuler la pile de navigation

La méthode GetNavigationState d’un objet Frame nous permet de récupérer la pile de navigation sérialisée sous forme de string tandis que SetNavigationState nous permet de la modifier.

Avertissement

La documentation du GetNavigationState, le précise bien. Il est formellement déconseillé de le faire, cette méthode est utilisée en interne et la manière de sérialiser peut être modifiée par Microsoft dans une version future de Windows. Son usage permet actuellement de stocker la page courante de l’utilisateur lors de la fermeture de l’application et de le ramener sur cette page à la prochaine ouverture.

Autre point, la déserialisation est impossible si vous passez des objets entre 2 pages. Ce système ne marchera que si vous faites une navigation basique d’une page à une autre. Si vous souhaitez passer des objets utilisez des Messengers ou simplement un Cache, mais ce n’est pas le sujet de l’article.

Mettons les mains dans le cambouis

La méthode GetNavigationState() va nous retourner une chaîne sous cette forme :

1,3,2,31,MonNamespace.MainPage,12,0,40,MonNamespace.Sommaire,0,33,MonNamespace.Page1,0

Découpons la chaînes et expliquons chaque partie :

1,3,2 :

  • 1, je ne sais pas… Certainement le signalement du début de la chaîne
  • 3, correspond au nombre de pages dans la pile
  • 2, à l’id de la page courante

31, MonNamespace.MainPage, 12, 0

  • 31 correspond à l’id du type de la page chargée
  • MonNamespace.MainPage est le type de la page chargée
  • 12, aucune idée, ce nombre n’est présent que dans l’ensemble lié à la 1ère page
  • 0, je pense que c’est le séparateur entre chaque page, on le retrouve à la fin de chaque page chargée

40,MonNamespace.Sommaire,0

  • 40 correspond à l’id du type de la page chargée
  • MonNamespace.Sommaire est le type de la page chargée
  • 0, idem que précédemment

Vous avez compris la structure. L’idée est donc, pour supprimer le dernier élément, de le retirer de la chaîne de caractère, et de décrémenter l’ID de la page courante ainsi que le nombre de pages chargées.

Pour cela, je me suis créé une méthode d’extension à la classe Frame :

public static classFrameExtension
{
public static void RemoveBackEntry(thisFrameframe)
{
varparts = frame.GetNavigationState().Split(‘,’);
varcount =Int32.Parse(parts[1]);

if(count > 1)
{
parts[1] = (
int.Parse(parts[1]) – 1).ToString();
parts[2] = (
int.Parse(parts[2]) – 1).ToString();
varstate =String.Join(« , », parts, 0, parts.Length – 3);

frame.SetNavigationState(state);
}
}
}

Quelques précisions

Il nous suffit donc de faire un this.Frame.RemoveBackEntry pour supprimer la dernière page visitée de notre pile de navigation. L’appel sur GoBack() nous ramènera sur la page encore précédente. Exemple : MainPage –> SommairePage-> Page1->RemoveBackEntry->Page2. Depuis la page 2, GoBack nous ramènera sur SommairePage.

Attention, l’appel du SetNavigationState() lance une navigation vers la page courante (normal vu qu’il doit être appelé au démarrage de l’application pour repositionner l’utilisateur sur la page sur laquelle il était) du coup, le “OnNavigatedTo” de votre page sera appelé en mode GoBack, pensez-y si vous avez un comportement bizarre.

Par JCVASSELON