December 28th, 2011 — Brève
Je change un peu de style d’article pour donner un avis sur un e-commerçant que je viens d’utiliser. J’en suis content alors autant le dire. Je n’avais en plus pas trouvé beaucoup d’avis lorsque j’ai voulu l’utiliser, alors je partage le mien.
Site e-commerce d’articles de puériculture très efficace.
Nous avons commandé un ensemble combiné poussette/nacelle. Le tarif était très intéressant. Malheureusement le produit n’était plus en stock chez Bimbomarket et le délais annoncé n’a pas été respecté. Nous avons pu cependant trés facilement contacter l’assistance via le suivi de commande et ils ont répondu trés rapidement (moins de 24h à chaque fois) en nous fournissant des explications et de nouvaux délais. Ça fait plaisir de voir un support qui ne répond pas avec des messages pré-enregistrés et qui prend le temps de comprendre les problèmes qui sont exposés. Une fois le produit en stock il a été envoyé rapidement et la livraison a été suprenante de rapidité : délais annoncé jusqu’à 10 jours ouvrés mais le produit est arrivé en 5 jours avec un weekend au milieux (le weekend de Noel en plus).
Donc au final nous sommes très satisfaits même si le délais de re-approvisionnement initial n’a pas été tenu. Les prix sont très bons, la livraison est rapide et le suivi client appréciable. Site que nous re-utiliserons si l’occasion se présente.
Rating by Bruno: 5.0 stars





