Friday, 17 August 2018
|
Écrit par
Grégory Soutadé

Il y a un an (déjà), j'avais publié un article faisant echo au "jour du dépassement" paru (entre autres) dans le journal Le Monde. Un an plus tanousrd, Apple s'apprête à sortir trois nouveaux modèles d'iPhone, le feu ravage la Californie, le Portugal, la Suède, la Grêce. L'année précédente a été particulièrement sèche, ce qui a permis aux glaces de fondre en abondance amenant toute une série d'inondations dans le nord de la France durant le printemps. Quant au "jour du dépassement", il est arrivé un jour plus tôt.

Bref, la situation n'est pas bien engagée et les occasions de renverser cette tendance s'amenuisent dangereusement pour atteindre un niveau critique. Une fois passés la coupe du monde, le tour de France et l'affaire Benalla, une série d'articles publiés dans la presse générale m'a fait découvrir la websérie [ NEXT ] crée par Clément Montfort. Il n'en est pas à son coup d'essai, puisqu'il a déjà réalisé des documentaires comme "La guerre des graines" et "Soigneurs de terres" diffusés sur les chaînes nationales.

Jusque dans les années 2000, l'écologie c'était un truc de bobo. Vers 2005 elle a pris plus d'importance aux yeux du grand public avec des chiffres qui commençaient à faire froid dans le dos. Il faut dire que grâce à internet, l'information circule plus rapidement et touche plus de personnes. En 2018, nous sommes dans la phase suivante. Point de départ de la websérie : le livre de Pablo Servigne et Raphaël Stevens. Bien qu'existant depuis les années 70 et le célèbre rapport du "Club de Rome", ils définissent un nouveau courant intellectuel qu'est la "collapsologie" ou "science de l'effondrement" décrivant comment et pourquoi une société s'effondre. Le modèle est similaire depuis une simple société de quelques individus perdus au milieu de l'océan Pacifique jusqu'à l'échelon planétaire.

Ce qui faisait jadis froid dans le dos résonne désormais comme une onde de choc qui lamine les âmes de l'auditorium. Il faut du temps pour l'accepter et s'en remettre. Car au-delà de la peur individuelle de la mort, aucun être vivant n'est préparé au concept de disparition pure et simple de ce que nous avons vu de nos propres yeux et qui nous semble immortel : la transformation d'une planète vivante en un gros cailloux stérile. L'épisode le plus intéressant est l'interview de Cyril Dion réalisateur de "Tomorrow"/"Demain". Je ne suis pas tout à fait d'accord sur certaines causes évoquées dans cette interview, mais les conséquences seront les mêmes.

Si un danger venant de l'extérieur permettrait de mobiliser chaque individualité dans un combat, ce n'est malheureusement pas le cas pour un danger venant de l'intérieur et représenté par chacun. Pour autant, la seule issue possible est collective. Ça ne sert à rien de se cacher au fin fond de la forêt et tenter de vivre en autarcie. Nous avons besoin de vivre en société et partager le travail si l'on veut espérer avoir une vie un tant soit peu descente. Se cacher c'est tomber dans la survie. D'une part, elle ne durera pas bien longtemps et d'autre part, cela n'arrêtera pas les bouleversements écologiques en approche.

Le problème est constitué de la somme des individualités, il faut donc agir sur ce point pour s'en sortir. Et l'on ne peut pas demander à son prochain de faire des efforts si nous ne commençons pas à le faire nous-mêmeŝ : il faut initier le mouvement pour être suivi. Pour cela, il est nécessaire de prendre des initiatives individuelles, mais aussi d'avoir un cadre législatif favorable afin d'orienter les industriels et proposer de vraies alternatives au mode de consommation actuel.

Un triste détail apparaît dans la série. M. Édouard Philippe, premier ministre (autrement dit chef du gouvernement) de la 7e économie mondiale cite régulièrement dans ses conférences à connotation environnementales le livre de Servigne et Stevens. Autrement dit, la personne responsable de notre avenir collectif, mais également celle qui a le pouvoir de changer réellement les choses ne prend pas les mesures à la hauteur des événements qui se profilent. Certes, quelques mesurettes sont prises çà et là, malheureusement insuffisantes et avec des délais d'applications à 2 ou 3 ans. De ses propres paroles : "une société qui ne se transforme pas meurt". Force est de constater que l'immense majorité des personnes adultes censées être responsables (les 30 ans et plus) ne sont pas capable d'auto-régulation. Ce que nous avons fait depuis 50 ans qui est de miser sur le couple intelligence individuelle et progrès technique comme solution absolue est un échec.

