Shared posts

16 Apr 06:13

Safari pourrait bien devenir le cauchemar Internet Explorer 6 de la navigation mobile

by aKa

Tristant Nitot écrivait récemment sur son blog dans un joli billet dédié aux 15 ans de Mozilla :

Pourtant, l’avenir numérique n’est pas tout rose. La nouvelle frontière est dorénavant celle du mobile, et l’ouverture du Web est bien loin d’être d’être la norme dans ce nouvel univers. Le Web a offert à tous la liberté de créer et de diffuser sans demander la permission; la liberté d’apprendre en faisant un simple “View Source”; la liberté de faire une application qui tournera partout, avec une technologie qui n’est pas la propriété d’un acteur en particulier.

Mozilla s’est lancé le défi de s’attaquer à ce problème, de faire du Web un citoyen de premier rang sur le mobile. Première étape : Firefox pour Android. Deuxième étape : Firefox OS.

Comme il y a 15 ans, il s’agit de fabriquer l’Internet (mobile) qu’on veut, pas celui qu’on veut bien nous laisser. Comme il y a 15 ans, cela peut sembler à certains un objectif délirant. Ca l’est peut-être. Sûrement. Mais pour ceux qui entrevoient le potentiel de cette idée, l’attrait est irrésistible. Je vois le potentiel de cette grande idée. Et vous ?

Une belle et optimiste introduction à la (plus inquiétante) traduction ci-dessous.


Babak Farrokhi - CC by


Le cauchemar d’IE6 pourrait être de retour

The IE6 nightmare might be back soon

James Creixems - Avril 2013 - Blog personnel
(Traduction : Fly, ProgVal, aKa, Sphinx, Léo, fcharton, Moosh + anonymes)

J’y réfléchissais ces derniers temps, et je pense que j’ai trouvé le nouvel IE6 et oui… je suis terrifié.

Chaque développeur web se souvient des années d’horreur d’IE6. Un navigateur, qui était fourni par défaut sur un système utilisé par 90% des gens (Windows) a fini par avoir une telle part de marché que ses développeurs se moquaient d’améliorer le produit, de respecter les standards, ou même de mettre à jour le produit.

Ainsi, pendant des années, les développeurs web ne pouvaient profiter des avantages qui étaient apportés par l’amélioration des standards (PNG transparents, flottants CSS, etc.). Tout le monde devait « supporter » IE6 et c’était un vrai et terrible cauchemar.

Actuellement, les navigateurs sont mis à jour par intervalles de quelques semaines, ajoutant de nouvelles fonctionnalités et supportant de nouveaux standards, encore plus vite que précédemment. Et avec un système de mises à jour automatiques qui est encore plus transparent pour l’utilisateur.

Mais il y a une exception à cet âge d’or que nous vivons. C’est un navigateur, qui se met à jour seulement une fois par an sur une plateforme qui n’accepte pas d’autre navigateur et qui a 50% de parts de marché. Oui, je parle de Safari Mobile.

Safari Mobile pourrait devenir le nouvel IE6.

Dans la mesure où iOS n’autorise aucun autre moteur de rendu, il n’y a aucune réelle alternative à Safari Mobile. Par exemple, Chrome sur iOS ajoute de nouvelles fonctionalités en surcouche, (synchronisation des onglets, etc), mais au final, il s’agit toujours du rendu de Safari Mobile. Pas de moteur V8, pas de support sur mesure des nouveaux standards.

Et avec l’adoption par Chrome d’un nouveau moteur de rendu dans les prochaines semaines, la divergence entre Chrome sur ordinateur (et sur Android) et Chrome sur iOS sera bientôt beaucoup plus évidente.

Mozilla ne propose pas Firefox sur iOS par ce qu’ils ne peuvent pas utiliser leur moteur Gecko. Donc, sur iOS, nous sommes coincés avec le moteur de rendu de Safari mobile.

