StatPress

  • Visites du jour : 30

Flattr : Une petite révolution

Enfin !

Après deux mois, j’ai fini par recevoir mon invitation à Flattr. Après une premier tour de découverte, je suis désormais en train de tester le système en lui même (en témoigne l’apparition des boutons flattr au sein du blog). Mais commençons d’abord par une petit présentation de flattr.

Présentation

Flattr est un système de micro paiement destiné à promouvoir la création dans tous ses états. Ce projet lancé par Peter Sunde (ancien de The Pirate Bay) and Linus Olsson a pour vocation de faciliter le support des productions numériques par un large publique. A première vue, le système est plutôt simple :

L’internaute lambda (appelons le Bobby) s’inscrit sur Flattr et alimente un compte Flattr destiné à soutenir des producteurs/ artistes. Il rempli ce compte avec la somme qu’il souhaite. Une fois cela fait, il choisit quel montant les artistes / producteurs auront à se partager tous les mois. Bobby étant un jeune travailleur en CDI, il décide de commencer par mettre 10 euros sur son compte Flattr et de n’allouer que 2 euros par mois que les artistes / producteurs auront à se partager de manière équitable. Bobby ayant décidé de verser 2 euros par mois, chaque personne cliqué par Bobby recevra donc : 2€ / nb de clics de Bobby dans le mois.

Lorsque Bobby navigue sur internet, il a la possibilité de supporter un artiste, un blogeur [insert here any web contributor] en cliquant sur le bouton “flattr” du site de cette personne. Au mois de mars, Bobby a voulu testé et à cliqué sur le bouton flattr de son groupe en préféré : les bisounours de l’enfer. C’est là le seul clic qu’il a fait durant le mois. Les bisounours de l’enfer vont donc recevoir 2 euros à la fin du mois sur leur compte Flattr. Le mois suivant (avril), Bobby aime bien le système, il a donc cliqué sur 5 boutons Flattr durant cette période. Chaque personne ayant reçu un clic de Bobby va donc recevoir 0,40€ à la fin du mois (2€ / 5).

Facile non ?

Premier retour

N’écoutant que mon courage, j’ai décidé de tester le système. Je me suis inscrit pour recevoir une invitation à la béta il y a deux mois environ. Je viens à peine de recevoir mon code d’invitation, mais j’avais vraiment souhaité tester ce nouvel outil. Voici donc mon premier retour à son sujet.

Une fois que l’on reçoit son code d’invitation, il est nécessaire de s’inscrier sur le site et de valider son compte. Jusque là, aucun soucis, c’est assez clair et surtout rapide (anglophobes s’abstenir). Une fois votre compte activé, vous êtes invité à ajouter de l’argent sur votre compte et à définir la somme que vous souhaitez donner.

Voici à quoi ressemble la page de gestion de votre compte :

Screenshot flattr numéro 1 : page du compte.

Jusque là tout va bien. Vous êtes ensuite invité à soutenir une contribution… et là… gros blanc. Où est ce que je trouve des contributions à soutenir facilement ? Heureusement, le site de flattr propose divers type de contributions : les textes, les images, vidéos… etc …

Dans un premier temps, pour tester, il est donc facile de trouver une ressource à soutenir, mais par la suite, il faudra évidement avoir la chance de tomber sur un contenu à soutenir. C’est là dessus que j’ai quelques doutes pour le moment. L’idée en elle même est bonne, mais si la couverture médiatique n’est pas suffisante, la porté de Flattr sera trop courte et l’intérêt sera donc quasi nul. Pour le moment, on a une très forte chance de ne pas croiser de bouton Flattr sur un site durant tout un mois.

D’ailleurs, que se passe t-il si l’on ne clic sur rien du tout ? Pour le moment voici ce que dit la F.A.Q. :

- Then your monthly amount is given to charity, we will not keep it.

Littéralement : “Votre contribution mensuelle est offerte en charité, nous ne pouvons la garder”. Allez savoir ce que cela veut dire. Il va falloir que je regarde un peu si il n’y a pas plus de détails ailleurs.

Une fois que vous avez soutenu votre première contribution, vous êtes ensutie invité à fournir vous aussi une contribution (ce post personnellement). Et là…. j’ai bien l’impression que pour le moment nous sommes obligés de passer par le formulaire de soumission d’un contenu disponible sur le site.