Nous savons que le modèle économique actuel n'est pas viable ou le serait pour une population de quelques centaines de millions d'habitants tout au plus (et pas 7 milliards). Aujourd'hui, les centres de productions sont déportés sur la planète entière et les centres de consommation sont regroupés dans les zones urbaines. L'équilibre repose sur la capacité de fournir de l'énergie électrique pour faire fonctionner l'ensemble des machines qui nous entourent ainsi que d'assurer l'interconnexion des centres avec de l'énergie fossile. Le jour où cet équilibre est rompu, soit à cause d'un défaut externe (maladie, guerre, crise économique majeure), soit par un tarissement des ressources (effondrement en cascade de la biodiversité entraînant un défaut d'alimentation global, fin de la ressource pétrole), l'ensemble du monde industrialisé s'effondrera comme un château de carte. Les villes confortables (en France, 80% de la population habite en zone urbaine) qui auront été construites deviendront des pièges mortels sur fond de guerre civile pour la survie. Il ne sera pas possible d'enlever le béton pour y faire pousser des patates. Le pétrole, c'est le sang du monde moderne, lorsqu'il n'arrive plus à un organe, ce dernier meurt. Pourtant, nous continuons d'accélérer la croissance de ces unités rendant un retour en arrière chaque jour un peu plus difficile. Il serait temps d'ouvrir enfin les yeux, car il y a urgence.

Différents scénarios sont envisagés de part l'incertitude du facteur humain, du nombre gigantesque de variables dans l'équation, ainsi que du degré de confiance dans la capacité de résilience du monde vivant. En omettant le facteur de la fin du pétrole, selon les prévisions actuelles, les mécanismes irréversibles d'éffondrement écologiques dûs à la pollution et au réchauffement global de l'atmosphère devraient s'engager entre 2020 et 2030. Autant dire demain. Il n'y a qu'à voir les progrès que nous avons réalisés depuis 10 ans (~ 2007/2008) pour comprendre à quel point nous sommes lents à évoluer. Même en ayant des doutes sur certaines théories catastrophes extrêmes, il faut reconnaître que les signes d'une dégradation environnementale globale sont bien présents : tempêtes, ouragans, sécheresses, pollution atmosphérique, pollution des cours d'eau...

Ceux qui auraient aimés vivre (ou revenir) au temps des dinosaures pour voir comment c'était "avant", n'auront qu'à attendre un petit peu pour apprécier ce que des derniers ont pu ressentir lors de leur extinction.

C'est triste à dire, mais aujourd'hui, le seul moyen viable et humain pour limiter la sur-consommation des ressources naturelles reste d'imposer des quotas. Quotas sur tous les produits manufacturés, plus ou moins importants selon le degré d'utilisation des ressources naturelles (transport inclus) et de rejet de polluants. Quotas sur l'utilisation des climatisations individuelles. Quotas sur les transports de personnes (avions, bateaux, véhicules motorisés). Quotas sur l'importation de pétrole. Quotas sur la production d'énergie... Quotas lissés sur l'année pour éviter des périodes sèches trop importantes. Sans oublier les restrictions afférentes. L'imposition de créer des contenants ré utilisables et l'obligation faite aux industriels de les ré utiliser. Il faut également intégrer toutes ces problématiques environnementales dans le programme de l'éducation nationale et ce, dès le plus jeune âge, ainsi que faire de grandes campagnes de sensibilisation pour le grand public.

En ce qui concerne les produits audiovisuels diffusés gratuitement sur internet, j'ai plutôt tendance à payer si celui-ci me convient. Néanmoins, vu l'urgence de la situation actuelle et, parce qu'avec une contribution même minime de chacun, on arrive à faire de grandes choses, je participe à la campagne Tipee de la web série [ NEXT ], car il est important d'être informé. Nous connaissons les problèmes et les efforts à fournir pour redresser la situation. Chacun prendra ses responsabilités vis-à-vis de son avenir et de celui de ses enfants.

Monday, 06 August 2018
|
Écrit par
Grégory Soutadé

Here is a simple tip to use keyctl in a bash script. keyctl is a wrapper for Linux kernel key management interface. It allows to securely save data in kernel memory. The man documentation is very bigcomplete but I didn't find any example on internet. What I initially wanted to do is to safely store a password entered by user inside a bash shell script and keep private to it (don't share with other processes).

