Get Into The Cloud, Folks!
Comment créer et appliquer un patch avec subversion
Ca peut toujours servir, c’est vendredi, et c’est cadeau !
Créer un patch à partir des changements fait sur l’ensemble d’une copie de travail
svn diff > monpatch.patch
Créer un patch à partir des changements fait sur un fichier
svn diff /chemin/vers/le/fichier > monpatch.patch
Créer un patch à partir d’un commit N
svn diff -rN-1:N > monpatch.patch
Pour appliquer le patch sous linux :
patch -p0 < monpatch.patch
Happy coding
PHP et les timezones
Dès lors qu’une application est utilisée à différents endroits du globe, il faut gérer le stockage et l’affichage des dates selon les timezones.
La première question qui vient est : quelle référence de temps utilise t-on ?
Si l’application stocke les dates selon la timezone de l’utilisateur qui créé un contenu, il peut vite devenir difficile de convertir cette date dans la timezone de l’utilisateur qui va consulter ce contenu.
Une solution (pourrie) pourrait être de calculer le différentiel entre la timezone du créateur et celle du lecteur. On imagine le casse tête.
Je pense que le bon pattern consiste à stocker systématiquement les dates sous forme de timestamp calculés sur une base GMT ou UTC, grâce à la fonction time(), et à les afficher avec la fonction date() qui prend en compte la
timezone système PHP (valuée avec date_default_timezone_set).
Le problème n’est qu’à moitié résolu.
Imaginons une application de calcul de statistiques qui stocke des données tous les jours, à 23h, en indexant chaque entrée sur le timestamp correspondant à l’heure du calcul.
Exemple :
Je suis en France et je consulte les statistiques du jour avec le timestamp de référence suivant :
mktime(23, 59, 0, date(“m”), date(“d”), date(“y”));
Hiro est au Japon et consulte les statistiques en recherchant les entrées possédant ce timestamp de référence. Et bien il n’en trouvera pas….
Car le résultat du mktime n’est pas le même.
Pour être sûr de convertir des dates en timestamp sur les même bases, il faut utiliser une fonction méconnue en php :
Elle s’utilise de la même manière mais calcule tout sur une base GMT.
Donc pour résumer :
- les dates sont stockées en GMT
- elles sont affichées avec date(), en ayant précédemment valué date_default_timezone_set
- les converstions date -> timestamp se font avec gmmktime au lieu de mktime
Je suis preneur de vos retours.
Happy coding
ZendCon Sessions Episode 043: Improving QA on PHP Projects
Quoi de neuf dans Firefox 3.6
Mike Beltzner, patron du développement Firefox nous donne un aperçu général de ce qu’est Firefox 3.6, disponible en téléchargement ici
Au menu :
- une personnalisation plus poussée grâce aux “Personas” qui permettent de changer complètement l’apparence de votre navigateur
- reconnaissance des CSS gradients
- intégration de l’api File qui permet de gérer le drag and drop de fichier directement dans le navigateur.
Cette nouveauté est géniale car elle évite de passer par des applets JAVA qui sont à ma connaissance le seul moyen de gérer le D&G - 20% plus rapide que la version précédente
Je m’en vais de ce pas l’essayer. Vous avez déjà des retours d’utilisation ?
A quoi va ressembler la tablette iSlate d’Apple ?
Je m’étais juré de ne pas le faire mais je me lance…
Il paraîtrait que la tablette Apple ne s’appellerait pas iSlate comme tout le monde le dit mais iPad. En effet ce nom a été déposé depuis quelques jours dans plusieurs pays.
Apple Insider Reports aurait eut confirmation “interne” que la tablette ressemblerait à peu près à ça :

