Un guide rapide à la sauvegarde de son iPhone et iPad

À chaque mise à jour qu’Apple offre pour iOS, il y a toujours quelqu’un pour qui la mise à jour se passe comme celle-ci.

ios

Je ne sais pas pour vous, moi, ça me brise le cœur de voir cela se produire. Bien souvent, un téléphone intelligent contient énormément de contenu et de souvenirs qui peuvent être précieux. En particulier si vous avez des enfants. Par le passé, j’ai connu des gens qui n’avaient jamais fait de sauvegarde de leurs téléphones et qui ont tout perdu.

Des mois ou même des années de souvenirs qui s’évanouissent par mégarde. Malheureusement, dans bien des cas, par manque de connaissance au sujet de comment procéder à une sauvegarde des données de son iPhone.

Il s’avère que, dans le passé, j’ai déjà vécu une situation similaire. Une erreur inattendue lors de la mise à jour de mon téléphone a bloqué la procédure. J’avais baissé ma garde en me fiant à la capacité d’iOS à sauvegarder mon contenu sur iCloud et j’ai eu à reprendre la configuration de mon téléphone.

Depuis ce temps, la procédure que j’emploie pour sauvegarder mon téléphone est presque digne de la paranoïa. S’il y a une chose que je sais, c’est que vous ne pouvez jamais être assez préparé avant une mise à jour.

  1. Faire une synchronisation de l’appareil
  2. Faire une sauvegarde
  3. Débrancher l’appareil
  4. Répéter les étapes 1, 2 et 1 dans l’ordre

L’idée de faire une sauvegarde à deux reprises est que, si la plus récente sauvegarde échoue, vous pouvez tenter votre chance avec l’avant-dernière sauvegarde.

La principale raison qui me motive à faire une sauvegarde ainsi est que je ne fais pas confiance à iTunes. Je ne suis pas le seul. Le problème est que c’est le seul logiciel qui permet de faire cette opération avec les appareils d’Apple. En particulier sous Windows. Il faut apprendre à vivre avec.

Par exemple, le cas Facebook que j’ai cité en introduction est un cas où la sauvegarde avait été correctement faite. Il s’avère que c’est iTunes/iOS qui refusait de prendre sa sauvegarde. Frustrant!

L’autre motivation est l’espèce de vision avec des lunettes roses d’Apple lorsqu’il vient temps de faire du support sur ses appareils. Peu importe la page d’aide que vous lisez, rien ne peut mal aller ou ne pas se passer comme prévu. Allez dans un magasin Apple si vous voulez de l’aide!

Comme je m’amuse à dire, un geek informé en vaut deux. Bonnes sauvegardes!

Les liens de la semaine – Édition #151

Développement

.NET

Web

Technologie

Science et autres

Un résumé de mon demi-marathon à Montréal

Pour un coureur de la région de Montréal, une participation au marathon Oasis Rock ‘n’ Roll de Montréal est une façon de célébrer une saison de course et de mesurer un nouveau temps de référence pour ses performances à la course à pied dans sa catégorie.

Le parcours du marathon de Montréal est varié et parsemé d’embûches pour faire jurer les coureurs. Quel que soit votre niveau de préparation ou votre objectif de course, il y a un élément du parcours qui va vous donner du fil à retordre.

Au demi-marathon (la seule distance que j’ai parcourue à présent), le parcours traverse la ville dans l’axe nord-sud en partant du pont Jacques-Cartier pour terminer au parc La Fontaine. Dans le récapitulatif de la course de l’an passé, j’ai décrit un peu plus longuement les différents points d’intérêts du parcours.

Cette année, il s’agit de ma deuxième participation au demi-marathon de Montréal. L’an passé, j’avais réalisé un temps de 02:29:53.9 sous une cuisante chaleur. Pour cette fois-ci, j’arrivais confiant d’une belle performance de 01:54:29.5 au demi-marathon de Lachine.

Avant la course, la seule question que je me posais était si j’allais être en mesure de répéter le même genre de performance sur un parcours significativement plus difficile qu’à Lachine. Surtout que l’an passé, mon temps s’était significativement dégradé entre les deux courses (~6 minutes).

Résultats

resultat-demi-mtl-2015

Votre attention doit être portée en particulier sur la ligne « Temps Officiel ». Oui, oui. Celle qui affiche un temps de 01:52:01. Vous vous doutez que je suis fier pas rien qu’un peu? J’ai dépassé mon précédent record de plus de deux minutes et demie dimanche dernier.

Il s’agit de mon record personnel jusqu’à présent. Considérant la difficulté du parcours, je ne peux pas être plus heureux.

Résumé de la course

Avant la course, j’avais évidemment l’objectif officiel de faire un temps de moins de deux heures. Il s’agit de la version officielle de mon objectif à réaliser. Toutefois, je m’étais fixé aussi deux autres objectifs envers moi-même.

  • Faire mieux ou égal à ma course de Lachine (<= 01:55:00)
  • Ne pas ralentir dans les deux grosses pentes du parcours (Place Jacques-Cartier et la rue Berri)

Le deuxième objectif de courir les deux grosses pentes du circuit était pour régler psychologiquement le cas de ma course de l’an passé. Je m’étais fait surprendre par le niveau d’énergie requis pour attaquer de genre de dénivelé à la course. Cette année, je me suis dit que je ne me ferais pas jouer le tour une deuxième fois. De plus, ça m’a aidé énormément à réaliser mon temps.

