Allez voir mon nouveau blog: juliendesrosiers.com/blog !
Singe

Déployer une application Lua (orbit) sur Webfaction

Pour déployer une application Lua faite avec le framework orbit sur Webfaction, voici comment j’ai procédé :

Premièrement il faut installer Lua, Luarocks et les rocks nécessaires (orbit, wsapi, et autres)

1-Pour installer Lua:
cd ~/bin
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar xzf lua-5.1.4.tar.gz
cd  lua-5.1.4
make local

Ensuite il faut mettre le repertoire de votre installation de Lua dans votre variable $PATH. Pour faire ça, éditez le fichier .bash_profile et ajoutez ceci a votre variable : /home/<votre_user_webfaction>/bin/lua-5.1.4/bin/ . Par exemple, vous devriez avoir quelque chose du genre :
export PATH=/home/julien/bin/lua-5.1.4/bin/:$PATH

2-Pour installer Luarocks:
cd ~/bin
wget http://luarocks.org/releases/luarocks-2.0.2.tar.gz
tar xzf luarocks-2.0.2.tar.gz
cd luarocks-2.0.2
./configure –prefix=/home/<votre_user_webfaction>/bin/lua-5.1.4
make
make install

Bravo! Vous venez d’installer luarocks! Pour tester, faite la commande luarocks.

3-Maintenant pour installer des rocks (l’equivalent des gems en Ruby):
luarocks install orbit
luarocks install wsapi
luarocks install cosmo
luarocks install wsapi-xavante

Maintenant il faut configurer Webfaction pour qu’il serve notre application orbit programmée en Lua.

1-Connectez-vous à votre panel : https://panel.webfaction.com/
2-Créez un Domain (en allant dans Domains/websites). Un sous-domaine ferait aussi l’affaire.
3-Créez une Application. Donnez-lui un nom et pour le App type, choisissez Custom app (listening on port) et notez le port qui sera assigné pour votre application. Nous allons utiliser ce numero de port plus tard.
4-Maintenant, créez un Website pour joindre votre Domain avec votre Application
5-En SSH maintenant, allez dans ~/webapps/<nom_de_votre_app>/
6-placez le fichier de votre application Lua (exemples ici : http://luanova.org/orbit1-2/ ) qui est un fichier app.lua (vous pouvez nommer votre fichier comme bon vous semble).
7-faite la commande orbit -p<num_de_port> app.lua . Par exemple dans mon cas c’etait: orbit -p38353 app.lua .
8-Maintenant allez voir a l’adresse de votre application : http://<votre_domain>/ et vous devriez voir votre application. (Notez que vous n’avez pas besoin de fournir votre port d’application dans l’adresse parce que Nginx redirige de toute façon votre port custom au port 80). Enfin, c’est comme ça que je le comprends.

Si vous voulez arrêter votre application faites CTRL-C dans la session ssh dans laquelle roule orbit .
Si vous voulez que votre application continue à rouler même quand vous quitterez votre session SSH, faite votre commande orbit dans une session Screen (plus d’infos a propos de screen: http://jmcpherson.org/screen.html) .
Vous pouvez aussi vous configurer un Cron Job pour que ça reparte votre application si elle ne roule pas. Mais ça nécessiterait un petit script aussi qui vérifie au préalable si l’application roule bien.

Voilà!

9 May 2010, 6:43am Uncategorized leave a comment |

Backuper toutes mes DB MySQL sur un serveur distant

Ça fait longtemps que je cherche un truc simple qui puisse me permettre de faire un backup à chaque jours de mes bases de données pour mes projets en développements, et ce, sur un serveur distant*. En cas de problème au moins je ne perdrais pas le schéma et les données initiales qui seraient dans les tables de ces DB.

Donc sans plus attendre :

#!/bin/bash
MYSQLUSER=root;
MYSQLPASS=root;
SSH=user@backup.server.com;
for I in $(mysql -e 'show databases' -u $MYSQLUSER --password=$MYSQLPASS -s --skip-column-names);
    do mysqldump -u $MYSQLUSER --password=$MYSQLPASS $I | gzip -c | ssh $SSH "cat > /home/user/mysqlbackups/$I-`date +%Y_%W`.sql.gz";
done

Voici un résumé de ce que ça fait :

  • Pour chaque nom de database mysql,
  • faire un mysqldump
  • gzipper (compresser) le output de mysqldump
  • Envoyer par SSH le output de gzip dans un fichier nommé selon le format “dbname-2010_52.sql.gz” (où 2010 est l’année et 52 est la semaine (00-52)) vers le serveur distant,
  • dans le répertoire spécifié (/home/user/mysqlbackups/)

Je met ce code dans un fichier mysqlbackup.sh auquel je permet l’exécution (chmod a+x mysqlbackup.sh).
Ensuite, j’ajoute une entrée à mon crontab (Mac OS ici) pour que ce script soit exécuté à tous les jours à 14h00 :

0 14 * * *                 /Users/juliend2/scripts/mysqlbackup/mysqlbackup.sh



*Vous cherchez un bon serveur? Ces jours cis je suis comblé de bonheur avec WebFaction.


7 Mar 2010, 10:57am Uncategorized leave a comment |

Nouvelle version de MontrealHackers.com!

En fin de semaine j’ai reprogrammé montrealhackers.com en Python avec le framework Django. J’ai aussi refait l’interface. Et en plus on gagne en rapidité: Avant on avait du 3.5 req/secondes. Maintenant ça fournis ~4.8 requêtes/secondes.

Vive Webfaction!

17 Jan 2010, 4:58pm Uncategorized leave a comment |

Nouveau design pour MontrealHackers

Il y a du nouveau sur montrealhackers.com .

Premièrement, on a un nouveau design plus h4ck3r que jamais!

Ensuite, les abonnés du feed l’auront remarqué; j’ai ajouté le champ description. Avant ça affichait juste le titre.

J’ai pas fini d’implémenter de nouveaux features donc revenez souvent! J’attends vos commentaires : )

PS : Merci à Jérôme pour les suggestions ; )