Basically the script looks like :

#!/bin/bash

password=SecretPassword

keyctl new_session > /dev/null
keyid=`keyctl add user mail $password @s`
keyctl show
# echo "KEYID $keyid"
keyctl print $keyid

The first thing to do is to create a new session (to detach the current shared one).

Then we will add the password in the new item "mail". We don't have other choice to set type to "user". The item will be placed into the session keyring (@s). We could create new keyrings to store it with keyctl newring command. The command return item id as a big integer. We can use this integer or its name "%user:mail" for further references.

There is also a command keyctl padd which read data from stdin, but I don't recommend to use it as data is displayed in clear on the terminal.

Finally we show keyring information and print our password. We use print command to have an human friendly output, keyctl read command display it in hex format...

Saturday, 04 August 2018
|
Écrit par
Grégory Soutadé

Gâteau 8 ans

Une bougie de plus pour le blog ! L'occasion de faire un nouveau bilan. Comme chaque année, le temps passe vite et le temps libre devient une ressource rare, dispersée entre le travail professionnel et les multiples activités. Du coup, ce sont les projets informatiques qui prennent du retard. J'ai particulièrement en tête la sortie de Pannous qui a pas mal traînée.

Contrairement à ce que j'avais pré annoncé l'année passée, il n'y a toujours pas de support IPv6, mais ça devrait être réglé d'ici la fin de l'année ! Si on regarde les statistiques, elles sont plutôt stables, avec un pic de connexions en janvier grâce mon vieil article fétiche : 1 message service reçu. La bande passante a bien diminuée car moins de photos en première page. Certes, il y a un petit peu moins d'articles publiés, mais certains sont vraiment conséquents et, même s'ils n'apparaissent pas dans le top 10, j'en suis assez fier. En parlant de chiffres et de fierté, à l'occasion du correctif 0.8.2 de gPass, j'ai jeté un oeil (par hasard) sur les statistiques d'utilisation de l'addon Chrome. Et quelle ne fût pas ma surprise de voir une moyenne de 168 utilisateurs quotidiens + une douzaine sur Firefox ! C'est un chiffre impressionant pour un projet sans pub (mis à part sur le blog), auto hébergé, sans instance centrale et à l'esthétique un peu vieillot (c'est à ça que l'on reconnaît la sécurité).

Les statistiques pour cette année (entre parenthèses, les années précédentes) :

  • 22 articles publiés (30, 31, 34, 49, 50, 60, 60)
  • 9 580 visites (9 510, 23 800, 21 300, 25 000, 12 000, 18 000, 9 000)
  • 12.5 Go de données envoyées (17, 17,9, 9, 5.5, 2.7, 2.5)
  • 19 887 pages affichées (20 180, 26 700)

Le fameux top 10 qui cumule pour cette année 38% des visites (en gras, consultation principalement pour les images. Entre parenthèses, l'année de publication) :

On notera deux entrées : l'astuce pour windows et la revue du Canon EOS M10 de janvier 2017 !

Quid de l'avenir ? Pas d'annonce cette année, ni de projet particulier à mener. Je pense avoir atteint un rythme de croisière et j'espère faire aussi bien (voir mieux) l'année prochaine !

Friday, 27 July 2018
|
Écrit par
Grégory Soutadé

Today, a small Python script to track live stock exchanges. It fetch data from boursorama website and format it for "Generic Monitor" XFCE applet which allows to display result of a command line script. Just setup the path of this script in genmon properties and set the delay to 60s (to avoid flooding website).

#!/usr/bin/python

#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

import requests
import json

params_gettickseod = {"symbol":"%s","length":"1","period":"0","guid":""}
params_updatecharts = {"symbol":"%s","period":"-1"}

base_headers = {
    'Host': 'www.boursorama.com',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'fr,en-US;q=0.7,en;q=0.3',
    'DNT': '1',
    'Upgrade-Insecure-Requests': '1',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
}
base_address = 'https://www.boursorama.com/cours/'

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Language': 'fr,en-US;q=0.7,en;q=0.3',
    'Accept-Encoding': 'gzip, deflate, br',
    'Referer': 'https://www.boursorama.com/cours/%s/',
    'Content-Type': 'application/json; charset=utf-8',
    'X-Requested-With': 'XMLHttpRequest',
    'DNT': '1',
    'Connection': 'keep-alive',
}

