Catégories
Developpement Open-source Reseau Systeme

Glances v2.0 RC – J’ai besoin de vous !

Cela fait maintenant plusieurs mois que je délaisse mon bébé blog pour me consacrer au développement de la version 2.0 de Glances. Avec l’aide d’Alessio Sergi, nous avons effectué un refactoring complet du code et apporté de nouvelles fonctions qui, je l’espère, vous serons utiles.

Sélection_175

Cependant, avant la mise à disposition officielle, j’ai besoin de vous pour tester la première Release Candidate (RC1). Le développement ayant été fait sous Ubuntu 14.04, je recherche donc des personnes de bonne volonté pour valider cette RC1 sur d’autres système d’exploitation: autres distributions GNU/Linux, BSD, Mac OS, Windows.

Comment tester Glances v2.0 RC1 ?

Le plus simple est de suivre les instructions de la page Wiki qui va vous permettre de tester cette nouvelle version sans impacter votre système existant (utilisation d’un environnement virtuel avec virtualenv).

Il est important de bien vérifier que l’on est sur la branche DEVELOP avant de lancer les tests suivants. Pour vérifier cela:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -V

devrait afficher comme résultat:

Glances v2.0_RC1 with psutil v2.1.0

Quoi tester?

A vrai dire un peut tout…

Le mode standalone

Le plus simple est de commencer par lancer Glances en mode standalone (supervision de son propre système):

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf

Votre terminal devrait afficher les statistiques (rafraîchissement par défaut de 3 secondes). En appuyant sur la touche ‘h’, vous obtiendrez une liste des différentes fonctions.

Mode client/serveur classique

Je vous propose ensuite de passer au mode client/serveur qui peut être testé sur une unique machine (le client et le serveur étant lancé sur la même machine) ou bien sur deux machines différentes.

On commence par lancer le serveur:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -s

Puis le client:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -c @IPSERVER

Votre terminal va alors afficher les statistiques du serveur.

Mode client/serveur SNMP

C’est une nouveauté de la version 2.0. Ce mode permet de lancer un client vers une machine ou le serveur Glances n’est pas lancé. Il va ainsi essayé de se connecter a un serveur SNMP (si celui-ci est installé sur votre serveur). Cette fonction est encore expérimentale et ne fonctionne correctement qu’avec des agents SNMP GNU/Linux.

Pour tester, il suffit de lancer le client:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -c @IPSERVER

Votre terminal va alors afficher les statistiques minimale du serveur (par exemple, on a pas la liste des processus).

Sélection_176

Mode Web serveur

Egalement une nouveauté de la version 2.0, ce mode permet de lancer un serveur Glances qui va proposer une interface Web. Glances utilise pour cela le framework Bootle qui a déjà fait ses preuves dans de nombreux autres projets libres.

Pour lancer le serveur en mode Web, il faut saisir la ligne de commande suivante:

cd ~/tmp/glances
LANGUAGE=en_US.utf8  ~/glances-venv/bin/python -m glances -C ~/tmp/glances/conf/glances-monitor.conf -w

Puis pointer son navigateur Web préféré sur l’adresse suivante: http://<ip serveur>:61208/

Glances - Mozilla Firefox_177

Comment remonter un bug ou une demande d’amélioration ?

Il faut disposer d’un compte Github et de cliquer sur le lien suivant: Remonter un bug dans Glances.

Dans la description, faire systématiquement apparaître:

  • la version de Glances testée ( ~/glances-venv/bin/python -m glances -V)
  • votre environnement de test (système d’exploitation, hardware, version de Python…)
  • un descriptif le plus précis du problème et de la manière de le reproduire (en Anglais de préférence)

Je compte sur vous 🙂

Catégories
Hardware Open-source

Mon avis sur le Dell XPS Dev Edition 2014

Il y a quelques mois, j’avais rédigé un billet sur ma shortlist d’UltraBooks compatible avec un système d’exploitation GNU/Linux. Depuis, mon choix s’est porté vers le Dell XPS 13 » Developer Edition (version 2014 Sputnik). J’ai un peu attendu avant de me lancer dans la rédaction de cet article afin d’avoir le recul suffisant. P1120760

Outside de beast

On commence par le premier contact avec la machine: l’extérieur. Première chose qui me vient: il est beau. La preuve: même ma femme qui ne jure que par Apple m’a complimenté sur les lignes fines et la qualité des matières (aluminium et plastique). On peut donc le laisser traîner sans problème au milieu de salon.

Au niveau de la taille, il se rapproche du format d’un MacBook Air sans en atteindre la finesse. Comparé à mon ancienne machine, celle-ci passe pour un dinosaure.

P1120762

P1120763

Taille du Dell XPS comparé à un Apple MBP 13″

Inside de beast