Si Safari Mobile était magiquement mis à jour à la même vitesse que les autres navigateurs avec les dernières spécifications WebKit, ce serait un moindre mal. Mais il se met à jour seulement une fois par an, et commence à avoir l’air « dépassé » quand on le compare aux derniers navigateurs.

Par exemple, prenez le support CSS Flexbox. La spécification a changé de manière significative au cours des derniers mois. Chrome embarque déjà la dernière implémentation, Firefox aussi ; mais Safari et Safari Mobile… eh bien non car ils n’ont pas été mis à jour.

Or en tant que développeurs, nous devons supporter Safari Mobile. Cela représente environ 61% du marché des mobiles. On ne peut l’ignorer. Bienvenue à nouveau dans l’enfer IE6.

C’est pour l’instant à peine visible, mais alors que Chrome passe à Blink et que Firefox continue à innover rapidement, Safari Mobile va probablement devenir l’IE6 de la course. Nous détesterons tous devoir le supporter et être incapable d’utiliser les dernières spécifications parce que Safari Mobile ne les supporte pas.

Je ne pense pas cependant que ce sera aussi horrible que dans les années d’IE6. iOS a une part de marché beaucoup plus petite que celle qu’avait IE6, ils sont en concurrence avec Android et Chrome qui s’amélioreront certainement beaucoup plus rapidement ; et Safari Mobile est construit à partir d’un moteur open source, ce qui garantit que chaque mise à jour effectuée par Apple obtiendra les trucs les plus récents.

Donc, ça ne sera pas aussi horrible que IE6 mais je pense que dans les prochaines années, Safari Mobile va devenir le navigateur que tous les développeurs web vont détester devoir supporter.

J’espère vraiment qu’Apple va autoriser d’autres navigateurs (avec d’autres moteurs de rendu) sur iOS 7. Cela réglerait tout automagiquement, ou au moins qu’ils décident d’aller vers un système de mises à jour silencieuses de Safari Mobile. Mais oui, je sais que c’est d’Apple dont je parle… un développeur peut toujours rêver.

Crédit photo : Babak Farrokhi (Creative Commons By)

10 Apr 13:55

Devoxx France 2013 : Javascript pour les développeurs Java

by Pierre TEMPLIER

Lors de Devoxx France 2013 j’ai beaucoup apprécié le retour de Florian Boulay intitulé “Javascript pour les développeurs Java : quels sont les pièges à éviter ?” . Dans cette conférence, il nous a fait part des surprises qu’il a rencontré et des solutions qu’il a pu apporter.

Portée des variables

Si on ne met pas var devant une variable celle-ci est alors globale.
Solution : on met toujours var qui force une portée locale.

	var foo = 'global'
	function funct() {
		var foo = 'local';
		bar = 'global';
		console.log(foo); // 'local'
		console.log(bar); // 'global'
	}
	funct();
	console.log(foo); // 'global'
	console.log(bar); // 'global' instanciée depuis funct()

Pour une meilleure lisibilité et pour identifier facilement que l’on utilise bien des variables locales, on peut systématiquement déclarer ses variables en début de méthode.

Isolation du code

Pour éviter de déclarer des méthodes au niveau global, on les isole de la façon suivante :

(function() {
	var foo = 'hello';
	//...
})();

Cela s’appelle le module pattern.
Celui-ci permet d’éviter d’utiliser le namespace global pour la déclaration de la fonction. On évite ainsi les conflits de noms qui pourraient survenir.

Le module pattern permet aussi d’émuler le concept de classe de la manière suivante:

var module = (function() {
	var exposedObject = {},
		privateVariable = 1;

	function privateMethod() {
		// méthode privée
	}
	exposedObject.publicProperty = true;
	exposedObject.publicMethod = function() {
		// méthode exposée
	}
	return exposedObject;
})();

module.publicMethod();