Terrible non ?
Mais heuuuu.. c’est quoi la différence par rapport à un iPhone ?
Ben oui, et si la grosse annonce concernait en fait un Firmware 4 qui serait beaucoup plus proche d’un mac osx.
Avec un iPhone 4G qui aurait un peu de connectique (usb, firewire…) et on est bon… Vous en pensez quoi ?
Facebook facts : 31 chiffres qui marquent
Après les Chuck Norris facts, voici les Facebook facts, récupérés ici.
Après une analyse quelque peu pessimiste sur la sécurité du réseau social, voici des chiffres qui montrent que les utilisateurs s’en arrangent bien.
Chiffres globaux
1. Plus de 350 million d’utilisateurs actifs. Les Etats-Unis comptent à ce jour 302 074 000 habitants.
2. 50% des utilisateurs actifs se connectent au moins une fois par jour
3. Plus de 55 million de mise à jour de statut chaque jour
4. Plus de 2.5 milliards (!!!!!!) de photos stockées chaque mois
5. Entre 3 et 5 milliards de contenu partagés chaque semaine
Utilisation
11. En moyenne, un utilisateur Facebook a 130 amis (si à 50 ans tu as pas 130 amis sur Facebook, c’est que tu as raté ta vie)
12. En moyenne, chaque utilisateur envoie 8 requête d’ajout d’ami par mois
13. Le temps moyen passé sur le site est de 55 minutes par jour
…
18. Les utilisateurs appartiennent en moyenne à 12 groupes
Croissance internationale
19. Plus de 70 langues disponibles
20. 70% des utilisateurs ne sont pas Américains
…
Platform
22. Plus d’un million de développeurs dans plus de 180 pays
23. Chaque mois, plus de 70% des utilisateurs utilisent des applications développées sur la plateforme
24. Plus de 500,000 applications existent aujourd’hui
25. Plus de 250 applications on plus d’un million d’utilisateurs actifs
26. Depuis Décembre 2008, plus de 80,000 sites internet utilisent Facebook Connect
27. Chaque mois, plus de 60 Millions d’internautes utilisent Facebook Connect pour se connecter à des sites tiers
…
Mobile
29. Plus de 65 million d’utilisateurs utilisent leur mobile chaque mois pour se connecter à Facebook
…
31. Plus de 180 opérateurs dans 60 pays travaillent à développer les usages mobiles de Facebook
Étourdissant non ?
Je ne m’attarderais pas sur une analyse de l’audience potentielle car le marketing n’est pas mon domaine de prédilection. Mais à voir le nombre d’utilisateurs et surtout leur niveau d’activité quotidien, il me semble que peu d’autres médias permettent d’atteindre une cible aussi massive, et qualifiée qui plus est.
En revanche, je pense que Facebook Connect, et plus généralement la plateforme de développement peuvent être un véritable accélérateur de recrutement d’utilisateurs pour un service Web. Il est tellement facile de s’enregistrer avec son compte Facebook, sans avoir ni à ressaisir un profile ni à retenir un nouveau mot de passe.
Beaucoup d’applications fonctionnent aujourd’hui selon le modèle Freemium, qui mise sur le taux de transformation d’instance gratuite en payante. On comprend vite l’intérêt de miser gros sur le recrutement qualifié d’internautes.
Certains s’interrogent sur l’avenir de Facebook ou Twitter. Qui d’autre pourra fournir un vivier d’utilisateur aussi important ?
L’histoire de Google, de Stanford à Mountain View
Quand on travaille chez un éditeur de logiciel en SaaS, la success story de google fait réver.
Surtout quand on voit comment elle a commencé, et combien temps il a fallu à ses 2 fondateurs pour créer un empire
Intégrer dans VI des man pages UNIX pour la documentation PHP
You made my day dude !
C’est ce que j’aurais dis à Hannes Magnusson, développeur systèmes en Suède, quand j’ai lu son billet “Unix manual pages for PHP functions”
Il s’agit d’installer les fameuses man page UNIX pour toutes les fonctions PHP.
A quoi cela peut il bien servir ?
Tout d’abord, à avoir de la documentation en ligne de commande, sans avoir à lancer un navigateur Web. Très utile quand la connexion internet est limitée ou lorsqu’on est en train de modifier du code sur un serveur de production (ce qui bien sûr ne devrait jamais arriver).
Mais surtout, l’installation de ces pages permet d’obtenir la documentation des fonctions PHP directement dans le code PHP, dans VI, mon éditeur préféré et probablement celui de tous les vieux développeurs barbus.
Let’s rock !
Installer le package pman depuis PEAR (je ne vais pas détailler ici comment installer ou configurer PEAR) :
$ pear install doc.php.net/pman
Si vous utilisez une vielle version de PEAR, il faut ajouter doc.php.net aux repositories :
$ pear channel-discover doc.php.net
puis relancer pear install
C’est fait !
Normalement, en tapant :
$ pman strstr
On obtient une man page UNIX documentant de façon extrêmement complète la fonction PHP strstr
Enfin, pour intégrer cela dans notre éditeur préféré, ajoutez juste la ligne :
set keywordprg=pman
dans le fichier .vimrc de votre profile.
Ouvrez un fichier PHP, positionnez le curseur sur une fonction PHP et appuyez sur “K”.
Magie…. une man page apparaît avec le descriptif de la fonction pointée.
Evidemment, comparé aux nouveaux IDE surpuissants, ce n’est pas grand chose. C’est un peu comme trouver un émulateur SuperNes pour Linux, ou utiliser Lynx pour naviguer sur le web. En tout cas, ça me rappelle qu’en informatique, on peut faire de belle chose avec de petits moyens.
A bon entendeur !
Pourquoi facebook ne sera jamais sécurisé
Je m’intéresse de près à la sécurité des applications web car c’est un sujet au centre de mon activité professionnelle : les modes d’authentifications, les failles de type XSS ou phishing, la gestion de l’identité numérique etc…
C’est aujourd’hui un frein (un France tout du moins) à l’adoption massive des applications SAAS par les entreprises. Mais est ce que cela ne pourrait pas le devenir aussi pour les particuliers ?
Aujourd’hui c’est Facebook qui a pris. Premier effet kiss-cool, une note de MrBoo concernant un hack qui permet de se constituer une base mail qualifiée en quelques minutes.
En quelques mots, il suffit d’être authentifié sur Facebook et de taper l’url suivante : http://www.facebook.com/search/?ref=ffs&q=toto@gmail.com&o=2048&init=ffs en changeant toto@gmail.com par n’importe quelle autre adresse email. Si cette adresse existe dans l’application, les informations personnelle de son propriétaire son affichées. C’est balo….
En codant rapidement un générateur d’adresses mail du type : prenom@hotmail.com, prenom@gmail.com, je vous laisse imaginer la quantité de profiles qualifiés pouvant être récupérés. Vous ne vous êtes jamais demandé comment certains courriels de spam arrivaient dans votre boîte ?
Deuxième effet kiss-cool, une note sur ZDNet de Pierre Caron intitulée Pourquoi Facebook a crucifié la sécurité. J’ai trouvé son analyse très pertinente et je vous invite à la lire.
Selon l’auteur, qui constate “l’ampleur des dégâts en matière de sécurité“, “…il ne faudra jamais attendre de Facebook (ou de tout autre réseau social personnel) qu’il développe chez ses utilisateurs une quelconque culture de la sécurité face aux risques qu’il porte : la sécurité est tout simplement antinomique de Facebook, pour des raisons intrinsèques au réseau.”
Brrrrrr…ça fait froid dans le dos. Cela veut il dire que les photos de tante Jacqueline complètement beurrée lors de ma première communion ne sont pas en lieu sûr ? Et bien non, et voici pourquoi selon Pierre Caron.
1- Il n’y aura jamais de contrôle d’identité numérique sur Facebook
Même si certains acteurs se positionnent très bien sur le sujet (MyId.is par exemple), les internautes voudront toujours pour la plupart conserver une identité virtuelle qui les sort souvent de la monotonie de la vie réelle. En imposant cela, Facebook pourrait perdre une grande partie de son audience.
2- Il n’y aura pas d’authentification forte avant longtemps, voire jamais
C’est vrai que je vois mal Facebook distribuer 200 millions de token… Et puis le service ne serait plus gratuit. Nous allons donc continuer à utiliser l’authentification par mot de passe que l’on sait, je cite, “obsolète depuis des années et attaquée par tout cheval de Troie qui se respecte”.
3- Il n’y aura jamais de modération adéquate
Bon alors là, l’auteur enfonce une porte ouverte. Évidemment que cela serait peu rentable, quand on imagine le nombre de photos, vidéos et messages échangés sur le réseau.
On voit bien à la lecture de cet article que son titre est pertinent. Pierre Caron conclut “Il me paraît ainsi évident que le principe même de sécurité est incompatible avec Facebook. Mais au final, est-ce si grave ?”. Et bien moi, je trouve ça grave. Ok ce n’est pas forcément un problème si ma tante Jacqueline est vue par des internautes qu’elle ne connaît pas mais quand est il pour les personnes moins informées qui fournissent des informations très très personnelles sur le réseau (non je ne citerai pas d’exemple).
Qu’on sache qu’un réseau social d’une telle ampleur n’est pas sécurisé est une chose, mais encore faudrait il prévenir les internautes novices en la matière.
En ce qui concerne les réseaux sociaux professionnels, moins massifs et surtout moins anonymes, il reste en réserve quelques méthodes pour palier à ces problèmes de sécurité et garantir la fiabilité des identités et des informations.
La suite dans un prochain billet…