Basé sur processeur Intel i7 4500U cadencé à 3 GHz et disposant de 8 Go de RAM, il est livré avec un disque dur SSD de 250 Go avec Ubuntu 12.04 LTS pré-installé. Pour mon utilisation personnelle (majoritairement du développement, du blogging, de la navigation Internet et de la visualisation de films/séries TV), le dimensionnement de la machine est suffisant. J’aurai cependant aimé pouvoir gonfler la mémoire vive à 16 voir 32 Go de RAM mais Dell ne propose pas cette customisation (d’après certains forums, il semble que la RAM soit soudée à la carte mère…).

L’autonomie est d’environ 6 heures avec une luminosité d’écran adapté (je suis à un peu plus de 50% à l’intérieur de ma maison) et une utilisation mixte (développement, surf et visionnage de vidéos HD). On est donc dans la moyenne des machines de la même catégorie.

L’écran

L’écran de 13.3 pouces (résolution full HD de 1920×1024) est superbe: lumineux, uniforme en terme de rendu des couleurs et tactile. Ce dernier point est très bien géré, avec notamment la gestion des gestes comme le pincé/écarté pour le zoom/dé-zoom ou le scrolling haut et bas.

C’est un vrai bonheur à regarder. Cependant, il est brillant et donc dédié à une utilisation à l’intérieur.

P1120764

Ecran superbe mais brillant, donc utilisation en extérieur à éviter… (photo prise avec soleil dans le dos)

Le clavier

Les touches sont très agréables, relativement silencieuses. Seul bémol, il n’y a pas de touches Page Up et Page Down, il faut appuyer sur une combinaison de touches (Fn+Up et Fn+Down). C’est un peu gênant surtout pour les développeurs qui se servent souvent de ces touches pour naviguer à l’intérieur des codes sources. Cependant, après quelques jours, j’ai pris l’habitude des combinaisons.

P1120766

Un rétro-éclairage du plus bel effet se déclenche automatiquement en cas de besoin. On peut donc continuer à coder dans la nuit :).

Le touchpad

Grand, très grand, trop grand. Bien que réactif et précis, il m’arrive régulièrement de cliquer dessus en saisissant un texte sur le clavier. Sous Ubuntu 14.04, il faut saisir la ligne de commande suivante pour avoir un touchpad fonctionnel avec la gestion multitouch:

echo "blacklist i2c_hid" | sudo tee -a /etc/modprobe.d/blacklist.conf

Puis rebooter la machine.

P1120769

Système d’exploitation GNU/Linux

Le Dell XPS Dev Edition est livré en standard avec Ubuntu 12.04 LTS. Au premier démarrage, on tombe donc sur le wizard qui permet de configurer le nom de la machine, le compte utilisateur et la configuration locale (clavier, heure…). Il est donc utilisable en moins de 5 minutes avec un environnement graphique Unity. Avant la réception de ma machine, j’ai consulté les forums de Dell pour savoir si une évolution vers Ubuntu 14.04 LTS était prévue: malheureusement ce n’est pas le cas. On voit ici les limites de la stratégie Linux de Dell. Si on peut louer la démarche de Dell de proposer un PC portable de cette qualité sans Windows, on ne peut que déplorer les limites comme le fait de travailler avec une version qui date de plus de deux ans (même si le support long terme est de cinq ans). Les acheteurs de ce type de configuration sont des geeks qui s’en foutent d’avoir sur leur PC perso une version « stable » de Linux, ils veulent de la nouveauté.

Cependant, cette machine supportant tous les systèmes de dernière génération, j’ai donc téléchargé l’ISO d’Ubuntu Gnome Edition version 14.04 et j’ai fait un test à partir d’une clés USB live pour vérifier que le matériel était compatible. Une fois fait, j’ai donc réinstallé complètement la machine.

Espace de travail 2_171

Une fois correctement configuré, la machine est très réactive et agréable à utiliser.

Ma prochaine étape sera d’essayer une Arch Linux avec un environnement Gnome 3.12.

Conclusion

Je suis globalement très satisfait de mon achat. Pour avoir bien étudié les différentes alternatives, le Dell XPS est un bon compromis entre la qualité, la puissance et le coût de la machine.

Les +:

  • Qualité générale de fabrication de la machine
  • Puissance idéale pour le développement logiciel
  • Poids et taille de la machine que l’on hésite pas à emporter en voyage
  • Ecran de grande qualité
  • Rapport qualité/prix (j’ai eu le mien à un peu moins de 1100€ grâce à une promotion)
  • Autonomie

Les -:

  • Pas de port Ethernet (il faut passer par un adaptateur Ethernet/USB que l’on trouve  à environ 25€ sur le Web)
  • Pas de lecteur de carte SD
  • Pas de lecteur DVD/BlueRay (perso je n’en fait rien…)
  • Ecran brillant donc difficilement utilisable en plein soleil
  • Léger sifflement proportionnel au niveau de rétro-éclairage du clavier (voir commentaire ci-dessous et le thread associé sur le forum de Dell) => Une solution de contournement existe, voir ce commentaire)
