Revue de presse Inno #7

Mobile

Protocoles génériques et Type Erasure en Swift

Avec Swift, vous pouvez définir des protocoles en leur associant un ou plusieurs types génériques. Ces types sont définis en utilisant le mot-clé « associatedtype ».  L’appellation « type générique » est un peu usurpée ici, nous devrions plutôt parler d’un espace réservé pour un type inconnu. En effet, nous verrons que de tels protocoles n’offrent pas une grande souplesse d’utilisation lorsqu’il s’agit de réellement les considérer comme génériques.
En savoir plus :

Développement Web

Django 2.0 Release Candidate désormais disponible

Par Kévin Barralon

Le framework Django dont la prochaine version 2.0 est prévue autour du 1er décembre vient de publier sa version Candidate ce jeudi 15 novembre. Contrairement à ce que l’on pourrait penser, cette nouvelle version ne va pas apporter d’incompatibilités majeures au sein du framework. Les changements seront donc du même acabit que les versions précédentes.

Cependant, le changement important de cette version 2 sera l’incompatibilité avec Python 2.7, dont la fin du support est programmée pour 2020. Django 2.0 supportera donc au minimum la version 3.4, même s’il est chaudement recommandé de passer directement à la dernière version de Python (3.6 actuellement).

Routage d’URL

Au niveau des nouveautés, la nouvelle fonction django.urls.path() rend la syntaxe du routage des URL beaucoup plus simple et lisible. Ainsi, au lieu d’écrire : url(r'^articles/(?P[0-9]{4})/$', views.year_archive)

vous pourrez écrire : path('articles/<int:year>/', views.year_archive)

Cette nouvelle syntaxe permettra également de recevoir dans la vue (views) les arguments avec le typage défini (un nombre entier dans le cas de year au lieu d’une string).

Dans cet exemple, il n’y a toutefois pas de possibilité d’ajouter une contrainte (une année à 4 chiffres dans notre exemple). Pour cela, la fonction actuelle django.conf.urls.url() sera remplacée par django.urls.re_path(), qui permettra de conserver la possibilité de mettre des expressions régulières dans la définition de l’URL.

La fonction django.conf.urls.include() sera également directement disponible via django.urls. Pour pourrez ainsi importer vos modules de la manière suivante from django.urls import include, path.

Autres nouveautés

  • Pour les autres nouveautés : L’admin de Django 2.0 sera désormais responsive, donc adapté aux appareils mobiles.
  • Une nouvelle classe Window a été ajoutée afin de permettre l’utilisation du mot-clé OVER dans les requêtes SQL.
  • Une liste de tous les ajouts mineurs est disponible dans le communiqué officiel.
En savoir plus :

Déployer des services entiers avec Docker Swarm et Gitlab CI

Chez Savoir-faire Linux, je travaille (entre autres) sur l’infrastructure de déploiement pour plusieurs services que l’on héberge, et je suis toujours à l’affût de méthodes innovantes pour améliorer notre pratique DevOps. Présentement, le système de déploiement est axé autour de l’utilisation de Ansible pour « provisioner » un service dans une machine virtuelle, et l’ajuster au besoin après. Mais pour améliorer la stabilité de nos builds, de déploiements et l’agilité avec laquelle on peut faire des déploiements en continu, nous regardons d’autres approches DevOps, comme l’utilisation des containeurs Docker hébergés dans un Registry et déployés par un outil comme Gitlab CI.
Parmi les outils disponibles pour déployer une architecture de « microservice » (créée avec docker-compose), nous trouvons Docker Swarm. En utilisant un certain nombre de serveurs proprement configuré, on peut déployer un « stack » de containeurs avec un simple docker stack deploy. Docker va choisir par la suite la meilleure configuration pour le déploiement des différents containeurs à travers l’infrastructure du Swarm. Il va même aller jusqu’à configurer la réseautique entre les containeurs automatiquement, comme si tu utilisais docker-compose sur un ordinateur en local.
 
