Kibana et proxy Apache sur Debian jessie

Si comme moi vous vous êtes décidé à mesurer votre elasticité (désolé pour le jeu de mot pourri mais trop tentant) et que vous voulez partager (ou pas) Kibana avec vos acolytes via un sous domaine (ou domaine), il vous faut un peu de proxy, un fichier de conf et en avant Guingamp !

Pour installer le proxy :

 apt-get install libapache2-mod-proxy-html
a2enmod proxy
a2enmod proxy_http

Maintenant on ajoute un hôte virtuel pour Apache kibana.mondomaine.conf :

<VirtualHost *:80>
    ServerName kibana.mondomaine.com

    ProxyRequests Off 
    <Proxy *>
        Order Allow,Deny
        Allow from all
    </Proxy>
    ProxyPass / http://127.0.0.1:5601
    ProxyPassReverse / http://127.0.0.1:5601
    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule .* http://127.0.0.1:5601%{REQUEST_URI} [P,QSA]

    ErrorLog ${APACHE_LOG_DIR}/kibana.error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/kibana.access.log combined
</VirtualHost>

On active l’hôte virtuel et recharge le serveur apache :

a2ensite kibana.mondomaine.conf
service apache2 reload

Voilà c’est tout.
Enjoy !

Composer.json : ajouter un dépôt Git non pris en charge par packagist.

Si comme moi vous êtes tombé sur la library ultime qui n’a pas été inscrite sur Packagist mais qui correspond à votre besoin et quand sans elle vous allez pleurer tous les larmes de votre corps, prenez un mouchoir (non pas pour ça, je vous vois venir…) et souriez à la vie.

Dans mon cas c’était une library de connexion à du Microsoft Dynamics qui gère les échanges en SOAP. Du coup je vous laisse les extraits de mon fichier composer.json tel quel et vous adapter of courses pour vous.

Ajouter une (ou dans la) section repositories :

"repositories": [
        {
            "type" : "package",
            "package": {
                "name": "aat-labs/microsoft-dynamics-connector",
                "version" : "1.2.0",
                "source": {
                    "url": "https://github.com/aat-labs/microsoft-dynamics-connector.git",
                    "type": "git",
                    "reference": "1.2.0"
                }
            }
        }
    ]

Et dans la section require:

"require": {
        // ...
        "aat-labs/microsoft-dynamics-connector": "1.2.0"
    },

MySQL : forcer la suppression d’une table

Cela peut arriver aux meilleurs et afin de ne pas trop choquer les esprits les plus sensibles et les plus orthodoxes je vais expédier cet article.

Si vous voulez supprimer une base de données sans grand ménagement pour les clés étrangères et autres joyeusetés, précédez votre requête honteuse par :

SET FOREIGN_KEY_CHECKS = 0;

Si vous vous sentez coupable après votre forfait (n’entrons pas dans les détails, un peu de pudeur voyons !), remettez la configuration en place comme il se doit :

SET FOREIGN_KEY_CHECKS = 1;

Enjoy!

Terroristes : les 7 pilliers de la déraison par Marc Trévidic

L’objet

Terroristes : Les 7 piliers de la déraison de Marc Trévidic.

La rencontre

Après les attentats de novembre, j’ai eu besoin de comprendre comment la justice luttait contre le terrorisme. J’ai entendu, comme beaucoup, Marc Trévidic juge au pôle antiterrorisme du tribunal de grande instance de Paris s’exprimer ici et là ces dernières années. Je me suis donc procuré l’une de ces publications.

Le narrateur

C’est Marc Trévidic himself. Le style est épuré j’ai trouvé, simple sans qu’on ait l’impression d’être pris pour des idiots. Ne serait-ce que pour la clarté, je relirai du Trévidic (j’attend juste que le dernier passe au format de poche).

Le contenu

On alterne entre constats et petites histoires où le juge antiterroriste nous raconte la justice, les services secrets, les petites histoires de terroristes mais aussi la grande histoire. Ce livre ne traite pas tant de l’organisation du terrorisme mais des terroristes en tant qu’hommes et femmes et des personnes qui ont affaire avec ceux-ci que ce soit un policier ou un président des États-Unis.