Catégories
Open-source Planet-libre

Les idées et les logiciels libres

Si la nature a rendu une chose moins propre que toutes les autres à la propriété exclusive, c’est l’action de la puissance pensante appelée une idée, qu’un individu possède seulement tant qu’il la garde pour soi; dès l’instant où elle est divulguée, elle s’impose à la possession de tous et celui qui la reçoit ne peut s’en défaire. Ce qui en fait aussi sa particularité est que personne ne la possède moins, car chacun la possède en entier. Celui qui reçoit une idée de moi, l’ajoute à son savoir sans diminuer le mien; de même que celui qui allume sa torche au feu de la mienne, reçoit la lumière sans me plonger dans les ténèbres.

Thomas Jefferson

capture_164

Découvert lors du visionnage du TEDx 2012 de Cédric Villani.

Catégories
Blog Open-source Planet-libre Web

Installation de NGinx avec PageSpeed sous Debian

Tous ceux qui se sont intéressés à l’optimisation du référence de leur site dans la sainte base de donnée de Google le savent bien, le temps de chargement des pages est un des facteurs clé pour en établir le classement. Google ne s’en cache plus depuis longtemps et propose toute une batterie d’outil pour identifier et optimiser la vitesse d’affichage de votre site.

Nous allons dans ce billet nous intéresser à l’optimisation de la couche basse de votre site, c’est à dire sans modification du contenu des pages, en mettant en place le module PageSpeed sur le serveur Web NGinx. J’ai utilisé un serveur sous Debian mais vous pouvez appliquer ceci, moyennant quelques adaptations, sur d’autres systèmes d’exploitations.

capture_158

PageSpeed Module ? Kesako ?

Google a  regroupé sous l’acronyme PageSpeed, un ensemble d’outils pour aider les Webmasters à optimiser leurs sites. Un des ces outil est nommé PageSpeed Module. C’est un module optionnel disponible pour les serveurs Web Apache et NGinx.

Une fois installé et configuré, ce module va, de manière dynamique et transparente, effectuer un ensemble d’optimisations lors de la mise à disposition de vos pages à vos utilisateurs. Chaque optimisation est mise en place sous la forme d’un filtre qui vont par exemple changer dynamiquement le contenu HTML de vos pages, trouver des emplacements de javascripts plus rapide ou bien optimiser les images. Comme, nous le verrons plus loin, la liste des filtres est bien sûr paramétrable au niveau des fichiers de  configuration de NGinx.

La liste complète des filtres fournis en standard par Google est disponible sur cette page.

Trêve de long discours, passons maintenant à l’installation et à la configuration de PageSpeed Module avec un serveur NGinx.

Installation de NGinx + PageSpeed Module

Vous savez tout le bien que je pense du serveur Web NGinx. J’ai donc profité de ce billet pour mettre à jour mon script d’installation automatique de NGinx afin d’y intégrer le module PageSpeed. Ainsi pour les plus pressés d’entre-vous, il suffit de télécharge ce script et de le lancer à partir d’un compte administrateur pour avoir une configuration NGinx + PageSpeed.

capture_159

Pour les autres, les plus curieux, nous allons détailler l’installation dans la suite de ce paragraphe.

On commence donc par se créer un répertoire de travail:

mkdir ~/install-nginx-pagespeed
cd ~/install-nginx-pagespeed/

Puis on télécharge les deux archives nécessaires:

wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.3-beta.zip
wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz

On décompresse le tout:

unzip release-1.7.30.3-beta.zip
cd ngx_pagespeed-release-1.7.30.3-beta/
tar zxvf ../1.7.30.3.tar.gz
cd ..

A ce stade, le répertoire ngx_pagespeed-release-1.7.30.3-beta contient donc le module PageSpeed prêt à être intégré aux sources de NGinx.

On récupère donc les sources de ce dernier:

wget http://nginx.org/download/nginx-1.4.4.tar.gz

On décompresse puis on installe:

tar zxvf nginx-1.4.4.tar.gz
cd nginx-1.4.4/
./configure --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --with-http_dav_module --http-client-body-temp-path=/var/lib/nginx/body --with-http_ssl_module --http-proxy-temp-path=/var/lib/nginx/proxy --with-http_stub_status_module --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_flv_module --with-http_realip_module --with-http_mp4_module --add-module=../ngx_pagespeed-release-1.7.30.3-beta
make

Enfin on installe la nouvelle version de NGinx contenant le module PageSpeed sur son système (attention cela va écraser votre installation existante mais pas les fichiers de configurations).

sudo make install

On relance NGinx pour prendre en compte la nouvelle installation.

sudo service nginx restart

On a donc un beau NGinx avec le module PageSpeed disponible. Par défaut, ce module n’est pas activé. Il faut donc passer à l’étape suivant: la configuration du module.

Configuration du module PageSpeed pour NGinx

