5/29/2008

Synchronisation entre deux bases de données (Access/Mysql)

La première phase de mon stage consiste à mettre en place un script, un programme, qui permettra de synchroniser une partie de la base de données CIEL (qui contient l'ensemble des articles, famille, fournisseur, ventes, etc...) avec la base de donnée du site (Mysql).

CIEL repose sur une base de données ACCESS, le script devra donc être capable d'effectuer des requêtes sur cette base de données. La synchronisation est unidirectionnel (Ciel -> Site) lorsqu'il s'agit des articles, et bidirectionnel lorsqu'il s'agit des stocks.


Voici donc la façon dont j'effectue la synchronisation (dans cet exemple pour les articles).

Le serveur web du magasin accueil un mini-site, qui effectue via des requêtes AJAX les différents traitements de synchronisation. Le dialogue entre les deux serveurs s'effectue exclusivement en JSON, plus léger que XML et très facilement lisible en cas de debuggage.

Les requêtes AJAX envoyées depuis le serveur web du magasin peuvent être dirigées :

  1. soit vers un script php interne au serveur qui va permettre de créer un interface entre les données de la base de donnée ACCESS et le reste de l'application
  2. soit vers un script php "proxy" qui va effectuer une requête POST sur le serveur web e-commerce et retournera le résultat de cette requête. La requête POST ne contient qu'un seul champs : "data". Ce champs "data" - qui sera envoyé au serveur e-commerce - contient l'intégralité des variables POST ($_POST) envoyées au script proxy. Ainsi, le mini-site envoie une requête AJAX de type POST sur le script "proxy", le script proxy transforme toutes ces variables en JSON (serialisation) et les inclus dans la variable "data" qu'il envoi par POST au serveur web e-commerce, le serveur web e-commerce va alors déserialiser la variable $_POST['data'] et effectuer les traitements en fonction des paramètres transmis.


Ps : J'utilise CURL pour l'envoi de requête POST sur le serveur ainsi que PDO pour la communication avec la base de donnée ACCESS.

5/26/2008

Problème requête SQL avec INNER JOIN multiple sur base de donnée Access

Je viens de commencer réellement mon stage et pour cela, il me faut extraire des données d'une base de données Access par une requête SQL depuis PHP en utilisant PDO. Pour cela j'ai eu besoin de faire plusieurs INNER JOIN  (j'ai simplifié à 2 pour l'exemple) et une fois le deuxième INNER JOIN ajouté l'erreur suivante s'est produite :

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression

Voici la requête produisant l'erreur :

SELECT Articles.code, Articles.libellélong, Articles.libellécourt, ArticlesTarifs.TTC, ArticlesStocks.QtéStock
FROM `Articles`
INNER JOIN `ArticlesTarifs` ON (Articles.N°) = ArticlesTarifs.N°Article
INNER JOIN `ArticlesStocks` ON (Articles.N°) = ArticlesStocks.N°Article
WHERE Articles.bWeb = 1

 

En fait, il suffit de concaténer tout les INNER JOIN directement dans le FROM de la requête et le tour est joué :

SELECT Articles.code, Articles.libellélong, Articles.libellécourt, ArticlesTarifs.TTC, ArticlesStocks.QtéStock
FROM (
(`Articles` INNER JOIN `ArticlesTarifs` ON Articles.N° = ArticlesTarifs.N°Article)
INNER JOIN `ArticlesStocks` ON Articles.N° = ArticlesStocks.N°Article)
WHERE Articles.bWeb = 1

 

Ainsi on a une requête sql sur la forme :

SELECT *
FROM (table 1 INNER JOIN `table2` ON table1.id = table2.id) INNER JOIN `table3` ON table1.id = table3.id)

 

Je reparlerai sans doute de PDO qui est vraiment une classe formidable

5/25/2008

Mon feedback sur Firefox 3