Tout ce qui n’est pas ajouté à l’objet exposedObject reste invisible “à l’extérieur”, c’est ce qui différencie les méthodes privées des méthodes publiques du module.

Objets

Pour la déclaration d’objets, Florian conseille de s’en tenir à la notation littérale pour plus de clarté.

var obj = {
	prop : true,
	funct : function() {
		return 'me';
	}
};

Quand utiliser new ?

Que doit-on utiliser ?

var myvar1 = ApiObject();

ou

var myvar1 = new ApiObject();

La convention (tacite) : il faut utiliser new quand la fonction commence par une majuscule.
Si la méthode utilise this alors il faut utiliser new.
L’objet référencé par this dépend du contexte d’exécution.

Egalité

Lorsque l’on compare 2 objets avec ‘==’, ceux-ci sont éventuellement modifiés afin de pouvoir être comparés. L’intention est bonne mais est source de nombreux problèmes. Afin de lever toute ambiguïté on utilisera ‘===’ (triple égal) qui ne transformera pas les opérandes au préalable. Ainsi, si on compare 2 objets de types différents, on est alors certain que la triple égalité ne renverra jamais true.

typeof versus instanceof

Les 2 opérateurs servent le même but mais:
- typeof renvoie une chaine de caractères
- instanceof renvoie des informations plus complètes sur le type

On utilisera typeof avec les types simples du langage.
On utilisera instanceof avec les types customs

Les Type Wrappers

Ils n’apportent rien et gênent la lisibilité. On leur préférera une écriture claire et concise.

new Object() => {}
new Array() => []
new Number(42) => 42
new String('42') => '42'
new Boolean(true) => true
new Regexp('.*') => /.*/

Convertir un texte en nombre

parseInt peut donner des résultats surprenant en parsant une chaîne de caractères. En effet les lettres sont filtrées de manière transparentes lors de la conversion.
pour lever l’ambiguïté on peut préfixer la chaîne à parser par un +, on aura ainsi davantage de NaN (Not a Number) remontés.
Mon collègue Arthur Weber me signale également qu’on peut préfixer les variables à parser avec ‘~~’ ce qui en cas d’erreur renverra la valeur par défaut 0.

~~'foo'; // 0
parseInt('foo', 10); // NaN

Ce qui évite le type de code suivant

if (x === NaN ) x = 0;

Slides de la présentation : http://www.slideshare.net/FlorianBoulay/javascript-pour-lesdeveloppeursjava

10 Apr 13:51

L'Assurance Maladie arrive sur votre iPhone

by jcsatanas

ameli-1.jpg

Certains d'entre vous connaissent peut-être Ameli.fr, le site officiel de l'Assurance Maladie.

Eh bien, sachez que vous allez pouvoir accéder à certains fonctionnalités du site depuis votre iPhone grâce à la nouvelle application dédiée :

Les moyens de communication évoluant, l'Assurance Maladie rentre enfin dans l'ère des smartphones.

Le menu de départ s'avère plutôt original avec une roue pour vous diriger mais vous pouvez aussi faire le choix d'icônes dans les réglages.

L’application va vous permettre l'accès aux remboursements de santé ainsi qu'au détail de ceux-ci.

L'utilisateur retrouvera les informations de son profil (médecin traitant, adresse postale, etc.) et pourra modifier son adresse mail ou ses coordonnées téléphoniques.

Vous pourrez aussi géolocaliser les bornes multi-services sur une carte si vous avez besoin de mettre à jour votre carte vitale par exemple.

ameli-2.jpg

Cette application intègre aussi les assurés sociaux des régimes : CAMIEG, CAVIMAC, CNMSS, CRPCEN, ENIM, MGP et MNH.

Par contre, on aurait aimé une application universelle intégrant un affichage dédié à l'iPad.


Suivez l'actualité iPhon.fr
Télécharger l'Application i-nf.fr ex iFon.fr

Vous aimez ? Partagez !

        Browser not compatible with iframes