A défaut de passer par le formulaire de soumission de contenu, vous avez la possibilité d’ajouter vous même un bouton Flattr sur votre site. Soit en ajoutant un petit bout de script dans le code source, soit en utilisant un plugin de votre gestionnaire de contenu. Pour le moment, il semble que les seuls modules développés le soient pour : mediawiki, drupal et wordpress. Mais je ne doute pas que les modules vont rapidement se multiplier.

Espérons donc que la portée de Flattr s’étende (ce qui au passage va imposer un passage au site multilingue) et qu’il se développe correctement. Le système est intéressant et à du potentiel. Pour le moment cela me plait, je vous en donnerais des nouvelles rapidement.

Et vous, avez vous testé ? Un tel système vous semble t-il viable ?

Edit  du 30/04/2010 :

Encore quelques retours au sujet de Flattr.

Un forum vient d’ouvrir afin d’améliorer le produit et de faire des suggestions. Nul doute qu’il va vite se remplir. Quelques optimisations et améliorations (un bouton plus petit et plus simple notamment) sont en cours et vont arriver rapidement.

Il y a aussi quelques bogues à corriger notamment sur la gestion des comptes / l’inscription. Espérons qu’ils réagissent rapidement.

[TUTO][PhpFrance] Isset, empty et is_null

Bonjour.

L’excellent site phpfrance.com a publié un tutoriel très utile pour les développeurs débutants : faire la différence entre isset, empty et is_null. Vous trouverez ce tutoriel ICI

Tous les 3 souvents utilisés, il faut savoir faire la différence entre ces 3 éléments du langage PHP pour ne pas tomber dans le piège de leur utilisation.

Voici ce qu’il faut en retenir :

- isset et empty sont des éléments de langage (ou structure de langage), tandis que is_null est une fonction

- Il est nécessaire de bien faire attention à ce que l’on veut vérifier exactement afin de choisir parmis ces 3 élements celui que l’on veut utiliser.

- Savoir si l’on veut une valeur NULL ou une valeur qui est vide, ie. savoir si l’on souhaite utiliser empty ou is_null.

Remercions donc Hywan pour son excellent travail.

Présentation de Crawltrack

Bonjour.

Récemment, j’ai pu découvrir CrawlTrack, un petit logiciel php vous permettant de dresser des statistiques de visites / navigation sur votre site, mais aussi, de lister et bloquer certaines attaques de type injection.
Je suis pour le moment en train de tester cela, mais à première vue (et vue les retours de certains développeurs / webmaster), CrawlTrack à l’air plutôt sympathique et performant. Notamment pour quantifier / bloquer les attaques par injections sur votre site.

Si vous avez une expérience avec ce logiciel, ou des concurrents intéressants, n’hésitez pas à me les signaler.

N’hésitez pas à visiter le site de CrawlTrack pour vous faire une idée.

Quelques nouvelles

Bonjour à tous.

Voila quelques temps que je n’ai pas posté de nouveaux billets. La principale raison tient du fait que mes journées sont actuellement plutôt denses, et que mes 3 heures de transport par jour sont des plus usantes.
Je vous invite à faire le trajet Rueil / Vélizy en transport en commun en heure de pointe (merci Dassault Systèmes pour ce déménagement stratégique).

Au programme dans les jours à venir :
- Un retour d’expérience sur Ext/Js
- Un tutorial pour une première prise en main d’Ext/Js

D’un autre coté : OBrowser est pour le moment à l’arrêt étant donné qu’il me faut réfléchir à l’orientation que je veux donner au projet. Soit continuer dans l’optique actuelle, soit partir vers une version full javascript (et perdre en accessibilité).
Cruel dilemme.

Bref, le blog n’est pas mort, même si Dassault Systèmes me tue à petit feu.

Concours PHPFrance #01

Après en avoir parlé pendant un moment, l’équipe de PhpFrance a décidé de lancer un petit concours de programmation en PHP.

Vous retrouverez toutes les infos concernant le concours ici.

A noter qu’il semble que le sujet soit la gestion d’une équipe de sport et qu’il y ait 2 niveaux de programmation.

Le niveau accessible qui devra répondre au sujet A, et le niveau supérieur qui devra répondre aux sujets A et B.

Cela peut donc être intéressant. Il y a d’ailleurs de bonnes chances que je participe (en fonction du sujet en fait). N’hésitez pas à participer, plus nous serons nombreux, mieux ce sera.

BlackOut