Un rapide Feedback sur Firefox 3 RC1 :
  • Il arrive un moment dans la navigation où il m' est impossible d' accéder à une page web lorsque celle-ci est directement entrée via la barre d' adresse le seul moyen pour y accéder est par un lien hypertexte, je suis donc obliger de redémarrer le navigateur pour pouvoir utiliser à nouveau la barre d' adresse, ce bug existait déjà sous Firefox 2.
  • La recherche rapide depuis la barre d'adresse est extrêmement intéressante cependant il faudrait prévoir un bouton qui permettrait de supprimer une entrée à la volée. Si j' entre monsite, on me propose http://monsite.com et je voudrais http://www.monsite.com mais, cette proposition arrive toujours en deuxième. Il serait donc intéressant d' ajouter un bouton pour supprimer l' entrée "http://monsite.com".
  • De la même façon, la gestionnaire de mot de passe devrait autoriser un mot de passe à être utilisé sur : tout le domaine; un seul sous-domaine spécifique etc... Par exemple, un mot de passe enregistré sur http://www.monsite.com ne s' affichera pas sur http://monsite.com, or il s' agit du même site ! Un effort est donc à faire sur ce point qui est pour moi essentiel.
5/22/2008

Transformer une image en code html via php et gd

Ces 2 dernières minutes, ne sachant pas quoi faire et rempli d'une profonde tristesse, j'ai eu l'idée (et quelle idée, c'est ce genre d'idée qui vous fait perdre votre temps) de créer un script, qui, à partir d'une image (dans notre exemple une image png) va la transformer en code (x)html en utilisant des propriétés css. Le code du script est disponible ici.

Rien de bien compliqué :
  1. On récupère la taille de l'image
  2. On ouvre l'image
  3. On fait une boucle sur les Y et les X
    • A chaque pixel X:Y on récupère son index
    • On créé un div à la position X;Y et on lui applique un background-color en ayant convertit l'index en RGB
  4. Et voila :)
J'ai ajouté la variable "coef" qui permet de spécifier un coefficient multiplicateur (=zoom), un coef de 1 est la taille normal.

