Symfony 1.1 x Safari 4 = :( 2 commentaires

Posté par Cedric, le 22/06/2009 - Technologie

T_30e679b12286c8cedcb314230e28cdb5Beaucoup d'administrateurs de sites en symfony 1.1 auront eu la désagréable surprise de constater que leur site ne marche plus avec la dernière version de Safari (4) ou la dernière version de Chrome. Cela semble provenir d'un changement autour du Webkit, solution open-source utilisée par les deux navigateurs, qui semble troubler symfony, puisque ce dernier tente de renvoyer la version XML du template (un problème de header, probablement). Toujours est-il que ca génère une erreur 500 et que ce n'est pas du meilleur effet.

Voici un moyen de contourner définitivement le problème en utilisant le (l'excellent, même) système de notifications de symfony:

Dans /config/ProjectConfiguration.class.php

class ProjectConfiguration extends ysfProjectConfiguration
{
	public function setup()
	{
		$this->dispatcher->connect('request.filter_parameters', array($this, 'forceRequestFormat'));
	}
	
	
	
	public function forceRequestFormat(sfEvent $event, $parameters)
	{
		$request = $event->getSubject();
		$request->setRequestFormat('html');

		return $parameters;
	}

}

Vous pouvez même restreindre cette action si et seulement si le navigateur utilisé est Chrome ou Safari. Notez toutefois qu'il s'agit là d'une solution temporaire (en attendant un patch de la core team).

Les nouveautés Apple (WWDC) 5 commentaires

Posté par Cedric, le 07/06/2009 - Technologie

T_7326fab98faa1d12a371359a028932b1Depuis hier, et la tenue à San Francisco du WWDC, tout l'écosystème Internet n'a d'yeux que pour le nouvel iPhone. Je ne pense pas que cette version soit une étape révolutionnaire pour l'évolution du téléphone, mais plutôt un palier nécessaire. En effet, les ingénieurs se sont appliqués à résoudre un certain nombre d'incohérences, qui, mises bout à bout, amènent presque à se demander si les premiers modèles n'avaient pas des carences volontaires, afin de pouvoir faire renouveller la même demande chaque année.

Des améliorations nécessaires

Ainsi, le dénommé 3GS (pour 3G Speed) a un nouveau processeur (et est donc plus rapide, indispensable et logique après 2 ans d'existence, mais pas une raison en soi d'upgrader), une nouvelle batterie (la dessus, il était temps de faire quelque chose. Mon iPhone n'a jamais tenu 24h sans recharge, même en airplane mode!), le copier coller et les MMS (c'est quand même des basiques, non?), la boussole (sympa mais pas révolutionnaire), et enfin, la caméra vidéo. La, ils pouvaient difficilement faire autrement, vu que les possesseurs d'iPhone jailbreakés en bénéficiaient déjà (ce qui laisse penser, encore une fois, que c'était un choix délibéré de ne pas l'embarqué dès la V1).

En bref, sur le volet iPhone, la stratégie d'Apple est limpide: créer un contenant superbe, technologiquement très avancé, et rendre la courbe de vente sinusoidale en créant des versions améliorées chaque année. C'est sûrement cette stratégie, et le talent avec lequel elle est marketée et communiquée qui est révolutionnaire, dans un secteur de la téléphonie où la demande s'affaisse naturellement dès qu'un nouveau produit sort sur le marché. Demandez à Ericsson ou Alcatel ce qu'ils en pensent..

Un nouveau SDK

L'autre pendant de la stratégie iPhone sont naturellement les applications, le contenu dans le contenant. Les applications sont à la fois garantes d'une marge immense pour Apple, de fidélité de la part de ses possesseurs (difficile de s'en passer), et d'un renouvellement matériel assuré car évidemment, Apple a également pensé à faire évoluer son SDK pour étendre à intervalle régulier le spectre de ce qu'il est possible de faire avec une application. Ces versions successives entraînent des nouvelles applications, donc des achats renouvelés. Exemple concret, dans l'iPhone 3GS, la boussole, qui ne chamboule pas notre vie de consommateur lambda, va permettre d'étendre les fonctionnalités du SDK pour permettre à une société comme TomTom d'avoir enfin son application de guidage routier. Résultat, entre un GPS à 300 euros ou une application TomTom dans mon iPhone à 1 ou 2 euros, je pense que le choix est vite fait. Il suffit de comprendre cela pour reconnaitre l'étendue du génie de Steve Jobs.

Nouvel OS, nouveau Macbook Pro

Mais au delà de l'iPhone, j'ai trouvé d'autres annonces très excitantes. Par exemple, Snow Leopard, la nouvel version de l'OS maison, OS X, va permettre de mieux exploiter les processeurs modernes, qui disposent très souvent de plusieurs coeurs. De plus, l'architecture répandue sur les Mac-Intel, de processeurs à 64 bits va également aboutir à des applications plus rapides. Et pour ne rien gâcher à la fête, le nouvel OS sera proposé à seulement 29 dollars / euros pour les possesseurs de Leopard. Tout le monde pourra donc bénéficier d'une expérience d'utilisation plus rapide, car les processeurs multi-core existent déjà depuis des années.

Enfin, un gros coup de coeur pour terminer. L'ordinateur que j'attendais depuis longtemps. Imaginez tous les avantages du Macbook Pro (processeur et carte graphiques plus puissants, batterie longue autonomie, slot pour cartes SD, clavier rétro-éclairé), sans les inconvénients (le prix prohibitif, la taille bien trop grande pour être pratique), et vous obtenez le nouveau Macbook Pro 13''. Il a la taille parfaite, des spécifications qui font rêver (à part cet écran brillant), et est disponible à partir de 1199 dollars (soit 860 euros si vous l'achetez aux US). Pour un ordinateur de ce calibre, ca devient extrêmement abordable, c'est LA bonne nouvelle du keynote à mon goût.

Je vous conseille d'ailleurs de prendre la version 2GB de RAM, et de compléter avec ce site: http://www.crucial.com/, l'upgrade vous coutera 50 euros pour passer à 4GB, au lieu de 300 euros à l'achat.

Pensée de NYC 4 commentaires

Posté par Cedric, le 24/05/2009 - Business 2.0

NYC

Je ne pense pas que le Web américain soit foncièrement meilleur que le web francais. Nos ingénieurs sont mondialement réputés, de même que la productivité de nos employés, régulièrement classée meilleure d'Europe. En revanche, il y a un bloquage culturel qui semble se traduire par un gène réfractaire à la technologie.

Ainsi, lorsque CNN diffuse dans son fil d'information permanent l'adresse de son Twitter ainsi que les messages des utilisateurs en live pendant ses émissions, on commence à peine en France à réaliser le pouvoir d'un Google ou d'un Facebook, et encore plus à considérer le net comme un réel composant de l'économie (il suffit de regarder la dimension conservatrice et réfractaire des faibles mesures proposées en ce moment par le gouvernement pour réguler l'économie numérique - elle y est appréhendée comme un facteur de déséquilibre et de délinquance plutôt qu'un secteur capable de doubler la croissance du PIB).

On a du mal à s'imaginer TF1 parler de Twitter avant 2012, et c'est un peu à l'image d'une société qui semble t-il ne veut pas troubler ses habitudes, inconvénient peut être d'avoir un passé historique et culturel aussi riche. Il n'empeche que cette lenteur d'adoption des media évoque une certaine méfiance, qui elle même entraîne la méfiance des politiques, qui préfèrent légiférer et restreindre au lieu de soutenir et d'encourager. Une méfiance politique qui elle même se répercute chez les investisseurs, toujours plus frileux à l'idée de participer à un projet Internet. En bref, un effet boule de neige qui entraine un statut quo global, qui coupe les volontés de certains enseignants-chercheurs à ouvrir des cursus spécialisés dans les universités, et qui nous affaiblit sur l'échiquier mondial.

Une mentalité publique négative qui pousse le secteur privé à compenser, et qui explique pourquoi la fac Pasqua (Léonard de Vinci) produit autant de salariés de l'Internet (et connait un tel engouement) et pourquoi les chaines de la TNT (qui elles, adoptent ces technologies avec enthousiasme) sont en train d'enterrer litéralement les chaînes traditionnelles.

Un peu comme en sport, quand on a toutes les armes, le reste n'est qu'une question d'état d'esprit.

L'architecture décentralisée 4 commentaires

Posté par Cedric, le 27/04/2009 - Technologie

T_156c0713c4417db6e883f57a975e59acLorsqu'on réalise un projet web d'envergure, il convient de prendre en compte les éléments annexes au développement: le référencement naturel (c'est le cas pour de plus en plus de développeur), et, chose moins commune, le déploiement et l'évolutivité de l'hébergement.

Si vous êtes sur financement, cette question pourra être rapidement éludée en passant par des prestataires à obligation de résultats, qui se chargeront pour vous de monter la meilleure architecture possible, quel qu'en soit le prix.

En revanche si vous êtes en auto-financement, les solutions techniques vous permettant de construire une architecture évolutive à moindre coût vous intéresseront. A notre sens, il convient ainsi de canaliser les goulets d'étranglement du serveur (généralement, la RAM, le processeur, et les écritures simultanées sur le disque dur, hors swap) en séparant les tâches sur des serveurs différents, ce qui permet de monter des système extensibles et légers.

Ainsi, un site avec du PHP extensif, comme une application sous symfony sera réparti ainsi:

- Un serveur avec pas mal de RAM pour servir le frontend. Sur ce serveur, une partie de la RAM doit être allouée à un accélérateur d'opcode type APC (512 Mo dédié parait pas mal). Cela permet de garder en cache une version précompilée de vos fichiers PHP, très utile quand on utilise un framework, puisqu'un framework procède à des inclusions en série de milliers de fichiers PHP, ce qui créé une brèche de rapidité automatiquement.

- Un serveur avec pas mal de RAM/proc pour la base de données. Idéalement, cette base de données ne remplit qu'un seul des deux rôles clés: soit elle lit, soit elle écrit. Si elle écrit, elle doit être couplée à une base "esclave", elle même sur un serveur à part, avec encore moins de RAM. Si vous optez pour un tel système, sachez que cela implique pas mal de changement côté applicatif, puisque vous devez signaler à chaque action persistante la base de données à utiliser. Dans la théorie, des ORM avancés comme Doctrine et son fameux système de listeners permettent de faire cela. Dans la pratique, on a beaucoup de surprises.

- Un + qui fera toute la différence: si vous avez assez de RAM, et si vos serveurs de DB sont connectés à votre serveur de front en VLAN, profitez-en pour installer Memcache sur ce serveur, ouvrir le port adéquat, et stockez-y vos sessions utilisateurs. Memcache est infiniment plus rapide qu'un stockage sur disque dur, car les couples clés/valeurs sont stockés directement dans la mémoire vive.  Autre avantage, le fait d'avoir vos sessions stockées directement sur un serveur dédié à cette tâche rend votre serveur d'application encore plus indépendant, ce qui facilite, si besoin est, son extension par quelque méthode que ce soit (load balancing, failover heartbeat, round robin, etc...).

- Ensuite, nous vous recommandons de vous débarasser de la gestion des "assets" (éléments persistants uploadés par les administrateurs ou les utilisateurs, typiquement des images). En plus d'encombrer votre bande passante et de démultiplier vos lectures/écritures sur disque dur (ce qui augmente considérablement les risques de casse et pose le souci de la sauvegarde), vous rendez votre cluster de front plus difficile à mettre en place. En effet, pour que celui-ci soit efficace, il faut que chaque serveur contienne exactement la même chose. S'il existe des solutions de synchronisation comme rsync, ou mieux, unison, l'idéal est à notre sens de passer par un système de stockage tiers, comme Amazon S3 ou Mosso. Certes, l'implémentation côté applicatif sera plus complexe à gérer, mais vous vous débarrasserez des problèmes de sauvegarde, de sécurité, et surtout, vous allégerez considérablement votre/vos serveur(s)  applicatif(s).

- Pour finir, quelque chose de plus classique, débarrassez vous de la gestion des emails. Cela monopolise beaucoup de ressources (les AV et autres antispam sont TRES gourmands en RAM), et cela requiert énormément de maintenance pour conserver un système efficace. Optez pour une solution payante (vous transférez les MX et ne vous occupez plus de rien), ou optez au "pire" pour Google Apps qui vous permet également de faire ce genre de délocalisation, souvent pour le bonheur de vos utilisateurs.

Voilà, en ayant ce réflexe délocalisation, vous pouvez bâtir un serveur applicatif ultra light, extensible à l'infini, sécurisé à tous les niveaux (lancez un petit cron sur les serveurs de DB pour faire un dump et l'envoyer sur S3, ca prend 10 mn et 20mn pour faire le travail inverse), et très rapide à mettre en place. Côté installation, nous vous recommandons de travailler sur des box identiques, montées par exemple avec un Ubuntu LTS vide, et bloqués sur tous les ports qu'on utilisera pas avec iptable, ce qui rendra le tout encore plus sécurisé.

En conclusion, faire un système scalable, c'est également penser serveurs, et penser serveurs impose bien souvent de développer des spécificités au sein même de la couche applicative. Dans un prochain article, nous étudierons d'autres moyens d'accélérer l'exécution de son application.

iPhone x Music trick 3 commentaires

Posté par Cedric, le 13/04/2009 - Technologie

T_387892f215abaa15a56f79ee1cb9823eL'iphone est ce genre d'objet qui regorge de petites astuces qu'on découvre à travers le temps et qui embellissent notre expérience utilisateur sur le long cours.

En voici une, découverte par hasard (et certainement connue de longue date des véritables nerds de la marque à la pomme), mais qui s'avère combler un handicap d'utilisation colossal sur la partie musique / iPod.

En effet, il est possible de retrouver ses controles de lecture d'un simple double-click sur le bouton principal, à partir de l'écran vérouillé. Cela évite de le dévérouiller, et de devoir rentrer dans la partie iPod pour enfin pouvoir interrompre la lecture, par exemple.

 

iphone trick

 

Voilà! Vous pouvez savourer ce magnifique morceau de Nina Simone, et bien d'autres encore, dans des conditions encore plus optimales.

<< Page précédente  |  Page suivante >>