Chroniques du TER : SNCF, à nous de vous faire préférer le train

J’aurais pu intituler ce billet « SNCF ou comment perdre une demi matinée dans les transports » ou encore « SNCF : c’est quoi ce bordel ? ». Bref, vous l’aurez compris, je suis colère.

 

1. Mise en situation

J’habite une petite ville sympathique située au nord de l’Alsace : Wissembourg. Je travaille dans une grande Eurométropole toute aussi sympathique : Strasbourg. Pour info, d’ordinaire mon trajet domicile – travail dure en moyenne 1h20 (TER + bus). Notre chère SNCF, qui doit penser qu’1h20 de trajet ne suffit pas, nous gratifie parfois (souvent ?) d’un petit bonus. Retour sur ma grande aventure de ce matin.

 

2. SNCF – TER Alsace : L’aventure du rail

7h10 : Départ de mon domicile. 15 minutes de marche pour s’ouvrir l’appétit.

7h25 : J’arrive à la gare SNCF de Wissembourg. Le panneau d’affichage indique que mon train habituel (départ 7h30, arrivée 8h24) est supprimé. Raison invoquée sur le panneau d’affichage : travaux sur la voie. Raison invoquée par le personnel SNCF : panne d’une rame. Raison réelle : on ne saura jamais ! Bon, ce n’est pas trop grave, un car part à la même heure pour Haguenau.

8h25 : Après la visite touristique en car de tous les patelins de l’Outre-Forêt, mes compagnons de route et moi-même arrivons enfin à Haguenau. Le train de 8h22 étant déjà parti, direction le panneau d’affichage pour prendre connaissance des trains suivants. Arrivés devant, nous découvrons que le train prévu à 8h42 (qui ne dessert qu’un arrêt du trajet) est supprimé. Raison invoquée : aucune. Je ronge mon frein. Le train suivant est prévu à 8h49 et dessert toutes les gares du parcours. Youhou !

9h20 : Après la visite touristique de toutes les gares du trajet Haguenau – Strasbourg, notre train arrive enfin aux abords de la gare de Strasbourg. Youpi, nous touchons au but ! Ah… Mais que ce passe-t-il ? Notre train s’arrête en pleine voie. Un message automatique retentit alors dans la rame : « Pour des raisons de problèmes de signalisations, notre train est arrêté en pleine voie pour une durée de 5 minutes environ ». Sachez que la notion du temps de la SNCF n’est pas la même que celle du commun des mortels (5min SNCF = 10 min réelles). Relativité, quand tu nous tiens.

9h30 : Notre train repart.

9h35 : Terre, terre, terre… ça y est, l’Homme a posé un pied sur le quai de la gare de Strasbourg. Un petit pas pour l’Homme, un grand pas pour la SNCF.

9h40 : Bonus : j’arrive à l’arrêt du bus (ligne G pour les connaisseurs)… et le bus s’élance devant moi. Le chauffeur est sympa. Il me sourit et je peux lire sur son visage : « L’heure c’est l’heure mon gars ». NB : si je n’avais pas eu à valider mon titre de transport, c’était bon. Bref, 8 minutes d’attente supplémentaires.

10h00 : Je suis enfin au boulot. La journée peut commencer.  \o/

Bilan de l’opération : 2h45 de trajet ce matin.

 

3. Conclusion

Vous vous en doutez, je ne vous raconte pas tout cela dans le seul but de vous faire découvrir la géographie alsacienne (qui vaut le détour soit dit en passant). Non, si je vous raconte mes péripéties, c’est simplement pour mettre en lumière le fait que la SNCF est incapable de communiquer avec ses voyageurs. Elle n’est  déjà pas capable de communiquer en interne, c’est dire.

Au final, et ce n’est pas faute d’avoir posé la question, on ne saura jamais pourquoi la SNCF a été incapable de nous transporter d’un point A à un point B sans que ce soit le bordel. Il me semble que c’est tout de même leur corps de métier. Je veux bien que la gestion du rail soit compliquée, mais bon : 2 trains supprimés sans aucune explication et sans aucune solution de remplacement… ça fait un peu beaucoup. Heureusement, j’ai la chance d’avoir un métier qui permet une certaine flexibilité dans les horaires. Mais pour ceux qui doivent pointer ? Et puis bon, excusez-moi de le dire ainsi mais j’ai autre chose à « foutre » que de passer mes matinées dans les rames de TER.

