Vrac de mini-messages n°5 : rhel7, PyPy, Prism, Debian Wheezy 7.1, docker, SSH, chromium

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Comme chaque semaine, voici les dents/tweets intéressants de la semaine dernière que j’ai publiés sur Identi.ca ou sur Twitter, revus et augmentés d’éventuels observations et commentaires mûris au cours de la semaine passée. Au menu : contenu de RHEL7, la branche 3 de PyPy, question autour de Prism, sortie de Debian Wheezy 7.1, conteneurs Linux avec docker, sécurité autour des clés SSH et chromium 27

  • at #rhsummit , rhel7 will come without mysql as it will be replaced with mariaDB; which is mysql api compatible. it will include mongodb too => un tweet très intéressant qui nous apprend que MariaDB, le fork de MySQL lancé suite au rachat de MySQL par Oracle, va remplacer MySQL sur la nouvelle version de la distribution de Red Hat RHEL 7. MongoDB, la base de données non-sql orientée documents sera également incluse.

Red_hat_logo

  • #PyPy Py3k status #11 : très proche d’une première publication => PyPy est l’implémentation en pur Python d’un interpréteur Python. La branche 2.x du projet vise à être entièrement compatible avec cpython 2.7. Le développement de la branche 3.x suit un rythme soutenu et le blog de PyPy a publié une note très intéressante sur le travail en cours. A lire pour tous les fans de Python pour Python :)

Pypy_logo

  • Prism : pour les particuliers : bigbrother mais pour les entreprises, espionnage industriel ? #guerreéconomique => un dent assez inhabituel de ma part, mais c’est une question que je trouve pertinente dans le concert des protestations pro-liberté individuelle que nous avons entendu ces derniers jours. Quid de l’espionnage industriel que permet cette technologie ? Les Etats-Unis savent que leur avance technologique dans les nouvelles technologies est un atout de poids et un système comme Prism me paraît tout à fait approprié pour obtenir les informations nécessaires à sa conservation. Pour les entreprises, plus que jamais, méfiance quant à vos données personnelles et stratégiques.
  • Première mise à jour mineure #Debian #Wheezy 7.1 normalement ce week-end
    http://ur1.ca/eb1kf 
    => je l’avais annoncé dans ce billet, elle est arrivée à l’heure. Dans le cadre de migrations complexes ou de parcs de serveurs importants, n’hésitez pas à recourir à un professionnel pour mettre à jour vos parcs de serveurs Debian.
Wheezy

Wheezy

docker_logo

  • améliorer la sécurité de vos clés SSH privées
    http://ur1.ca/e1de9 
    lu sur @GCUSquad => un petit plus simple à mettre en place et qui apporte un gain réel au niveau sécurité. J’aime :)

openssh_logo

  • Paquet #debian chromium-browser 27 maintenant dans #debian testing (#Jessie)
    http://b1t.it/doWB 
    => Marre des sites à la noix qui vous indiquent que vous n’employez pas la dernière version de Chrome ? Elle est désormais disponible pour Debian Jessie.  A installer sans attendre !

chromium_logo

Et vous ? Que pensez-vous des technologies et articles abordés ci-dessus ? N’hésitez pas à réagir dans les commentaires. Et à la semaine prochaine pour la suite de cette série d’articles.

Première mise à jour mineure Debian Wheezy 7.1 normalement ce week-end

Suivez-moi aussi sur Identi.ca ou sur Twitter.

La première mise à jour mineure de Debian Wheezy, à savoir la version 7.1 est normalement prévue pour ce week-end.

Au menu des mises à jour pour (sauf modifications de dernière minute) :

Niveau noyaux :

  • Noyau Linux 3.2.46
  • Noyau kfreebsd-9 9.0-10

Niveau serveurs :

  • MySQL 5.5.31
  • modsecurity-apache 2.6.6.6

Niveau langages :

  • PHP 5.4.4

Niveau bureau utilisateur :

  • Xorg 1.7.7
  • Chromium-browser 27
  • Iceweasel 17 ESR
  • Libreoffice 3.5.4
  • nvidia-graphics-drivers
  • subversion 1.6.17

Outils Debian :

  • Apt 0.9.7.9
  • debootstrap 1.0.48