25 Jul 2009, 7:25pm Uncategorized 1 comment |

Montreal hackers a maintenant un Twitter bot!

Éh oui, MontrealHackers.com a maintenant un Twitter Bot pour vous servir les dernières nouvelles de la blogosphère hackeuse de Montréal direct dans votre Twitter. Followez le!

J’ai un peu rushé à installer certains gems pour permettre de Tweeter plus facilement. J’ai tellement été désespéré que j’ai même commencé à réécrire MH en CakePHP. Vous imaginez, mes frère, combien j’étais désespéré de ne pouvoir faire ça en Ruby? Oh je sais. Honni je suis. Mais maintenant j’ai redécouvert la lumière en gossant encore un petit peu plus avec ma version en Sinatra.

Voilà. C’est mon aventure de ce samedi matin (et d’hier soir) de pure hacking pour le délice de vos cerveaux. ;)

Au plaisir!

11 Jul 2009, 8:51am Uncategorized leave a comment |

5 services dont je ne pourrais me passer

Pour notre travail on utilise plusieurs services Web et desktop pour améliorer notre productivité. Voici une petite liste des indispensables :

1-Repository Hosting (repositoryhosting.com)

C’est un service d’hébergement de dépôt Git et SVN. À la GitHub, mais sans le social-candy. C’est juste pour héberger nos sources pour les projets que l’on fait. Donc pour un petit 6$ par mois nous avons droit à autant de dépôts Git que nous avons besoins. Tant que ça ne dépasse pas 2gig. C’est vraiment avantageux si on compare à GitHub. (Merci à 404 pour le tuyau)

2-BaseCamp (basecamphq.com)

BaseCamp est une application de gestion de projet collaboratif. C’est fait par 37signals, qui est la compagnie qui a créé Ruby on Rails. C’est très bien fait et ça permet entre autre d’assigner des tâches à tout ceux qui participent à un projet avec vous.

3-DropBox (getdropbox.com)

DropBox est une application Web qui vient avec un client desktop. Vous choisissez votre dossier à synchroniser avec DropBox et celui-ci sera automatiquement synchronisé avec votre compte dropbox sur le web. La synchronisation s’occupe aussi de versionner vos fichiers (à la Git, mais transparent; aucune commande à faire) automatiquement. Le plus beau dans tout ça c’est que vous pouvez rapidement (un right-click sur un fichier) récupérer l’adresse publique d’un fichier pour le partager (coller l’url dans un courriel). C’est Vraiment utile pour partager rapidement des fichiers. Je l’utilise entre autre pour faire ma liste d’épicerie dans un fichier txt sur mon ordi que j’accède par son adresse dropbox sur mon ipod touch (safari). Son utilité n’a de limite que votre imagination!