xhr_address = 'https://www.boursorama.com/bourse/action/graph/ws/'
address_gettickseod = xhr_address + 'GetTicksEOD'
address_updatecharts = xhr_address + 'UpdateCharts'

cookies = None

def _do_request(address, params, headers):
    if cookies is None:
        req = requests.get(address, params=params, headers=headers)
    else:
        req = requests.get(address, params=params, headers=headers, cookies=cookies)

    if req.status_code == requests.codes.ok:
        j = req.json()
        if len(j) == 0:
            raise Exception('Not available')
        return j
    else:
        raise Exception("Request error!")

def getStock(stock, display_name=None):
    my_headers = headers.copy()
    my_headers['Referer'] = headers['Referer'] % (stock)

    closevalue = 0
    res = ''

    my_params  = params_updatecharts.copy()
    my_params["symbol"] = stock
    try:
        j = _do_request(address_updatecharts, my_params, my_headers)
    except:
        req = requests.get(base_address + stock, headers=base_headers)
        # cookies = req.cookies
        j = _do_request(address_updatecharts, my_params, my_headers)

    current = float(j['d'][0]['c'])
    my_params  = params_gettickseod.copy()
    my_params["symbol"] = stock
    try:
        j = _do_request(address_gettickseod, my_params, my_headers)
        closevalue = float(j['d']['qv']['c'])
    except Exception, e:
        if not len(j):
            raise e
        closevalue = float(j['d'][0]['o']) # Open value

    if closevalue != 0:
        var = ((current/closevalue) - 1)*100
    else:
        var = 0
    if current < closevalue:
        color = 'red'
        var = -var
    else:
        color = 'green'
    if not display_name is None:
        res += '%s ' % (display_name)
    res += '%.3f <span fgcolor="%s">%.2f</span>' % (current, color, var)

    return res

def getMail():
    res = ''
    nb_messages = ''
    pipew = open("/tmp/gmail-pipe-w", "wb+")
    piper = open("/tmp/gmail-pipe-r", "rb+")
    pipew.write("a\n")
    pipew.flush()
    while not len(nb_messages):
        nb_messages = piper.readline()
    if len(nb_messages):
        nb_messages = int(nb_messages)
        if nb_messages == 1:
            res = ', 1 msg'
        elif nb_messages > 1:
            res = ', %d msgs' % (nb_messages)
    pipew.close()
    piper.close()

    return res

def getStocks(stocks):
    res = ''
    for stock in stocks:
        if res != '': res += ', '
        try:
            res += getStock(*stock)
        except Exception, e:
            if len(stock) > 1:
                res += "%s %s" % (stock[1], str(e))
            else:
                res += str(e)
    res += getMail()
    print('<txt>%s</txt>' % (res))

getStocks([('1rPENX', 'Euronext'), ('1rPAIR',)])

Get stock code id from website URL (last part). A file version is available here.

I added another part to get email count from gmail. It relies on a bash script that fetches RSS feeds when data is wrote in the FIFO.

Body of the script :

#!/bin/bash

$USER='soutade'

while [ 1 ] ; do
    echo -n "Please enter gmail account password : "
    read -s password
    echo ""
    echo -n "Confirm password : "
    read -s password2
    echo ""
    if [ "$password" != "$password2" ] ; then
        echo -e "Passwords doesn't match !!\n"
        continue
    fi
    break
done

pipew="/tmp/gmail-pipe-w"
piper="/tmp/gmail-pipe-r"

rm -f $pipew $piper
mkfifo $pipew $piper

while [ 1 ] ; do
    read line < $pipew
    feeds=`curl -u "$USER:$password" --silent "https://mail.google.com/mail/feed/atom"`
    echo $feeds | sed  s/.*\<fullcount\>//g | sed  s/\<\\/fullcount\>.*//g > $piper
done

You can hardcode password in the script, but I don't like having my password in clear on the harddrive. A file version is available here.

Tuesday, 10 July 2018
|
Écrit par
Grégory Soutadé

Pochette de l'album We The People Of the Soil