Et bien d’autres paquets encore ! Le contenu du dépôt stable-proposed-updates appelé à être poussé dans le dépôt wheezy-updates lors de la publication de la mise à jour est disponible sur la page des paquets dans proposed-updates.

Les mises à jour mineures jalonneront la vie de Debian Wheezy, mais la première est particulièrement importante pour corriger les changements advenus rapidement après la publication de Wheezy 7.0. C’est aussi pour moi un signal fort de mise à jour car, rappelons-le, la vieille stable Squeeze ne sera encore maintenue qu’un an à partir de la date de sortie de Debian Wheezy.

Et vous ? Qu’attendez-vous de cette mise à jour et que pensez-vous de ce fonctionnement ? N’hésitez pas à réagir dans les commentaires.

Vrac de mini-messages n°4 : selfoss, Redis, Erlang, Projectlibre, Python, MySQL, Django

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Comme chaque semaine, voici les dents/tweets intéressants de la semaine dernière que j’ai publiés sur Identi.ca ou sur Twitter, revus et augmentés d’éventuels observations et commentaires mûris au cours de la semaine passée :) Au menu selfoss, Redis, Erlang, Projectlibre, Python, MySQL et Django.

selfoss-logo

  • Utilizing Redis in distributed Erlang systems
    http://ur1.ca/e70q2 
    => tout ce qui tourne autour du projet Redis, le serveur de cache en mode clé-valeur (aussi considéré comme un serveur de structure de données) m’intéresse en particulier si c’est pour parler de son utilisation conjointe avec Erlang, le langage fonctionnel. Je suis bluffé par les performances de Redis et les retours qui parlent de ce logiciel sont toujours extrêmement positif. L’auteur est très présent sur les réseaux sociaux et tient au courant toute la communauté des nouvelles fonctionnalités dès qu’elles sont implémentées. Un exemple de développement pour moi.

redis-logo

  • Logiciel libre de gestion de projets #projectlibre
    http://ur1.ca/cioh9 
    => découvert par hasard, il répondait à un besoin que j’avais depuis longtemps pour suivre et faire avancer mes différents projets personnels et professionnels. Je l’utilise depuis quelques jours et, bien qu’un peu lourd pour mon pc portable vieillissant. Mais niveau fonctionnalités, j’en suis content pour l’instant.

projectlibre-ogo

  • #python pour extraire de l’information système
    http://ur1.ca/e7j5p 
    => utilisant beaucoup Python dans le cadre de mes prestations d’architecte système, je sais depuis longtemps que Python est parfait pour tout ce qui touche au système en environnement GNU/Linux. Cet article va dans ce sens et a bon le goût de faire des exemples en Python 2.7 et quand le code est différent en Python 3.3. Miam miam.

python-logo-master-v3-TM

  • #MySQL trop long pour vos suites de tests ? Mettez-le en ram
    http://ur1.ca/e89go 
    => J’ai rencontré ce problème autour de la réalisation de tests unitaires et fonctionnels avec une base de données MySQL. Je trouve que la solution est intelligente et un script de mise en place de MySQL dans un tmpfs  est proposé par l’auteur. Toujours bon à prendre si on a ce type de besoin.

mysql-logo

django-logo

Et vous ? Que pensez-vous des technologies et articles abordés ci-dessus ? N’hésitez pas à réagir dans les commentaires. Et à la semaine prochaine pour la suite de cette série d’articles.

Technologies derrière un site web à base de Django aujourd’hui

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Comment concilier mon envie de développer un site web autour d’une idée originale (donc très motivante) et la partie technique associée qui me rebutait à priori, de par mon expérience du monde PHP/MySQL (qui date un peu je vous l’accorde) ?

Mon intérêt pour le langage Python m’a naturellement poussé vers le framework Django. Mais les technologies impliquées dans la réalisation d’un site web moderne sont aujourd’hui légions.

Je brosserai dans cet article un large portrait des choix techniques que j’ai faits et de la difficulté associée à leur emploi.

Technologies employées

Debian

debian-button

Système stable avec beaucoup de paquets. Personnellement j’adore ;) Debian Squeeze avec les backports puis Wheezy aujourd’hui. Migration très simple effectuée récemment dans mon cas.

Django

django-logo