L’autre facteur qui a facilité pour beaucoup la course, c’est la clémence de la température. Au moment du départ, le mercure indiquait environ 13 degrés Celsius. Une température comme celle-là donne une impression de fraîcheur tout le long de la course. Cela facilite la performance, car votre corps n’a pas à dépenser plus d’énergie à combattre la chaleur.

Truc de « pro »: dans une course comme un demi-marathon, chaque effort compte. Donc, le moins d’énergie que votre corps dépense à se refroidir, c’est plus d’énergie à dépenser pour l’effort de course.

Pour vous donner une idée du type d’effort que représente la côte Berri, j’ai filmé un petit extrait, au sommet de celle-ci en revenant vers la maison.

Il y a une chose qui est unanime dans le visage de ces coureurs. Il a un manque de sourires à la fin de la côte Berri.

Le prochain objectif

L’an prochain, je vais courir le demi-marathon de Montréal en moins de 01:40:00. Idéalement, je vais viser pour un plan d’entrainement pour atteindre un temps de 01:30:00.

Pour me donner une idée de l’amélioration que cela représente, un demi-marathon en 01:30:00 doit être couru à un rythme moyen de 0:4:15 par kilomètres. Il s’agit d’un rythme d’environs une minute par kilomètre plus rapide que le demi-marathon discuté plus haut.

La marche est haute. Très haute.

Ce qui va être important pour atteindre sera de conserver la mise en forme que j’ai acquise dans la dernière année (perte de poids et forme générale) et de trouver un horaire dans lequel je pourrai continuer à m’entraîner à la course à pied avec ma nouvelle réalité familiale.

Nouvelle réalité familiale dis-je? Oui, oui! Je suis papa d’un deuxième garçon depuis la fin août. Ça tient pas mal occupé, disons ça ainsi. La naissance d’un deuxième enfant donne une dimension particulière à gestion de son temps et de son attention. Les parents me comprendront!

Les liens de la semaine – Édition #150

Développement

.NET

Technologie

Web

Science et autres

L’histoire d’un ruberducking et ASP.NET MVC

Dans le feu de l’action, il nous arrive tous de faire des trucs un peu risibles. D’être pris dans un problème que l’on n’arrive pas à trouver une solution. Une spirale sans fin où la bonne solution n’est jamais vraiment à portée de main.

Ce qui est frustrant, c’est surtout de ne pas être en mesure de trouver la solution soi-même. Inévitablement, il faut avoir recours au fameux canard jaune.

D’ailleurs, à titre de précision, je ne suis pas le héros de cette histoire. J’en ai été néanmoins un témoin de premier ordre, car j’ai été invité à réviser du code lorsque la solution ne fonctionnait pas. Dans les faits, j’ai été le premier champion sur un seul candidat à trouver l’origine du bobo.

Bref, l’histoire ressemble à beaucoup d’autres histoires où ASP.NET MVC n’est pas capable de binder le modèle que l’on essaie de lui envoyer par un POST HTTP. À tous les coups le modèle assigné à l’action MVC était null.

Nous avions vérifié pour la présence des signaux de fumée usuels. C’est à dire:

  • Le nom des variables du formulaire d’où provient le POST correspond à celles du modèle (en respectant la casse, même si ce n’est pas vraiment nécessaire)
  • Que la requête utilise le bon verbe HTTP (POST, dans notre cas)
  • Que le formulaire envoie à la bonne action MVC (faire appel à UrlHelper.Action pour automatiser le tout)

Or, il n’y a pas de façon autrement que gênante de présenter le code qui causait le problème. Tout est en lien avec le modèle envoyé à la méthode MVC qui prenait la forme suivante.


public class UserModel
{
public string Name;
public string Age;
public string City;
}

view raw

model.cs

hosted with ❤ by GitHub

Si vous faites du MVC sur une base relativement régulière, vous pouvez voir qu’il y a quelque chose qui cloche dans ce code. Il manque quelque chose de fondamental à cette classe. Les attributs permettant de faire que les variables publiques soient des propriétés automatiques ({get; set;}) ne sont pas présents.

Il faut donner un peu de crédit à l’auteur original. La classe en question était un peu loin dans la solution Visual Studio. Comme on dit par chez nous: il l’avait perdu de vue.

Cependant, c’est bien beau de rire un peu. Savez-vous pourquoi il est nécessaire d’avoir des propriétés automatiques dans vos classes de modèle? Après tout, une variable publique est accessible lorsque l’on manipule une instance de cette classe, n’est-ce pas?

La réponse est en lien avec la façon que MVC s’y prend pour aller hydrater un modèle envoyé à une action. Lorsqu’on y pense bien comme il faut, il serait logique que cela passe par réflexion pour aller récupérer les différentes propriétés à hydrater.

La twist c’est que dans le code que j’ai fourni ci-haut, il ne s’agit pas de propriétés automatiques. Il s’agit, en fait, de simples champs publics. Pour .NET, ce n’est pas du tout la même chose.

Une fois que nous avons converti les champs publics en propriétés automatiques, le résultat a été un succès instantané. Comme prévu.

Comme quoi qu’une revue de code peut faire réellement la différence. Pensez-y.