Electroménager sur internet : galère assurée (Mondial Relay & Discounteo)

Edit du 24/10: titre changé, voir la fin du post pour la mise à jour.

Revenons il y a un mois. je me dis que je peux refaire ma cuisine : Je me prépare donc à acheter mon électroménager (four, plaques, lave vaisselle…).

Or, j’avais entendu parler d’un site appelé Discounteo, que j’avais déjà utilisé pour faire un achat.

Hop, commande passée pour le tout sur ce site début Octobre (« pourquoi passer par plusieurs vendeurs, la livraison sera plus simple si je fais tout sur le même site »). Grand mal m’en a pris.

Je m’explique, pour une partie de la commande (assez lourde), je dois aller en point relais mondial relay. Ce que j’ai fait : c’était lourd à porter mais soit.

Pour l’autre, moyennant finance (80 euros tout de même), ils me le livrent chez moi; Premier rendez-vous fixé pour la livraison 2 semaines après la commande (un peu tard, mais bon, ça peut arriver). Les livreurs arrivent et ne me livrent que de la moitié, l’autre étant pas complète dans l’entrepôt.

J’appelle le service Mondial Relay (le transporteur) pour comprendre, et on m’explique que le reste de ma commande est perdue dans des entrepôts : ils ne savent pas où et vont mener une enquête mais pas avant le lendemain. Le lendemain arrive, je rappelle (une nouvelle fois 40 minutes d’attente pour avoir quelqu’un), et ils ont retrouvé un colis sur deux mais refusent de livrer partiellement.

Quelques jours plus tard, le 18 Octobre (ils arrivent enfin à retrouver les colis), ils acceptent de fixer un rendez-vous le Jeudi 20 Octobre (le Mercredi étant « complet), je prend donc ma journée de congés pour recevoir le transporteur. Le transporteur ne passera pas. La raison ? Ils auraient « oubliés » mes colis au dépôt… Avec les excuses de Mondial Relay, nouveau rdv pris pour le samedi 22 Octobre entre 8h et 13h, cette fois ci « promis juré vous aurez vos colis »…. Ah.

Et Aujourd’hui, 14h30, ais-je reçu mes colis ? Non. Transporteur aux abonnés absents, et numéro de téléphone injoignable…

Petit check avec Discounteo sur leur site et remboursement impossible. En attenant j’ai une arrivée d’eau ouverte et ne peux pas ouvrir les robinets. Merci Discounteo :)

Hop, donc pour résumer, si vous voyez Mondial Relay sur un site pour la livraison, fuyez. Et si les prix de Discounteo vous attirent, fuyez aussi.

Je vous tiens au courant sur la façon dont les choses évoluent. Si vous avez une idée sur les démarches que je peux entreprendre, je suis tout ouïe.

ps: il semblerait que je ne sois pas le seul, et @dansuncoin sur twitter a eu des déboires du meme genre avec Mondial Relay.

Addendum du 24/10:

J’ai reçu ma commande plus tard dans l’après midi de Samedi, après les horaires de livraison. Manque de chance, l’article restant a reçu un coup pendant le transport invalidant ainsi je pense (j’espère que non, mais bon) la garantie ainsi que l’extension de garantie que j’ai payé.

Pour faire une réclamation il faut que j’envoie une lettre recommandée confirmant mes réserves émises au transporteur car elles ont été barrées (cool le transporteur d’ailleurs…). J’abandonne, j’aurai un appareil à plus de 300 euros ayant un coup, mais plus de commande en ligne sur ce site ni par ce transporteur à l’avenir pour moi.

Je clos cet épisode ici, et désolé pour cet interlude personnel :) Je reviens avec des actualités plus intéressantes bientôt, promis !

ps: j’ai été contacté par des personnes de Discounteo sur twitter suite à ce post et je les remercie de leur réactivité.

Addendum du 25/10:

J’ai été recontacté par Discounteo qui a voulu que j’envoie le bon de livraison avec mes réserves par email, ce que j’ai fait.

Après m’avoir proposé un geste commercial si le transporteur l’acceptait, ils m’ont recontacté en me disant que ce n’était pas possible, mais que ma garantie s’appliquerait même avec un produit ayant reçu un coup, et que si je voulais ils pouvaient renvoyer le transporteur chercher le produit pour m’en livrer un autre par la suite. N’étant pas masochiste, j’ai refusé : fin de l’histoire, et tous les acteurs ont campé sur leurs positions sans aucune évolution.

Je confirme mon avis, évitez ces deux acteurs du e-commerce pour vos achats en ligne.

La programmation en flux, c’est facile avec PyF 2.0

Comme vous le savez peut-être, je participe beaucoup à un framework (boîte à outil applicative) de programmation en flux appellé PyF.

Nous venons de sortir la version 2.0, et j’ai pensé que ce serait une bonne occasion de le présenter ici (j’ai utilisé le très bon article de Mathieu comme base pour cette présentation).