4-FreshBooks (freshbooks.com)

Pour facilement et rapidement facturer mes clients et leur envoyer des estimés. Ça envoie le lien web des factures par courriel et on peut savoir lorsqu’un client s’est logué pour consulter une facture ou un estimé. Vraiment pratique pour faire un suivi aussi; ça contient une fonctionnalité de rappel de paiement lorsqu’un client oublie une facture. Je ne m’en suis jamais servi mais je vois l’utilité. Et c’est cool.

5-RescueTime (rescuetime.com)

Et si vous aviez un logiciel qui calcule combien de temps vous passez devant chaque application et adresse web? Qui vous permet de tagger vos applications et urls les plus utilisées en tant que Travail, Amusement, Perte de temps et autres? C’est exactement ce que fait RescueTime. Ça vient avec un client desktop qui se connecte à votre compte et met constamment à jour votre utilisation de vos logiciels et urls pour vous donner une vue globale sur votre productivité et vous offrir une vision objective des sources de perte de temps. Pour vous aider à les réduire, biensûr ;) . J’utilise la version gratuite (solo) et je trouve ça vraiment impressionnant comme idée.

Voilà. Si vous en connaissez d’autres, ajoutez-les dans les commentaires :)

14 Jun 2009, 7:45am Uncategorized leave a comment |

Déménager son repository de GitHub vers RepositoryHosting

Je suis un gros fan de GitHub. Mais dernièrement il y a eu de légers downtimes qui m’ont un peu frustré parce qu’ils arrivaient au moment même où je m’en servait.

C’est en lisant un post de mes amis de chez QuatreCentQuatre que j’ai entendu parler de RepositoryHosting et de leur fameux forfait à 6$ par mois pour un nombre illimité de repositories (à l’intérieur des limites généreuses de 2 gig).

J’ai essayé ça pendant quelques semaines pour des projets en production. Finalement je trouve que ça fait la job. Donc aujourd’hui j’ai décidé d’enlever mes repositories privés de mon compte GitHub pour les déménager chez RepositoryHosting.

Voici les étapes :

  1. Dans préférence, si ce n’est pas déjà fait, allez ajouter vos clés publiques de vos serveurs de dev [et prod [et staging]]. Pour se faire, dans le terminal, on va commencer par aller chercher sa clé publique. J’ai fait cette vidéo qui explique comment. Mais n’oubliez pas (comme je l’ai fait) de cliquer sur Update Preferences lorsque vous avez ajouté votre clé, car les changements ne prendront effet qu’après ça.
  2. Maintenant, allez créer un nouveau repository dans l’admin de RepositoryHosting.
  3. Là assurez vous que tout vos changements ont été “commit”és et “push”és vers GitHub et que les serveurs (prod ou stage) qui y sont synchronisés ont la même version qu’en dev (votre machine locale).
  4. Sur votre machine de développement, vous allez supprimer la référence au repo sur GitHub en tapant cette commande à partir du terminal (en présumant que vous avez “cd” vers votre dossier de projet) :
    git remote rm origin
  5. Ensuite mettre la nouvelle url (celle fournie lors de la création de votre “repo” chez repositoryhosting) :
    git remote add origin ssh://git@jdesrosiers.repositoryhosting.com/jdesrosiers/nomdurepository.git
  6. Ensuite il faut faire cette ligne de commande :
    git config remote.origin.push refs/heads/master:refs/heads/master
  7. Maintenant on est prêt à envoyer les fichier de notre repository vers le repository vierge qu’on a créé chez RepositoryHosting :
    git push origin master
  8. Maintenant, logguez vous en SSH au serveur de prod et de staging (si vous en avez un) et faites les étapes 4 à 6 mais à partir de votre serveur. Quand vous serez dans le repository sur vos serveurs, faites un peu de config: Éditez le fichier .git/config qui devrait être à la racine de votre projet avec la commande nano .git/config .
    On va éditer cette partie :

    [branch "master"]

    afin que ça ressemble à ceci :

    [branch "master"]
      remote = origin
      merge = refs/heads/master

    Si tout fonctionne, vous devriez être en mesure de faire des changements en dev, de les “commit”, “push” et de les “pull” sur vos autres serveurs maintenant synchronisés avec RepositoryHosting.

