mardi 30 janvier 2018

L'identification à deux facteurs pour les anciens appareils Apple

Si vous avez déclenché l'identification à deux facteurs sur votre iPhone (Réglages, [votre nom], Mot de passe et sécurité, Identification à deux facteurs) vous aurez quelques problèmes de connexion à votre compte iCloud sur des anciens appareils comme sur mon iPad 1 qui tourne sous iOS 5.1.1.


Après avoir appelé le support d'Apple, voici la solution simple mais qu'il fallait connaitre :


- Sur l'ancien appareil (ici iPad 1 iOS 5.1.1), allez dans Réglages, iCloud, Compte, saisissez votre mot de passe sans appuyer sur le bouton Terminé :



- Allez, avec un appareil récent (votre iPhone ou votre MacBook - démonstration ici sur mon MacBook) sur Préférences Système, iCloud, Détails du compte, Sécurité, appuyez sur le bouton Recevoir un code de validation :



- Revenez sur votre ancien appareil et saisissez le code de validation à la suite de votre mot de passe, appuyez sur le bouton Terminé. Faites cette procédure à chaque fois que, sur l'ancien appareil, le système vous demande de saisir votre mot de passe.


Pour générer le code de validation à partir de votre iPhone : Réglages, [votre nom ], Mot de passe et sécurité, Obtenir un code de validation :



En conclusion : contrairement aux mauvaises langues qui disent qu'Apple veut que vous changiez sans cesse d'appareil, la démonstration est faite, une fois de plus, que l'on peut garder son appareil Apple bien plus longtemps que la concurrence, de plus le support Apple a été extrêmement humain, de qualité et a réglé mon problème.

mercredi 24 janvier 2018

Prendre en compte TLS 1.2 en ASP.NET

Si vous rencontrez cette erreur :

The underlying connection was closed: An unexpected error occurred on a receive.

en essayant de faire un paiement PayPal avec ce code : 

WebRequest request = WebRequest.Create("https://api-3t.paypal.com/nvp");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.ToString().Length;
var sw = new StreamWriter(request.GetRequestStream());
sw.Write(postData.ToString());
sw.Close();

WebResponse response = request.GetResponse();

(pour le code complet d'un paiement PayPal en asp.net voir cet article : http://ghislainmesse.blogspot.fr/2016/07/integrer-le-paiement-paypal-dans-un.html)

C'est que votre serveur ne prend pas en compte TLS 1.2.

Soit vous installez asp.net 4.5 ou supérieur, soit vous ajoutez cette ligne en début de code :

protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        ….
}

P.S. : ne pas oublier d'ajouter cette clause dans l'entête du code : using System.Net;

vendredi 29 décembre 2017

La validité programmée

Apple a récemment été accusée d'obsolescence programmée parce que l'entreprise avait mis en place une intelligence artificielle pour ralentir certains services dans les iPhones dont la batterie était usée. Cette technologie permet de rallonger la durée de vie de l'appareil donc cela n'a rien à voir à de l'obsolescence programmée, il s'agit même du contraire : la validité programmée.

D'ailleurs quand on compare la durée d'utilisation du premier propriétaire d'un smartphone, les iPhones sont bien loin devant les appareils Android :


Sources : 

L'obsolescence programmée est l'ensemble des techniques mises en place pour raccourcir artificiellement la durée d'un appareil, par exemple quand on limite le nombre d'impressions sur une imprimante, le nombre de kilomètres sur une voiture.

Quel est le moteur de l'obsolescence programmée ? À part certains cas flagrants de verrouillage par le constructeur, la coupable est l'avidité. Par avidité on veut des produits pas chers qui font le plus de choses possibles et tout de suite. on achète pas cher, on jette plus facilement, on ne répare pas, on rachète très vite et meilleur. Les constructeurs fabriquent donc des produits qui correspondent à ce besoin.

Si je dois fabriquer un appareil pour des gens qui vont l'utiliser 1 an et le jeter, je vais mettre des composants pas solides et pas chers, mon entreprise s’appelle Wiko.

La meilleure façon de lutter contre l'obsolescence programmée et donc contre la pollution : acheter des produits chers et solides. Dans le domaine électronique, pour l'instant je n'ai jamais trouvé plus durable que les produits Apple : http://ghislainmesse.blogspot.fr/2017/07/lipad-7-ans-apres.html

mardi 5 décembre 2017

L'apprentissage du clavier à l'école favorise un bon niveau de lecture

Quand on évoque la baisse de niveau de lecture des écoliers, on accuse très souvent les outils électroniques.
L'école française est très attachée à l'écriture ancienne, cursive, sur du papier ... pourtant elle arrive à la 34ème place sur 50 dans l'enquête PIRLS 2016.
Pour beaucoup d'enseignants, écrire avec un clavier ou lire sur un écran, n'est pas de l'écriture ou de la lecture. 
En Finlande, l'écriture cursive n'est plus obligatoire et l'apprentissage de l'écriture au clavier est privilégié (« très important pour l’avenir professionnel »), la Finlande arrive à la 2ème place du classement PIRLS 2016.


mardi 7 novembre 2017

Comment générer une vCard en HTML, ASP.NET

1. Enregistrer les données dans un fichier texte (nom_fichier) avec l'extension .vcf

string vcard =
  "BEGIN:VCARD\n\r"+
  "VERSION:2.1\n\r" +
  "N:" + nom.Text + ";" + prenom.Text + "\n\r" +
  "TEL;HOME;VOICE:" + fixe.Text + "\n\r" +
  "TEL;CELL;VOICE:" + telephone.Text + "\n\r" +
  "ADR;HOME:;" + adresse.Text + "\n\r" +
  "EMAIL;INTERNET:" + email.Text + "\n\r" +
  "END:VCARD";
if (File.Exists(nom_fichier))  File.Delete(nom_fichier);
try
{
  FileStream fs = new FileStream(nom_fichier, FileMode.OpenOrCreate, FileAccess.Write);
  StreamWriter output = new StreamWriter(fs, UnicodeEncoding.Default);
  try
  {
    output.Write(contenu);
  }
  catch {}
  finally
  {
    output.Close();
  }
}
catch {}

2. Faire référence à ce fichier pour le télécharger :

string lien = "<a href=\"" + nom_fichier + "\">vCard</a>";

------
Ajouter

using System.IO;

dans l'entête du fichier aspx.cs pour gérer la création du fichier.