Application Android “Les-Horaires”

Je vous présente l’application Android Les-Horaires, qui permet de trouver des points d’intérêts (commerces, bars, postes, …) à proximité d’un lieu ou de vous, et de connaître les horaires d’ouverture!

 

Vous trouverez une description sur la page du projet et vous pouvez télécharger Les-Horaires sur le Google Play Store.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Plugin jQuery VInlinEdit: Inline Edit with VI (Command Line) style

Pour les besoins de MyOnlineSSH, j’ai développé un plugin jQuery qui permet l’édition d’un <span> (ou autre) avec un style à la vi, ou plutôt à la ligne de commande.

Exemple

Vous pourrez trouver deux exemples d’utilisation dans le répertoire examples du dépôt GitHub. Voici une copie d’écran de l’exemple proposant une implémentation ultra-light d’une saisie de commandes.

Téléchager

La librairie se trouve sur GitHub, le README sert, pour le moment, de documentation. N’hésitez pas à forker et soumettre des pull requests !

https://github.com/sroze/jquery-plugin-vinlinedit

facebooktwittergoogle_plusredditpinterestlinkedinmail

JavaScript: Synchroniser des événements asynchrones

Un des problèmes récurrents du développement événementiel est que l’on a parfois besoin de synchroniser l’exécution d’une fonction. En effet, il est parfois important qu’une fonction finisse avant d’en appeler une autre, ou bien elle-même une nouvelle fois. Dans mon cas, je vais vous montrer comment synchroniser un événement JavaScript (en l’occurrence un keydown) pour que le trigger que vous lui avez affecté ne s’exécute pas deux fois en parallèle, grâce à une librairie à l’heure actuelle peu connue: jsAsyncQueue.

Le problème

Prenons comme exemple le code JavaScript suivant (utilisant la librairie jQuery):

Dans cet exemple, on récupère la valeur actuelle d’un input pour la traiter puis mettre à jour la valeur du champ de texte. C’est un exemple un peu bête mais qui résume bien le problème… Si j’appuie rapidement sur mes touches, on comprend bien qu’on peut avoir plusieurs exécutions de la fonction de trigger en parallèle. Ainsi, la valeur que l’on a récupéré au début de notre fonction n’est plus valable à un certain moment parce qu’une autre exécution du trigger l’as modifié en parallèle.

Continue reading JavaScript: Synchroniser des événements asynchrones

facebooktwittergoogle_plusredditpinterestlinkedinmail

Webistrano: Net::SSH::AuthenticationFailed error

Si vous avez une erreur Net::SSH::AuthenticationFailed avec Webistrano (ou Capistrano), vous êtes peut-être en présence du bug de Net::SSH que je vais vous présenter. Avant, vérifiez ces points-ci:

  • Le nom du serveur (et l’IP qui va derrière) est bon.
  • Le nom d’utilisateur est bon.
  • Vous pouvez vous connecter à votre serveur en utilisant ssh user@server.example.com en tant que l’utilisateur qui exécute Webistrano (ie la configuration runner) ou bien l’utilisateur qui lance le cap.

Si vous pouvez vous connecter au serveur avec une paire de clé (ou un mot de passe) depuis votre runner, vous pouvez essayer ce correctif. Sinon, cherchez ailleurs, ça n’est sûrement pas la solution de votre problème. En fait, le problème vient de la librairie Net::SSH de Ruby, qui n’arrive pas à se connecter si on ne lui passe pas l’option de configuration auth_methods.

Pour tester

Pour être sur que le correctif que je vous propose résoudra votre problème, nous allons tester le déploiement en utilisant le fichier CAP directement. En fait, c’est le fichier que Webistrano génère pour que Capistrano déploie votre application.
Ainsi, dans Webistrano, cliquez sur le stage de votre projet, puis Export CAP file. Copiez le contenu de ce fichier dans le répertoire de travail du runner de votre stage. Pour moi, le runner est webistrano, le fichier sera donc ici: /home/webistrano/tmp/test-webistrano.cap.

Ajoutez à votre fichier cap la ligne de configuration suivante, avec la section “TEMPLATE TASKS”.

Note: si vous utilisez une autre méthode d’authentification, changez donc le nom… Vous pourrez trouver une liste exhaustive dans la documentation de Net::SSH.

Ensuite, testez le déploiement avec Capistrano, qui est dans le répertoire des librairies de Webistrano. Dans mon exemple, (où la racine de Webistrano est /home/webistrano), je lance le déploiement comme ceci:

Pour résoudre

Continue reading Webistrano: Net::SSH::AuthenticationFailed error

facebooktwittergoogle_plusredditpinterestlinkedinmail

Gentoo: Pas de fichier de log avec Postfix

Après avoir mis en place Postfix avec Postfixadmin sur un système Gentoo, je me suis rendu compte qu’aucun fichier de log n’était créé par Postfix. En réalité, je n’avais simplement pas installé rsyslog. Vous pouvez l’installer comme ceci:

Éditez maintenant le fichier /etc/rsyslog.conf, et si vous n’avez pas cette ligne, ajoutez-la:

Le fichier de log /var/log/maillog est créé un contiendra maintenant les logs de Postfix.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Redmine (Ruby) `load_missing_constant': Object is not missing constant Issue! (ArgumentError)

Lors de l’installation conjointe de Webistrano (voir Installer Webistrano avec nginx et PostgreSQL sous Gentoo) et de Redmine (voir Installer Redmine avec PostgreSQL) sur un même serveur, Redmine m’as quelque peut surpris on me sortant cette erreur:

Après de nombreuses recherches, j’ai résolu le problème en ajoutant une petite ligne au fichier config/environnement.rb de Redmine:

Après la ligne suivante:

:)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Installer Webistrano avec nginx et PostgreSQL sous Gentoo

Webistrano est une application Web développée en Ruby On Rails permettant le déploiement automatisé de vos applications, qu’elles soient Web ou non. Ainsi, via le front-end Web, vous n’aurez qu’à appuyer sur un bouton pour que Webistrano récupère vos sources depuis un dépôt (svn, git, …) et depuis un répertoire et le déploie sur votre ferme de serveurs, en lançant par exemple les différents tests que vous aurez effectués. Si une erreur apparaît, Webistrano annule tous les changements et laisse l’application fonctionnelle comme elle l’était.

Pour installer Webistrano, vous avez besoin de Ruby On Rails, d’un serveur Web et d’une base de données. Je vais utiliser nginx comme serveur Web et PostgreSQL comme base de données. Je ne vais pas vous expliquer comment installer nginx et PostgreSQL, il y a déjà de très bons articles qui vous l’expliquent.

Installation du Ruby On Rails

Pour installer Ruby On Rails sur Gentoo, rien de plus simple, installer rudy puis le gem rails :

Configuration de la base de données

Nous allons créer une nouvelle base de données pour Webistrano, ainsi qu’un nouvel utilisateur:

Téléchargement et configuration du Webistrano

On va télécharger le tarball de la dernière version de Webistrano depuis le dépôt GitHub et décompressez le à l’endroit que vous souhaitez. Ici, le chemin de Webistrano sera /home/www/webistrano/.

Ensuite, nous allons configurer Webistrano en éditant les fichiers de configuration mais avant il faut les créer à partir des modèles fournis:

Continue reading Installer Webistrano avec nginx et PostgreSQL sous Gentoo

facebooktwittergoogle_plusredditpinterestlinkedinmail