C’est assez simple car tout est localisé dans la section server (ou http dans la cas d’une mutualisation avec plusieurs hôtes virtuels) des fichiers de configuration de NGinx. On commence donc par identifier cette section puis d’y ajouter les lignes suivantes pour activer le module PageSpeed en mode « pass through » (ce mode permet de choisir de manière exhaustive les filtres à appliquer):

server {
        ...

	# PageSpeed
        # enable ngx_pagespeed
        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;
        # Ensure requests for pagespeed optimized resources go to the pagespeed handler
        # and no extraneous headers get set.
        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
                add_header "" "";
        }
        location ~ "^/ngx_pagespeed_static/" { }
        location ~ "^/ngx_pagespeed_beacon$" { }
        location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
        location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
        location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }

       ...
}

Ces lignes permettent:

  1. d’activer pagespeed (pagespeed on)
  2. de configurer le répertoire utiliser par PageSpeed pour cacher ses informations (FileCachePath)
  3. de s’assurer que les requêtes vers PageSpeed ne sont pas perturbées (location)

Pour le cache on utilise le répertoire /var/ngx_pagespeed_cache qu’il faut créer et configurer au niveau des droits pour que NGinx puisse y accéder (dans mon cas, le processus NGinx est lancé avec l’utilisateur www-data).

sudo mkdir /var/ngx_pagespeed_cache
sudo chown www-data:www-data /var/ngx_pagespeed_cache

Ensuite à la suite des autres lignes de la section server (ou http) on active les filtres souhaités. Voici un exemple des filtres que j’utilise sur mon serveur hébergeant ce blog:

server {
        ...

        # enable collapse whitespace filter
        pagespeed EnableFilters collapse_whitespace;

        # enable JavaScript library offload
        pagespeed EnableFilters canonicalize_javascript_libraries;

        # combine multiple CSS files into one
        pagespeed EnableFilters combine_css;

        # combine multiple JavaScript files into one
        pagespeed EnableFilters combine_javascript;

        # remove tags with default attributes
        pagespeed EnableFilters elide_attributes;

        # improve resource cacheability
        pagespeed EnableFilters extend_cache;

        # flatten CSS files by replacing @import with the imported file
        pagespeed EnableFilters flatten_css_imports;
        pagespeed CssFlattenMaxBytes 5120;

        # defer the loading of images which are not visible to the client
        pagespeed EnableFilters lazyload_images;

        # enable JavaScript minification
        pagespeed EnableFilters rewrite_javascript;

        # enable image optimization
        pagespeed EnableFilters rewrite_images;

        # pre-solve DNS lookup
        pagespeed EnableFilters insert_dns_prefetch;

        # rewrite CSS to load page-rendering CSS rules first.
        pagespeed EnableFilters prioritize_critical_css;

	# make Google analytics async
	pagespeed EnableFilters make_google_analytics_async;
}

Test et validation

Il existe tout un tas d’outils pour tester la vitesse de chargement de vos pages. J’utilise personnellement GTMetrix et  PageSpeed Insights. On peut ainsi facilement quantifier le gain de l’utilisation du module PageSpeed sur son site.

Il est clair que le module PageSpeed n’aura pas le même impact sur les les sites ayant pris en compte les problématiques de SEO et d’optimisation du chargement dès leurs conceptions que sur les autres. Mais au vu du faible overhead CPU et mémoire de ce module, je vous conseille de l’intégrer de base dans vos serveurs Web.

Utilisez-vous ce module (ou son pendant pour Apache ?) pour l’hébergement de vos sites ? Quels sont les filtres que vous mettez en place ?

Sources ayant servi à la rédaction de ce billet:

Catégories
Developpement Open-source Planet-libre Reseau Systeme

Glances 1.7.4 est dans les bacs !

Nouvelle version pour Glances, l’outil de supervision système que je développe avec d’autres contributeurs depuis maintenant quelques années. On commence par le traditionnel screenshot du client en mode console:

capture_154

 

Installation et mise à jour

L’installation de Glances sur votre machine (Linux, Mac ou même Windows) se fait via la ligne de commande:

pip install glances

La mise à jour n’est pas plus compliquée:

pip install --upgrade glances

 Au chapitre des nouveautés

On commence par la modification de l’affichage de la ligne résumant l’état des processus. On a séparé la notion de  ‘tasks’ et de ‘threads’:

capture_155

Une nouvelle statistique au niveau de la CPU des machines GNU/Linux est affiché et disponible via l’API: la steal qui peut être utile de surveiller notamment si votre machine est virtuelle (plus d’information sur la mémoire steal en lisant ce très bon billet sur le sujet).

capture_157

On a également ajouté l’information d’uptime (temps écoulé depuis le dernier redémarrage de la machine). Cette information est disponible en haut à droite dans l’interface et bien évidement comme toutes les statistiques via l’API (methode getUptime).

capture_156

Il est maintenant possible, via le fichier de configuration de Glances de cacher certains disques ou interfaces réseau:

[iodisk]
# Define the list of hidden disks (comma separeted)
hide=sda2,sda5

[network]
# Define the list of hidden network interfaces (comma separeted)
hide=lo

Vous serez également heureux d’apprendre que Glances 1.7.4 consomme environ 10% de moins de CPU que la version précédente. En effet, certaines statistiques qui ne nécessite pas un rafraîchissement très fréquent sont maintenant mis en cache.

Enfin, un certain nombre de bugs ont été corrigés (voir la liste exhaustive ici).

Un grand merci aux contributeurs (Alessio en tête), aux packagers (qui vont avoir un peu de boulot) et aux bêta-testeurs !

En route pour la version Glances 2.0 (re-factoring complet, gestion par plugins…) !

Catégories
Developpement Open-source Planet-libre

Tu fais quoi ?

Un premier billet en forme d’excuse pour les lecteurs de ce blog.

En effet, depuis quelques temps, je ne suis pas très actif sur ce site. Le (vrai) boulot et la (vraie) vie ne me laissent que trop peu de loisirs. J’ai donc fait le choix de privilégier mes autres activités dans le domaine des logiciels libres.

En tête de gondole, Glances va bientôt sortir en version 1.7.4. Je suis d’ailleurs à la recherche de bêta testeurs de la version RC notamment sur les systèmes d’exploitation BSD, Mac OS et Windows (suivre cette procédure pour l’installer sur votre système sans impacter la version de Glances existante).

glances-1.7.4

Ensuite, le script Python SxxExx permet de récupérer via la ligne de commande les torrents de vos séries préférés (juste les torrents hein, car télécharger les séries est interdit par Monsieur Hadopi… paix à son âme). En gros, l’idée est de pouvoir lancer des recherches (seulement sur Piracy Bay pour l’instant) en fonction du nom de la série, de la saison, de l’épisode.

Voici quelques exemples:

$ sxxexx -t homeland -s 3 -e 10

Homeland S3E10 name is "Good Night"
Title:   Homeland S03E10 HDTV x264-ASAP [eztv]
Seeders: 3567
Magnet:  magnet:?xt=urn:btih:522b99e066bf97753a9c0
$ sxxexx.py -t "Breaking bad" -s 5 -a

Breaking Bad has 16 episodes in season 5
*******************************************************************************
Title:   Breaking Bad - The Complete Season 5 [BDRip-HDTV] + EXTRAS
Seeders: 2097
Magnet:  magnet:?xt=urn:btih:82eb1fbb413038dd551eb8c5d4f6a891ff2d190f&dn=Breaking+Bad+-+The+Complete+Season+5+%5BBDRip-HDTV%5D+%2B+EXTRAS&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337
*******************************************************************************
Title:   Breaking Bad S05E16 REPACK HDTV x264-ASAP[ettv]
Seeders: 1928
Magnet:  magnet:?xt=urn:btih:24d076e1c0f041977346e7bbf4277ceccf1086b0&dn=Breaking+Bad+S05E16+REPACK+HDTV+x264-ASAP%5Bettv%5D&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337
*******************************************************************************
...
$ sxxexx -t "how i met your mother" -s 9 -e 9 -d

How I Met Your Mother S9E9 name is "Platonish"
Title:   How I Met Your Mother S09E09 HDTV x264-2HD [eztv]
Seeders: 3631
Magnet:  magnet:?xt=urn:btih:11633c741fe5e0a0774c2222cfa6c05

J’utilise ce script en parallèle d’un autre projet libre: Witsub. Ce dernier permet de rechercher, également en ligne de commande (« fuck the gui ») les sous-titres des séries téléchargés.

 

Je participe également à d’autre développements. Je vous invite à suivre mon activité sur Github et à consulter la liste de mes repositories.

 

 

Catégories
Developpement Open-source Planet-libre

Utilisation des CTags avec Sublime Text

capture_147CTags est un outil pour les développeurs permettant de construire un index des fonctions et classes utilisées. Cela permet donc à un éditeur de texte compatible avec CTags de ce déplacer rapidement et sans « parsing » inutile dans l’arborescence de votre projet. On peut ainsi, à l’aide d’une simple combinaison de touches, aller directement à la définition d’une fonction.

Nous allons dans ce billet voir comment installer et configurer CTags avec l’éditeur de texte Sublime Text 3 dans un environnement Debian/Ubuntu.

Note: la procédure est grosso modo la même pour d’autres éditeurs comme Vim , Emacs ou GEdit.

Installation de CTags

CTags est disponible dans les dépôts de toutes les distributions. Sous Ubuntu, une simple ligne de commande:

sudo apt-get install ctags

devrait suffire pour installer une version stable de CTags.

Note: Pour installer CTags à partir des sources, toutes les informations se trouvent sur le site officiel.

Création de l’index pour votre projet

Il existe de nombreuses manières pour construire les fichiers index CTags. La plus simple est de se rendre dans le répertoire de votre projet (par exemple ~/dev/monprojet) puis de saisir la commande suivante:

cd ~/dev/monprojet
ctags -R -f .tags

On demande donc au logiciel ctags de générer le fichier index nommé .tags (option -f .tags) à effectuant un parsing récursif (option -R) de l’arborescence de votre projet.

Ce fichier doit être régénéré à chaque ajout de fonction ou de classe. Cela se fait par une combinaison de touche dans SublimeText mais peut aussi être automatisé par un hook après un commit Git.

Installation du plugin Ctags dans Sublime Text

Je pars sur le principe ou votre Sublime Text est installé avec le plugin Package Manager (si ce n’est pas le cas, suivre cette procédure).

Une fois Sublime Text lancé, on commence par appuyer sur la combinaison de touche SHIFT+CTRL+P puis de saisir le mot clé Install Package. La liste des plugins disponibles va se charger, on cherche ensuite le plugin CTags et on l’installe.

Utilisation de CTags dans Sublime Text

Au démarrage de Sublime Text dans le répertorie de votre projet (~/dev/monprojet) , le fichier index de Ctags (.tags)  va automatiquement être chargé. Il ne vous reste plus qu’à utiliser les combinaisons de touches suivantes pour naviguer dans les classes et fonctions de votre code source:

Commande Key Binding
Générer / Re-générer le fichier index Ctags CTRL+t, CTRL+r
Aller à la définition de la fonction/classe CTRL+t, CTRL+t
Revenir en arrière CRTL+t, CTRL+b
Affiche la liste des fonctions/classes (fichier en cours) ALT+s
Affiche la liste des fonctions/classes (tous les fichiers du projet) ALT+SHIFT+s

Conclusion

L’utilisation des CTags apporte un gain de productivité non négligeable lors du développement logiciel. Le fait d’avoir une base commune et ouverte (le fichier .tags étant à plat et au format texte) permet de passer d’un éditeur à un autre sans perte de fonctionnalité.

Utilisez-vous les Ctags ? Si oui comment.

Partagez cela avec nous !

Catégories
Hardware Open-source Planet-libre

Ma shortlist d’Ultrabooks sous GNU/Linux

dellxps

Je cherche à remplacer mon bon vieux PC laptop personnel qui commence un peu à dater (Fujitsu Lifebook S Series de 2009). L’utilisation que je fais de ce PC est assez varié: Surf sur le Web, blogging, développement, traitement d’image (photo)…

A partir de mon expérience sur le Fujitsu, les caractéristiques minimales sont les suivantes (par ordre décroissant d’importance):

  • composant compatible avec les distributions GNU/Linux (Ubuntu pour mon cas)
  • écran avec une résolution Full HD avec une diagonale minimale de 13″
  • 8 Go de RAM
  • disque dur système SSD car une fois que l’on y a goûté, il est impossible de revenir en arrière
  • processeur i5 ou supérieur
  • qu’il ne soit pas trop moche car il traîne souvent dans mon salon et pas trop lourd car je l’emporte avec moi en voyage et déplacement
  • un clavier AZERTY normal (donc ce qui met hors jeu des Apple MacBook Pro…)
  • un prix autour des 1200€

Comme vous pouvez le voir, ces caractéristiques collent parfaitement avec les laptop de type ultrabook.

J’ai donc commencé à chercher sur le net des informations sur les machines pouvant coller à mes besoins. De manière assez surprenante, la liste n’est pas si grande que cela. En effet, à l’heure actuelle (décembre 2013), beaucoup d’Ultrabooks ne proposent qu’une résolution « HD Ready »  (1366×778 pixels) ou d’une mémoire trop juste (4 Go).

Ainsi, ma shortlist  initiale se compose d’une dizaine de machines: CLIQUEZ ICI pour consulter ma liste sur Google Drive.

Voici, par ordre alphabétique, les ultrabooks qui sortent du lot par rapport à mes besoins/goûts.

Clevo W840SU 14″

Proposé par le site Anglais PCSpecialist, ce laptop n’est pas à proprement parler un ultrabook mais dispose d’une configuration paramétrable, d’un port Ethernet (oui madame !) et de composant de qualité. Il peut de plus être commandé sans OS Windows, d’ou un prix de vente assez concurrentiel (moins de 1200 € pour une configuration musclée).

Le seul problème pour moi est le design général qui n’est pas vraiment glamour.

cosmos

 

 

Dell XPS 13 Dev

La deuxième machine est beaucoup plus connue car elle avait fait le buzz au moment de sa commercialisation. Imaginer un ultrabook design, doté d’une configuration musclée pour les développeurs sous Ubuntu (au moins on est sûr de la compatibilité) !

Vous en avez rêvé ? Dell a essayé de le faire avec son XPS 13 Dev Edition.

Au niveau du look, rien à dire, c’est une belle machine que l’on a pas honte de sortir en public. Au chapitre des points négatifs: pas de port Ethernet et un prix qui grimpe à plus de 1300€ avec la livraison.

dellxps2

 

Lenovo Ideapad Yoga 2 Pro 59386559

Quoi ? Un IBM (enfin Lenovo) dans cette sélection ? Et oui, l’Ideapad Yoga 2 est une bien belle machine avec notamment une dalle HD avec une résolution de 3200×1800 pixels, un design très sympa (si on aime le orange) et une configuration qui tient la route pour 1200€.

Il est par contre très difficile de le trouver en France et la compatibilité avec Linux demande quelques manipulations.

lenovo

 

MOUNTAIN Portátil LightU T744G

Enfin, pour finir cette sélection, nous allons aller du coté de l’Espagne ou l’intégrateur Mountain propose des PC et laptops à configurer et compatible avec Ubuntu (il propose même d’installer nativement l’OS avant de vous l’expédier).

La configuration est bonne, le design plus sexy que le Clevo Anglais mais le prix grimpe à plus de 1300€.

capture_145

 

Conclusion

Je ne suis pas encore fixé sur mon choix final. Pour l’instant, le Montain, le Dell et le Lenovo tiennent la corde.

Avez-vous d’autres pistes ?

Catégories
Open-source Planet-libre

Supervision de son PC bureautique avec Glances

D’abord orienté vers la supervision de machines distantes, Glances permet également de surveiller l’ensemble des paramètres systèmes de ses machines bureautique. De plus, depuis sa version 1.7.2 , Glances offre une interface Curses sur l’ensembles des plateformes: GNU/Linux, BSD, Mac OS et même … MS Windows.

Il est en effet fréquent d’observer un ralentissement, voir un blocage de sa machine locale. Nous allons voir comment configurer puis utiliser Glances pour en trouver les causes et ainsi prendre les actions adéquates.

Configuration de Glances

Après installation de Glances sur son système (le plus simple étant de passer par PyPI), un fichier de configuration par défaut est disponible sous /etc/glances/glances.conf sous GNU/Linux (voir ici pour les emplacements sur les autres systèmes). Je vous conseille de copier ce fichier en local dans votre répertoire de configuration standard (~/.config/glances ou $XDG_CONFIG_HOME/glances).

mkdir -p ~/.config/glances
cp /etc/glances/glances.conf ~/.config/glances/

On peut ensuite éditer son fichier selon ses besoins: ~/.config/glances/glances.conf

Voici le fichier que j’utilise sur mon PC portable:

[cpu]
# Limits values for CPU user in %
# Defaults values if not defined: 50/70/90
user_careful=50
user_warning=70
user_critical=90
# Limits values for CPU system in %
# Defaults values if not defined: 50/70/90
system_careful=50
system_warning=70
system_critical=90
# Limits values for CPU iowait in %
# Defaults values if not defined: 40/60/80
# Not easy to tweek...
# Source: http://blog.scoutapp.com/articles/2011/02/10/understanding-disk-i-o-when-should-you-be-worried
#         http://blog.logicmonitor.com/2011/04/20/troubleshooting-server-performance-and-application-monitoring-a-real-example/
#         http://blog.developpeur-neurasthenique.fr/auto-hebergement-iowait-ma-tuer-1-2-vmstat-mpstat-atop-pidstat.html (FR)
iowait_careful=40
iowait_warning=60
iowait_critical=80

[load]
# Value * Core
# Defaults values if not defined: 0.7/1.0/5.0 per Core
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
#         http://www.linuxjournal.com/article/9001
careful=0.7
warning=1.0
critical=5.0

[memory]
# Defaults limits for free RAM memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[swap]
# Defaults limits for free swap memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[temperature]
# Temperatures in °C for sensors
# Defaults values if not defined: 60/70/80
careful=60
warning=70
critical=80

[hddtemperature]
# Temperatures in °C for hddtemp
# Defaults values if not defined: 45/52/60
careful=45
warning=52
critical=60

[filesystem]
# Defaults limits for free filesytem space in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[process]
# Limits values for CPU per process in %
# Defaults values if not defined: 50/70/90
cpu_careful=50
cpu_warning=70
cpu_critical=90
# Limits values for MEM per process in %
# Defaults values if not defined: 50/70/90
mem_careful=50
mem_warning=70
mem_critical=90

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_countmin=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

En plus des jeux de limites pour les alertes de CPU, de charge (LOAD) et de mémoire (MEM), je souhaiterai que l’on s’attarde un peu sur la section [monitor] qui permet de mettre en avant une liste de processus jugés importants.

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Je défini donc 3 groupes de processus qui vont donner l’affichage suivant dans l’interface de Glances:

capture_142

Supervision de Chromium

Le premier groupe (list_1) permet de surveiller les processus relatifs à mon navigateur Web (Chromium).

Pour cela je lui donne un label (list_1_description) qui est une chaîne de caractères complètement arbitraire (mais limité à 15 caractères):