La meilleure partie, c’est le fait que ça marche bien avec notre système d’automatisation des builds déjà existant, GitLab CI. Nous pouvons faire le pipeline « build – test – release – deploy » à travers toute notre infrastructure avec GitLab CI et le GitLab Container Registry. Il y a toujours des parties casse-têtes à régler, mais ce système représente déjà un grand bond vers l’avant pour la simplicité et l’efficacité de notre pratique DevOps.
En savoir plus :

Revue de presse Inno #3

Développement Web

PyCon 2017

Par Jacob Cook 

La PyCon Canada arrive à grands pas, c’est la plus importante conférence canadienne du monde Python qui aura lieu à Montréal cette année, du 18 au
21 novembre.
  
En tant qu’entreprise de développement logiciel bien ancrée dans les communautés Python et Django de Montréal, Savoir-faire Linux y
enverra un nombre important de ses développeurs. Pour les deux premières journées de la conférence, il y aura des keynotes et des 

discours sur les développements les plus utiles dans la communauté Python, et aussi plus généralement dans le développement logiciel de nos jours. Le dimanche 19 à 11h50, je vais présenter un panel sur les façons les plus efficaces de créer une application Django qui profite de la puissance front-end de React. Avec des présentations fortes intéressantes prévues, et 70 % des billets déjà vendus, la PyCon Canada de cette année s’annonce comme la plus grande de toute son histoire !

Communautés et Projets libres

#Hacktoberfest ou comment un projet libre en dormance est maintenant plus actif que jamais

Par Samuel Sirois

Istvan Szalaï et moi souhaitaient redémarrer un projet libre en dormance que nous avions démarré l’été dernier: RingMe.js.

Pour nous motiver un peu, Istvan a proposé d’inscrire le projet dans le cadre de l’initiative Hacktoberfert de DigitalOcean. Plus une forme de ludification de la contribution pour nous deux que pour attirer des bidouilleurs•euses à contribuer au projet, (nous avons eu la surprise de voir des contributeurs proposer du code) apportant des solutions à des tâches, anomalies et fonctionnalités auxquelles l’étiquette #Hacktoberfest a été ajoutée.

La clef du succès ?

Quelques hypothèses :

  • Les tâches, anomalies et nouvelles fonctionnalités sont précises, simples et d’envergure raisonnables (merci Istvan);
  • Le JavaScript est un language sexy en 2017;
  • La base de code est suffisamment simple et embryonnaires pour qu’il soit facile à de nouvelles•aux contributrices•eurs de comprendre le code et de proposer une solution cohérente;
  • Les fichiers README, CONTRIBUTING et des gabarits de soumission de code sont présents dans le projet (merci Emmanuel);
  • Les animateurs (Istvan et moi) essaient de répondre aux demandes de contributions et aux questions dans les 48 heures;
  • #Hacktoberfest est un événement Web populaire.

Merci à:

Merci à Istvan d’avoir eu l’idée d’inscrire ce projet au #Hacktoberfest.

Merci à Jacob de nous aider à valider des demandes de contributions de façon efficace grâce à sa connaissance de l’écosystème JavaScript moderne.

Merci à toutes les contributrices•eurs au projet (en date de publication de cet article):

Mobilité

Secret: Psss…  Sais tu comment fonctionne le Android View State storing ? 

Par Loïc Siret

Qui n’a jamais éprouvé des difficultés ou des comportements « bizarres » lors du stockage/restauration de vues personnalisées ?

Voici un article de elye qui explique le système de sauvegarde des vues et comment s’affranchir de ces problèmes : A must know secret about Android View State storing mechanism!

OCTAS 2015 : votez pour le Centre collégial des services regroupés, Véga, Python… et Savoir-faire Linux!

Prix COUP DE CŒUR TIIl y a quelques jours, le Réseau ACTION TI annonçait que, pour la première fois en 2015, un prix du public serait remis lors du Gala des OCTAS 2015, le 28 mai prochain : le prix COUP DE CŒUR TI. Parmi les 77 organisations nominées figure le Centre collégial des services regroupés (CCSR), qui lançait récemment Véga. Cette application Web de dernière génération permet à ses abonnés de gérer efficacement les données sur les produits dangereux entreposés par leur organisation, conformément aux normes et lois en vigueur.

En tant que fournisseur ayant développé ce projet, Savoir-faire Linux vous suggère fortement — sans aucun parti-pris LOL — de voter pour le Centre collégial des services regroupés avant le 27 mai. Comme vous allez le constater en lisant ce qui suit, ce ne sont pas les bonnes raisons qui manquent, que ce soit pour l’amour du logiciel libre, du langage Python, des applications Web utiles et bien faites, des normes de sécurité publique, de l’éducation supérieure ou de la mutualisation!

Votez maintenant!

Un peu d’histoire*

Centre collégial de services regroupésEn 2001, le CCSR met sur pied une banque de fiches signalétiques de produits contrôlés, Reprofics, pour en centraliser la mise à jour. Reprofics est d’abord accessible aux abonnés par l’entremise d’un logiciel propriétaire. Au tournant de 2008, ce logiciel n’est plus développé, ni supporté. De nombreux établissements continuent néanmoins de l’utiliser.

Des démarches sont entreprises pour l’adoption d’un nouveau logiciel, mais aucun des produits analysés ne convient aux utilisateurs. Le Cégep régional de Lanaudière amorce alors le développement d’un logiciel d’inventaire des produits contrôlés sous la supervision d’un chimiste, en collaboration avec des stagiaires. Au terme de ce développement, le Cégep propose au CCSR d’intégrer la banque de fiches au logiciel d’inventaire : la première version de Véga voit le jour.

Cette première application Web réalisée en .NET par des étudiants permet de répertorier les produits se trouvant dans un local donné et de les relier aux fiches signalétiques de Reprofics. Une autre interface permet de consulter la banque de fiches. Des fonctionnalités s’ajoutent au fil des ans (impression d’étiquettes en quatre formats, intégration de plans en PDF, aide à la préparation de laboratoires).

En 2012, Véga n’est cependant utilisée que par quelques établissements en phase pilote et n’est toujours pas commercialisable. En raison de son développement par des stagiaires sur une courte période, de la multiplication des modules et du manque de cohérence du code, faire évoluer Véga devient difficile, tant en ce qui a trait à l’apparence et à l’adaptabilité (téléphone, tablette) qu’à l’optimisation des fonctionnalités.

Le CCSR, propriétaire de Reprofics, rachète alors les droits de Véga au Cégep régional de Lanaudière et entreprend la refonte de l’application dans le but de la faire évoluer. Il met sur pied un comité d’utilisateurs responsable de proposer et de prioriser les adaptations et les développements.

Véga, la refonte

La refonte de Véga a été réalisée de janvier 2013 à janvier 2015 en collaboration avec Savoir-faire Linux. La nouvelle solution Web, développée en python avec le cadre d’applications Django, maintient et améliore les fonctionnalités existantes, en plus d’en proposer de nouvelles :

  • Banque de fiches – Accès aux fiches sommaires normalisées réalisées à partir des fiches d’origine (PDF), facilitant la tâche des utilisateurs des produits contrôlés en regroupant sur une même feuille toute l’information relative à l’identification du produit, à sa classification SIMDUT, à l’équipement de protection individuelle requis lors de l’utilisation, à sa manutention, à son entreposage et aux premiers soins à donner en cas d’urgence; ◤vidéos◥
  • Étiquettes – Production d’étiquettes conformes à la loi pour chaque produit dans tout format d’étiquette possible; (voir figure 1 plus bas)
  • Inventaire – Gestion, dans un emplacement accessible à tout intervenant autorisé, de l’inventaire des produits dangereux reliés aux fiches signalétiques des produits; ◤vidéos◥
  • Mesures d’urgence – Centralisation des plans de contingence concernant les produits dangereux et des plans détaillés des bâtiments, possibilité de les imprimer à même l’interface Web et de les envoyer sous forme de fichiers PDF aux services d’urgence, possibilité de créer un compte d’accès spécial permettant aux intervenants externes de récupérer en tout temps l’information et les plans les plus récents.
  • Mobilité et consultation multi-plateformes – Prise d’inventaire et gestion des fiches signalétiques et accès facilités par l’usage de tablettes et de téléphones intelligents.
  • Accès en mode consultation – Accès direct à partir de n’importe quel poste informatique d’une organisation membre (filtre par adresses IP), une fonctionnalité appréciée des professeurs et étudiants.

En conclusion, Véga est un projet numérique novateur qui tire parti des technologies de l’information afin d’améliorer l’efficacité et la transparence de la gestion des produits dangereux au sein des organisations. Le recours aux technologies ouvertes python et Django donne au CCSR le contrôle du code et de la propriété intellectuelle et assure le développement futur de l’application en fonction de l’évolution des besoins des utilisateurs, sans frais de licence et sans dépendre d’un fournisseur.

Image
Figure 1 – Exemple de formats d’impression d’étiquettes

Moderniser ses procédures de déploiement avec Vagrant

Vagrant LogoDans le domaine de la consultation dans le web, un des problèmes récurrents est la difficulté associée à la mise en place d’un environnement de développement pour chaque projet. Si on est chanceux et que les instructions textuelles d’installation d’environnement sont toujours à jour, ce n’est qu’une question de minutes pour un développeur expérimenté, mais pour un débutant ou un intégrateur, c’est autre chose. On ne comprend pas toujours bien les instructions, ou notre système est différent de celui du développeur (ici, nos développeurs sont sous Linux, mais nos intégrateurs sont sous Mac OS X). Il n’en faut pas plus pour rapidement perdre plusieurs heures.

Chez SFL, nous avons récemment commencé à intégrer Vagrant à nos projet afin de moderniser nos méthodes de déploiement et les résultats jusqu’ici sont très encourageants.

Qu’est-ce que Vagrant?

Vagrant est un outil de ligne de commande pour contrôler la mise en place de machines virtuelles avec VirtualBox. Elle permet, en une seule commande, la création et la configuration d’une machine virtuelle à partir de rien du tout. Pour la partie configuration, elle est intégrée avec Puppet, un utilitaire de configuration d’environnement souvent utilisé par les administrateurs systèmes pour gérer leurs différentes machines (d’ailleurs, c’est ce que nous utilisions déjà chez SFL).

Avantages

Rapidité de création d’environnements de développement. Ce qui naguère était une liste d’instructions plus ou moins complexes qui prenaient souvent longtemps à executer manuellement est maintenant une seule commande. Par exemple, pour nos projets Django (qui utilisent Fabric), il suffit d’avoir VirtualBox, Vagrant et Fabric d’installé pour pouvoir, à partir de rien, faire rouler le site localement avec cette seule commande:

fab deploy

Exactitude de la configuration de l’environnement. Fini les procédures d’installation qui tombent en désuètude. Si le code Puppet n’est plus à jour, la mise en place automatique ne se fait plus, ce qui est très facile à détecter et à corriger.

Environnements de développement et de production homogène. La communication entre le monde du développement et le monde de l’administration système ne se fait pas toujours parfaitement. Avec un script Puppet pour décrire l’environnement nécessaire pour faire rouler le projet, il est beaucoup plus facile pour l’équipe des administrateurs système de savoir avec exactitude le genre d’environnement qu’ils doivent créer pour accueillir le site de production.

Comment l’utiliser?

La façon d’utiliser Vagrant dépend toujours un peu de la nature du projet. Par exemple, nos projets Django sont déployés avec un amalgame de commandes Fabric et de configuration Puppet. Le côté Puppet s’occupe des virtualhosts, les bases de données et des « .deb » à installer, et le script Fabric s’occupe de pousser le code par SSH, créer le « virtualenv », s’occuper des dépendances Python, faire les migrations South, etc.

Je viens de mettre en ligne sur notre compte Github un exemple de projet Django intégré avec Vagrant pour vous donner une idée de la structure d’un tel projet et aussi faire la démonstration de sa facilité d’installation. Si vous avez Git, VirtualBox, Vagrant et Fabric d’installé sur votre machine, il vous suffit de rouler ceci:

git clone https://github.com/savoirfairelinux/django-vagrant-demo
cd django-vagrant-demo/deploy
fab deploy

Votre mot de passe vous sera demandé car Vagrant a besoin de privilèges administratifs pour modifier le fichier « /etc/hosts ». Le script Fabric aussi d’ailleurs.