PyF est un framework Python permettant d’écrire des application de traitement, analyse et modification de données de façon très légère et pouvant gérer de très gros volumes simplement. PyF est un logiciel libre et gratuit sous licence MIT.

PyF est bâti autour du concept de programmation en flux:
À la place de traiter « une certaine quantité de données » tout à la fois, on traite un flux de données de façon à n’avoir qu’un seul objet en mémoire qui passe à travers toutes les étapes du graphe, puis on passe à la suivante. Par exemple, traiter toute votre énorme base de clients et générer des rapports ne va pas mettre votre serveur à genoux, mais au contraire paraîtra une tâche tout à fait anodine.

Pour arriver à la programmation en flux, PyF utilise les générateurs Python (sans avoir besoin d’extensions de python comme stackless pour ceux qui connaissent):
Chaque étape de la chaine de traitement prend un générateur en entrée et renvoie les items dès qu’il les a traités (ou un objet tous les n items, ou en rendant simplement la main pour envoyer un rapport d’aggregat à la fin sans troubler les autres branches). PyF peut même gérer un flux de données ininterrompu, en continuant à traiter les données dès qu’elles arrivent, en les renvoyant dans la foulée.

Pour entrer dans les détails, PyF est composé de plusieurs couches :

  • Dans les niveaux les plus bas, vous trouverez des fonctionnalités qui vous aideront à écrire des applications utilisant la programmation en flux
  • Au niveau intermédiaire, vous pouvez lancer des process dans votre application en utilisant tout l’écosystème de plugins (ou écrire les votres)
  • Au plus haut niveau vous trouverez en revanche une application web complète qui vous permettra de concevoir graphiquement vos chaines de traitement (nous les appelons les tubes) en insérant et liant les composants de traitement par simple glisser-déposer. Nous proposons plusieurs composants génériques qui peuvent être utilisés pour faire toutes sortes d’extraction, traitements, sorties et rapports et vous pouvez créer les votres très simplement (ou les prototyper en codant directement dans l’interface graphique avec un IDE intégré). Il y a même un scheduler avec lequel vous pouvez planifier le lancement de tâches.

Nous avons écrit un tutoriel pour l’installation de PyF, et une série de tutoriels pour faire vos premiers pas. (en anglais pour l’instant, mais si vous voulez aider à la traduction vous êtes les bienvenus !)

Il y a déjà de la documentation qui devrait être plus que suffisante pour commencer, même si nous travaillons actuellement à la rendre plus complète.

À propos des changements dans la version 2.0, un des plus importants est l’ajout du multiprocessing: vous pouvez envoyer les composants de votre choix dans des process séparés (pour utiliser tous les processeurs de votre machine) avec une simple case à cocher dans le designer.

Si vous avez une quelquonque question, vennez sur notre mailing-list ou notre salon irc:

Oh et bien sûr n’oubliez pas de visiter le site internet http://pyfproject.org/ et d’aller voir les captures d’écran du designer et de l’interface web.

Les régions de France selon l’auto-completion Google Suggest

Comment est-ce que Google voit les régions de France, ou plutôt, qu’est-ce que nos recherches renvoient sur nos régions ?

A l’image de ce qui a été fait avec les carte des états unis selon google autocomplete, j’ai préparé cette petite infographie sous la forme d’une carte de France où les régions sont nommées selon les premières suggestions de recherche de google lorsque l’on tappe leur nom.

La France des régions par Google Suggest
Cliquez sur l’image pour la voir en taille réelle.

Pour info, lorsque le premier résultat est une adresse de site web (de la région par exemple), ce résultat n’est pas pris en compte et on passe au suivant. Lorsqu’un autre résultat pertinent lui aussi est juste après un résultat commun, il est également mis en « alias » sous le nom de la région (en italique).

Résultats d’autocompletion obtenus grâce à Google.

14

Programmation python en flux: PyF

22 sept 2010 à 15:15

admin

Développement, Python

1 commentaire

PyF est un framework très complet de programmation en flux en Python, avec un éditeur graphique, un système de plugin, un webservice, un scheduler, etc.

J’ai fait une présentation à PyCon FR à ce sujet il ya de cela quelques semaines et les vidéos ont été mises en lignes.

Plutot que de rentrer dans les détails dans cet article, je vous invite à regarder cette présentation :

Pour plus d’infos, rendez-vous sur pyfproject.org :-)

13

Créer des PDF en Python avec Genshi et RML: pyjon.reports

15 juin 2010 à 20:35

admin

Développement, Python

4 commentaires

Attention, cet article est technique… Si vous ne vous intéressez pas au développement en python, passez à l’article suivant :)

Vous voulez faire des rapports en pdf, envoyer des lettres ou une quelquonque autre action nécéssitant de la génération de PDF ?

Si vous êtes aguéris du monde python vous avez surement entendu parler de ReportLab.
Oui, mais l’ennui c’est que pour faire du reportlab, il faut faire du développementur et dur. Et lorsque l’on change sa template, il faut tout faire.

