Villeneuvedascq.ovh

J’ai lancé un nouveau site avec un nom de domaine que je m’étais réservé (jadis). Et oui les projets mettent parfois du temps pour éclore:

Réservé le 01/10/2015 pour faire un truc sur ma ville…

Pendant un certains temps je voulais créer un bot/crawler capable de parser automatiquement les événements (quoi, quand, où) mais j’ai vite été calmé par la complexité pour extraire  ces données. J’étais parti au début avec NLTK en Python mais j’avais l’impression de partir de loin rien que pour le « quand » qui est à mon avis l’information la plus structurée versus le « où » et le « quoi ». Quand je regarde aujourd’hui certaines API de bot, il y a tout de même de belles choses en reconnaissance de texte, cependant on ne peut pas construire un crawler sur une API ($$$) il faut maitriser l’algo.

Bref, entre temps je suis revenu à une ambition plus lean startup/mvp et j’ai décidé de ne pas crawler le monde entier mais juste le site de la mairie de ma ville, et de faire un bon vieux scrapping des données qui m’interessaient le quand/quoi+où.

En une soirée, j’ai mis au point un scrappy pour collecter mes données.

Puis j’ai pris mon temps pour coder le site en Symfony 3. Découvrir Doctrine, etc; Je me suis bien aidé de Linkedin Learning, hop quelques videos et la glace était brisée.

Le but du site est simple, passer d’un mode pull où on doit aller chercher l’information à un mode push par email. Je scrappe les événements de ma ville pour en faire une newsletter hebdomadaire. Je suis parti du constat qu’à Villeneuve d’Ascq il se passe énormément de choses et que c’est dommage de passer à coté de supers événements par manque de communication. Je me suis donc fait ma newsletter des événements de Villeneuve d’Ascq à la semaine.

Au passage j’ai rajouté une carte de curiosité sur la ville. J’espère y référencer au fil de l’eau les bâtiments, les œuvres d’arts, etc qui me plaisent.

Pour conclure et pour le fun :

  • Une semaine apres la mise en ligne je me suis fait pourrir mon formulaire par un bot… hop intégration de Recaptcha de Google
  • Je me suis aussi fait pourrir par des utilisateurs cette fois par manque de validation de l’email (j’acceptais tout par générosité). Et hop validation d’email.
  • Pour vous abonner, c’est ici : https://www.villeneuvedascq.ovh

 

 

Build un docker avec le Dockerfile

Première personnalisation d’un Docker sur la base Nginx + PHP de Richarvey

 

Il suffit d’éditer un fichier Dockerfile

admin@serveur-1:~$ cat Dockerfile
FROM richarvey/nginx-php-fpm
COPY ./index.php /usr/share/nginx/html/

Puis de build :

docker build -t mydockername .

 

prochaine étape, pusher sur un repository.

 

Voici un guide pour découvrir toutes commandes du Dockerfile

Docker sur Ubuntu 14

Premier lancement d’un conteneur Docker.

1/ installation

/etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-trusty main
sudo apt-get update
$ sudo apt-get install docker-engine
$ sudo docker run hello-world

 

2/ output

admin@serveur-1:~$ sudo docker run hello-world
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
 executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
 to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com
For more examples and ideas, visit:
 https://docs.docker.com/userguide/
admin@serveur-1:~$

Cloud9 self hosted

Après un premier essai insatisfaisant, j’ai ressayé de mettre en place Cloud9 sur mon VPS. En le mettant à jour depuis le git, j’ai résolu les problèmes qui m’avaient frustrés.

Les petits soucis à régler :

  • remplacer node par nodejs
  • je monte un serveur mutu en sftp, il faut activer fuse
  • ajouter l’user au groupe fuse
  • mettre les droits adéquates sur /dev/fuse

Les vrais plus pour moi :

  • l’accès sftp à mon mutu, cette fonctionnalité est payante dans la version SaaS, le ftp lui n’est pas assez performant
  • la possibilité d’éditer des scripts et de les tester dans la partie console

Ma commande de lancement:

nodejs server.js -p 8080 -l 0.0.0.0 -a login:pwd -w /home/user/workspace/

plan universel

INTRODUCTION

  • Expliquer le probleme
  • Preciser les fausses solutions et pourquoi elles sont mauvaises
  • Presenter une alternative en insistant sur les 3 motivateurs, aider à …les autres, ressentiment

PRESENTER LA SOLUTION

  • Definir le concept
  • Expliquer les principes
  • Donner la recette, étape par étape

DETAILLEZ LA SOLUTION

  • etape 1 :
  • etape 2 :
  • etc.

MONTREZ L’AVENIR

  • Les résultats, où ça marche, ou ça ne marche pas

CONCLUSION

  • Rappel de la méthode Complet
  • motivation et principes
  • perspectives

Test de Profil chez OVH (ADSL)

Je viens de réaliser un script qui change le profil de connexion entre le modem et le DSLAM. Cela impacte notamment la correction des erreurs, le rapport performance/qualité, et la stabilité ou désynchro (voici l’article de réference : https://www.ovh.com/fr/a1649.adsl-vdsl-quel-profil-box )

 

Le mode opératoire était simple, changer le profil, attendre 5min, lancer le chrono pour télécharger une fichier de 100Mo, fin du chrono.

Dès que j’ai mis au propre le script, je vais le publier ici.

Voici les résultats : le meilleur profil me permet d’atteindre plus de 7,27Mbps en DL alors que le mode par défaut (interleaved) me fait atteindre 6,2Mbps.

Profil Secondes
G.INP TURBO SNR1 FAST 110
TURBO SNR1 FAST 113
G.INP TURBO SNR3 FAST 120
TURBO SNR3 FAST 123
AUTO-16M 128
AUTO-12M 128
AUTO-8M 129
Interleaved 129
G.INP Interleaved 130
G.INP AUTO-12M 131
G.INP AUTO-16M 131
G.INP Fast 131
G.INP AUTO-8M 132
Fast 135
SNR 6-9 146
G.INP SNR 6-9 150
SNR 9-12 169
G.INP SNR 9-12 171
SNR 12-15 197
G.INP SNR 12-15 200
SNR 15-18 230
G.INP SNR 15-18 233
G.INP AUTO-4M 242
AUTO-4M 243
G.INP AUTO-1M 300
AUTO-1M 466
AUTO-2M 490
G.INP AUTO-2M 490