13 Apr 2009, 9:10am Uncategorized leave a comment |

MacHeist 3

MacHeist a vraiment fait ma journée aujourd’hui.

J’y ai trouvé des petit bijoux de logiciels. Le tout pour seulement 40$ us. Je vous présente mon top 3.

Mon favori : The Hit List

C’est un petit gestionnaire de note. Rien de révolutionnaire. C’est juste le fun à utiliser. Avec une interface très belle. J’attends avec impatience la version iPhone pour synchroniser mes notes. Ça va remplacer ma feuille de note que je load dans Texmate pour mettre tout un tas de choses pêle-mêle.

Mon numéro 2 : Times

C’est un RSS reader, enrobé d’une interface de style Journal. Look classique mais efficace. Maintenant j’ai un logiciel pour perdre mon temps… Ça va remplacer plusieurs tabs de Firefox ;)

Mon jeu : World of Goo

Encensé par la blogosphère cette année, World Of Goo est un petit jeu sympa qui fait travailler les méninges et qui ne prend pas trop de ressources à votre Mac. C’est assez cool ce que deux dudes ont pu faire avec pas trop de budget.

Conclusion: pour 40$, on a eu droit à un package de logiciels d’une valeur de plus de 900$. Autant j’ai regretté avoir manqué le macHeist des dernières années, autant je suis content de ne pas l’avoir raté cette fois ci.

6 Apr 2009, 7:41pm Uncategorized 1 comment |

Intro à PhoneGap

Aujourd’hui j’ai découvert un beau projet Open-source qui va simplifier la vie à tant de monde : PhoneGap. Avant que je tombe là dessus, je ne comprenait pas que ce genre de framework n’existe pas. Mais pourtant j’avais tord! C’est vraiment béni parce que ça permet de faire des applications iPhone super facilement, sans avoir besoin de faire une seule ligne de Objective-C! (et pour ceux qui programment, je peut vous dire que c’est pas très intuitif d’apprendre ce langage. Mais c’est possible, je commence moi-même à comprendre la base).

En gros, c’est une librairie qui vous permet d’accéder aux fonctionnalités du iPhone, mais avec du Javascript, HTML et CSS.

J’ai fait une petite vidéo short and sweet qui montre comment ça marche en gros.

(Pour suivre avec moi ce tutoriel vous devez avoir XCode d’installé ainsi que le iPhone SDK. Pour télécharger PhoneGap j’utilise Git, mais vous pouvez tout aussi bien cliquer sur le lien Download à cette adresse : http://github.com/sintaxi/phonegap/tree/master.)

De plus, PhoneGap unifie plusieurs plateformes mobiles : Android et BlackBerry en plus du iPhone. Je pense que ça va rendre le développement sur mobile vraiment plus mainstream que ça l’est actuellement dû à la courbe d’apprentissage des langages pour ces plateformes (Java pour Android, Java et Wap pour BlackBerry).

25 Mar 2009, 8:03am Uncategorized: 17 comments |

MontrealHackers

Je m’ennuyais sévèrement l’autre jour à lire les nouvelles sur HackerNews (si un site peut être une drogue, HN est la mienne) et tout les blogs de geeks que je suis régulièrement. Et j’ai eu l’idée de faire un mashup pour tout réunir les blogs de codeurs/ingénieurs informatiques/hackers montréalais que j’apprécie.

J’ai appellé ça MontrealHackers parce que c’est surtout à Montréal que ça se passe. Mais je suis ouvert à tout blog de “code-ninja” des régions (du Québec) qui soit assez intéressant.

Ça va être uniquement centré autour des codeurs/programmeurs/hackers. Je n’ai aucune intention de donner une tribune aux tripeux de iPhone ou vedettes du SEO. Pas que c’est platte, mais c’est juste pas ma tasse de thé.

J’espère que vous vous abonnerez au feed RSS (Aussi tôt que j’aurai implémenté cette fonctionnalité lol!).

15 Mar 2009, 12:40pm Uncategorized leave a comment |