Archive

Archives pour la catégorie ‘Informatique’

gmate

13/05/2010

D’un côté je suis un utilisateur de Netbeans que je trouve très pratique pour développer avec Rails. Mais la bête est gourmande en ressources et demande de la place à l’écran pour être pleinement exploitée (mais je le trouve plus pratique qu’Eclipse quand la place est réduite). Pour éditer un petit script, ou pour travailler sur un netbook ça n’est pas l’idéal. Par ailleurs si Netbeans permet de travailler de manière très productive avec Subversion, il n’en est pas de même pour Git à ce jour.

D’un autre côté, je suis aussi un utilisateur de Vi. Dès que j’ai une console ouverte je vais automatiquement l’utiliser, quitte à … ouvrir une autre console pour vi ! Mais pour travailler sur un projet qui demande de naviguer beaucoup entre les fichiers je trouve que ça n’est pas très pratique. Je ne suis pas non plus un expert de cet outil.

Entre les deux il y a les éditeurs de texte en mode graphique, mais souvent il leur manque des petites choses bien pratiques pour être productif. Par exemple j’apprécie beaucoup SciTe pour sa légèreté, il est notamment très efficace pour ouvrir de très gros fichiers, mais on est loin d’un IDE.

Longtemps j’ai négligé Gedit, lui préférant justement SciTe pour sa rapidité. Mais il existe une solution pour le rendre plus pratique : gmate . C’est un mélange de plugins, de thèmes, et un exécutable permettant de lancer gedit à partir d’un répertoire donné et rendant la main.

L’essentiel des explications est ici : http://github.com/gmate/gmate . Le problème est ensuite de faire le tri entre les différents plugins pour voir ceux qui sont pratique ou non (selon les habitudes de chacun), ainsi que faire le tri pour éviter ceux qui ne semblent pas fonctionner correctement.

Très rapidement, l’installation sous Ubuntu 10.04 :

  • sudo add-apt-repository ppa:ubuntu-on-rails/ppa
  • sudo apt-get update
  • sudo apt-get install gedit-gmate

Pour adapter l’usage à Ruby et Rails, il faut modifier la gestion des espaces dans les préférences : choisir “Insérer des espaces au lieu des tabulations” et indiquer “2″ pour la largeur.

Après l’installation il y a un choix important de thèmes. Choisir celui qui convient est une activité chronophage !

Voici les plugins que j’ai retenu (en plus ceux activés par défaut) et qui semblent fonctionner correctement. C’est un choix à faire en fonction de ses propres habitudes de travail :

  • Extraits de code : permet de saisir rapidement en tapant quelques caractères puis TAB et zou…
  • Find in Files : ajoute un onglet dans la barre latéral permettant d’effectuer une recherche dans l’ensemble des fichiers à partir du répertoire du projet.
  • Rails File Loader : détecte les fichiers lié à RoR et adapte la coloration syntaxique. Pas forcément indispensable.
  • Regex Search and Replace : permet d’effectuer une recherche/remplacement dans le fichier courant en utilisant des expressions régulières, s’active avec Ctrl-Alt-H.
  • Save without trailing space : pour éviter le gaspillage en supprimant les espaces en fin de ligne et les sauts de lignes vides en fin de fichier.
  • Smart Indent : indentation automatique lors de la frappe.
  • Snap Open : permet d’ouvrir rapidement un fichier avec Ctrl-Alt-O et en ne saisissant qu’une partie du nom.
  • TabSwitch : permet de naviguer entre les onglets avec Ctrl-Tab comme dans la plupart des IDE, Firefox, …

Quelques informations complémentaires ici : http://blog.siverti.com.br/gmate/

Sam. Général, Informatique , ,

mongoDB

30/03/2010

Allez, un sujet à la mode : mongoDB, et plus largement le NoSQL.

Pourquoi ? Les RDBMS remplissent souvent bien leurs rôles, mais la manière d’aborder le problème est toujours la même. L’approche d’une base de données orientée document comme mongoDB est différente, tester en prenant du recul c’est s’intéresser à une autre manière de faire, de voir les choses sous un autre angle.

Développer avec un ORM (comme  avec ActiveRecord) c’est déjà avoir “le cul entre deux chaises”, poussons les choses encore un peu plus loin…

Lire la suite…

Sam. Informatique ,

PostgreSQL et la connexion locale

01/03/2010

Voici un petit casse tête qui a du arriver à plus d’une personne concernant PostgreSQL. Il s’agit de se connecter à une base de données locale avec un compte utilisateur fraîchement créé. Le contexte est ici Ubuntu 9.10 et PostgreSQL 8.4.

Vous créez une base de données et un utilisateurs (en étant superutilisateur bien entendu) :

create role toto login password ‘pwtoto’;

create database dbtoto with owner=toto encoding=’UTF8′;

Puis vous essayez de vous connecter à la base depuis un shell :

psql dbtoto -U toto

psql dbtoto -U toto -W

Et à chaque fois, c’est un échec… “psql: FATAL:  authentification Ident échouée pour l’utilisateur << toto >>”

Maintenant il y a de quoi perdre par mal de temps en contrôlant tout ce qu’on a pu faire, en ré-essayent, en consultant le “man” de psql, etc… Pourtant le message d’erreur contient ici un début de réponse : “Ident”.

En voulant se connecter de cette manière, le client va utiliser une connexion via socket Unix (et pas via TCP/IP). Or dans le fichier /etc/postgresql/8.4/main/pg_ident.conf il est indiqué que pour ce type de connexion le méthode d’authentification sera “ident”. Pour faire court, l’authentification de l’utilisateur est effectuée par le système d’exploitation, ce qui ici échouera puisque “toto” est inconnu en tant qu’utilisateur du système. Le détail de l’explication ici : Authentification fondée sur ident

Par contre en utilisant un socket IPv4 l’authentification sera “md5″, c’est à dire qu’il utilisera le mot de passe crypté envoyé par le client. Et là l’authentification sera effectuée en impliquant uniquement PostgreSQL. Pour forcer l’utilisation d’un socket IPv4 (et régler le problème) :

psql dbtoto -U toto -h localhost

Pour plus d’explication, se reporter au chapitre Authentification du client de la documentation de PostgreSQL, et prendre la peine de regarder ce qu’il y a dans son propre fichier pg_ident.conf.

Cette subtilité étant au niveau de la liaison entre client et serveur PostgreSQL, la problématique sera la même pour un processus tel qu’un serveur Web. Par exemple dans le fichier database.yml de Rails il faudra ajouter une entrée “host”, sans quoi la connexion échouera (Rails n’ajoute pas cette entrée par défaut).

Sam. Informatique ,

Ubuntu 8.04 et Ruby Enterprise Edition

21/02/2010

Bien qu’utilisant Passenger depuis un moment en production, je n’avais jamais testé Ruby Enterprise Edition (REE). L’envie était là, mais pas le besoin, la version standard de Ruby packagée avec les distributions Linux étant largement suffisante dans bien des cas.

Cette option peut devenir intéressante pour utiliser Ruby 1.8.7 sur Ubuntu LTS 8.04. Ce n’est pas la seule option, mais ça peut être l’occasion de faire d’une pierre deux coups en bénéficiant des apports de REE. Cette version d’Ubuntu sera encore maintenue pendant 3 ans, migrer vers la prochaine LTS (à venir) uniquement pour mettre à niveau la version de Ruby peut-être une opération lourde (selon le contexte) qu’il est possible d’éviter à court terme.

Pourquoi remplacer Ruby 1.8.6 par Ruby 1.8.7 ? Il peut-être souhaitable de ne pas avoir à valider ses développements sur plusieurs version même si le déploiement est effectuée sur des plateformes différentes. Une autre raison est qu’à court terme cette version risque d’être le minimum requis pour certains gems.

Lire la suite…

Sam. Informatique ,

Ruby et opérateurs : qui a la priorité ?

11/04/2008

Il y a un petit piège dans Ruby avec les opérateurs booléens utilisés conjointement avec une affectation. Le côté très intuitif du langage fini pas nous faire oublier quelques règles simples…

Dans une expression booléenne nil est considéré de la même manière que false. Ce qui amène quelquefois à utiliser une syntaxe du type :

machin or truc

Au lieu de (parmis d’autres solutions) :

if machin.nil?
# utiliser truc
else
# utiliser machin
end

Mais… il y a un piège. L’expression suivante ne se comporte absolument pas comme on pourrait le supposer :

toto = machin or truc # ca sent le bug ici

En fait l’opérateur d’affectation = a une priorité suppérieure à celle de l’opérateur or. Pour s’en convaincre il suffit de faire le test suivant avec l’interpréteur irb :

irb(main):001:0> toto = false or true
=> true
irb(main):002:0> toto
=> false

L’expression saisie est évaluée de la manière suivante : (toto = false) or true. Donc l’expression vaut bien true, mais la variable toto se voit affecté la valeur false.

Il y a deux solutions : soit utiliser des parenthèses, soit utiliser l’opérateur || qui a une priorité supérieure à celle de l’affectation :

# deux solutions correctes
toto = (machin or truc)
toto = machin || truc

Ca a l’air tout bête, une boulette de débutant allez-vous me dire… mais lorsque l’on ne connait pas correctement la priorité des opérateurs, ou que l’on est pas concentré, on fini par avoir quelques bugs par forcément évident à identifier.

Sam. Informatique

Windows… dehors !

29/10/2007

Cela faisait longtemps que ça me démangeait. J’avais envie de le faire, je m’y préparais, mais finalement ne sautait pas le pas. De quoi je parle ? Devenir prêtre ? Changer de sexe ? Nooon !!! Faire prendre la porte à la fenêtre : virer Windows ! Et mettre un manchot aux commandes du hardware.

Maintenant c’est fait. J’avais acquis un portable au printemps dernier, avec l’intention d’installer Ubuntu dessus. Mais difficile de trouver un PC qui convienne, portable, sans OS, au bon tarif… J’avais finalement du me résigner à acheter un PC avec Vista. C’est joli, mais qu’est ce que c’est lent. Un Dual Core T7300 , 2Go de RAM et on a … une brouette. OK le disque est lent comme sur la plupart des portables, mais globalement c’est comme avoir une grosse voiture qui peine à la première montée. Donc j’ai découvert Vista, j’ai râlé, pesté (et pas qu’après la vitesse…) et puis trop… c’est trop !

Logo Ubuntu

J’attendais Ubuntu 7.10 afin de garantir une bonne reconnaissance de mon matériel. A peine disponible, il est venu coller un grand coup de pied dans le c.. de Windows pour prendre sa place. Et les choses se sont même mieux passé que prévu ! Il faut dire que je connais Ubuntu l’utilisant en mode “texte” comme serveur dans mon activité professionnelle. Par ailleurs j’avais déjà testé la bête souvent sous VMWare. Le changement se faisait en connaissance de cause.

Mais dans le fond ce qui facilite le plus la migration, mis à part une connaissance préalable du système, c’est l’utilisation des logiciels libres. Cela fait bien longtemps qu’OpenOffice est mon outil de travail bureautique, Firefox mon navigateur, Thunderbird mon client de messagerie, GIMP mon logiciel de retouches, Grisbi fait très bien son travail pour compter les brouzoufs, …

Donc changer de système n’a absolument pas été synonyme de changement radical, puisque j’ai retrouvé une grande partie de mon univers familier. Il a fallu s’adapter un peu à Gnome pour pouvoir personnaliser son environnement et le rendre pratique (en 1280×800 on économise la place en hauteur !), mais cela a plus relevé du plaisir de la découverte que de la corvée.

Et puis que j’aime la console ! C’est vraiment un truc insupportable sous Windows (faites vraiment un effort là dessus les gars), mais là quel bonheur ! Oui je sais, je suis peut-être un peu malade, mais quand on peut installer un (ou plusieurs) logiciel(s) en tapant une seule commande, c’est productif. Et puis j’aime ça, c’est tout ;-)

Cela fait plus d’une semaine, et mon manchot et moi sommes toujours copain :-)

Si je devais donner trois conseil :

  • passer progressivement aux logiciels libres, déjà sous windows
  • préparer sérieusement l’installation : tester avec le livecd, prendre le temps de comprendre, lire et poser des questions sur ubuntu-fr.org
  • faire une sauvegarde sérieuse avant de tout réinstaller !

Sam. Informatique ,

Gestion de projet : redMine

18/05/2007

Cela faisait quelques temps que je cherchais une solution de gestion de projet. Quelque chose de simple à mettre en oeuvre et à utiliser, qui soit capable de gérer des tickets, contienne de quoi faire un petite doc interne, avec une gestion de droits, et si possible pouvant s’interfacer avec Subversion. Et je ne trouvais pas…

Il y a bien entendu Trac, mais ça ne s’installe pas en deux coups de cuillères à pot, et je n’avais pas envie de m’investir dans Python, investissant beaucoup d’énergie dans Ruby et Rails. C’est d’ailleurs dans cet univers que je cherchais mon bonheur… et que je l’ai (finalement) trouvé : redMine.

Il est possible de faire un test en ligne du logiciel pour se faire une première idée. Une installation locale pour faire un tour plus complet du logiciel est simple et rapide (pour qui a déjà Ruby on Rails d’installé). Le logiciel s’avère être assez complet et très paramétrable sans pour autant être une usine à gaz. Bien au contraire, il se prend en main facilement tant pour l’administration des projets (il est multi-projets) que pour l’utilisation au quotidien. Pour ne rien gâcher, l’apparence est soignée.

Sam. Informatique , ,

Installer de multiples versions de Ruby

28/03/2007

Comment installer plusieurs versions de Ruby sur un même système ? On se lève quelquefois le matin avec des questions existentielles auquel il est impératif de répondre, ce sera celle du jour. Evidemment, on installe pas plusieurs versions de Ruby tout les jours. Toutefois sur un serveur devant héberger plusieurs sites, avec des versions différentes de Rails, il peut-être utile de mettre à jour chaque site l’un après l’autre pour minimiser les surprises en cas d’incompatibilité. Concrètement installer plusieurs versions de Ruby n’a rien de bien méchant, mais encore faut-il que chaque installation ai ses propres gems, que les chemins soient bons, etc…

Le processus d’installation est un remake de ce post qui contient les informations de bases pour compiler Ruby sur Ubuntu. Mais Ubuntu n’est pas indispensable, ce qui est décrit ici peut se transposer sur une autre distribution ;)

Lire la suite…

Sam. Informatique ,

Blog et pubs : bof bof…

18/01/2007

Dès ma première tentative de création de blog, je me suis dit qu’il ne fallait pas y coller des pubs. Cela ne risquait pas de me faire gagner grand chose, et sur le principe j’étais contre. Un blog personnel est un espace de liberté personnel. C’est à soi. Ce n’est pas un panneau publicitaire.

Mais… car il y a un mais, j’ai tenté le coup. Je suis inscrit au programme Google Adsense dans le cadre d’un site animalier, et ça rapporte. Pas une fortune, mais les chèques arrivent, et le jour où je devrais payer pour un hébergement de qualité les frais seront couverts. Or avec quelques articles techniques la fréquentation du blog a bien augmenté, et j’ai voulu tenter l’expérience. Il y a bien eu des clics rémunérateurs, mais en moyenne moins de un par jour (beaucoup moins). Les gains ne furent pas proportionnels à ceux générés par mon autre site.

L’opération est-elle un échec ? Pas tant que ça. J’aurais pu prolonger et me dire que quelques clics sont toujours bons à prendre en complément de mon autre site. Mais non, j’ai obtenu ce que je voulais. J’ai fait une expérience, j’ai eu un résultat, et il est plutôt conforme à ce à quoi je m’attendais.

Au final je suis plutôt content. Je n’avais pas envie de voir ces pubs. L’absence de tout bénéfice sérieux m’évite un cas de conscience.

Sam. Informatique, wordpress

wp-phpmyvisites en italien

27/12/2006

J’ai eu dans ma boîte aux lettres un petit cadeau de Noël bien original. Un utilisateur du plugin wp-phpmyvisites qui permet de facilement coupler son blog WordPress avec l’outils de statistiques phpMyVisites l’a traduit en italien. J’ai intégré cette langue dans le packaging de la version 1.0 .

Merci à Alberto

Sam. Informatique, wordpress ,