Je pense que des optimisations sont possibles (eh oui, même sur un petit morceaux de code comme celui la !) :
  • Il suffirait de stocker tous les index et leurs positions dans un tableau. Ensuite il faudrait regarder si il y a des mêmes index consécutifs pour ainsi créer un seul div - avec une taille plus grande - au lieu de plusieurs, on allège ainsi la taille du rendu html.
  • Ou encore, faire une liste des différentes couleurs, leurs créer une classe css, et appliquer cette class sur les div (à condition que le nom des classes ne dépassent pas 2-3 caractères et que l'image ne contienne pas beaucoup de couleur)

Ci-joint un exemple généré avec le script et l'image originale utilisée, la page pèse plus de 2.5Mo alors que l'image fait 20.8Ko... Je n'ai jamais dit que le script avait une réel utilité !
5/21/2008

Bookmarklet compteur feedburner


Beaucoup de site utilisent Feedburner pour leurs flux rss et ils arrivent que certains n'affichent pas le compteur pour X raisons. Je viens de coder (enfin à ce niveau là, ce n'est pas coder, 10 ligne de code, c'est déprimant) un bookmarklet qui vous permettra, une fois sur le flux feedburner (par exemple à l'adresse : http://feeds.feedburner.com/XXXXX) de savoir le nombre de personne approximativement qui utilisent le flux rss.

Pour cela déplacez ce [ lien ] directement dans votre barre de liens (ou dans vos favoris).

Une fois cliquer sur le lien depuis un flux feedburner vous arriverez sur un document xml comme celui-ci.

<rsp stat="ok">
<!--This information is part of the FeedBurner Awareness API. If you want to hide this information, you may do so via your FeedBurner Account.-->
<feed id="1294507" uri="bashfr">
<entry date="2008-05-20" circulation="9268" hits="55897" reach="3412" />
</feed>
</rsp>


Voici le tableau récapitulatif des valeurs :

circulationLa valeur approximative des personnes qui suivent ce flux
hitsLe nombre de requête qui ont été établies sur le flux Feedburner pendant les dernières 24 heures.
Plus d'information à cette adresse (US)
5/20/2008

Passage à Firefox 3 rc1

Ce soir, je viens de passer à Firefox Release Candidate 1 (RC1). Mais comme toutes mises à jour de ce type j'ai préféré sauvegarder mes mots de passe, préférences et extensions etc...(on est jamais trop prudent).

Et une extension qui fait cela à merveille est FEBE (Firefox Environment Backup Extension) ! En effet FEBE vous permet de sauvegarder :
  • vos extensions
  • vos thèmes
  • vos marques-pages
  • vos cookies
  • vos informations de connexion (nom d'utilisateur et mot de passe)
  • vos exceptions de site
  • vos plugins de recherche
  • votre historique et vos saisies de formulaire
Cela permet de gagner beaucoup de temps ! Plus besoin d'aller trifouiller dans le dossier de Firefox à la recherche de tel ou tel fichier !

Vous pouvez télécharger FEBE depuis sa page sur Mozilla Addons.

Une fois Firefox 3 RC installée et toutes vos données intactes (ou pas, dans ce cas FEBE est utile), 99% de vos extensions ne fonctionneront pas, d'où l'utilité de l'extension Nightly Tester Tools (télécharger Nightly Tester Tools sur Mozilla Addons) ! En effet Nightly Tester Tools va permettre de modifier les données de compatibilité de chaque extensions et ainsi permettre leurs exécutions.

De plus, si comme moi vous utilisez l'extension del.icio.us, une version officielle pour firefox 3 est disponible !

Firefox 3 est censé améliorer la gestion de la mémoire vive, pour ma part je suis actuellement à 223 Mo de mémoire vive occupée par le navigateur...Pas de réel changement donc (dit-il très déçu)...

Webmonkey une ressource pour webdeveloppeur

Je viens de découvrir le site webmonkey qui fourni un ensemble de ressource (tutoriels, code snippet, cheat sheets) aux web développeurs. C'est en fait un gros wiki, ou chacun, une fois connecté, peux modifier, proposer une évolution du code présenté dans les articles et tutoriels. Pour le moment c'est un peu vide, mais pourquoi pas.

Seul problème, leurs flux rss est invalide, pas moyen de l'ajouter à mon netvibes ! En fait leurs flux rss est très mal optimisé, c'est simplement un copier/coller de l'article entier, avec les codes javascript pour l'édition etc... Je pense que le problème pourrait-être corrigé si ils ne laissaient que le texte sans nous ajouter du code javascript superflus et des remplis de classe css.
5/18/2008

DomainFinder : Statistiques

Pendant que j'écris ces quelques lignes de nouvelles fonctions sont en cours de développement sur la futur version de domaine finder (la v2) dont l'option "pro" qui permettra, contre un paiement (le prix est toujours en réflection) d'avoir toutes les fonctions que j'ai pu constater chez les concurrents.

En attendant voici quelques statistiques sur DomainFinder à [ J+2 ; J+X ].


Statistiques des visites par jour :

13 mai 2008 702
14 1.602
15 1.391
16 2.496+
17 772


470 personnes sont retournés sur le site après leurs premières visites.


Quelques nouveaux referrers :

Il y a eu depuis le lancement (13 mai) jusqu'au 18 mai : 21 490 recherches effectuées via DomainFinder soit une moyenne d'environ 3 recherches effectuées toutes les secondes !

5/14/2008

DomainFinder : Le point après j+1

Je vais faire le point de cette première journée de buzz sur DomainFinder.

Le service à été mis en ligne dans la matinée du 13 Mai 2003 pour divers tests avec l'aide de Simon Robic.

A 11h je lançais ma vague de communication autour du service. J'ai donc lancé l'information sur mon Twitter puis j'ai directement contacté :
Le premier à me répondre par email à été SpawnRider m'informant qu'il écrirait un post dessus le soir même. Je dois avouer que c'est quand même bien quand les personnes que l'on contact nous répondent, sois par leurs blogs, sois par email.

Très interressant aussi d'être informé par twitter quand tel ou tel blog publie l'information. Une autre face de twitter !

Le jour du lancement nous avons eu 715 visites sur le site, 397 visites générées par le blog de Gonzague, soit 55,52% des visites de la journée ! Hallucinant ! J'espère bien doubler voir tripler cette valeur ce soir avec l'arrivée des statistiques à J+2.


Au niveau de la communication
Le bloggeur qui ont joué le jeu, certains on d'ailleurs souligné l'importance d'un email personnalisé ce qui rends tout de suite le service plus attractif. En effet, dans l'email de présentation du service, je donnais l'exemple des résultats que pouvait donner DomainFinder avec par exemple le nom du site ou de l'auteur du blog en question.

Cependant, je dois reconnaitre, que plusieurs bloggeurs n'ont pas compris le réel objectif du service, et j'ai donc du expliquer en commentaire à quoi correspondait ceci ou cela. Je n'ai pas été assez pédagogique et c'est toujours ce que l'on me reproche, mais cela c'est traduit par un email très court, et ça, les bloggeurs ont aimé.

En conclusion : l'email de masse est à proscrire; et il faut adopter une démarche plus pédagogique sans dévoiler tout le service; j'en prends note pour les prochains services à venir.

En fin de soirée, j'en envoyé l'annonce à Ghacks...Vers minuit, ils publiaient l'information (et oui, il faisait jour chez eux), et depuis, c'est un véritable buzz qui grandi chaque seconde à travers le monde, c'est beau...

Au niveau des Feedbacks
Je vais présenter cela sous forme de liste :
  • Version française : logique vu que j'en est parlé
  • Vérification de la disponibilité pour tous les domaines trouvés :
    • sera disponible en version pro
  • La possibilité de commander directement le nom de domaine si ce dernier est disponible :
    • oui mais je n'attends que ça ! A quand un partenariat avec un registrar ?
  • Possibilité de laisser DomainFinder ajouter d'autres mots afin d'élargir la recherche
    • sera disponible en version pro
  • Un meilleur service de WHOIS :
    • bon ben là, la seule solution c'est de prendre un serveur dédié et j'ai pas la structure financière pour.
  • Plus grand support des TLD, je pense par exemple aux domaines de deuxième niveau, comme par exemple les .co.uk. Enfin encore faut-il trouver un mot qui contient "couk"...
  • Et d'autres Feedback que je garde précieusement pour la version pro :)

Au niveau des outils utilisés

La mise en place de Google Analytics et d'un whos.amung.us (tardive, seulement à partir de 20h) m'a permis de suivre
  • jour par jour avec un niveau très détaillé
  • en live (avec la fonction de géo-localisation par l'ip que j'adore)
De ce côté là pas de problème, l'idée d'utiliser des services externes allègent considérablement le serveur, ce qui est important lors d'un lancement comme celui là, si le service n'est pas accessible ou très lent d'accès, les visiteurs ne reviendront pas.

Conclusion
Je ne pensais pas à une telle retombée médiatique même si on est loin d'un grand buzz je trouve cela tout de même très impressionnant. Maintenant, il faut faire évoluer DomainFinder et il y a du boulot !

Merci à tout ceux qui ont permis à ce projet d'être connu des internautes !

J'ai regardé vite fait dans GG Analytics les mots clefs utilisés sur DomainFinder je dois dire que certains sont pour le moins très....spéciales, je retiens néanmoins celui la "ho man you are very bad", et je lui répondrais : "je suis pas anglais enfoir*", ahh, la french touch. [Ndlr : je passe toutes les expressions à caractère sexuelle car il y en a un paquet...]

5/13/2008

Inauguration de DomainFinder !

J'ai le plaisir d'inaugurer en ce 13 mai 2008 mon nouveau projet, DomainFinder.

Mais qu'est-ce que DomainFinder ? C'est simple, n'avez vous jamais rêvé d'avoir un nom de domaine plus "classe", plus "web 2.0", plus "underground" ? Prenons l'exemple de mon amis SimonRobic, l'adresse de son site est http://simonrobic.com, il lui a fallu du temps et de la recherche pour trouver son nouveau nom de domaine : s.imon.ro/bic .

Alors que le simple fait de taper "simon robic" dans DominFinder, donne directement le résultat ainsi que deux autres propositions, comme le montre cette capture :


Autre fait interressant est que DomainFinder à la capacité de vérifier la disponibilité (ou non) des noms de domaine qu'il trouve ce qui peut faire gagner beaucoup de temps aux webmasters désireux d'acquérir un nouveau nom de domaine.

Pour le moment DomainFinder ne vérifie qu'une adresse de domaine par domaine de premier niveau (.fr, .ro, .uk, .us) voir capture d'écran ci-dessous, une option pro payante devrait voir le jour pour les intéressés (si vous êtes intéressez veuillez nous contacter via la page "Contact / Feedback"). Cette option pro permettra entre autre de vérifier l'existence de tous les noms de domaine de chaque domaine de premier niveau.


Le site est accessible avec ou sans Javascript et en mode texte, pour permettre à n'importe qui depuis n'importe quel terminal (mobile ou non) de pouvoir créé son nom de domaine "fun". Une version française est prévue (pour tout autre traduction me contacter via DomainFinder). J'écrirai un autre post plus tard, pour expliquer et montrer quelques passages plus technique du site.

En espérant que DomainFinder vous aidera à trouver votre petit coin de bonheur virtuel sur la toile !



5/12/2008

JQuery et la reconnaissance des navigateurs

#old
5/08/2008

Problème avec les iPods

J'ai un problème récurrent avec tous les iPods que j'ai connecté à un pc, à chaque fois, les autres périphériques usb sont désactivés. C'est très pénible, j'en viens à m'empêcher de connecter l'iPod shuffle à mon pc, car je sais que cela désactivera les clefs usb déjà connectées, et que je devrais les ré-activer après coup.

Si quelqu'un à une solution, je suis preneur.

Je pense que cela se fait avec tout les iPod, car j'ai eu ce phénomène avec un iPod Shuffle et un iPod 60Go.
5/07/2008

La société ebuzzing recrute un(e) développeur web

ebuzzingAinsi qu'un(e) responsable de clientèle. Pour rappel ebuzzing est la première plateforme européenne de mise en relation des annonceurs et des créateurs de contenu en ligne. Ses clients sont notamment la FNAC, Direct Assurance, PPR, Chronopost, Paruvendu et travail avec plus de 2 000 bloggeurs. La société existe depuis Octobre 2007 et dans le cadre de son développement elle souhaite recruter un(e) développeur web, ainsi qu'un(e) responsable de clientèle.


Voici les profils recherchés :


Responsable de Clientèle:

Mission:
  • Vous développez et gérez un portefeuille de clients

  • Vous êtes force de proposition en accompagnant vos clients et prospects dans leurs réflexions stratégiques en termes de communication on-line
  • Vous gérez les campagnes de communication de vos clients


Profil:
  • Bonne présentation et sens du contact humain

  • Energique et enthousiaste

  • Fort esprit d’équipe

  • Rigoureux (se) et accrocheur (se)

  • De formation Ecole de Commerce ou équivalent


Date de début: dès que possible
Type de contrat: CDI
Lieu: Paris 9ème
Rémunération: Selon profil + avantages + primes


Développeur Web:


Mission:

  • Développement & Intégration de nouvelles fonctionnalités au sein de la plateforme

  • Maintenance et évolution de l'interface du site

  • Amélioration de la compatibilité multi-navigateurs

  • Documentation des développements


Profil:
  • 2 années minimum d'expérience dans un poste similaire

  • Solide maîtrise des standards du web (XHTML, CSS, XML, XSL, JavaScript, Ajax, HTTP, RSS...)

  • Bonne expérience en développement d'applications web avec un ou plusieurs langages de programmation (PHP et MYSQL indispensables)

  • Très bon esprit d'équipe

  • Bonne gestion du temps de travail avec un minimum de supervision afin de s'assurer de la sortie des projets dans les délais

  • Capacité à apprendre rapidement et à s'adapter à une base de code existante

  • Bon niveau d'anglais, oral et écrit

  • Une bonne culture du monde du web communautaire et web 2.0 est fortement appréciée


Date de début: dès que possible
Type de contrat: CDI

Lieu: Paris 9ème

Rémunération: Selon profil + avantages


Personnellement se serait un grand plaisir pour moi de poster ma candidature pour ce genre de société, rejoindre une équipe de passionnée et évoluer avec eux dans l'univers de l'internet...Malheureusement je suis loin des 2 années d'expérience dans un poste similaire, du moins pas en dehors de la freelance.


Alors pourquoi pas vous ? Vous pensez correspondre aux profils recherchés, n'hésitez pas et envoyer votre cv et une lettre de motivation à bertrand@ebuzzing.com. Si vous avez des retours ou si vous avez eu le poste n'hésitez pas à m'en informer par commentaire.





Article sponsorisé

5/06/2008

Problème de réception de sms avec twitter

Depuis plusieurs semaines, je ne reçois (encore) plus de sms de la part de twitter, cela fait maintenant la 3ème fois! Et j'en viens à me questionner car d'autres contacts twitter sont dans la même situation, beaucoup ont arrêtés de réactiver l'option.

Pourquoi cela est gênant de réactiver l'option ?
Il faut d'abord demander un code, puis envoyer un sms contenant ce code depuis votre portable vers un numéro des services Twitter, l'envoi est donc payant mais en théorie pas surtaxé.

Pourquoi je pense que cela est fait exprès ?
Personne ne connait réellement le business model de Twitter, mais tout le monde s'accordent à dire que c'est une société qui ne peut pas faire de bénéfice : l'envoi de sms coute cher.

Alors de mon petit observatoire, je me dit qu'il s'agit peut-être d'une ruse. Désactiver les notifications sms sur plusieurs comptes permet de faire entrer un peu d'argent. Mais pour 0.20€ au grand maximum par compte, aucun bénéfice ne pourrait en sortir.

Peut-être que se sont les comptes avec une consommation excessive de sms (+200sms/semaine) qui ont cette option désactivée régulièrement, mais alors, pourquoi de grands Bloggeurs ne rencontrent aucun problème ? une liste rouge aurait été mise en place ?

Qu'en pensez-vous ? Avez-vous vous aussi ces problèmes là ?
5/05/2008

Ouvrir dans firefox un lien rapidement dans un onglet

Comment ouvrir un lien dans Mozilla Firefox dans un nouvelle onglet sans passer par le menu ?

C'est simple, allez sur le lien et cliquez sur le bouton du milieu de votre souris, ce lien s'ouvrira directement dans un nouvelle onglet en arrière plan.

Sympa non ?

De la même façon, survolez un onglet, appuyez sur le bouton du milieu de votre souris, et il se fermera.

Ps : pour les utilisateurs Apple, il y a aussi [Pomme]+Clic (merci simonrobic) et pour Windows/Linux [Ctrl]+Clic (merci flexgraph).
5/01/2008

Le spyware phishing sur youtube

Quel drôle de titre n'est-ce pas ?

Je lisais tout à l'heure, un billet depuis le blog de béné, lorsque que j'ai trouvé un lien vers un groupe Facebook nommé "c'est toi le groupe", je me connecte donc sur Facebook et apprécie la blague. Dans le Wall j'observe ceci :


En grand curieux, je clique sur le lien, je suis redirigé vers cette page, avec ces 2 boites de dialogues :

Et là, j'ai halluciné, j'ai tout d'abord cru à une faille XSS trouvée dans Youtube, mais après avoir regardé le code puis l'url (oui je sais, normalement c'est l'inverse), je me suis aperçu que ce site n'était qu'une pâle copie de YouTube.

Plusieurs choses choquantes :
  • L'adresse de la page est du type : http://sweet-tube.com/ et l'alerte vient du domaine http://pornwizardry.com.
  • Les personnes qui ont mis ce site en place ont quand même bien travaillé : on constate que le sois disant setup.exe (qui une fois téléchargé à le logo de windows media player) vient d'un domaine http://www.swfcompressor.com/ (en allant directement sur cette adresse, on obtient un jolie 403 Forbidden...)
  • Pourquoi ne pas avoir prolongé le délire et permettre à l'utilisateur de se connecter sur Youtube etc...Car tous les liens de la page pointent vers /backlink.php. C'est dommage, car en plus d'installer un Spyware sur la machine de l'utilisateur, ils auraient pu aussi directement récupérer le mot de passe Youtube/Google (ça peut toujours servir non ?).
Attention donc à ce genre "d'attaque" même si c'est dommage de ne pas avoir la vidéo à la fin (joke).

[MAJ] L'utilisateur iRis nous informe en commentaire qu'il s'agit du Trojan Zlob, merci à lui pour la précision.
« »
 
 
Made with on a hot august night.