PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

WARNING: File not found. Did you forget to save?

samedi 26 octobre 2013 à 09:58

Un lecteur nous a rapporté ce problème quand il utilisait la commande magique %edit dans IPython avec Sublime Text.

Magie d’internet, un autre lecteur lui a répondu en comment, mais je me dis que donner un peu de visibilité à la réponse peut pas faire de mal, vu que je n’ai pas trouvé facilement la solution via Google DuckDuckGo.

L’idée est tout simplement d’utiliser l’option -w dans la ligne de commande pour appeler l’éditeur. En effet, sans cela l’appel à ST est non bloquant, et IPython perd la référence au processus sans avoir de valeur de retour.

Par exemple, dans votre ipython_config.py :

c.TerminalInteractiveShell.editor = "sublime_text -w"

flattr this!

Afficher l’IP d’un visiteur – Django vs Nginx

vendredi 25 octobre 2013 à 05:53

Lorsque l’on veut connaitre son ip on fait souvent appel à des sites du genre: whatismyip.com, mon-ip.com ou on utilise un ifconfig en ssh.
Des fois on a aussi besoin de connaître l’ip d’un visiteur sur son site, 2 petites méthodes pour le faire sous Django et Nginx.

Sous Django:

Dans l’Urlconf

urlpatterns = patterns('',
    # return client IP
    url(r'^my_ip$', get_ip),
)

Créez une vue du nom de get_ip qui sera utilisée par l’urlconf

from django import http
 
def get_ip(request):
    """
        Vue qui retourne l'IP du client
    """
    try:
 
    	# récupère l'ip du client
        return http.HttpResponse(request.META["REMOTE_ADDR"] )
 
    except Exception, e:
        return http.HttpResponse('error %s' % e)

Le code ci-dessus peut retourner l’adresse locale (127.0.0.1) dans ce cas il faut tester l’existence de la variable HTTP_X_REAL_IP, certains serveurs web ont besoin d’être configuré.

Sous Nginx:

Dans le fichier de configuration de nginx on écrit une nouvelle location

# return client ip
location /my_ip {
    default_type 'text/plain';
    content_by_lua 'ngx.print(ngx.var.remote_addr)';
}

il suffit de se rendre à l’url http://monsite.com/my_ip pour voir s’afficher son ip. Cependant il faut avoir nginx compilé avec le module Lua ce qui peut être délicat si l’on a jamais compilé d’application.


Conclusion:

Si l’on s’en réfère aux deux exemples ci dessus on serait tenté d’utiliser Nginx car en une seule ligne tout le bazar est réglé.
Le hic c’est qu’il faut que Nginx soit compilé avec le module Lua pour afficher l’ip (sauf si quelqu’un connaît une autre façon d’afficher un message de sortie).
La version Django n’est pas fiable à 100% car suivant comment est configuré votre serveur web il se peut que vous vous retrouviez avec une ip du genre 127.0.0.1.
Il y a aussi la possibilité de parser le résultat des sites web cités en tout début d’article, certains proposent des Api je crois mais vous dépendez d’un autre service (on faisait ça au début) qui peuvent vous lâcher à tout moment (ce qui nous est arrivé).
Personnellement je compile toujours nginx avec Lua et quelques autres modules, ça permet de s’affranchir de plus en plus du backend.

PS: j’ai mis à jour le titre car il laissait sous-entendre autre chose (merci à Sébastien)

flattr this!

Installer SSH Plus sur Ubuntu

jeudi 24 octobre 2013 à 15:54

Je vous avais parlé de SSH Plus, mais sans mentionner son process d’install, un peu chiant.

Pour rappel, c’est un petit indicateur qui vous permet de lancer une commande arbitraire. Son usage principal est d’ouvrir un terminal qui se connecte immédiatement en SSH à un serveur distant, mais on peut y mettre n’importe quoi.

Pour l’installer :

# on installe les dépendances
sudo apt-get install python-appindicator
# on se calle dans le dossier temporaire
cd /tmp
# on download le script en Python
wget https://raw.github.com/anilgulecha/misc/master/sshplus.py
# on le copie dans le dossier des exécutables
sudo mv sshplus.py /usr/bin/sshplus
# on le rend exécutable
sudo chmod +x /usr/bin/sshplus

Pour le lancer, il n’y a plus qu’à faire :

sshplus

Dans un terminal.

Moi, je le rajoute dans ma liste des programme automatiquement lancé au démarrage, comme ça je n’y pense plus (“Dash” > “Applications au démarrage”).