Le choix de Django vient de mon intérêt pour Python. J’ai quand même observé une adoption de plus en plus large de ce framework web pour des sites à forte audience, me réconfortant sur sa capacité de passage à l’échelle.  Le site utilise le framework Django en version 1.5. J’ai eu beaucoup de mal au début à intégrer le fonctionnement de Django, mais une fois maîtrisé ça a clairement boosté mes capacités à mettre en place ce que je voulais coder pour le site. C’est solide, cohérent, modulaire et très conforme à l’esprit du langage Python.

Apache

apache-logo

Pour la partie serveur web, je suis parti sur un Apache 2.2 + mod wsgi, principalement pour des raisons de simplicité de mise en place. J’envisagerais quelque chose de plus travaillé si le site décolle et devient plus exigeant en performances. Je pense en particulier à l’emploi de Nginx.

PostgreSQL

postgresql

Django s’interface avec plusieurs bases de données (PostgreSQL, MySQL, Oracle, SQLite). J’ai choisi PostgreSQL pour la robustesse de cette solution et sa pérennité. J’avais aussi de bonnes connaissances dans cette solution et je souhaitais l’utiliser plus largement dans un projet personnel, les fonctionnalités de la version 9.2 étant très alléchantes.

South

south-logo

J’en parle immédiatement car cette petite application a considérablement réduit la complexité du passage en production. Elle gère de manière transparente la migration des schémas et la migration des données de la base de données lorsque vous installez une nouvelle version de votre application. Concrètement, vous avez rajouté des colonnes à une table dans votre version de développement, vous avez installé la nouvelle version de développement en préproduction, maintenant vous avez deux choix : soit vous passez des ordres SQL à la main afin de rajouter les colonnes qui vous manquent sur la base de préproduction (ce qui impliquent de bien avoir identifié les éléments à rajouter) avec tous les risques que comportent ces opérations, soit vous utilisez South :) qui le fait pour vous. J’ai mis un peu de temps à bien maîtriser les différentes étapes du processus de migration des données, mais la documentation est précise et c’est un vrai plaisir à lire.

Git

git-logo

Le gestionnaire de sources Git que j’utilise déjà sur plusieurs autres projets s’est imposé comme un très bon choix pour ce projet. Avec des connaissances basiques, j’en ai néanmoins fait un point très important de ma chaîne d’industrialisation particulièrement pour le développement et l’intégration du développement vers la préproduction. Voir plus bas.

Memcached

memcache-logo

Django propose de s’interfacer simplement avec Memcached, le serveur de cache qui permet de gagner du temps lorsque les données interrogées sont déjà stockées en cache. Sa prise en charge par Dhango a poussé mon choix vers l’ancêtre (ancêtre si on le compare à Redis par exemple).  A titre personnel, je serais plutôt parti sur Redis, mais je voulais rester aussi proche que possible des outils utilisés par Django. A voir dans le futur. Une chose est sûre, Memcache uned fois lancé ronronne et on en entend plus parler. Un plaisir pour l’administrateur système. Memcached s’interface très bien à Django via le module Python-memcache.

Haystack/Whoosh

haystack-logo

Un ensemble d’outils pour la fonction recherche du site. J’ai cherché des projets actifs et simple à intégrer dans Django. Elles remplissent bien leur job et n’ont pas représenté de difficultés particulières pour être mises en place.

Zinnia

zinnia-logo

Cette application Django permet de rajouter un moteur de blog adaptable à votre propre site web très facilement. J’en parlais déjà dans l’un de mes vrac de mini-messages et j’ai bien fait d’approfondir. Le projet est actif, utilisé par de nombreux sites. Ayant déjà travaillé sur son intégration à mon site, je peux confirmer que c’est bien pensé et fidèle au modèle de fonctionnement de Django. Et en plus c’est bourré de fonctionnalités intéressantes :) J’ai hésité entre zinnia et externaliser le blog mais j’ai préféré intégrer le blog au sein du site pour être sûr plus tard de pouvoir augmenter au maximum les interactions entre les deux, et ce de la manière la plus transparente possible pour l’utilisateur. J’ai trouvé le temps de prise en main très court quand on comprend bien le principe de base, à savoir la surcharge systématique des fonctionnalités offertes par défaut pour les adapter à vos besoins.

jQuery

Jquery-logo

JQuery est une bibliothèque Javascript dont je me sers pour la partie bling-bling web 2.0 du site. J’en ai une utilisation très basique mais je suis très content du résultat. Etant peu motivé pour coder du Javascript, j’ai largement simplifié cette phase grâce à JQuery.