Ce blog rejoins désormais Le black Out organisé par la quadrature du net afin d’exprimer ma totale insatisfaction et mon opposition quand au projet de loi Hadopi.

Vous trouverez tous les renseignements sur le site de la Quadrature du net.

Une ligne de Css, une image en plus, comme quoi il est facile d’exprimer sons mécontentement.

SQL : utiliser SQL_CALC_FOUND_ROWS

Bonjour.

Je vais aborder aujourd’hui l’utilisation de SQL_CALC_FOUND_ROWS.

Durant mes missions, j’ai souvent à faire de bonnes grosses requêtes avec de multiples joins afin d’afficher des contenus provenant de diverses sources en filtrant selon certains critères. Ces requêtes sont bien souvent couplée à une seconde requête qui permet de compter le nombre total d’éléments ramenés. Ce fonctionnement plutôt lourd peut être allégé via l’utilisation de SQL_CALC_FOUND_ROWS.

Voici un exemple de requêtes :


<?php
//Récupération des résultats
$qry = "SELECT t1.*, t2.*, t3.champ1, t3.champ2
FROM table1 t1
LEFT JOIN table2 t2 ON (t1.key2 = t2.key1)
LEFT JOIN table2 t3 ON (t1.key2 = t32.key2)
WHERE t1.delete = '0'
LIMIT 10";
$res = mysql_query($qry);
// ... Traitement des résutats

//Récupération du nombre total
$qry = “SELECT COUNT(*)
FROM table1 t1
LEFT JOIN table2 t2 ON (t1.key2 = t2.key1)
LEFT JOIN table2 t3 ON (t1.key2 = t32.key2)
WHERE t1.delete = ‘0′”;
$res = mysql_query($qry);
// … Sauvegarde du nombre total
?>

Cette façon de faire est encore courante et plutôt lourde car on exécute 2 fois une requête complexe, sachant que la seconde requête est en générale d’une lourdeur à toute épreuve. Beaucoup de développeurs fonctionnent encore de cette manière et entame ainsi sérieusement les performances de leur serveur.

Il est heureusement possible d’optimiser votre code grâce à SQL_CALC_FOUND_ROWS. Ce mot, placé en premier dans votre requête, ramènera le nombre total de ligne de la base de donnée correspondant à votre recherche sans la clause limit.

Voici comment le même code sera alors mis en place :


<?php
//Récupération des résultats
$qry = "SELECT SQL_CALC_FOUND_ROWS t1.*, t2.*, t3.champ1, t3.champ2
FROM table1 t1
LEFT JOIN table2 t2 ON (t1.key2 = t2.key1)
LEFT JOIN table2 t3 ON (t1.key2 = t32.key2)
WHERE t1.delete = '0'
LIMIT 10";
$res = mysql_query($qry);
// ... Traitement des résutats

//Récupération du nombre total
$qry = “SELECT FOUND_ROWS() AS NbRows”;
$res = mysql_query($qry);
// … Sauvegarde du nombre total
?>

Pratique non ?
Alors n’hésitez pas à utiliser ce mot clé, voir à m’en proposer d’autres.
J’espère vous avoir fait gagné de précieuse micro seconde de requête :)

Premiers pas sur Ext / Js

Bonjour.

Actuellement en mission chez Dassault Systèmes, j’ai récemment pu découvrir Ext/js, un framework javascript des plus costaud possédant de très nombreuses fonctionnalités.

Je vais donc vous le présenter et aborder quelques unes de ces fonctionnalités.

Présentation

On retrouve bien évidement des fonctionnalités communes à tous les frameworks javascript, tel un gestionnaire de requêtes ajax,un event listener etc … mais ce qui caractérise avant tout Ext, c’est qu’il fournit un ensemble d’objet complexe permettant de mettre en place des éléments complets et fonctionnels.

Fonctionnalités intéressantes

- Les extensions.

Ext permet d’étendre (relativement) facilement ses objets afin de leur ajouter de nouvelles propriétés et de nouvelles données membre. Cette gestion des extensions nécessite un peu de temps de prise en main, mais permet ainsi d’étendre de manière intéressante les objets Ext fournis. Il existe d’ailleurs de nombreuses extensions fournies par les utilisateurs (cf liens utiles)

- Les grids

La grid (ou grille) est surement l’élément le plus complexe de Ext puisqu’il repose sur de nombreux autres éléments du framework. Il s’agit d’un gestionnaire de données sous forme de grille, permettant une pagination, une modification en live des éléments, divers tris des données etc …