Après, vous pouvez lui faire lancer les commandes que vous voulez, en les mettant dans le fichier de config (~/.sshplus) en suivant la syntaxe

Nom à afficher|commande|options

Par exemple :

Server Prod 12|guake|-t -n "new" -e "ssh username@adresse_ip"

Ceci va rajouter une entrée dans le menu nommée “Server Prod 12″. Si on clique dessus, ça lance guake -t -n "new" -e "ssh username@adresse_ip", ce qui m’ouvre un nouvel onglet dans mon terminal guake avec lance la commande ssh username@adresse_ip juste après.

flattr this!

Profiter du notebook de IPython

mercredi 23 octobre 2013 à 15:53

IPython est un des outils qui me font trouver la programmation Python plus agréable que dans tous les autres langages : un shell avec tellement d’astuces intégrées que ça donne envie de vomir des arc-en-ciel.

Aujourd’hui je vais vous parler d’une fonctionnalité fantastique est très peu connue de IPython : le notebook.

Si vous êtes scientifique ou manipulez pas mal de graphiques et de données numériques, c’est un must have. Mais personnellement je trouve que c’est aussi un fantastique outil d’éducation, c’est génial pour les cours, les démos, et expérimenter avec du code inconnu.

Ça se présente sous la forme d’un shell IPython intégré dans une page Web, mais que l’on peut avoir sur son desktop, pas besoin d’avoir un serveur distant. Si vous avez un peu de temps, voici une vidéo de démo (avec un musique horrible) :

L’installation sous Ubuntu, c’est juste :

sudo apt-get install ipython-notebook

Pour Windows, il me semble, de mémoire, que c’est intégré dans l’exe. Pour Mac, je ne sais pas.

Et derrière il suffit de lancer la commande :

ipython notebook

Et il va vous ouvrir votre navigateur avec un onglet sur votre notebook.

L’intérêt principal du notebook est que TOUT le code est coloré et est modifiable comme sur dans fichier mais TOUT le code est exécutable (et affiche son résultat juste après chaque ligne) comme dans un shell iPython, avec completion du code. Le meilleur des deux mondes quoi.

En prime on peut embeder du markdown (et donc des liens, des images, etc) dans le même notebook, sauvegarder ça pour plus tard, le partager, etc.

Personnellement, j’ai ceci dans mon .bashrc :

notebook () {
    processes=$(ps aux | grep -i -P "ipython notebook" | wc -l)
    if [[ $processes -lt 2 ]]
    then
        pushd /tmp
        nohup ipython notebook --port 8889 $1 &
        popd
    else
        firefox http://127.0.0.1:8889
    fi
}

Comme ça en une commande je lance le serveur du notebook sur le port que je veux si il ne tourne pas, et si il tourne, j’ouvre firefox et ouvre un onglet dessus.

Quelques autres options très utiles :

–pylab : Charger plein de libs pour transformer IPython en un matlab killer.
–gui=lib : permet d’intégrer l’event loop de QT, wx, gtk, etc.
–ip=0.0.0.0 : si on veut que d’autres puisse accéder à notre notebook.

Il existe un espèce de pastebin spécialement fait pour le notebook, qui permet de partager ses expérimentations.

flattr this!

Rapide test d’Ubuntu 13.10

mardi 22 octobre 2013 à 14:45

Ubuntu 13.10 vient de sortir et j’ai donc fait une micro partition pour le tester.

Installation sans histoire, un peu plus de config que d’hab car il faut virer toutes les merdes intrusives pour la vie privée (mais heureusement, y a des settings pour ça). Pas beaucoup de modifs, apparemment ils ont bossé la vitesse et la stabilité, ce qui est rare pour une non LTS.

Le résultat est qu’on a un OS qui est beaucoup plus stable que ce que Canonical avait l’habitude de donner les premiers jours de release. Et légèrement plus rapide.

En fait je suis tenté de migrer (mais pas con au point de le faire avant quelques mois), c’est globalement agréable à utiliser, épuré et fluide. On a pas encore Mir installé par défaut (OUF), donc ça reste un truc viable, qui tourne bien, avec des paquets plus récents à dispo.

Mon seul chagrin, c’est la nouveau Nautilus. La recherche est maintenant récursive par défaut, et impossible à changer. En prime, plus d’extensions possibles, du coup “open terminal here” et “compare with meld” partent à la poubelle, et je les aimais beaucoup.

flattr this!

Error happened! 0 - count(): Argument #1 ($value) must be of type Countable|array, null given In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:428 http://ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/?130 #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #1 /var/www/ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/index.php(1): require_once('...') #2 {main}