La solution, c’est RML, language xml permettant de génerer des pdf avec des feuilles de styles, en séparant en partie le contenu et le contenant (dans différentes parties du xml) fait par la société éditrice de reportlab.

Le hic ? le parseur de ce language est sous license propriétaire…
Heuresement, l’équipe de Z3C a fait z3c.rml, une implémentation libre de ce language.

Maintenant, on peut faire du RML à la main, mais pour générer des fichiers rml avec vos données, c’est plus dur. Les languages de templates me direz vous ? Oui, justement.

Votre serviteur a fait une librairie permettant d’automatiser ca en utilisant des templates genshi (language de templating xml particulièrement adapté à la tache), dans une classe gérant le tout.

Autre problème : reportlab monte en mémoire lorsque l’on a des pages chargées ou beaucoup de pages tout simplement.
Solution : pyjon.reports vous permet d’ajouter des sections petit à petit à votre document, et à la fin de générer un seul pdf avec toutes les sections (grâce à pypdf).

Pour les plus pressés, rendez-vous directement sur les exemples.

Cas concret : une table de données

D’abord initialisons une factory (classe permettant de rendre plusieurs documents en un) :

from pyjon.reports import ReportFactory
factory = ReportFactory()

Maintenant créons un fichier test.xml contenant notre template xml :

<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
<!DOCTYPE document SYSTEM "rml_1_0.dtd">
<document xmlns:py="http://genshi.edgewall.org/">
<template pageSize="(595, 842)" leftMargin="72" showBoundary="0">
  <pageTemplate id="main">
    <frame id="first" x1="1in" y1="1in" width="6.27in" height="9.69in"/>
  </pageTemplate>
</template>
<stylesheet>
  <blockTableStyle id="mynicetable" spaceBefore="12">
    <lineStyle kind="OUTLINE" colorName="black" thickness="0.5"/>
    <blockFont name="Times-Bold" size="6" leading="7" start="0,0" stop="-1,0"/>
    <blockBottomPadding length="1"/>
    <blockBackground colorName="0xD0D0D0" start="0,0" stop="-1,0"/>
    <lineStyle kind="LINEBELOW" colorName="black" start="0,0" stop="-1,0" thickness="0.5"/>
    <!--body section-->
    <blockFont name="Times-Roman" size="6" leading="7" start="0,1" stop="-1,-1"/>
    <blockTopPadding length="1" start="0,1" stop="-1,-1"/>
    <blockBackground colorsByRow="0xD0FFD0;None" start="0,1" stop="-1,-1"/>
    <blockAlignment value="right" start="1,1" stop="-1,-1"/>

    <!-- closing the table when restarting it on next page -->
    <lineStyle kind="LINEBELOW" colorName="black" start="0,splitlast" stop="-1,splitlast" thickness="0.5"/>
  </blockTableStyle>
</stylesheet>
<story>
  <h1>$title</h1>
  <blockTable repeatRows="1" style="mynicetable">
    <tr><td py:for="i in range(10)">Row ${i}</td></tr>
    <tr py:for="line in data"><td py:for="col in line" py:content="col" /></tr>
  </blockTable>
  <para py:content="dummy" />
</story>
</document>

Rergardons cette template de plus près :

Maintenant utilisons cela pour générer un fichier :

template = 'test.xml'
testdata = [range(10)] * 100

factory.render_template(
        template_file=template,
        title=u'THE TITLE',
        data=testdata,
        dummy='foo')

Ici, on a passé une jeu de données contenant les chiffres 1 à 9, 100 fois (100 listes).
On a aussi passé plusieurs variables utilisées dans la template.

On veut ajouter une autre section avec la même template ? Pas de problème !

factory.render_template(
        template_file=template,
        title=u'THE TITLE 2!',
        data=testdata,
        dummy='bar'
        )

Créons un seul fichier pdf contenant les deux parties, et finalisons l’objet :

factory.render_document('test.pdf')
factory.cleanup()

Et voilà, aussi simple que cela :)

Comment l’installer ?

Pour installer pyjon.reports, c’est simple : « easy_install pyjon.reports », vous pourrez avoir des pdf dans vos applis en 5 minutes.

Si vous voulez regarder les sources ou contribuer, rendez-vous sur bitbucket : http://bitbucket.org/jon1012/pyjonreports

Pour plus d’infos :

18

Nouveau blog…

12 juin 2010 à 18:39

admin

Non classé

2 commentaires

Bonjour à tous, fidèles (ou moins fidèles) lecteurs.

Ce que vous connaissiez comme JonDesign disparait, et à sa place vient mon blog personnel, dans lequel je parlerais d’actualités technologiques, de développement python ou javascript, de design, etc…

La SmoothGallery continue à vivre, mais pour tout contact à propos de  mes activités professionnelles, il faudra me contacter sur le site de mon entreprise : JMSI.

N’hésitez pas à me faire part de votre avis sur la direction que devrait prendre le blog dans les commentaires.

J’espère que la nouvelle formule vous plaira, à bientôt !