Vous trouverez une démonstration des grids dans les démos du site (cf liens utiles).

Les plus / Les moins

Mes plus

- Un framework complet et costaud : La force de Ext c’est bien évidemment le grand nombre d’éléments mis à disposition de l’utilisateur et la quantité d’outils complexes.

- Une communauté active : Après près d’un mois d’utilisation, je trouve la communauté plutôt active, le forum n’est pas déserté par les créateurs et les utilisateurs expérimentés.

- Les tutoriaux : On trouve sur le site plusieurs tutoriaux permettant une bonne prise en main. Ils sont en général plutôt bien détaillé et logiques.

- la section d’exemple : complète et variée, cette section permet de se faire une bonne idée de ce qui est réalisable avec ext et permet aussi de faire ses premiers pas lorsque l’on disséque un peu le code source utilisé.

Mes moins

- Un framework trop complet ? J’ai à plusieurs reprise trouvé que ce framework était peut être trop poussé et qu’il manquait certaines fonctionnalités simple que l’on peut retrouver dans prototype par exemple. Peut être me suis-je trompé et trouverais-je ces petits plus plus tard ? Espérons.

- Difficulté de prise en main : De part sa complexité et sa taille, Ext peut être difficile à prendre en main. Je pense notamment à l’utilisation de la fonction “extend” ou à l’utilisation des grids. Même si on finit par arriver à notre but avec un peu de persévérance et l’aide de la communauté, faites attention, ext est dense et complexe.

Les démos

Vous trouverez diverses démonstrations de ce qui peut être réalisé grâce à Ext / Js. On pourra noter parmi ces démonstrations, le gestionnaire de photos plutôt sympathique, le Web Desktop plutôt bleufant. Jetez aussi un coup d’oeil du coté d’un des exemples de grid qui vous permettra une première approche de cet élément complexe, sans oublier la gestion de layout et le gestionnaire d’arborescence avec un petit drag & drop bien pratique.

En vous plongeant dans cette section vous trouverez de nombreux exemples des plus utiles.

Liens utiles

- Le site de Ext

- La page de démo

- Le forum

- Les tutoriaux

- Les extensions non officielles

- Saki’s blog,  un blog utile d’un master de Ext

J’espère vous avoir fait découvrir ce framework, n’hésitez pas à me faire vos retours ou à partager votre expérience de Ext / Js. J’ajouterais sans doute dans un futur plus ou moins proche quelques tutoriaux et démonstration plus complète.

PHP, 4ème langage le plus populaire en 2008

Bonjour à tous.

J’ai découvert ce matin le classement des languages les plus populaires dressé par Tiobe Software.

Ce classement (disponible ICI) est basé sur les résultats de moteurs de recherche : Google, MSN, Yahoo!, et même YouTube (à titre expérimental). Ce classement reprend les résultats de ces recherches depuis 2001. On peut ainsi y voir l’augmentation constante de la popularité de PHP.

Si Java est pour le moment premier (selon les critères  de ce classement), il ne cesse de perdre de l’avance depuis le début.

Rappelons les 10 premiers de ce classement.

  1. Java (=)
  2. C (=)
  3. C++ (+2)
  4. PHP (=)
  5. Visual Basic (-2)
  6. C# (+2)
  7. Python (-1)
  8. Perl (-1)
  9. Javascript (+1)
  10. Delphi (+1)

Un classement à prendre certe avec des pincettes, mais qui permet tout de même de se faire une petite idée de la popularité de certains langages.

Qu’en pensez vous ?

Coder en UTF-8

Bonjour.

J’ai souvent à voir des gens avoir des soucis d’encodage à tout va. Étant donné qu’avec la version 6 de PHP nous seront amené à coder via unicode, il est bon de se mettre à coder en utf-8 (si ce n’est pas encore le cas) pour prendre l’habitude.

Voici un petit tutoriel sur comment mettre en place un environnement en utf8, et comment l’utiliser. Cela peut paraître logique à certains, mais les débutants apprécieront.

Mettre en place son environnement.

1. La base de donnée

Commençons par notre base de données. Je vais prendre ici l’exemple de MySql, mais cela reste applicable à toutes les bases de données. Si vous décidez de passer en utf8, il sera nécessaire que votre base de donné soit elle aussi dans cet encodage. Comment faire? C’est très simple, vous pouvez :