Une fois, ça peut arriver. Si j’en suis arrivé à en faire un billet ici, c’est parce qu’il ne se passe pas deux semaines sans qu’il y ait des soucis sur cette ligne. Alors voilà mon coup de gueule du jour : Chère SNCF, tu me les « brises ». Et chaque fois qu’il y a des problèmes, leur vieux slogan raisonne dans ma tête : « SNCF, à nous de vous faire préférer le train ».

Merci SNCF, grâce à toi, le trajet Wissembourg – Strasbourg dure plus longtemps qu’un trajet Strasbourg – Paris !

GreenShot : capturez votre écran !

Dans le cadre de mon activité professionnelle, je suis régulièrement amené à rédiger des documentations, rapports, etc. Pour les illustrer, j’ai énormément recours aux captures d’écran.

Sur les distributions Linux, il existe de nombreux logiciels de captures d’écran performants (j’avoue avoir une large préférence pour Shutter). Lorsque je suis passé à Windows (7 et 8.1), je me suis mis en quête d’un outil équivalent car celui intégré à Windows est relativement limité et n’est pas très ergonomique.

Très vite, j’ai découvert GreenShot.

Greenshot Logo

 

Lire la suite…

Forticlient : désactiver son lancement automatique au démarrage de Windows

FortiClient : est un client VPN IPSec pour PC windows et smartphone et protège ces équipements contre les virus, les intrusions, les spams, les spywares. En outre, il intègre un pare-feu et un système de filtrage URL. (source : Wikipédia)

FortiClient est un outil très pratique pour les connexions VPN IP Sec. Cependant, il a ce que je considère comme un gros défaut : il se lance automatiquement au démarrage de Windows. Pour ne rien vous cacher, je dois admettre que je déteste les logiciels qui se lancent automatiquement sans me demander mon avis. De mon point de vue, je suis maître de ma machine et un programme – non indispensable – n’a pas à s’octroyer des droits.

Bref, vu que je n’utilise pas Forticlient tous les jours, j’ai décidé de « dézinguer » son lancement automatique. Bien entendu, le service FortiClient n’apparaît pas dans la liste des logiciels chargés au démarrage du système. Vous pouvez vérifier avec l’outil Ccleaner (Menu « Outils », rubrique « Démarrage ») ou directement en exécutant msconfig.exe. Croyez-moi, vous ne trouverez pas ce fourbe.

La manip’ n’est pas compliqué mais je préfère la noter ici, d’une part pour la partager avec vous, d’autre part pour en garder une trace au cas où je serais amené à la refaire. Elle a été réalisée avec FortiClient comme exemple, mais bien entendu, elle est adaptable à tout logiciel « planqué » qui se lance automatiquement au démarrage du système.

N.B. : Les captures ont été réalisées sur Windows 8.1 mais la solution est aussi fonctionnelle pour Windows 7.

 

Lire la suite…

D’Android à Windows Phone

Cela fait maintenant quelques années que je suis utilisateur de « smartphone ».

 

Alcatel 101 Ola (photo par Cédric C.)

 

J’ai débuté avec un HTC Desire premier du nom en 2011. Un excellent smartphone sous Android 2.2 si mes souvenirs sont bons. Malheureusement, je l’ai malencontreusement oublié sur le capot de ma voiture un soir. Bref, j’ai pu l’utiliser pendant 5 mois seulement. Les boules !

Pour le remplacer, j’avais jeté mon dévolu sur un HTC Wildfire S. Avant tout pour son petit prix vu que 5 mois auparavant j’avais payé une « blinde » pour mon Desire. La transition fut assez dure : écran plus petit, très peu de mémoire, vélocité limitée, résolution à la limite correcte mais rien à voir avec celle du Desire. Je m’en suis contenté pendant un peu plus d’un an.

Fin 2012, arrivant en fin de contrat avec mon opérateur de l’époque, je décide de reprendre un engagement 24 mois avec un smartphone. J’ai fait la grosse erreur d’acheter un BlackBerry 9300 Curve. J’avais été impressionné par le BlackBerry de mon oncle à l’époque mais j’ai vite constaté qu’il existait un fossé technologique entre la série Bold et la série Curve. « Re » les boules ! Bref, j’ai tenu 2 mois avant d’investir dans un Acer Liquid Gallant Duo E350.

Ce dernier m’a tenu 1 an et demi avant de lâchement rendre l’âme. Bon, pour être honnête, mon fils l’a un peu aidé à mourir. Cela dit, j’avoue avoir été bluffé par cet appareil. Pas cher à l’achat (pour un smartphone, j’entends), il a largement fait le boulot tout le temps où il était en vie. L’appareil était léger et solide (mais pas fiston-proof). Deplus, l’écran était de très bonne qualité.

Après 3 appareils d’entrée de gamme consécutifs, j’ai eu envie de me faire plaisir et d’investir un peu plus. Je suis donc parti à la recherche d’un appareil milieu-haut de gamme.

Android, j’en avais fait largement le tour et j’avoue que j’en avais/ai un peu marre. J’ai donc regardé du côté de la concurrence. En avril 2014, il me restait alors 2 choix : Apple et ses iPhone, ou Nokia et ses Windows Phone (Firefox OS n’était pas encore sorti et Ubuntu Touch… Hahaha).

Dans mon entourage, il y a beaucoup d’iPhone. J’ai pu pas mal « jouer » avec et j’avoue que je n’accroche pas du tout. iOS, on aime ou on n’aime pas. Personnellement, je ne suis pas convaincu. Et puis bon, l’iPhone 5 était quand même à la ramasse au niveau de la taille de l’écran par rapport à la concurrence.

J’ai donc décidé d’investir dans un Nokia Lumia 925. Je vais peut-être vous surprendre mais j’ai tout de suite été à l’aise avec ce smartphone. D’un point de vue « hardware », sans rentrer dans les détails, je dirais simplement qu’il me convient parfaitement. L’appareil photo est le meilleur que j’ai pu avoir sur un smartphone. La qualité de finition est au rendez-vous et l’écran est… Wouah ! Bref, le meilleur smartphone que j’ai pu avoir en ma possession.

D’un point de vue « software » : du bonheur ! Windows Phone 8.1 est très simple à prendre en main. Tout est intuitif et ergonomique. Microsoft a vraiment le mérite d’avoir inventé une interface originale et performante plutôt que de faire une resucée de la concurrence. Pour moi, l’interface « Phone » de Windows est à ce jour l’interface la plus ergonomique et la plus aboutie. Au niveau des apps ou de la prétendue pauvreté du MarketPlace, j’avoue que pour l’instant, j’ai toujours trouvé une app pour chacun de mes besoins. Cela dit, je ne suis pas un gros consommateur d’app. Mais j’y reviendrai dans un prochain billet.

Blog au ralenti

Comme vous pouvez le constater, depuis ma trêve hivernale, les publications sur ce blog se font très rares. Mis à part mon billet de consternation concernant l’épisode dramatique qu’a vécu Charlie Hebdo ( Note du 20/12/2016 : billet hors ligne désormais ) ce 7 janvier dernier, je n’ai rien publié.

Le fait est que cette trêve hivernale m’a fait énormément de bien. J’avais décidé de me déconnecter et je m’y suis tenu. En effet, mise à part la relève de mes flux RSS tous les 4 à 5 jours depuis mon smartphone, je n’ai pas allumé un PC de toutes mes vacances (ni surfé sur la toile d’ailleurs). Malheureusement, cette déconnexion a également eu comme conséquence de casser la dynamique d’écriture dans laquelle j’étais. Bref, va falloir que je m’y remette.

Je tenterai de relancer ma dynamique de rédaction début février. Je ne pourrai pas m’y mettre avant car, que ce soit côté pro ou perso, j’ai plein de choses IRL à faire.

A très bientôt !

Trêve hivernale

Ça y est, la fin de l’année approche à grands pas. Moment idéal pour se ressourcer, ces deux prochaines semaines vont être très calmes sur le blog. En effet, j’ai décidé de tenter des vacances « déconnectées ». Pas de publication, pas de surf, pas de suivi de flux RSS… bref, que de la vraie vie !

Je vous souhaite à toutes et à tous d’excellentes fêtes de fin d’année et, aussi commerciales soient-elles, ne vous privez pas de moments de bonheur avec vos amis et vos familles. Portez-vous bien !

A bientôt,

Juan

Mon IDE du moment : Netbeans (HTML5 & PHP)

J’ai longtemps développé avec Komodo Edit. Malheureusement, le « bridage » de la version gratuite m’a assez rapidement contraint à chercher un autre éditeur. J’aurai bien aimé investir dans une licence Komodo IDE mais la réalité économique est ce qu’elle est.

 

Illustration code source

 

Je suis donc passé à Netbeans dans sa version « HTML5 & PHP ».

 

Lire la suite…

Git – Premiers pas

Billet initialement rédigé le 15/05/2014.

Git logo

 

Dans le cadre de mon activité professionnelle, je développe une application en PHP/MySQL. Jusqu’à présent, je n’avais pas l’utilité d’un outil de versioning comme Git vu que je développais seul. Cela dit, nous sommes en plein recrutement et il va bientôt falloir que je m’habitue à ne plus être le seul développeur du projet. Du coup, j’ai décidé d’apprendre à utiliser Git. Le choix de Git est totalement arbitraire. J’ai vu qu’il en existait d’autres (SVN, Mercurial, Bazaar, etc.) mais j’ai l’impression que Git a beaucoup plus le vent en poupe actuellement.

Malheureusement, j’ai l’impression que je vais devoir abandonner mon IDE préféré, Komodo Edit, car seule la version payante Komodo IDE intègre la gestion du versioning Git. Je vais donc non seulement devoir apprendre à utiliser Git, mais en plus je vais devoir prendre en main Netbeans. Bref, un beau challenge en perspective.

 

Lire la suite…

Lancer un script PHP en ligne de commande sous Windows

Comme je le disais dans mes deux derniers billets, je travaille actuellement sur des scripts de migration de données. Le problème avec ce genre de scripts qui traitent plusieurs milliers de lignes, c’est que vous êtes vite bloqué par les délais d’exécution lorsque vous les lancez via un navigateur Web.

Vous avez alors deux possibilités :

  • Fractionner le traitement des données en fixant des plages de traitement (traitement par lots)
  • Lancer votre script directement sur le serveur en ligne de commande

Fractionner le traitement est souvent fastidieux, surtout lorsqu’on doit traiter plus de 80 000 lignes.

La solution la plus simple est donc de lancer votre script directement dans une console (Invite de commandes). Pour ce faire, ouvrez une console et rendez vous dans le répertoire contenant le fichier php.exe. Si vous utilisez WampServer, le chemin par défaut est :

C:\wamp\bin\php\php5.5.12>

 

N.B. : la version de PHP varie selon votre version de wamp

Pour lancer votre script, il vous suffit d’exécuter la commande suivante :

C:\wamp\bin\php\php5.5.12>php.exe -f c:\chemin\vers\votre\script.php

 

Et le tour est joué ! ^^

Si vous exécutez souvent des commandes PHP en ligne de commandes, vous pouvez également déclarer le chemin de votre php.exe dans vos variables d’environnement du système. Cela vous évitera de devoir vous positionner dans le répertoire de php avant de lancer vos scripts. Pour plus d’informations, n’hésitez pas à consulter la documentation PHP sur php.net : Ligne de commande PHP sous Microsoft Windows

MySQL : Autoriser/Forcer id=0 pour les PRIMARY KEY avec AUTO_INCREMENT

Dans le cadre de la migration des données d’une structure de base à une autre, j’ai été confronté à un petit problème. En effet, dans l’ancienne version de la BDD, certaines tables de paramètres ont un id démarrant à 0 au lieu de 1.

Exemple :

Table « civilite »
Id Valeur
0 Non communiqué
1 Féminin
2 Masculin

 

Or, lorsque je lance la requête :

INSERT INTO `civilite_new` (`civilite_new_id`, `civilite_new_label`) SELECT `civilite_id`, `civilite_label` FROM `civilite`;

 

MySQL me retourne l’erreur suivante :

Error Code: 1062. Duplicate entry '1' for key 'PRIMARY'

 

L’AUTO_INCREMENT prend la première ligne (Id = 0) et force l’Id à 1. Du coup, lors du traitement de la deuxième ligne, MySQL bloque car la valeur de l’Id de cette dernière est également 1. Partant de ce constat, deux solutions sont possibles :

  • ré-incrémenter toutes les tables en décalant les id (on aurait donc 1, 2, 3 à la place de 0, 1, 2) – Attention aux intégrités référentielles
  • forcer la valeur 0 du premier Id – pas très « propre » mais efficace

Dans mon cas, la première solution ne me convient pas car le code de l’application qui alimente cette base de données repose sur le principe de Id = 0 pour « Non communiqué ».

Donc, pour forcer la mise à 0 des premiers Id, il va donc falloir user du mode SQL NO_AUTO_VALUE_ON_ZERO :

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';

 

Ajoutez la ligne ci-dessus avant votre INSERT ou UPDATE.

Une fois vos requêtes exécutées, n’oubliez pas de désactiver le mode « NO_AUTO_VALUE_ON_ZERO » :

SET SQL_MODE=@OLD_SQL_MODE;

 

Et le tour est joué ! ^^