MyFacebookSpace

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 30 juin 2010

Installer ejabberd sous Mac OS X depuis le repository Git

Tout est dans le titre, l'idée est de pouvoir installer depuis les sources afin d'avoir un environnement de developpement de modules ejabberd "up and running" :)

Dans les pré-requis il faut évidemment disposer d'erlang et de Git sur sa machine.

A titre personnel j'ai éprouvé des difficultés a compiler Ejabberd avec la version Erlang de macports ainsi qu'avec une version d'Erlang compilé spécialement pour ma machine.

As always la solution la plus simple était en fait la meilleure : j'ai installé Erlang via l'excellent Homebrew, et comme vous allez le voir dans la suite de ce post, cela permet de réaliser une installation simple et efficace d'un environnement de développement autour d'Ejabberd.

Versions utilisées dans ce tutorial : 

Erlang : R13B04

Ejabberd : 2.1.4

Lire la suite...

lundi 28 juin 2010

Erlang : shell, supervisor et propagation des erreurs
















Une petite note au cours de mon apprentissage d'Erlang sur la propagation des erreurs.

C'est un complément au chapitres 5 et 6 de cet excellent livre.

Le problème en résumé : 

Il s'agit d'un serveur hello world, dont la mise en oeuvre est assuré par l'utilisation des behaviour supervisor et gen_server du framework Erlang/OTP.

Le serveur propose du stockage clé/valeur et de la recherche sur les clé.

Volontairement pour tester l'aspect "supervisor" de notre serveur, une erreur dans la logique applicative (sur la fonction "retrieve/1") a été crée afin de produire un crash et de vérifier si le processus supervisor effectue correctement sa tâche :)

Pas de souci sur la mise en oeuvre de cet exemple mais comme le fait remarquer l'ouvrage pour bien tester ce comportement il faut prendre une précaution particulière : 

Démarrer le supervisor et lancer une fonction cliente du serveur depuis 2 shell erlang différents.

La raison est simple, voici ce qu'il se passe si le démarrage du superviseur et l'appel a une fonction cliente sont effectués depuis le même shell :

L'erreur coté serveur va provoqué un crash du processus effectuant l'appel client (shell:eval).

Le processus shell:eval propage l'erreur jusqu'au supervisor (lui aussi linké à notre shell:eval, car il a été lancé via la ligne de commande).

Le supervisor avec trap_exit a true va recevoir le signal EXIT mais il ne gère que les signaux EXIT correspondant au Pid du serveur hellosrv).