Découpage dev/préprod/prod

Dès le début du projet j’ai découpé ma chaîne d’industrialisation en trois étapes :

  • Le développement, où j’implémente les nouvelles fonctionnalités
  • La préproduction, qui récupère la version de développement, s’installe sur un vhost Apache dédié grâce à un script mise-en-preproduction.sh
  • La production, qui est une copie des données de préproduction adaptée via un script mise-en-production.sh pour un vhost Apache dédié

L’utilisation de cette chaîne d’industrialisation me permet de pousser rapidement des nouvelles versions du développement vers la préproduction où s’effectue les premiers tests et l’adaptation au contexte fonctionnels, puis de la préproduction vers la production. Mon prochain objectif est la mise au point de campagnes automatisées de tests fonctionnels, sûrement avec Selenium.

Et vous ? Que pensez-vous des technologies mentionnées dans cet article ? Des remarques sur l’industrialisation ? N’hésitez pas à réagir dans les commentaires.

Vrac de mini-messages n°4 : Bootstrap, Django, Riemann, Shinken, migration Squeeze vers Wheezy et déploiement continu

Comme chaque semaine, voici les dents/tweets intéressants de la semaine dernière que j’ai publiés sur Identi.ca ou sur Twitter, revus et augmentés d’éventuels observations et commentaires mûris au cours de la semaine passé :)  Au menu Bootstrap pour Django, l’excellent framework web en Python, Riemann, Shinken, migration Debian Squeeze vers Wheezy et déploiement continu.
  • thème #bootstrap pour #django
    http://ur1.ca/e24pd 
     => pour ceux qui ne connaissent pas le thème bootstrap, il s’agit d’un thème html/css/javascript libéré par Twitter. Très adaptable, supportant la visualisation par des périphériques mobiles, il fait le bonheur de ceux qui souhaitent monter rapidement un site web au design propre (exemple pour le site de ma boîte ou d’un produit que je vais bientôt proposer) et épuré. Il s’agit donc ici de proposer ce thème bootstrap dans le contexte de son utilisation conjointe avec Django.

bootstrap-logodjango-logo

  • #Riemann surveille les systèmes distribués – s’interface avec plein de langages dont #Python
    http://riemann.io 
     => une très très bonne idée à laquelle je vois déjà plein d’applications concrètes, typiquement être capable de sortir des métriques directement depuis l’intérieur de votre application, je pense en particulier à l’analyse des articles ou des commentaires d’un site web (nombre, heures de publication, nombre de caractères en moyenne…), ou encore du nombre d’e-mails générés par l’activité d’un site web pour notifier les utilisateurs. Enfin bref plein de débouchés potentiels qui d’habitude s’analyse hors de l’application et requière plusieurs outils différents. Un grand nombre de langages différents sont supportés.

riemann

  • shinken 1.4, outil de supervision codé en #Python avec plein de fonctionnalités intéressantes
    http://ur1.ca/e2k8v 
     => cette application intéressante codée en Python continue son petit bonhomme de chemin et propose de nouvelles fonctionnalités intéressantes. J’ai vraiment hâte de l’essayer sur un projet un peu conséquent.

shinken

  • Sauvegardes incrémentales avec duplicity vers un Qnap TS-219 PII sous #debian #wheezy
    http://ur1.ca/e32qp 
    => beau succès pour cet article. Merci pour la vigilance de mes lecteurs qui m’ont permis d’améliorer l’article en cours de route :) Comme quoi vous êtes écoutés dans les commentaires de ce blog !
  • bien d’accumuler les retours sur les migrations #debian #squeeze => #wheezy
    http://ur1.ca/e3cxh 
    => cela fait quelques articles sur ce sujet que je mets de côté, afin d’avoir sous les yeux le maximum de cas différents quand je suis en clientèle et gère la mise à jour d’un parc important de serveurs depuis Squeeze vers Wheezy.
  • architecture de déploiement continu avec #python #tornado #jenkins #selenium et #phantomjs
    http://ur1.ca/e46dt 
    #jaime => article très intéressant sur un sujet qui me passionne, à savoir le déploiement continu. De plus j’aime beaucoup les technologies employées et l’article est bien détaillé. À lire impérativement si le sujet vous intéresse.

tornado