On rencontrera le petit français qui se bat pour une cause fantasmée qui va terminer en prison alors que son recruteur bien mieux préparé, lui, sait comment se jouer de la justice. On s’intéressera aussi aux jeunes filles qui cherchent un « vrai musulman » et qui se rendront compte, une fois le mariage consommé, que leur hijra (l’émigration d’un musulman d’un pays non-musulman vers un pays musulman) ne pourra se faire car la guerre au final c’est une histoire d’hommes et qu’il va falloir rentrer chez papa-maman car la seule solde du bon petit terroriste, c’est le martyr.

En première lecture, le livre prend le parti de l’humour et je me suis surpris à rire, mais on redescend bien vite car au final on se rend compte que ces histoires sont dramatiques.

Mon plaisir

J’aime les nouvelles surtout depuis ma période Asimov (qui n’a toujours pas pris fin : j’ai relu récemment le cycle de Fondation pour la cinquième fois, avec les préquelles/préquels), et les petites histoires racontées par Trévidic sont à la fois drôles et alarmantes.

Je recommande vivement : à lire et à relire.

Drupal 8 est arrivé le 19 novembre dernier

Le 19 novembre dernier c’était mon anniversaire (bah oui, faut bien que je pense qu’à moi, MOI aussi) et celui de Dries Buytaert et la communauté Drupal en a profité pour sortir la version 8 du CMS.

Drupal 8, cela fait longtemps que je le côtoie sans avoir jamais publié de site avec cette nouvelle mouture : on m’avait demandé de faire un audit sur le multilingue de Drupal 8 parce qu’une personne « importante » nous rendait visite et qu’il fallait montrer qu’on était à la page, 3 ans en avance… Ça c’est normal en entreprise. Je vous rassure : la personne importante n’a pas lu le rapport, peut-être mon équipe (mais pas sûr, en même temps eux avaient vraiment du boulot), mais le commanditaire du rapport non plus ne l’a jamais lu. Bon ça c’était pour ma life.

Bref, Drupal 8 est de sortie et avec plusieurs bonnes nouvelles à mon avis :

Symfony, dis moi oui !

Drupal 8 utilise pas mal des composants Symfony ce qui a plusieurs avantages :

  • on utilise des formats et des standards que tout le monde utilise et ça c’est plutôt cool,
  • ça va peut-être faire venir des développeurs Symfony,
  • l’injection de dépendance c’est lourd mais c’est tout de même cool, et puis de toute façon le cache c’est pas seulement pour les objectifs (je sais, je sors…)

Mobile First

Oui c’est seulement fin 2015 que Drupal ce met au niveau sur la problématique du mobile. Beaucoup oublient que dans Drupal, il y a n’y a pas seulement du PHP mais aussi du JavaScript et d’autres trucs très bons pour la santé, donc mangez-en… Le Front-End n’est pas à la traine.

API REST

À l’heure du tout API et des microservices, c’est juste normal que du côté de Drupal on ait amélioré ça. Cela veut dire qu’on va pouvoir créer sa structure de données via le clicodrome de Drupal et ensuite mettre cela à disposition pour d’autres clients ou applications.

Internationalisation

Beaucoup d’améliorations, c’est la partie que je connais le mieux. J’en parlerai dans un autre article mais juste une remarque : chefs de projets, CTO et autres décideurs, formez vos équipes et/ou embauchez des gens qui connaissent un peu le sujet. Le soucis du multilingue c’est que cela a des répercutions sur quasiment tout : la structure des données, le back-office mais surtout le front-office. Il ne suffit pas de se dire qu’on va juste envoyer les textes en traduction (en général au petit neveu qui a fait un stage linguistique de deux semaines en Allemagne avec sa classe de 5ème) pour que cela fonctionne. On parle de localisation, c’est-à-dire qu’il faut adapter son contenu à la langue et à la culture du public visé. Sans parler des problématiques inhérentes à la traduction (taux de foisonnement, jeu de caractères, gestion du volume et du flux de traduction)…

Bref beaucoup de nouveautés pour Drupal 8 sur lesquelles nous reviendront dans les prochaines semaines.

Comment passer pour un hacker devant sa grand-tante ?

Avant tout, je n’ai rien contre les grand-tantes. Moi les miennes je les aime (et oui je suis un bisounours). Vous pouvez mettre n’importe quel membre ou pas de votre famille à la place.

Pour passer pour un cador du clavier, rendez vous sur Geektyper. C’est très facile, vous choisissez un modèle et vous vous mettez à pianoter sur votre clavier comme Timothy McGee du NCIS.

URL : http://geektyper.com/

Enjoy !

2 bundles Symfony2 pour manipuler vos images.