- soit choisir l’encodage lorsque vous créez une base de données, en choisissant l’encodage : utf8_general_ci/utf8_unicode_ci.

Choisir lencodage de sa base

Choisir l'encodage de sa base

- soit en exécutant la requête suivante au début de votre script : SET NAMES UTF8

Il va sans dire que la meilleure des solutions est de créer votre base de donnée en choisissant de l’encoder en utf8 DES LE DÉBUT !

2. L’éditeur

Autre tâche importante après la configuration de votre base de données : configurer votre éditeur. De base bon nombre d’éditeur son configuré pour le latin1. Il va donc nous falloir changer cela. Vous trouverez ici quelques exemples d’éditeur, mais la logique est la même pour tous : Encoder dès le départ vos fichiers en utf8 !

- Eclipse : Dans window > preferences > General > WorkSpace, choisissez l’encodage UTF-8 dans la boite “Text file encoding”.

Choisir lencodage pour Eclipse

Choisir l'encodage d'eclipse

- Notepad++ : Dans Paramètrage > Nouveau document, choisissez l’encodage des nouveaux documents en UTF8. Pour modifier le document courant, allez dans Format et choisissez “Encoder en UTF8″.

Choisir lencodage de notepad++

Choisir l'encodage de notepad++

- Zend Studio : Tools > Desktop > Apparence : Choisissez UTF8 comme encodage.

Choisir lencodage de Zend Studio

Choisir l'encodage de Zend

3. Le header html

Maintenant que nous avons configuré correctement nos outils. Il nous reste à modifier l’encodage de nos pages. Lorsque nous passons sur une page web, notre navigateur regarde dans le header de notre page, quel est l’encodage à utiliser (si il est spécifié). Nous allons donc préciser au navigateur que notre page est à lire en utf8 de la manière suivante :

<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>

4. Via http : le header php

Lorsque vous visualisez une page web, vous vous reposez sur le protocole http. Parmi les informations envoyés concernant une page figure notamment l’encodage. Vous avez la possibilité de forcer l’entête http qui est envoyée grâce à ce code php :

<?php
header('Content-type: text/html; charset=UTF-8');
?>

Attention, pensez à placer cette information en haut de votre code, car une fois que du texte à été envoyé, le header n’est plus accessible et cela vous renverra une erreur.

5. Utiliser les fonction utf8_encode et utf8_decode.

Il arrive parfois que l’on ne puisse régler tous ces paramètres (soit en n’ayant pas la main sur une partie, soit en ne pouvant modifier ce qui a été fait auparavant). On peut alors utiliser les fonctions utf8_encode() et utf8_decode de php.

- utf8_encode : Cette fonction prend en paramètre un string encodé en latin1 / iso-8859-1 et retourne le même string mais encodé en UTF8.

- ut8_decode : Cette fonction prend en paramètre un string encodé en UTF8 et retournera ce même string encodé en latin1 / iso-8859-1

Quelques problèmes connus

Voici quelques problèmes courants et leur solution :

Problème : Apparition de caractères tels que “Ô, “é” …

Solution : Lorsque des caractères de ce type apparaisse, c’est que votre donnée est encodée en utf8 mai que le navigateur tente de lire en mode “normal” (latin1 ou iso-8859-1). Pensez à spécifier le méta html vu au dessus.

Problème : Apparition de caracètères comme “�” …

Solution : Lorsque ce caractères apparait, c’est en fait l’inverse, notre navigateur est réglé pour lire de l’utf8 (via le méta html ou la fonction header() de php) mais tente de lire du texte qui est encodé normalement (latin1 ou iso-8859-1). Pensez à encoder votre fichier en utf8 ou utilisez la fonction utf8_encode (si votre texte provient d’une base de données).

Conclusion

On se rappelle donc qu’il faut :

- Encoder sa base de données en utf8, ou a défaut utiliser le “set names utf8″

- Configurer correctement son éditeur pour que les fichiers soient encodés en utf8.

- Préciser au navigateur l’encodage de la page.

- Ne pas paniquer ! Il est courant, lors de l’encodage d’un travail existant, d’avoir à changer à la main une partie des caractères mal encodés. Ne paniquez pas, soyez patient.

- TOUJOURS TRAVAILLER EN UTF8, et ce, dès le départ !

N’hésitez pas à me signaler toute erreur, à me soumettre des modifications et à me poser vos questions.