10 ans, ça se fête ! À cet effet, les Cluzo sont retournés dans le Tenesee, chez Vance Powell déjà responsable de "Rockfarmers". On peut donc s'attendre à retrouver les mêmes ingrédients pour ce nouvel album. C'est le cas, ceux qui ont aimé le précédent n'en seront que plus conquis. Pour les 10 ans, le duo a voulu marquer encore plus profondément leur ancrage à la terre (the soil), on retrouve donc une musique plus folk/blues, avec une présence forte de la guitare sèche ainsi que la thématique paysanne, l'amitié, l'entraide.

Force est de reconnaître la qualité exceptionnelle de la production. Il y a un fossé très clair avec "Rockfarmers", plus brut de décoffrage, tandis que cet opus offre un son lisse où chaque élément est à sa place. Les mélodies sont beaucoup plus travaillées que précédemment (tout album confondu). Le résultat donne un style rock/blues fusion puissant avec des refrains très doux dûs en partie à un nouveau venu : l'orgue (de type hammond b3). Si on en avait eu un aperçu précédemment, elle est désormais présente dans la plupart des titres. Le premier, "A Man Outstanding In His Field", en est le meilleur exemple avec toute la palette de nuances qu'offre les 40 minutes de l'album. Mais pas que, on trouve beaucoup de ballades : presque la moitié des chansons, avec comme figure de proue "Little Girl And The Whistling Train", ainsi que quelques surprises, comme la participation de Marianne Dissard pour un super duo sur "The Best".

Les fans de la première heure seront peut-être déçus de cette compression excessive du son, mais où est la rock bordel ?? Il est pourtant présent, de manière très propre, relativement profond et énergique. À ce sujet, deux titres sortent du lot : "Pressure on Madalands" proposant un rock psyché avec un son volontairement "crade" et "The Globalisation blues" qui se rapproche plus de "Rockfarmers". Autre élément à souligner, le travail exceptionnel de Laurent quant à sa voix. Certes, les ballades qu'il interprète ne requièrent pas de monter trop haut dans les aiguës, mais la maîtrise qu'il pose sur chaque morceau est énorme. Malheureusement, le final est bâclé avec un chant clairement faux (il fallait passer moins de temps à la piscine et plus en studio).

Autre bémol : malgré sa très bonne qualité d'impression, les pages du livret sont imprimées à l'envers. Livret qui reprend le même format que pour l'album précédent, à savoir un melting pot de photos en noir et blanc et d'aquarelles de leur ami Abu.

N'ayant pas pu l'écouter plus tôt, je ne comprenais pas l'engouement de la presse (L'obs, les inrockuptibles, FIP de la FNAC, C À Vous, France Inter ...) pour ce 6e cru. Mais avec autant d'éléments "mainstream", il est clair que ce dernier sera apprécié d'un large public !

Les Cluzo proposent un pack spécial "10 ans" (en édition limitée), comprenant l'album, 10cl d'Armagnac ainsi que le livre "The Inspector Cluzo - Rockfarmers" de Romain Lejeune (les Inrockuptibles). À la base, il s'agissait d'un article voulu par le journaliste qui donnera finalement lieu, de part la masse d'information recueillie, à l'édition d'une biographie complète du groupe, des deux hommes et de leur parcours formateur jusqu'à la réalisation de leur dernier opus. Un peu réticent au début, je conseille fortement de le commander car il permet de comprendre le cheminement humain des deux "frères". Les premiers chapitres apportent beaucoup d'informations intéressantes, des anecdotes croustillantes. Les derniers étant malheureusement trop redondants concernant le message et le mode de vie des deux fermiers rockeurs : chaque témoignage, bien qu'il émane d'une personnalité reconnue, ressemble au précédent. Une relecture un peu plus attentive aurait également été souhaitée pour corriger les fautes qui émaillent l'ensemble de l'ouvrage ainsi que la fausse transition vers "We the people of the soil", car ce n'est pas avec cet album, mais bien avec "Rockfarmers" que le groupe a signé sa première collaboration avec Vance Powell.

L'Armagnac est à l'image de l'album : d'un équilibre saisissant. D'une belle robe ambrée parée de jambes très lourdes, la bouche offre un bouquet assez riche de fruits compotés pour finir sur une touche légèrement épicée. L'alcool se fait discret, un peu trop présent au nez peut être. Il s'agit d'une cuvée spéciale provenant de la distillerie "La Tuilerie" dont The Inspector Cluzo est partenaire depuis le début. Malheureusement il n'y a pas plus d'informations sur l'étiquette.

Dernier gif les joies du code Quand je vois le rendu de mon CSS