Les images c’est bien, les optimiser c’est mieux. Comme phrase d’accroche, je ne me suis pas creusé le cerveau très longtemps, je vous rassure.

Revenons en à nos images : je voulais juste dans cet article vous parler de deux bundles qui permettent de manipuler des images et de les distribuer dans la bonne taille à vos visiteurs (ou robots d’indexation).

Snowcap IM Bundle

C’est mon préféré : non pas pour des raisons de performances ou de simplicité mais par pure nostalgie car ce bundle utilise ImageMagick. Il se trouve que j’ai fait pas mal de Drupal 6 dans une autre vie et que c’était presque une obligation que d’installer la librairie (bibliothèque en bon français) ImageMagick.

Il embarque le service snowcap_im.manager, ses fonctionnalités sont utilisables depuis un controller ou depuis un template twig .

Gregwar’s ImageBundle

Efficace et fait ce qu’on lui dit. Il a besoin des extensions GD et exif pour PHP. Tout comme Snowcap IM Bundle il embarque un service (image.handling) et on peut s’amuser avec depuis un controller ou un template Twig.

Il en existe bien d’autres comme LiipImagineBundle qui est très connu mais je voulais présenter ces deux-là : l’un utilisant GD (Gregwar’s ImageBundle) et l’autre une bibliothèque externe à PHP (Snowcap IM Bundle).

Enjoy!

Héberger ses dépôts Git sur son serveur

Ce tutoriel décrit comment héberger ses dépôts Git sur son serveur Debian (et à priori dérivés) en suivant les étapes suivantes:

  1. Installer Git,
  2. Créer l’utilisateur git,
  3. Ajouter une clé SSH,
  4. Initialiser et travailler avec le dépôt,
  5. Visualiser ses dépôts.

Installer Git

Pour cela, rien de bien compliqué, il suffit d’installer le paquet git-core.

apt-get install git-core

Créer l’utilisateur git

Pour gérer les dépôts, il faut créer un utilisateur qui permettra de travailler avec le dépôt. Et pour le nom, rien d’original: git. Nullement besoin de mot de passe, il faut juste lui attribuer le git-shell comme shell de connexion afin qu’on ne puisse pas se connecter via SSH avec cet utilisateur.

adduser git --disabled-password --shell "/usr/bin/git-shell"

On se place dans le répertoire de l’utilisateur git pour la suite des opérations :

cd /home/git

Ajouter une clé SSH

Créer un répertoire .ssh ainsi qu’un fichier authorized_keys si besoin.

mkdir /home/git/.ssh
touch /home/git/.ssh/authorized_keys

Pour ajouter une clé, verser la fichier de la clé publique SSH sur votre serveur et saisissez la commande suivante :

cat /chemin/clessh.pub >> /home/git/.ssh/authorized_keys

Bien sûr, répéter l’opération pour chaque ajout d’utilisateur.

Initialiser et travailler avec le dépôt

Vu que nous sommes sur le serveur de dépôt nul besoin de répertoire de travail, il suffit d’ajouter l’option --bare au moment de l’initialisation. Par convention, le nom du répertoire se termine par .git.

mkdir /home/git/myRemoteRepository.git
cd /home/git/myRemoteRepository.git/
git --bare init

Pour que le dépôt puisse être cloné il vous faut faire un premier commit, pour se faire, sur votre machine locale (attention : il faut que vous ayez ajouté la clé SSH publique de votre utilisateur local) :

mkdir myLocalRepository
cd myLocalRepository
git init
touch README
git add README
git commit -am "Initial commit."
git remote add origin git@myServer:myRemoteRepository.git
git push origin master

Visualiser ses dépôts

Il existe pléthore d’outils pour visualiser (et faire pleins d’autres choses) mais je n’en citerai qu’un seul, très simple d’installation, développé avec Silex : GitList, tout est dans le fichier README.

Enjoy!

Git et certificat SSL non vérifié

S’il vous est arrivé d’avoir besoin de passer outre la vérification d’un certificat SSL pour travailler avec Git sachez que c’est assez simple. Il suffit de saisir la ligne suivante après vous être positionné dans votre dépôt :

git config http.sslVerify false

Vous pouvez également le rendre commun à tous les dépôts présents sur votre environnement :

git config --global http.sslVerify false

Pour le réactiver, il suffit de saisir :

git config http.sslVerify true

Vous pouvez revenir à l’état initial, c’est-à-dire que vous récupérerez la valeur par défaut de votre installation git:

git config --unset http.sslVerify

Enjoy!