Comment utiliser une image disque

Le titre n'étant pas très parlant, et comme je ne trouvais rien de mieux sans faire une longue tirade, on va tout de suite définir de quoi nous allons parler. Une image disque est tout simplement une copie d'un disque (ça peut être un disque dur, ou un DVD, ou ce que vous voulez) dans un fichier. Nous allons voir dans cet article ce qu'il est possible de faire avec une image disque, et surtout comment le faire.


Utiliser le module Upload de Nginx

Pendant le développement de Flaskup, j'ai dû faire face à une problématique concernant l'upload de fichiers volumineux. Le problème venait de performances médiocres à la fin de l'upload : le navigateur a fini d'envoyer la requête contenant notre fichier, et Flaskup pouvait mettre plusieurs minutes à répondre (pas terrible...).

On verra donc deux choses dans ce billet :

  • pourquoi le serveur met si longtemps à nous répondre
  • comment résoudre ce problème avec le module Upload de Nginx

Django : packager un projet

Dans ce billet, je vais décrire une méthode pour packager un projet Django avec distribute, le but étant d'avoir un joli tarball qu'on peut ensuite uploader sur le CheeseShop ou installer directement dans un virtualenv.

Un peu de vocabulaire pour bien commencer, dans le monde de Django il faut bien faire la différence entre une application et un projet :

  • Une application est un ensemble de fonctionnalités ajoutées à Django.
  • Un projet est une instance de Django. Un projet va utiliser plusieurs applications (listées dans INSTALLED_APPS).

Nous allons voir comment packager un projet Django et non une application. Comme je n'ai trouvé pratiquement aucune ressource sur ce sujet sur le web, je me permets de partager ma technique, ça intéressera peut-être quelques personnes :)

Bon, maintenant que tout le monde sait de quoi on va parler, allons-y !


Flask : déployer une application avec Fabric

Toujours dans la série d'articles dédiées au framework Flask, voici le cinquième dans lequel nous allons voir comment utiliser Fabric pour automatiser le déploiement d'une application.

Le but est d'installer une application, et toutes ses dépendances, sur un ensemble de serveurs en une seule commande. Une mise en production d'une application est toujours une opération plus ou moins risquée, alors autant mettre toutes les chances de son côté et automatiser cette tâche au maximum. Et c'est là que Fabric intervient.

Fabric est un peu un équivalent d'un Makefile (Fabric utilise un fichier nommé fabfile.py, mais orienté Python et en simplifiant les échanges avec les serveurs distants. On peut ainsi facilement copier des fichiers et lancer des commandes directement sur les serveurs, le tout de manière sécurisée à travers SSH.


Déployer une application WSGI avec Nginx, Gunicorn et supervisor

Nous sommes arrivés au quatrième article de la série dédiée au framework Flask, et pour changer on va mettre de côté nos talents de développeur pour prendre le rôle de l'admin sys et s'intéresser au déploiement d'une application WSGI. Bien que les précédents articles soient dédiés à Flask, celui-ci sera plus généraliste et sera valable pour toutes vos applications WSGI. Alors si vous n'utilisez pas Flask, ne partez pas ! La suite pourrait vous intéresser.


Flask : packager une application

Troisième article de la série dédiée au framework Flask, cette fois-ci nous allons voir comment packager une application en utilisant distribute. Distribute est une bibliothèque Python permettant de packager une application puis d'installer facilement le package créé. Le but étant de pouvoir distribuer une application développée avec Flask et de permettre son installation le plus facilement possible.

Je ne vous apprends rien en vous disant que l'adoption d'une application se fait, en partie, en fonction de sa facilité d'installation. Bien sûr, c'est loin d'être le seul critère, mais généralement l'installation est le premier contact de l'utilisateur avec l'appli, et si on ne veut pas le faire fuir tout de suite, il est préférable que cette étape se passe le mieux possible. Et comme on est tous des vieux qui trainons nos vielles habitudes, le mieux est encore d'utiliser des outils standards et biens connus de tous.


Pentaho + Authentification CAS

Dans cet article, nous allons voir comment utiliser le système d'authentification CAS (Central Authentication Service) avec l'application Pentaho.

Avant d'entrer dans le vif du sujet, juste deux mots sur CAS : c'est un système de SSO pour les applications web. Il permet aux utilisateurs de s'authentifier une seule fois, puis d'être reconnus automatiquement sur toutes les applications web branchées sur CAS. Si vous l'utilisez, ce sont vos utilisateurs qui vous diront merci : une seule authentification, un seul identifiant et un seul mot de passe.

Quant à Pentaho, si vous êtes arrivés sur cette page c'est que vous le connaissez sûrement déjà. Sinon, c'est une application web de Business Intelligence.


Flask : les bases

Souvenez-vous, dans le premier article nous avions vu comment démarrer un projet avec Flask. Nous avons créé un projet vide qui ne fait qu'afficher une erreur 404. Pas super intéressant, mais c'est déjà pas mal. Dans ce deuxième article de la série, je vais vous montrer rapidement les bases de Flask, ce qu'il faut connaitre au minimum pour se lancer. Et pour cela, rien de mieux que développer une application toute bête : une TODO list.


Flask : démarrer un nouveau projet

Si vous faites un peu de développement, vous devez savoir que démarrer un projet est toujours un peu pénible. On se pose pleins de questions sur les meilleurs choix à prendre : comment organiser son code, monter un environnement de développement, packager son application pour la partager avec la communauté, déployer efficacement en production, etc...

Bref, pas toujours facile d'y répondre quand on débarque sur un nouveau framework ou un nouveau langage. Du coup, je vais tenter de partager avec vous quelques conseils et astuces autour du framework Flask au travers de plusieurs articles. Je ne prétends pas avoir les meilleures idées ni les meilleures méthodes, mais j'ai eu l'occasion de les tester et de les améliorer avec les quelques projets réalisés ces derniers mois, et je m'en suis toujours bien sorti (ou pas trop mal en tout cas :p).


Stripe CTF 2.0

Stripe a organisé le concours Capture The Flag 2.0, c'est un challenge dans le domaine de la sécurité des applications web. Le concours est divisé en 9 niveaux (de 0 à 8) dont le but est de trouver un mot de passe à chaque niveau permettant de passer au suivant. C'est la deuxième édition de Stripe CTF (d'où le 2.0), la première s'étant déroulée en début d'année autour de technos beaucoup plus bas niveau (et autrement plus difficile).


Supprimer la page d'authentification de Guacamole

Pour le premier article technique, on va commencer doucement avec un peu de Java (une fois n'est pas coutume). Nous allons voir comment supprimer la page d'authentification de Guacamole pour permettre aux utilisateurs d'arriver directement sur la fenêtre de prise en main à distance.


POM Dashboard

Développement d'un tableau de bord (dashboard) pour intégration dans la solution POM (Plateforme Ouverte de Monitoring). Le dashboard permet aux utilisateurs de construire leurs propres interfaces, adaptées à leurs besoins.

C'est parti !

Et voilà, c'est fait. Je suis passé du statut de salarié à celui de freelance. Je me lance dans une nouvelle aventure, en espérant que celle-ci se passe bien !

Comment j'en suis arrivé à faire ce choix ? Et bien, c'est assez simple finalement : l'envie de liberté et d'indépendance, de tenter ma chance, de me lancer un nouveau défi et voir si je peux y arriver. Mais pour bien expliquer mon choix, un rapide retour sur ma carrière est nécessaire.