Et vous ? Que pensez-vous des technologies et articles abordés ci-dessus ? N’hésitez pas à réagir dans les commentaires. Et à la semaine prochaine pour la suite de cette série d’articles.

Sauvegardes incrémentales avec Duplicity vers un Qnap TS-219 PII sous Debian Wheezy

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Après l’installation de Debian Wheezy sur mon Qnap TS-219 PII, j’ai décidé d’utiliser le programme duplicity pour réaliser des sauvegardes incrémentales des données de mes postes de travail, rdiff-backup dont j’ai déjà parlé n’étant plus maintenu depuis un long moment (1).Je voulais en effet que la fréquence de la sauvegarde soit assez courte, de l’ordre de la demi-heure. Les sauvegardes incrémentales s’avèrent parfaitement adaptées à ce type d’utilisation, d’où le choix de ce programme.

Proposed Debian Logo

Installation

J’ai procédétrès simplement , en installant duplicity sur mes deux stations de travail, les deux sous Debian Wheezy :

# apt-get update && apt-get install duplicity

Configuration

Sur le serveur Qnap TS-219 PII également sous Debian Wheezy, j’ai créé des répertoires avec le chemin suivant :  /backups/{fixe,portable}

Au niveau des postes clients, j’utilise la crontab des utilisateurs concernés pour lancer duplicity. La commande suivante permet d’éditer la crontab de l’utilisateur courant (si un message vous indique que vous n’avez pas le droit d’utiliser la crontab, il faut ajouter l’utilisateur en question dans /etc/cron.allow) :

# crontab -e

Puis j’ajoute les lignes suivantes :

*/30 * * * * duplicity remove-older-than 1M –force ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1 && duplicity –no-encryption /home/user ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1

0 0 * * 1 duplicity full –no-encryption /home/user ssh://root@mynas//backups/fixe >> /var/log/duplicity.log 2>&1

La première commande de la première ligne lance la suppression des données qui sont plus vieilles qu’un mois. C’est une durée de rétention qui me paraît suffisamment longue, mon but n’étant pas de faire de l’archivage mais de la sauvegarde. C’est à voir en fonction de vos besoins et de votre capacité de stockage. La seconde commande de la première ligne permet la sauvegarde en elle-même;

La seconde ligne indique de procéder à une sauvegarde complète tous les lundis à 00:00 , et ce afin que la commande chargée du nettoyage des sauvegardes dont l’âge est supérieur à un mois s’exécute bien [merci à mes lecteurs pour ce rajout].

Veillez à ce que votre fichier /var/log/duplicity soit bien accessible par l’utilisateur qui lance la commande duplicity.

Gérer la rotation des journaux

Afin de faire propre il faut également configurer logrotate pour que votre fichier ne grossisse pas démesurément. Il faut créer le fichier /etc/logrotated.d/duplicity et y ajouter le contenu suivant :

/var/log/duplicity.log {
 rotate 7
 daily
 compress
 missingok
}
debian-logo

Je garde une semaine de journaux afin de pouvoir identifier la cause d’une éventuelle erreur empêchant les sauvegardes de s’effectuer.

Chiffrement

Il s’agit donc d’un mécanisme très simple de sauvegarde de vos données vers un ordinateur tierce, ici le Qnap TS-219 PII. Duplicity offre une très intéressante option, la possibilité de chiffrer vos données avec une clé GPG. À moins d’être un bot et d’effectuer vous-même vos sauvegardes, la partie automatisation de cette tâche vous intéressera.

Pour l’utiliser vous devez accorder une confiance suffisante à la clé GPG que vous utilisez pour chiffer et/ou signer. Si vous souhaitez signer votre sauvegarder vous devrez exporter à l’intérieur de votre script la variable PASSPHRASE contenant phrase de passe de votre clé GPG. Vous pouvez également utiliser l’agent GPG. Au niveau de la ligne de commande, il suffira de rajouter l’option –encrypt-key pour préciser la clé de chiffrement et/ou –sign-key pour la clé utilisée pour signer la sauvegarde.

Restauration des données

Comme il est toujours bon de vérifier la restauration des données dans la mise en place d’un système de sauvegarde, nous nous positionnons dans /tmp et passons la commande suivante pour restaurer le répertoire documents présents sur notre serveur :

$ duplicity –no-encryption –file-to-restore documents  ssh://root@mynas//backups/fixe /tmp/documents