August 3rd, 2011 — Apache License, Développement, Java, Logiciel, Serveur
Petites nouvelles sur l’avancement.
J’ai rapidement mis en ligne ce que j’appelle la version 1.a. Il est donc maintenant possible de trouver et d’afficher son adresse IP via ipso.me.
J’ai mis à disposition le code source du projet sur Kenai.com (en). Leur service est vraiment clair et pratique. J’ai ouvert un dépôt Mercurial : http://kenai.com/projects/ipsome/sources/hg/show (en). Je découvre l’utilisation d’un gestionnaire de code décentralisé, je ne suis pas encore 100% à l’aise avec car cela change de SVN, mais c’est assez pratique. Il faudra qu’un jour je prenne le temps de lire Subversion Re-education (en).
Pour l’instant le code est vraiment minimaliste, il y a juste un contrôleur qui récupère l’IP du client et la passe à une vue. Mes premières impressions sur l’utilisation de Play! Framework (en) sont très bonnes. C’est vraiment très simple à mettre en place, très simple pour commencer, le tutoriel de départ est bon. J’ai d’ailleurs fait cette version 1.a directement en suivant le tutoriel “Première application (en)” .
Pour le style, j’ai récupéré un template que j’ai déjà utilisé par ailleurs, il a l’avantage d’utiliser le framework CSS 1140 CSS Grid (en) qui permet de s’adapter à la largeur de l’écran. Le rendu s’adapte jusqu’aux résolutions des smartphones.
Ce qu’il me reste à faire pour avoir une vrai version 1 :
- Intégrer la licence Apache au projet,
- Faire une petite doc pour l’installation :
- en texte dans un fichier install.txt,
- en html intégré dans une page du projet
- Nettoyer le code et le template utilisé
July 23rd, 2011 — PHP, Serveur, Technique, Tutoriel
Sous WordPress, avec une galerie NextGEN qui utilise l’effet thickbox, pour faire défiler les images à l’aide des touches directionnelles du clavier (les flèches gauche et droite il faut procéder comme suit :
Dans le fichier “wp-includes/js/thickbox/thickbox.js“, trouver ce bloc de code :
if(keycode == 27){ // close
tb_remove();
} else if(keycode == 190){ // display previous image
if(!(TB_NextHTML == "")){
document.onkeydown = "";
goNext();
}
} else if(keycode == 188){ // display next image
if(!(TB_PrevHTML == "")){
document.onkeydown = "";
goPrev();
}
}
Et remplacer le keycode :
Attention : comme ce fichier fait partie de la distribution WordPress, à chaque mise-à-jour il faut refaire la modification.
July 23rd, 2011 — Java, Serveur, Technique
Si vous installez Tomcat sur un GNU/Linux depuis une archive binaire récupérée d’Apache et lancez tomcat via “./startup.sh” vous risquez d’avoir le message suivant :
The BASEDIR environment variable is not defined correctly
This environment variable is needed to run this program
Pour éviter cela, il faut d’abord vérifier que “JAVA_HOME” et “CATALINA_HOME” soeint bien définis comme cela est spécifié dans le fichier “RUNNING.txt” livré avec l’archive de Tomcat.
Ensuite il faut surtout vérifier que les fichiers “bin/startup.sh” “bin/shutdown.sh” et “bin/setclasspath.sh” soient bien exécutables. Quelque chose du genre :
chmod +x bin/startup.sh
chmod +x bin/shutdown.sh
chmod +x bin/setclasspath.sh
Après cela Tomcat devrait s’exécuter via “./startup.sh“.
June 14th, 2011 — Apache License, Développement, Java, Logiciel, Serveur
Version 0
Le nom
J’ai trouvé un nom qui va avec un domaine disponible : ipso.me. Bon, maintenant, bien entendu le domaine n’est plus disponible. Pourquoi ipso ? Car c’est court, le domaine en .me est libre. Il contient IP qui fait bien référence à l’adresse IP qu’on veut arriver à déterminer. Le so peut faire référence à « solve » ou « solution ».
IP + SOlve = ipso. Le “.me” indiquant qu’il s’agit de résoudre mon adresse ip.
Ça me parait bien. Le projet sera donc nommé « ipso.me » et ce sera à la fois le nom du projet et du domaine.
La forge
Pour la forge, j’ai envie de tester le système de gestion de version Mercurial. Je m’oriente donc vers la plateforme Kenai qui est très bien intégrée à Netbeans, l’IDE que j’utilise couramment. Depuis le rachat de Sun par Oracle, il était question que Kenai disparaisse pour laisser la place à java.net qui utilise maintenant la plateforme Kenai. Mais il semble que les deux sont actifs en simultanés. Donc on verra, il sera toujours temps de changer. Les autres choix possibles pour Mercurial sont :
June 14th, 2011 — Apache License, Développement, Java, Logiciel, Serveur
But du projet
Construire une application web permettant d’afficher l’adresse IP des visiteurs. Afficher le maximum d’informations sur :
- utilisation d’un proxy,
- localisation,
- IP dynamique ou statique
Ce projet sera développé de façon itérative et doit me permettre de tester diverses technologies. Le code sera en Java et open-source sous licence Apache 2.0.
Prévision de versions
- Version 0 :
- Trouver un nom au projet,
- Trouver un nom de domaine pour l’installation publique,
- Trouver une forge où publier l’application
- Version 1 :
- Afficher l’adresse IP du visiteur,
- Mettre en ligne l’application,
- Publier le code sur la forge choisie
- Version 1.1 :
- Afficher les informations sur l’utilisation de proxy
- Version 1.2 :
- Afficher les informations de localisation de l’IP via une base de localisation
- Version 1.3 :
- Permettre à l’utilisateur de tracer ses changements d’adresse via un cookie, ainsi depuis un même poste, il pourra déterminer si il a une adresse IP dynamique.
- Version 1.4 :
- Si l’utilisateur le permet et si son navigateur le supporte, demander la localisation de l’utilisateur.
- Version 2.0 :
- Permettre à l’utilisateur d’avoir un compte sur l’application, proposer plusieurs systèmes d’authentification :
- Système interne au site,
- OpenID
- Facebook
- Google
- Avoir un compte permet de :
- Avoir un historique de ses IP, localisations
- Supprimer son compte et ainsi effacer toutes les données
- La collecte d’information va nécessiter une déclaration à la CNIL
Outils utilisés
Bien entendu, aucune garantie de résultat, juste du best effort…
April 30th, 2011 — Référence, Serveur, Technique
Voici quelques commandes à utiliser avec un serveur de mail Exim. Les serveurs que j’utilise sont souvent sous Ubuntu Linux.
Voir le fichier de log d’exim
Les logs sont situés ici :
/var/log/exim4/mainlog
Voir les mails qui sont en attente dans la file d’attente
Utiliser la commande suivante pour voir les mails qui sont encore dans la file d’attente et donc en attente d’être expédiés :
%> mailq
Forcer le traitement de la file d’attente
Pour forcer exim à traiter la file d’attente et donc à essayer de délivrer les mails :
%> exim4 -qff
Relancer la configuration d’exim
%> dpkg-reconfigure exim4-config
March 16th, 2011 — Apache License, Développement, Java, Lien, Réseau, Technique
Lorsqu’on développe un programme qui expédie des emails, plutôt que d’utiliser un vrai serveur de mails, il peut être avantageux d’utiliser un faux serveur. L’avantage c’est que cela est intégrable à des tests unitaires et qu’on évite l’erreur de manipulation qui envoie un email à tous les contacts de la base de données.
Il existe plusieurs bibliothèque pour réaliser cela :
- devnull smtp : faire un “java -jar DevNullSmtp.jar” pour lancer une interface graphique simple qui permet de lancer un fake serveur sur le port désiré. Il ne peut pas être intégré à des tests unitaires, mais on peut visualiser en direct les messages reçus dans l’interface. Gratuit mais non libre.
- Wiser : Bibliothèque Java qui peut être intégrée à des tests unitaires. Licence Apache 2.0
- Dumbster : Bibliothèque Java qui peut être intégrée à des tests unitaires. Licence Apache 2.0. Projet sans mise-à-jour depuis 2005.
January 15th, 2011 — Documentation, Java, Serveur, Tutoriel
Préparation
Dans cet exemple, nous nous basons sur une installation avec un Ubuntu Server 10.04 LTS sur un mC OVH. Nous allons installer Tomcat 6.0, Oracle XE (10g Express Edition) et MySQL. Ainsi nous aurons une jolie VM pour tester plein de scénarios possibles : parfait pour mettre rapidement en ligne des développements ou faire des environnements de tests jetables : la facturation à l’heure du mC nous offre bcp de souplesse.
Dans un premier temps nous allons mettre à jour la distribution et faire quelques paramétrages de base. Ensuite nous nous attaquerons à l’installation des différents logiciels.
Configurer SSH sur poste client
Pour se connecter à un mC par ssh il faut utiliser une clef qui est générée par l’interface d’administration. Nommons cette clef key.pem. Pour pouvoir l’utiliser pour se connecter à un mC, voici la procédure :
1 placer la clef dans le dossier $HOME/.ssh
2 modifier les droits sur cette clef :
%> chmod 600 key.pem
3 utiliser ssh en fournissant le chemin de la clef :
%> ssh -i $HOME/.ssh/key.pem root@mc-178-...
Pour ne pas se compliquer la vie à indiquer chaque fois le chemin vers la clef à utiliser, il faut indiquer dans le fichier $HOME/.ssh/config quelle clef utiliser pour quel host. Faire “man ssh_config” pour plus d’informations. Voici comment procéder :
%> vi $HOME/.ssh/config
Host mc-178-…
IdentityFile ~/.ssh/key.pem
En répétant le bloc Host/IdentityFile autant de fois que vous avez de mC. Attention cependant, quand le mC est archivé puis redémarré depuis l’interface il change de nom, il faudra donc mettre à jour ce fichier de configuration.
Mettre à jour la distribution
%> aptitude update
%> aptitude upgrade
Installer rcconf
%> aptitude install rcconf
Dé-activer bind9
Lancer rcconf et décocher bind9 dans la liste. mdadm aussi, il n’y a pas de raid sur le cloud. La liste de ce qui est supprimable n’est pas exhaustive mais je n’ai pas cherché plus.
Installer un JDK
Rien de plus simple, on passe par aptitude :
%> aptitude install openjdk-6-jdk
Ensuite vérifier si il est bien installé :
%> java -version
java version “1.6.0_18″
OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-4ubuntu3)
OpenJDK Server VM (build 16.0-b13, mixed mode)
Installer Tomcat 6.0
%> aptitude install tomcat6 tomcat6-admin libtcnative-1
L’installation de libtcnative-1 nous permet d’avoir Tomcat qui utilise APR. Nous installons aussi tomcat6-admin pour avoir les applications d’administration de Tomcat. Elles nous seront utiles pour déployer de nouveaux contextes. Il nous faut ensuite installer les API JavaMail et JavaBeans Activation Framework (JAF) :
%> aptitude install libgnujaf-java libgnumail-java
Ajouter ces bibliothèques dans celles chargées par Tomcat.
%> ln -s /usr/share/java/gnumail.jar /usr/share/tomcat6/lib/
%> ln -s /usr/share/java/activation.jar /usr/share/tomcat6/lib/
Il est possible de modifier les paramètres utilisés par la jvm qui lancera tomcat en éditant le fichier /etc/default/tomcat6. Par exemple :
JAVA_OPTS=”${JAVA_OPTS} -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Xms64m -Xmx256m -Dfile.encoding=UTF8 -XX:MaxPermSize=128m”
Installer Oracle XE
Ajouter la source oracle à la liste des sources (inspiré de la doc ubuntu-fr) :
%> vi /etc/apt/sources.list
Ajouter la ligne :
deb http://oss.oracle.com/debian unstable main non-free
Puis faire les commandes :
%> wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
%> aptitude update
%> aptitude install oracle-x
Le soucis, c’est qu’Oracle XE a des besoins minimum en ressources et qu’il les vérifie avant de s’installer. Sur un mc classique, on va tomber sur un message de ce genre :
This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 1024 MB of swap space. This system has 0 MB
of swap space. Configure more swap space on the system and retry the installation.
En effet, les mc viennent avec aucun swap… Comme il n’est pas possible de faire une installation d’Oracle XE sans swap, on va essayer d’en créer un. Il veut un swap de 1024 Mo, alors on va lui en donner un en prenant sur l’espace disque :
%> dd if=/dev/zero of=/swapfile bs=1M count=1024
%> mkswap /swapfile
%> swapon /swapfile
Nous pouvons re-essayer d’installer XE :
%> aptitude install oracle-xe
Et configurer XE :
%> /etc/init.d/oracle-xe configure
Attention à ne pas laisser APEX sur le port 8080, nous avons en effet Tomcat qui l’utilise. Prenons le 9090 par exemple.
Nous allons aussi paramétrer bash pour avoir les variables d’environnement pour lancer les commande imp et exp et sqlplus.
On ouvre le fichier .bashrc :
%> vi $HOME/.bashrc
Et on ajoute :
export PATH=$PATH:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_SID=XE
Charger ces modifications :
%> source $HOME/.bashrc
Nous aimerions bien pouvoir accéder à APEX depuis autre chose que localhost, alors on fait :
%> sqlplus
Se connecter avec l’utilisateur SYSTEM (le mot de passe a été définie à l’étape de configuration d’XE). Et saisir :
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
L’accès est donc maintenant possible par : http://ip.du.mC:9090/apex/
Utiliser le pilote JDBC d’Oracle
Pour pouvoir se connecter à Oracle depuis Tomcat, nous allons avoir besoin d’ajouter le pilote JDBC aux bibliothèques chargées par Tomcat :
%> ln -s ${ORACLE_HOME}/jdbc/lib/ojdbc14.jar /usr/share/tomcat6/lib/
Installer MySQL
%> aptitude install libmysql-java
CREATE DATABASE nomDB DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON db_base.* TO db_user @’%’ IDENTIFIED BY ‘db_passwd’;
Redémarrage après archivage du mC
Suite à un arrêt prolongé du mC, il peut changer de nom et d’ip (voir dans le manager ovh). Dans ce cas, Oracle ne sera plus accessible car il est assez sensible à ce genre de paramètres. Il va donc falloir réaliser plusieurs étapes :
Étape 1 : Renommer le host
Le nom publique de la machine est basé sur l’ip, par exemple mc-178-32-111-111.ovh.net. Si l’ip a changé, son nom aussi, cependant la configuration de la VM n’en tient pas compte. Il faut donc éditer le fichier configuration correspondant :
%> vi /etc/hostname
Et adapter le nom du hostname avec le nom affiché dans le manager OVH. Pour que la modification soit prise en compte :
%> service hostname start
On peut vérifier avec :
%> hostname --fqd
Étape 2
Il faut ensuite stopper Oracle XE – si il est actif :
%> service oracle-xe stop
Puis changer sa configuration :
%> vi $ORACLE_HOME/network/admin/listener.ora
Rechercher un bloc qui ressemble à ceci :
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = mc-178-32-xxx-xxx.ovh.net)(PORT = 1521))
))
Et adapter le HOST=mc-178… avec la valeur qui a été utilisée dans l’étape 1.
Ensuite on redémarre Oracle :
%> service oracle-xe start
Ne pas s’embêter avec le changement d’IP
Il est aussi possible d’avoir une adresse fixe pour chaque mC. Pour cela, depuis l’interface d’administration du mC, il faut ouvrir le détail du projet courant en cliquant sur l’icône “Éditer ce projet“. Dans le dialogue qui s’ouvre, repérer le champ “Zone (DNS)“. Il faut récupérer cette valeur et la concaténer avec le nom du mC. Exemple :
- Nom du mc : mon-test
- Zone DNS : abcde.project.ovh.net
- Résultat : mon-test.abcde.project.ovh.net
- Je peux donc accéder au Tomcat installé sur le mC via : http://mon-test.abcde.project.ovh.net:8080
Ce n’est pas très intuitif à mémoriser comme url, mais il est possible de faire une entrée CNAME dans votre DNS. Et hop ! Le tour est joué
_statusDB = null;
January 15th, 2011 — AGPL - GNU Affero General Public License, GPL - General Public License, Java, LGPL - Lesser General Public License, Lien, Logiciel, OSL - Open Software License, PHP, Serveur
Pour créer un site e-commerce, voici quelques outils open-source :
- Thelia : Projet mené par une société française de Clermont-Ferrand (Licence GPL, PHP)
- TomatoCart : C’est un nouveau projet qui est parti d’OSCommerce pour apparemment tout refaire (Licence GPL, PHP)
- Prestashop : Produit d’origine française (Licence OSL, PHP)
- Magento : Une solution réputée (Licence OSL, PHP)
- KonaKart : Une des rares solutions en Java (Licence LGPL, Java)
- JadaSite : Une autre solution en Java (Licence GPL, Java)
- ReOS : Un peut particulier puisqu’il s’agit de faire un site d’annonces immobilières (Licence GPL, PHP)
- OXID eSales : Solution en double licence (Licence GPL, PHP)
Wikipedia propose une liste de produits Open-source d’e-commerce, elle n’est pas plus complète que celle-ci, mais propose d’autres outils.
November 20th, 2010 — Réseau, Serveur, Technique
Un CDN permet d’améliorer la réactivité du chargement d’une page web en déléguant l’hébergement de certains contenus à des serveurs spécialisés qui sont souvent répartis à travers le globe pour être au plus prêt des utilisateurs.
Voici un projet intéressant qui permet de se construire un CDN en utilisant GoogleAppEngine : Cirrux-Cache.
Sinon voici quelques fournisseurs de service CDN :
- CacheFly
- Amazon Cloudfront
- Rackspace Cloudfile
- Cloudlayer
September 20th, 2010 — Article, Documentation, Java, Lien
Petite série d’article sur les fuites mémoire (memory leak) en Java :
Les outils :
- MAT qui se base sur Eclipse, mais dispose d’un client indépendant pour ceux qui n’utilisent pas Eclipse
- VisualVM qui se base sur Netbeans, mais dispose d’un client indépendant pour ceux qui n’utilisent pas Netbeans
Ne pas croire que parce-qu’il y a un garbage collector la gestion de la mémoire doit être ignorée. Surtout dans un contexte d’applications web où l’empilement des class-loaders rend difficile d’avoir une vision claire.
September 20th, 2010 — Apache License, API, Développement, Java, Lien, Serveur
Une base de données objets basée sur le moteur NoSQL OrientDB :
Orient ObjectDatabase
September 20th, 2010 — Développement, En-ligne, Lien, Technique
Voici une liste de service proposant un hébergement Mercurial (Hg) :
- Repository Hosting : 6$ par mois, projets et utilisateurs illimités. 2go d’espace,
- Google Project Hosting : Uniquement des projets OpenSource. Gratuit.
- Bitbucket : Autant de projets publiques que l’espace autorisé le permet (1Go en gratuit, 2.5Go pour $5/m, etc…). Nombre de projets privés est fonction du plan choisi.
- Indefero : 49£/an pour 1Go. Projets privés et publiques illimités.
- CodeBase.
September 7th, 2010 — Brève, Uncategorized
Le site Internet Actu.net propose un bon article présentant largement le phénomène DIY et tout ce que cela englobe (beaucoup de liens) : La prochaine révolution ? Faites-la vous même !.
Liste de liens bricolage/DIY/geekeries :
- SEMAGEEK : Le Magazine High Tech, Robotique, Électronique et DIY (fr)
- Made in FR : Ce site regroupe des contributions en français de bidouilleurs, bricoleurs, électroniciens, adeptes de bidouillabilités, pour faire court : de passionnés du « fait soi-même » (fr)
- MakeZine (en)
- Instructables : Make, How To, and DIY(en)
- Microtouch : Pour faire un système tactile
Cartes, pour construire ses propres systèmes :
- pandaboard : basée sur un ARM-Cortex 9
- TinkerForge Bricks, présenté dans le forum de linuxfr, semble open-hardware.
- Nanode : solution dans le style arduino mais avec une connectivité web intégré, pour se construire son réseau communiquant de capteurs par exemple.
- Seeedstudio : pour acheter plein de matériel open-hardware