list_1_description=Chromium browser

Ensuite, il faut définir l’expression régulière qui va permettre de regrouper les processus:

list_1_regex=.*chromium-browse.*

Le problème avec Chromium, c’est qu’il peut être très consommateur de ressources (notamment mémoire) si l’on ouvre un grand nombre de pages. Je configure donc une surveillance du nombre maximum de processus. Glances affichera donc la ligne en rouge si ce nombre est dépassé:

list_1_countmax=50

Je ne défini pas de commande (list_1_command) associé à ce groupe. Donc par défaut Glances va calculer la consommation CPU et la mémoire globale des processus de ce groupe.

Supervision d’OpenVPN

J’utilise souvent un service VPN pour surfer (entre autre…) sur le Web. J’ai donc ajouté une supervision du processus OpenVPN:

list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1

Contrairement à Chromium, je pose ici une alerte si le nombre de processus est inférieur à 1 (donc si OpenVPN n’est pas lancé).

Supervision de Dropbox

Avoir ces fichiers disponibles sur toutes ses machines est devenu pour moi complètement indispensable. La supervision du service Dropbox est faite par Glances de la manière suivante:

list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Rien de bien nouveau sur les 3 première lignes, la dernière nécessite cependant quelques explications. La commande (shell) passée en paramètre de (list_3_command) sera exécuté à chaque « check » de Glances (donc par défaut toutes les 3 secondes). Cette commande va demander à Dropbox l’état de synchronisation mon répertoire (voir ce billet pour apprendre à  administrer Dropbox en ligne de commande).

Utilisation de Glances

Votre Glances est maintenant prêt à être utilisé. Donc si vous rencontrez un problème sur votre machine, il faudra ouvrir un terminal et saisir la commande:

glances -ey -C ~/.config/glances/glances.conf

Glances va se lancer et afficher les informations sur votre système:

capture_143

 

En plus de la section [monitor] ou l’on retrouve la supervision de nos groupes Chromium, OpenVPN et Dropbox, on a également l’ensemble des informations systèmes.

Dans le bandeau du haut, les informations sur la CPU, la charge et la mémoire. Les codes couleurs sont standards:

GREEN stat counter is "OK"
BLUE stat counter is "CAREFUL"
MAGENTA stat counter is "WARNING"
RED stat counter is "CRITICAL"

Sur le panneau de gauche, on a les informations moins critiques comme: les débits des interfaces réseau, les capteurs de température, les IO disques et l’espace disque.

Au centre, sur la section [monitor], on retrouve la liste des processus avec, par défaut, un tri « intelligent ». Par exemple, en cas de consommation mémoire excessive, le tri sera automatiquement fait sur la consommation RAM des processus.

Enfin en bas de l’écran, un rappel des dernières alertes.

Pour une description précise des fonctions de Glances, je vous conseille la lecture de la documentation officielle (lisible ici).

Conclusion

Nous arrivons à la fin de ce billet. Je n’ai pas parlé du mode client serveur qui permet de lancer Glances en tache de fond et de l’interroger à la demande mais je pense que ce mode d’utilisation est plus utilise pour la supervision de serveurs.

Si vous avez des configurations spécifiques de Glances (et surtout du [monitor]) pour surveiller vos PC, partager cela (configuration et screenshot) avec nous !

Catégories
Open-source Planet-libre

Glances 1.7.2 et son interface pour Windows

glances-white-256

Glances est maintenant disponible dans sa version 1.7.2. Au chapitre des nouveautés, une nouvelle interface cliente pour ceux d’entre vous qui ne peuvent pas se passer, par choix ou par contrainte, du système d’exploitation Microsoft Windows.  Cette interface se base sur la librairie ColorConsole et permet dans une console de commande Windows d’avoir un « look and feel » qui se rapproche de la version GNU/Linux.

Voici le résultat dans une console standard sous Windows 7:

glances-1.7.2-windows-cmd

Je vous conseille cependant de télécharger la console Console2 qui comble en partie les manques de la console par défaut (cmd).

glances-1.7.2-windows-console2

Afin de faciliter l’installation sur Windows, Frédéric Aoustin a eu la bonne idée de créer un installeur qui installe Python, les librairies nécessaires ainsi que Glances. L’installeur est disponible ici:

downloadGlances-1.7.2-win32.msi
(32-bit, MD5: dba4f6cc9f47b6806ffaeb665c093270)

Je pense que la plupart des lecteurs de ce blog ne seront jamais arrivés jusqu’ici mais si c’est le cas, ils seront heureux d’apprendre que cette version apporte également les améliorations suivantes:

  • Mise à jour de la documentation
  • Amélioration du packaging pour BSD et OpenSuse
  • Correction de nombreux bugs

Pour les Linuxiens, une mise à jour à partir de Pip est à faire avec la ligne de commande:

sudo pip install --upgrade Glances

A vos commentaires…