21 juin 2012

Putty + Vim + Pavé numérique

Ah ce bon vieux Vim, cauchemar du néophyte, il a donné du fil à retordre  à plus d'un développeur, mais il se révèle assez puissant une fois la bête maîtrisée. Je vais partager une solution à un problème qui m'a longtemps pourri mon quotidien lors de l'usage de ce rustique éditeur.

S'il vous est arrivé de vous connecter à une machine unix via Putty et que vous avez tentez d'utiliser Vim, vous avez probablement constaté ne pas pouvoir utiliser le pavé numérique, obtenant un comportement étrange du curseur au lieu de voir les chiffres voulus s'afficher. En fait le problème ne vient pas de Vim, mais de Putty, qui est configuré par défaut en "application keypad mode", un mode permettant d'envoyer des commandes particulières à l'application plutôt que des chiffres.

Pour changer ce comportement, ouvrez les paramètres de Putty (Putty Configuration), naviguez jusqu'à Terminal > Features. Vous obtiendrez la fenêtre suivante :


Cochez la case "Disable application keypad mode", sauvegardez la session, et voilà. Ça ne mange pas de pain et ça simplifie le quotidien (en plus ça rime).

14 juin 2012

Pas de réseau après l'installation minimale de Centos 6

Si après une nouvelle installation en mode minimal de Centos 6 (sans GUI) il vous arrivait de ne pas pouvoir accéder à vos interfaces réseaux, cette note pourrait vous intéresser.

Je prendrais pour hypothèse que votre interface principale est eth0 et qu'un serveur DHCP attribue les adresses IP quelque part sur votre réseau.

Commencez par taper la commande dhclient eth0 dans votre shell, vous devriez obtenir une ip depuis le serveur dhcp, vérifiez le avec un ifconfig :
[root@localdev ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:4A:B5:3C
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe4a:b53c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1949 (1.9 KiB)  TX bytes:1731 (1.6 KiB)

Maintenant que vous avez un accès à Internet, profitez-en pour installer l'outil de configuration réseau avec la commande : yum install system-config-network-tui

Une fois installé rendez-vous dans le dossier /etc/sysconfig/network-scripts/,  vous y trouverez le fichier ifcfg-eth0 que vous allez ouvrir dans votre éditeur favoris. (Notez que votre adresse MAC sera différente de la mienne)
DEVICE="eth0"
HWADDR="08:00:27:4A:B5:3C"
NM_CONTROLLED="yes"
ONBOOT="no"
Vous pouvez alors effectuer les modifications suivantes :
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="08:00:27:4A:B5:3C"
NM_CONTROLLED="yes"
ONBOOT="yes"
Les modifications que j'y ai apporté sont l'ajout de la ligne BOOTPROTO="dhcp" pour activer la configuration de l'interface par le serveur DHCP, ainsi que le ONBOOT="yes" afin que l'interface soit activée au démarrage du système. Sauvegardez le fichier et redémarrez votre machine (avec un shutdown -r now des plus gracieux).

Votre serveur est maintenant connecté au démarrage, mission accomplie.

Dans le prochain post je vous expliquerai comment optimiser votre synergie corporate.

13 juin 2012

mount error: Cannot allocate memory sous Windows 7 via CIFS

Puisque je suis dans ma lancée, un autre post pour parler d'un problème complètement différent : le partage de fichiers depuis une machine sous Windows 7 vers une machine Centos (qu'elle soit physique ou virtualisée). Je ne couvrirais pas ici le détail du comment faire, certains l'ont déjà traité bien mieux que moi, mais je vais décrire une astuce si il vous arrive d'avoir votre dossier partagé innaccessible avec le message d'erreur suivant "mount error: cannot allocate memory" et que le seul moyen de la récupérer consiste à redémarrer votre machine Windows.

La solution consiste à modifier le fichier de registre (Touche Windows + R, tapez regedit.exe) et naviguez jusqu'aux valeurs suivantes :


HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache

Assignez-y la valeur 1. Puis même chose pour :

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size

Où vous y assignerez la valeur 3, puis vous pouvez redémarrer.

Voilà, maintenant votre partage devrait être complètement stable. Un grand merci à l'auteur de ce billet original dont je me suis villement contenté de reprendre l'astuce.

12 juin 2012

Django: erreur ViewDoesNotExist

Django pony
Etant débutant sous Django il m'arrive de perdre beaucoup de temps sur des erreurs triviales (surtout une fois la solution sous les yeux). Je partage ici une erreur simple qui détient la palme du temps perdu jusqu'ici.

Lors de la création d'une nouvelle fonction dans mon fichier views.py, je me suis retrouvé face à une erreur ViewDoesNotExist at /myapp/edit ... Une erreur plutôt étrange étant donné que cette fonction edit est bel et bien existante dans mon fichier views.py dont voici un extrait :
# /myapp/views.py
from myapp.forms import EditUserForm

def edit(request):
    ''' Edit things to do stuff '''
    editUserForm = EditUserForm()
    return render_to_response('myapp/edit_user.html', {
        'editUserForm': editUserForm,
    }, context_instance=RequestContext(request))
une view plutot simple qui ne fait pas grand chose. Pourquoi donc ce message d'erreur, la vue étant bien présente ?

La réponse se trouve dans le fichier forms.py :
# /myapp/forms.py
from django import forms
from myapp.models import User

class User(forms.modelForm):
    class Meta:
        model = User

Vous avez remarqué ? Et oui, une erreur de typo bien bête ligne 5 : forms.modelForm au lieu de forms.ModelForm... Ca parait idiot vue comme ça, mais le message d'erreur n'aide absolument pas dans ce cas, vue que l'erreur n'était pas dans le fichier views.py mais dans forms.py. J'espère que les futures version de Django afficheront des messages d'erreur moins géneriques...

Bref cette erreur n'est pas très claire, ni très explicite, donc si vous vous trouvez face à ce problème n'hésitez pas à commenter ce que vous importez dans votre vue jusqu'a ce que ça marche (pensez-y au niveau des from blahblah import stuff aussi).

J'en profite au passage pour changer le design du blog, le fond noir étant passé de mode depuis la fin des années 90 je pense qu'il était temps que je dépoussière tout ça. J'ai aussi rajouté un petit outil javascript pour rendre mon code plus lisible sous blogger. En parlant de ça, je suis plutot surpris de voir comment l'outil a evolué, impressionnant toutes ces nouvelles fonctionnalités. Cela suffira-t-il a m'inciter à poster plus souvent ? La réponse dans le prochain post (ou pas).