Il va se terminer,ne nous permettant pas de le tester (et verifier s'il a bien redémarré le serveur hellosrv).

Le processus shell:eval se termine et un nouveau processus shell:eval est créé.

voici les liens entre processus qui expliquent ce comportement :

Un comportement simple mais qui juste avec le livre, n'est pas forcement évident à comprendre dans les moindres détails ;)

vendredi 9 avril 2010

MacOSX Mysql Ruby & MAMP : des pépins dans la pomme

apple-ny
Vous développez en php, sous macosx en utilisant MAMP ? 
Si oui tôt ou tard vous viendrez à utiliser rake ou chef pour gerer le build de vos projets, et là c’est le drame niveau gem Mysql pour ruby ...  
Voila comment installer la gem proprement en quelques étapes !  
Pour compiler proprement la gem mysql il est nécessaire de completer ce que MAMP installe par défaut (juste les binaires indispensables pour le serveur). 
Les opérations suivantes vont ajouter à MAMP des librairies utiles a la compilation de programmes clients  pour mysql et aussi les header des sources mysql.
Voila ce qui se produit avec MAMP fraichement installé 
mulpro:build mulder$ sudo gem install mysql  
Password:  
Building native extensions.   
This could take a while...  
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb  
 checking for mysql_query() in -lmysqlclient... no checking for main() in -lm... yes  
 checking for mysql_query() in -lmysqlclient... no  checking for main() in -lz... yes 
 checking for mysql_query() in -lmysqlclient... no  
 checking for main() in -lsocket... no 
 checking for mysql_query() in -lmysqlclient... no  
 checking for main() in -lnsl... no
 checking for mysql_query() in -lmysqlclient... no  
 checking for main() in -lmygcc... no
 checking for mysql_query() in -lmysqlclient... no
 Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out  
Pour mamp 1.8.4, il faut télécharger les sources MAMP_components_1.8.4.dmg
Copier le répertoire MAMP_src contenu dans cette image où vous le souhaitez sur votre disque. 
Aller dans ce répertoire et décompressez mysql-5.1.37.tar.gz  
mulpro:~ mulder$ cd developpement/MAMP_src/  
mulpro:MAMP_src mulder$ tar -xzf mysql-5.1.37.tar.gz 

puis  

cd mysql-5.1.37
On  compile juste les librairies clientes (MAMP a dejà le serveur)  
mulpro:mysql-5.1.37 mulder$ ./configure --with-unix-socket-path=/Applications/MAMP/tmp/mysql/mysql.sock --without-server --prefix=/Applications/MAMP/Library  
mulpro:mysql-5.1.37 mulder$ make -j2
le -j2 permet de gagner un peu de temps sur l’opération de compilation (2 jobs simultanés pdt la compil).
On complète MAMP avec les librairies fraichement compilées :  
mulpro:mysql-5.1.37 mulder$ cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql
En plus de ces librairies les header des sources de mysql sont aussi nécessaires pour compiler la gem ruby : 
mulpro:mysql-5.1.37 mulder$ mkdir /Applications/MAMP/Library/include  
mulpro:mysql-5.1.37 mulder$ cp -R include /Applications/MAMP/Library/include/mysql  
Juste avant de compiler la gem tant attendue, une petite mise a jour de gem :  
sudo gem update --system 
Et enfin :  - si votre OS est 32 bits  
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config 
Et pour un OS 64 bits 
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config  
qui doit produire 
Building native extensions.  
This could take a while...  Successfully installed mysql-2.8.1  1 gem installed  

Ne tenez pas compte des erreurs RDocs, elles sont sans impact !

mercredi 7 avril 2010

Le Ohm Studio est annoncé

Screenshot2010-04-07at15.25.12.4nNk0QAWlAwh.jpg 
Après 2 années passées a Ohm Force voici enfin quelque chose de visible par tous !
Dans le trailer le site web sur lequel je travaille au quotidien, basé sur drupal apache solr et ejabberd.
Le site de communication actuel sur http://www.ohmstudio.com est lui aussi basé sur drupal et un hebergement amazon.
Inscrivez vous pour la beta et laissez nous vos impressions en commentaires sur la video youtube :

jeudi 25 mars 2010

Kite-Surf au Yucatan

​ Une reprise du blog avec un post non geek pour changer suite a mon voyage au mexique ! J’ai voulu mêler tourisme et kite-surf lors de mon dernier voyage et j’ai donc googler pour obtenir un point de chute sympa pour pouvoir faire du kite. L’endroit idéal semblait etre Playa Del Carmen avec 5 écoles sur place. Une fois arrivé sur place j’ai découvert que les écoles étaient bien là, mais sur place très peu de kite possible :/ Le seul spot à playa est situé sur un bout de plage privée appartenant au complexe hotelier “playacar” (Le meilleur hotel a choisir pour faire du kite à Playa del Carmen du coup). Les écoles sur places proposent des trip Vers Tulum, Punta Venado ou Isla Blanca (cf après). Bilan : Un endroit de chute bien pour le tourisme mais moyen pour le Kite ! Passons les spots ci-dessus en revue :
  • Isla Blanca : Le meilleur spot. Je n’ai pas eu l’occasion d’y aller (150km de là ou j’etais) mais d’après tous les moniteurs rencontrés sur place, le meilleur spot a priori : un lagon tout plat avec de l’eau jusqu’au haut des cuisses !
Ce spot se trouve au nord de Cancun (cf maps ci-après)
  • Punta Venado / Blue Venado : une plage privée au milieu de la Jungle, a 20mn en voiture au sud de playa del carmen. l’acces doit se faire via l’ecole presente sur la plage qui a aussi une antenne a playa del carmen (calle 28) , et il faut soit payer 10$ de droits d’accès
soit consommer au restaurant sur un autre bout de la plage (site web : www.bluevenado.com). Le spot est beau mais pas vraiment idéal pour les débutants : peu de plage (environ 6 a 7 m maxi a marée basse de plage entre la jungle et l’eau !! ) mais pour ceux qui ont un bon niveau c’est comme un half pipe pour le kite quand le vent est onshore : du plat sur les bords de l’anse et des vagues juste comme il faut en plein milieu.
  • Tulum : pres de playa paraiso se trouve un bon spot de kite surf. le second meilleur spot du coin pour débutants apres Isla blanca.
  • Sandos Playacar : le spot a playa del carmen mentionné au début, mais nécessite de s’introduire dans le complexe hotelier en douce ....

Et la map récapitulative


Afficher spots kite surf Yucatan sur une carte plus grande

mardi 7 avril 2009

Drupal 6.x et AWS

Hello après plusieurs mois de silence et de travail intensif sur drupal et les outils amazon pour un nouveau grand projet, voici en guise de récompense pour cette longue attente un module permettant l'integration de la librairie Tarzan a Drupal.

Et aussi un changement de theme de photo, ici une sculpture de sable sur une plage barcelonaise.

Je vais completer ce post afin de détailler un peu plus tout ça mais en attendant voici le zip du module :

creeper.zip

Il devrait bientot avoir sa propre section sur le site drupal.org

Edit : c'est chose faite http://drupal.org/project/creeper

vendredi 2 mai 2008

Tomcat 6 avec l'apache portable runtime

Installer Tomcat 6 est couvert dans de nombreux tutoriaux.

Dans ce post, je vais couvrir l'installation de tomcat 6 avec l'Apache Portable Runtime, ce qui permet au serveur tomcat d'utiliser des librairies natives pour gérer le SSL ou pour servir des fichiers statiques par exemple.

Lire la suite...

- page 1 de 3