Outil de voyageur sur route : le temps nécessaire pour parcourir la distance désirée

Cet été, lors de mes vacances d’été, j’ai voyagé en voiture pour me rendre à ma destination. En famille, nous sommes allés au Lac-Saint-Jean visiter cette magnifique région. Au total, ce fut près de 1 700 kilomètres parcourus en près d’une semaine.

La distance paraît cependant plus courte lorsque le paysage est aussi magnifique.

Un phénomène m’a toutefois toujours intrigué lorsque je suis sur la route. Lorsqu’on est en voiture, tout est calculé en se basant sur la distance parcourue après un certain nombre temps. La mesure de référence est le Kilomètre par heure. Une mesure de référence qui signifie que, si vous gardez un certain rythme pendant une heure, vous aurez franchi une certaine distance au bout de cette période.

Je n’apprends rien à personne en disant que, par exemple, la limite de vitesse sur les autoroutes du Québec est fixée à cent kilomètres par heure. Donc, au bout d’une heure de route, vous aurez parcouru cent kilomètres.

Alors donc, lorsque vous voyagez, il y a toujours des indications, en kilomètres, où se trouve la prochaine ville sur votre chemin. Cela permet de vous donner une approximation de combien de distance à parcourir avant le prochain arrêt toilette.

Or, certaines distances sont plus faciles à estimer que d’autres. Cinquante kilomètres équivalent à environ trente minutes de route. Toutefois, combien de temps est nécessaire pour 34 kilomètres? Facile si vous avez une calculatrice. Au volant, je n’ai pas trop le goût de penser à faire des calculs mentaux.

Étant paresseux de nature, je me suis fait une petite grille aide-mémoire que je traîne maintenant en tout temps dans mon téléphone. La voici :

temps-kilo

Une image vaut mille mots. Si vous n’êtes pas du genre à traîner une image dans votre téléphone ou de l’imprimer et la laisser dans votre voiture, vous remarquerez que cinq kilomètres équivalent à trois minutes de temps. Sachant ceci, il est plus facile d’estimer avec assez de précision où vous en êtes.

Pour ceux que cela intéresse, la grille est aussi accessible à partir d’un Google Doc.

Bon voyage!

Les liens de la semaine – Édition #39

Développement

Web

Technologie

Science

Autres

JavaScript et NodeJS à la rescousse du web!

Le développement web est un univers en constant changement. Je le répète tellement souvent que j’ai presque l’impression de dire que cela. Généralement, le changement est déroutant, car cela nous met dans un constant mode de recherche de repères. Il faut le dire, c’est un peu épuisant.

L’aspect, à mon avis, réconfortant de ce perpétuel mode de changement est que le web évolue généralement pour le mieux. Les techniques s’améliorent, les technologies sont de plus en plus ouvertes et l’écosystème est en bonne santé. Les évolutions vont dans tous les sens et proviennent de tous les coins.

Revoir la façon de travailler

Peu importe la technologie que vous utilisez, vous travaillez similairement de la même façon:

  1. édition de code dans votre éditeur texte
  2. actualisation du contenu de votre page web
  3. attendre que le résultat de vos changements apparaissent à l’écran.

Le développement côté client ne se limite pas uniquement à appliquer des styles CSS et récupérer certaines valeurs avec une requête AJAX à l’aide de jQuery. Il s’avère qu’il y a un grand nombre d’applications qui favorisent une approche utilisant une majorité de leurs fonctionnalités développées côté client. Un bel exemple de cela est le service de gestion de tâches Trello qui est construit utilisant Backbone.JS.

Le principal avantage d’une approche côté client est que vous diminuez la charge imposée à vos serveurs au profit de l’augmentation de la responsabilité du rendu et de l’exécution des fonctionnalités au niveau du navigateur de vos clients. Ce changement de paradigme impose une plus grande utilisation du langage JavaScript.

Pour être clair et bref, si vous n’êtes pas confortable avec ce langage, vous devez l’être le plus rapidement possible. Le temps commence à manquer.

NodeJS

NodeJS est un bout de technologie que vous allez rencontrer de plus en plus fréquemment dans l’univers du développement web. Il s’agit d’une plateforme construite à même l’engin JavaScript qu’utilise Google Chrome, V8.

Avec cette plateforme, vous pourrez construire des applications côté serveur dans le même langage que vos applications côté client. Vous pouvez même les développer avec CoffeeScript si cela vous chante. Tout est possible, en fait.

En plus d’être conçu pour être ultrarapide et d’être capable de soutenir l’augmentation d’une charge de requêtes de façon constante, vous bénéficierez du soutien d’une communauté solide et d’un écosystème de modules et fonctionnalités assez vaste.

À titre d’exemple, en terme de possibilités, vous pourriez, par exemple, avoir une application web qui est uniquement servie par un serveur web NodeJS. Votre application pourrait dépendre du module express qui permet le développement sous un modèle similaire à Sinatra. Est-ce que vous trouvez cela sexy? Moi, oui, en tout cas.

L’avantage ultime? Vous serez en mesure de faire le débogage de vos applications NodeJS à même Google Chrome. Come on!

Grunt

Venant du monde du développement de sites web avec .NET, lorsqu’il est temps de gérer la compilation et l’agrégation des fichiers CSS et JavaScript, repose sur des librairies qui s’exécuteront lors du chargement de vos pages afin de s’assurer que vos derniers changements soient ceux chargés dans les fichiers assemblés et minimisés. SquishIt, Cassette ou même Bundle de Microsoft sont certaines des librairies que vous aurez à utiliser.

Mon expérience à ce sujet se résume à un mot : désagréable.

Lorsque ce n’est pas le compilateur de styles LESS qui abandonne le bateau en production. C’est la mise en cache des fichiers qui n’est pas invalidée pour une raison que vous allez ignorer. En plus, vous ajoutez une charge supplémentaire au chargement de la page qui ajoute inévitablement du temps au chargement initial de votre application. Pas cool.

J’ai été récemment initié à l’utilisation de Grunt pour la préparation des fichiers CSS et JavaScript d’une application web. Il s’agit d’un module NodeJS permettant l’automatisation de tâches côté client reliés à votre site web. Vous avez à votre disposition un éventail assez large d’extensions vous permettant d’avoir un contrôle sur le maximum de tâches à automatiser.

En plus d’automatiser les actions de préparation pour la livraison de votre site web, vous pouvez même automatiser le fonctionnement de Grunt et faire en sorte qu’il soit en mode watch afin qu’il surveille vos répertoires pour des modifications et qu’il procède automatiquement à automatisation de ses tâches.

LiveReload

La promesse de LiveReload est simple. Faire en sorte que vous n’ayez plus besoin de rafraîchir le contenu de votre navigateur manuellement.

LiveReload va écouter les changements qui surviennent sur votre disque dur et transmettre ceux-ci directement à votre navigateur sans intervention de votre part. Vous comprenez qu’avec cet ajout dans votre flux de travail, vous retirez une étape répétitive, sans valeur ajoutée.

Certains camarades m’ont fait part des scénarios d’utilisation limités pour cet outil. Après tout, il permet uniquement d’automatiser le rafraîchissement des contenus statiques (CSS, JavaScript et HTML). Cela fonctionne moins bien lorsque vos contenus proviennent entièrement d’un CMS.

Toutefois, je crois réellement que chaque appui de la touche F5 économisé est quand même un gain. Essayez-le au moins!

Et plus encore

L’avenir du développement web est beaucoup plus que ce billet. D’ailleurs, vous pouvez voir cette présentation de Paul Irish (YouTube) qui présente justement son point de vue sur la nouvelle vague d’outils à votre disposition pour le développement front end. Pour moi, cette présentation a été un vent de fraîcheur très à propos.

Je propose aussi d’utiliser cette page afin de vous donner un point de départ afin d’en apprendre plus sur la matière. Moi, c’est par là que je compte débuter, en tout cas.

Les liens de la semaine – Édition #38

Grosse édition cette semaine en raison de la semaine sans publications. Bonne lecture!

Développement

  • choosealicense.com est un service vous permettant de faciliter le processus de sélection d’une license pour votre projet open source.
  • Code alignment est une extension à Visual Studio permettant l’alignement de votre code verticalement. L’alignement proposé ressemble à ce qu’il est fait pour les colonnes d’une grille Excel, par exemple.
  • Chrome Workspaces est une fonctionnalité en cours de développement vous permettant d’éditer votre JavaScript à même votre navigateur. J’ai l’impression qu’on va finir par faire nos sites web à même un navigateur d’ici bientôt.
  • Une présentation de certains scénarios d’utilisation de Github ou de git en général pour la gestion des branches.
  • Rien n’est impossible en JavaScript. Voici maintenant JSFuck. Une interprétation de JavaScript utilisant majoritairement les caractères +[!].

.NET

Web

Technologie

Science

Autres

Opinion : mon deux cennes au sujet de l’avenir du développement web .NET

Où s’en va le développement web? Est-ce qu’il est possible de deviner quelles technologies vont prendre le dessus sur celles existantes? Encore mieux, est-ce que nous pouvons affirmer qu’elles sont les pratiques de développement qui vont être là pour y rester ?

Il y a bien une chose que j’ai apprise à œuvrer dans le développement de sites web. L’écosystème de technologies est en constante évolution et les pratiques sont en changement pratiquement quotidien. Le philosophe Héraclite avait bien raison : la seule constante est le changement.

Un sujet qui revient souvent dans les discussions, en tant que développeur .NET,  est la sorte d’adversité qu’il y a envers les gens qui développe avec le langage PHP. Après tout, pour certains, il en revient à une dualité comme le Ying et le Yang, la Force contre le côté obscur ou simplement Montréal contre Boston.

La réflexion m’est venue ainsi. Il n’est pas un peu simpliste de vouloir se fermer à adopter une seule technologie dans un domaine en ébullition comme le développement web?

À brûle-pourpoint, le web est composé de certaines de ces technologies émergentes  :

  • NodeJS (engin JavaScript côté serveur)
  • Jekyll (générateur de site statique basé sur des gabarits)
  • Twitter Bootstrap (framework de développement côté client)
  • Heroku (hébergement pour des applications Ruby, Node.js, Clojure, Java, Python et Scala, dans les nuages)
  • PhantomJS (API JavaScript permettant l’interaction avec l’engin WebKit)

La constante dans ces projets? Vous devinerez que tous ces projets sont open source et supportés par une communauté assez forte et vivante. C’est exactement dans cette direction que s’en va le développement web.

Le plus bel exemple de cette tendance est la liste des technologies supportées par Azure (le service d’hébergement, dans les nuages, de Microsoft). Le point est mis en évidence par Scott Allen sur son blogue.

azure-technologies

Avez-vous remarqué ce qui se démarque de l’image? Sur les huit volets qui sont énumérés, il y a .NET qui occupe une place. Le restant est d’autres technologies pouvant jouer  un rôle d’importance dans l’écosystème du web.

En finale, je tiens à mentionner, qu’à mon avis, l’avenir de .NET n’est pas en danger et il est encore la plateforme de prédilection pour le développement d’applications bureau, mobile et web de Microsoft. Là où les développeurs vont devoir se positionner est vis à vis l’orientation qu’ils vont devoir prendre quant aux nouvelles technologies à adopter.

Pour ma part, je m’en tiens au graphique ci-haut. Je serais même prêt à mettre un deux dollars qu’il y a même des chances qu’une plateforme comme node.js soit adopté dans la famille de produits associés au développement d’application de Microsoft.

À ce sujet, saviez-vous qu’il est possible d’exécuter du code .NET à partir de node.js? Si vous ne me croyez pas, allez voir du côté de Edge.js. Vous serez épatés!