Nous précisons de ne pas chercher à déchiffrer quoique ce soit avec l’option –no-encryption puisque nous n’avons pas chiffré pendant la sauvegarde. Nous utilisons l’option –file-to-restore afin de choisir quel répertoire ou fichier nous souhaitons restaurer, puis nous précisons la source de nos données et en dernier argument le répertoire où sauver les données. Plusieurs choses à noter :

  • l’option –no-encryption est nécessaire sinon il vous sera demandé une phrase de passe et la restauration échouera tant que vous ne rentrerez pas quelque chose.
  • plusieurs erreurs bizarres (exceptions PythonCollectionsError: No backup chains found)sont survenues quand je tatonnais pour trouver le bon chemin en définissant ma source. Mais une fois que j’ai identifié la bonne syntaxe, plus d’erreurs et le shell rend la main silencieusement en ayant accompli le travail
  • si vous précisez un répertoire ou un fichier de sortie qui existe déjà, la restauration échoue pour éviter d’écraser quoique ce soit.

En conclusion, je suis plutôt content de cette solution de sauvegarde. Le serveur de sauvegarde est discret et plutot silencieux (comme décrit dans l’article plus haut) et la solution de sauvegardes incrémentales est flexible et facilement configurable.

Et vous ? Utilisez-vous Duplicity ou un autre programme pour réaliser vos sauvegardes incrémentales ? N’hésite pas à laisser votre témoignages dans les commentaires.

(1) : quoique la liste de diffusion de rdiff-backup s’est  remise à bouger , à voir dans les prochains mois

Vrac de mini-messages n°3 : Erlang, Python, Django, Debian GNU/Hurd, SSH

Suivez-moi aussi sur Identi.ca ou sur Twitter.

Voici les dents/tweets intéressants de la semaine dernière. Au menu Erlang, Python, Django, Debian GNU/Hurd et du SSH :

  • retour d’xp d’une migration #erlang vers #python
    http://ur1.ca/e1qmm 
    => dans le cadre de la haute disponibilité, on observe plutôt en général le contraire qui se produit. Les arguments abordés par l’auteur sont toutefois très intéressants, comme la limite des capacités des membres de l’équipe en Erlang et la cohérence de l’ensemble des outils, la majorité étant codée en Python.

Erlang_logo

  • e-mails avec #django 1ère partie
    http://ur1.ca/e192y 
    et 2nd partie
    http://ur1.ca/e1930 
     => l’auteur prône l’utilisation des signaux, afin de déclencher l’envoi des e-mails de manière non-bloquante.
  • Publication de #Debian #GNU/#Hurd 2013
    http://ur1.ca/e0u2x 
     => une nouvelle que j’ai particulièrement appréciée, qui démontre la bonne dynamique et l’adaptabilité de la pile d’outils et paquets Debian mais aussi sa flexibilité et son indépendance vis-à-vis du noyau sous-jacent. Un énorme atout si jamais ce dernier devient inutilisable (fin de vie du projet, problème légal) face aux autres distributions.

hurd

  • outil pour gérer ses connexions #SSH : storm
    http://ur1.ca/e0l9r 
    => un petit outil sympathique pour manipuler son .ssh/config, si jamais vous êtes sur un parc où il évolue tout le temps. Si vous êtes dans ce type de problème, vous serez peut-être aussi intéressé par le projet Belier.
  • simple load generator for a web app in #python by Tarek Ziadé: boom 0.7
    http://ur1.ca/dym5x 
     => un outil intéressant pour tester la bonne montée en charge de vos applications web par un serial hacker de bons logiciels Tarek Ziadé (voir ses bouquins) qui travaille chez Mozilla sur ce genre de problèmes. A tester absolument.

boom

Et vous ? Que pensez-vous des technologies et articles abordés ci-dessus ? N’hésitez pas à réagir dans les commentaires.


À propos de l’auteur

Carl Chenet, architecte système et expert GNU/Linux indépendant. N'hésitez pas à faire appel à mes services.
>>> Mon offre de services

Suivez-moi aussi sur Identi.ca !

Suivez-moi aussi sur Twitter !

Soutenir l’auteur

Soutenir les activités Debian de l'auteur Faire un don Pourquoi faire un don ?

Catégories


Suivre

Recevez les nouvelles publications par mail.

%d bloggers like this: