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 ,

Picoozite aïgue

24/02/2009

L’été dernier, un petit jouet m’a été offert : un tout petit hélicoptère que l’on peut piloter avec une commande à infra-rouge. Et c’est là que tout à commancé : j’ai contracté un Picoozite ! “Qu’est-ce donc” me direz-vous ? C’est une maladie (mentale) qui conduit à passer du temps et dépenser de plus ne plus d’argent dans ces petits jouets. Le terme vient de Picooz qui est le nom donné à certains de ces engins les plus connus, fabriqués par Silverlit.

Picooz de Silverlit

Lire la suite…

Sam. Loisirs ,

Ubuntu : interfaces réseaux disponibles

13/05/2008

Jouant allègrement avec Ubuntu 8.04 et VMWare, j’ai fini par avoir un problème réseau qui m’a fait perdre pas mal de temps. Comme je l’avais déjà expliqué sur ce blog, le fait de copier une machine virtuelle peut demander de modifier le fichier /etc/network/interfaces pour retrouver une connexion réseau perdue suite au clonage. Mais à force de cloner on fini par ne plus savoir où on en est et passer pour un clown.

Et là on peut se dire qu’il suffit d’aller voir le contenu de /dev/net , histoire de savoir quelles interfaces sont disponibles. Erreur ! Car elles n’y figurent pas (pas les interfaces physiques du moins), et on part sur une mauvaise piste croyant la carte réseau virtuelle non détectée.

Pour être certain de connaitre les interfaces réseaux disponibles sur le système, il suffit de demander à voir le contenu du fichier /proc/net/dev (un simple cat fera l’affaire).

Sam. Général

Déclaration de revenus et Firefox 3

10/05/2008

Comme chaque année à la même période, c’est la corvée de la déclaration de revenus. L’année dernière j’ai eu un petit souci de certificat qui ne fut par insurmontable et pour lequel j’avais indiqué la solution sur mon modeste blog. Cette année les choses se présentent moins bien suite à ma migration vers Ubuntu 8.04. Le Hardy Heron est livré avec Firefox 3 béta 5, pas encore officiellement supporté par les sites de l’administration française. Pas question de faire preuve de mauvais esprit vis-à-vis de l’Etat, ce dernier n’est pas en retard, c’est Ubuntu qui est en avance.

Concrètement tout se passe bien presque jusqu’au bout. J’ai du résilier mon ancien certificat et demander un nouveau, sans problème. Il y a eu un avertissement relatif au navigateur, mais aucun blocage. La déclaration de revenu se passe plutôt bien, j’ai pu saisir l’incroyable fortune que je gagne(*) et avoir une douloureuse estimation de mon impôt à payer. Vers la fin du processus il est indispensable de signer sa déclaration avec son certificat, et c’est à ce moment que les choses se gâtent. Là où des informations utiles devraient être affichées, et où des actions sont à réaliser, il n’y a que du gris. Un triste et inutile gris.

En ce qui me concerne je pense revenir pour cette année à la décralation papier. Si quelqu’un a une solution a proposer, qu’il laisse un commentaire ou un lien vers la solution son blog, ça pourra servir aux visiteurs de ces lieux.

Par contre le calendrier pour rendre sa copie n’est pas le même selon que l’on fasse sa déclaration par internet ou à l’ancienne, alors surtout ne vous y prenez pas au dernier moment !

(*) ok ok… on peut rêver non ?

Sam. Général ,

Ubuntu 8.04 et RubyGems

01/05/2008

Voici un petit soucis que beaucoup de personnes utilisant Ruby vont rencontrer avec Ubuntu 8.04 (Hardy Heron pour les intimes) : si vous utilisez une version récente de RubyGems, ce dernier va grossièrement vous répondre pour tout tentative d’utilisation :

/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

Personnellement j’ai rencontré ce problème après ma mise à jour d’Ubuntu alors que j’utilisais Ruby depuis des mois. D’autres semblent l’avoir rencontré en installant RubyGems avec le gestionnaire de paquet puis en effectuant une mise à jour via gem update - - system. Dans les deux cas la solution est simple :

  1. Editer le script /usr/bin/gem , ce fichier n’est pas modifiable par tout le monde, donc : sudo vi /usr/bin/gem
  2. Chercher la ligne avec require ‘rubygems’
  3. Ajouter en dessous une nouvelle ligne avec require ‘rubygems/gem_runner’
  4. Sauver, tester le résultat et amusez-vous bien.

Je ne suis pas le premier à écrire un mot à ce sujet, mais l’important est que l’information soit disponible.

Juste après cette manipulation j’ai ouvert Netbeans 6.1 installé peu avant ma mise à jour, démarré une application en cours de développement basée sur Rails 2.0.2 utilisant énormément ajax, et testé sous Firefox 3 encore en béta à ce jour. Ca se présente très bien, aucun problème à déplorer. Idem pour Subversion, Openvpn, le plugin Web Developer…. C’est un essai rapide, mais à première vue rien n’empêche de travailler correctement. Le problème avec RubyGems doit être considéré comme anecdotique.

A noter que le plugin MySpell Français n’est pas disponible pour Firefox 3, ce qui pourrait expliquer d’éventuelles fautes dans ce post ;-)

Sam. Général

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 ,