Afin d'accompagner nos jeunes développeurs dans leurs premières missions au sein de notre Pépinière, nous avons mis en place une équipe de mentors, composée d'omniloguiens aguerris, qui mettent à disposition leur savoir-faire.
Clément, Guillaume et Emmanuel nous livrent leur retour d'expérience.
Quels sont les sujets techniques prioritaires que vous abordez avec les jeunes développeurs ?
Il y a un an, nous mettions en place notre Pépinière pour accueillir de jeunes développeurs, fraichement diplomés ou en cours de formation.
Le bilan positif de cette première année est l'occasion de présenter notre projet !
C’est quoi la pépinière ?
La pépinière est un dispositif mis en place chez Omnilog pour accompagner les jeunes développeurs, qu’ils soient alternants, stagiaires ou jeunes diplômés, dans leur début de parcours.
Dans le monde du développement informatique, on ne recrée pas la roue à chaque projet. On fait appel souvent à des librairies ou des groupe de librairies, que l'on appelle des packages.
En nodeJS, l'installation des packages sont gérés par des outils dont les plus populaires sont yarn et surtout NPM pour Node Package Manager.
La rétrospective est un point de passage obligé et essentiel pour clôturer les sprints. Elle permet de prendre le temps d’analyser la dernière itération pour en faire ressortir les points positifs ainsi que ce qui a moins bien fonctionné et les idées permettant à l’équipe de progresser.
L’ORM Doctrine offre beaucoup plus de flexibilité qu’il n’y paraît.
Cet article vous présente plusieurs trucs et astuces très utiles de Doctrine: évènements et listeners, filtres, tracking policy, mais aussi des astuces sur des architectures possibles pour son code.
En première instance, en voyant le titre, on se dit que ça ne sert à rien. Il existe déjà Guzzle, au pire on fait du curl.
Et c'est bien ça le problème. Dès que nous voulons appeler une API externe nous allons utiliser un bundle comme Guzzle. Notre code devient donc dépendant de Guzzle directement ainsi que de ses dépendances.
Alors que .NET Core 3.0 va sortir dans les prochaines semaines, (à l’heure où je vous parle il est encore en preview), faisons un retour rapide sur ce qu’il va nous apporter
Le cache par invalidation est une technique qui permet de contrôler la mise à jour du cache en fonction des changements de contenus.
On utilise le terme “cache par invalidation” par opposition au “cache par expiration” qui consiste à mettre une durée de vie (Time To Live) sur les réponses.
Curator : un outil simple et gratuit pour la maintenance ElasticSearch
Curator est un outil développé en Python qui permet d’effectuer de la maintenance sur ElasticSearch. Si vous devez effectuer une tâche de façon périodique, telle que supprimer des index, ou lancer une réindexation, cet outil permet de sélectionner une liste d’indexes selon des filtres, puis d’appliquer l’action que vous avez configurée.
Google Assistant a été présenté 2 fois pendant ces Developer Days, lors de la keynote et lors d’une session dédiée. Ce qu’ils attendent de l’intelligence artificielle : comprendre le contexte et les émotions.
On a eu le droit à une belle démo, presque bluffante.
Depuis novembre 2016 les sites Web sont d’avantage consultés depuis un smartphone ou une tablette que depuis un PC.
Google a participé à cette demande en forte progression en favorisant l’indexation des sites Web Responsives mais la firme de Mountain View n’en est pas restée là puisqu’elle a ensuite présenté les Progressive Web Apps (PWA), une solution technique à mi-chemin entre le site Web mobile et l’application native permettant d’améliorer les performances des sites Web ainsi que l’expérience utilisateur.
Ces dernières semaines il était impossible de passer à coté des nombreuses fuites concernant les nouveautés qu’Apple allait annoncer aujourd’hui, mardi 12 septembre, lors de sa conférence. Cette présentation était d’autant plus attendue que la firme de Cupertino fête ses 10 ans. Pour l’occasion nous attendions notamment l’annonce d’un smartphone un peu spécial. C’est désormais chose faite puisqu’Apple a présenté l’iPhone X (iPhone dix).
Il y a deux ans, Fabien Potencier nous expliquait le nouveau fonctionnement de la roadmap symfony avec l'arrivée d'une version majeure de Symfony tous les 2 ans et 4 versions intermédiaires.
JSON Web Token est un standard ouvert (RFC 7519) qui définit un moyen de transmettre de manière sécurisée des données entre serveurs & clients sous la forme d’un objet JSON. Le JWT peut être signé en utilisant un secret avec l'algorithme HMAC ou une partie de clés public / privé avec RSA.
Optimisations de performances avec PHP 7 par Julien Pauli
Julien Pauli, contributeur majeur de PHP et responsable releases, a fait la fermeture de la SymfonyLive avec un talk sur les optimisations de performances de PHP 7. Cette nouvelle version est le fruit d’une réécriture totale du code, comprenant la gestion des variables et du garbage collector, qui a permis le gain de performance de ~50% par rapport à PHP 5.6.
Aujourd'hui, les sites web évoluent de plus en plus vers des applications web. Cela se traduit par une utilisation de plus en plus intensive de JavaScript et souvent l'utilisation d'une ou plusieurs librairies. Bien souvent, le code source des applications ne suffit pas pour pouvoir être exécuté. Il est nécessaire de passer par une étape de construction, "build", pour assembler les librairies et le code source en un seul bundle.
Il existe de nombreux "builder" pour accomplir cette tâche : Maven, Gradle, Grunt, ...
ECMAScript 2015, ES6 pour les intimes, est le dernier standard d'implémentation du langage javascript. Au menu, un paquet de nouvelles fonctionnalités qui veulent assurer au langage une pole position dans la course aux technos web.
Pourquoi l'utiliser ?
Le principal apport de l'ES6 n'est pas, en soi, une amélioration des performances du langage. Ce travail est laissé aux interpréteurs de javascript tels que V8 et SpikerMonkey.
695 682. C'est le nombre de bacheliers pour cette année. Autant de personnes pouvant consulter simultanément leurs résultats sur une application. Chez Studyrama, dans le cadre du développement de l'application permettant aux bacheliers de consulter les résultats, nous avons effectué des tests de montée en charge.
Tests de montée en charge, késako ?
Il s'agit de bombarder le site web de requêtes de façon à voir sa performance sur un très grand nombre d'utilisateurs simultanés et d'identifier les points critiques.
Dans le cadre du dernier Symfony Live qui s’est tenu à Paris, un talk était dédié à la gestion de la mémoire en PHP. Les objectifs du talk était d’expliquer les origines des surconsommations mémoires, de savoir les identifier et d’éviter d’en produire.
Avant de parler du sujet de cet article, je vous conseille la keynote de Fabien POTENCIER sur les dépôts monolithiques (que vous pouvez retrouver ici).
Jeremy Romey (alias jeremyFreeAgent) nous a ensuite parlé du composant Guard.
Rappel sur le fonctionnement de l’authentification sur Symfony (extrait de la présentation) :
Tout d’abord un retour d’Alain Tiemblo, Web Security Lead Developer chez BlaBlaCar.
Après une présentation des fondamentaux tels que le hachage de mot de passe, les attaques par force brute et la protection contre les injections de code (Cross-Site Scripting), Alain nous a présenté des problèmes de sécurité plus avancés :
Peut-être en avez-vous entendu parler, Microsoft a récemment annoncé que bash, le fameux shell Unix, serait bientôt supporté par son système d’exploitation. Mais en attendant, Windows a déjà son propre shell – et non, je ne parle pas de MS-DOS !
Lancé par Google en 2014, le Material Design a d’abord été utilisé sur Android, puis desktop par les applications principales de la firme.
Qu’est-ce que le Material Design? C’est un ensemble de règles de design proposées par Google et qui s'appliquent à l'interface graphique des logiciels et applications. C’est une manière de penser son application.
Dans le cadre de notre projet Eurosport, nous effectuons actuellement une transformation de la base applicative de l'objective-c vers le Swift (2.1). Cela nous permet d'avoir un point de vue particulier sur l'apport du Swift à une application iOS.
Sonata est un ensemble de bundles développés sous Symfony2 qui ont été créés dans le but d’aider au développement de sites e-commerce.
SONATA ADMIN :
C’est le premier bundle développé dans le cadre du projet Sonata. Il permet d’administrer facilement un site web dans son ensemble, de la gestion des utilisateurs, au contenu des pages.
Dans le cadre du développement de la version mobile de l’application de gestion des visiteurs de TF1, il a été nécessaire de créer une communication entre une application web hébergée sur le Cloud Azure et le système d’information hébergé sur l’infrastructure propriétaire de TF1. Le fait que l’infrastructure de TF1 soit protégée par des pare feu et repose sur un adressage réseau interne non visible de l’extérieur rend la mise en place de cette communication délicate.
Dans un contexte d’application REST, il est indispensable d’avoir une documentation de nos API claire et évolutive.
Notre première approche a été le bon vieux document Word, mais il s’est avéré que cette solution posait quelques problèmes de maintenabilité, de lisibilité et de mise à disposition de l’information. Nous sommes donc partis à la recherche de solutions alternatives.
Le choix
Il existe différentes solutions pour documenter les APIs :
La SymfonyLive a permis à Jérémy DERUSSE d'introduire Docker. Retour rapide sur cette solution Opensource.
Qu'est-ce que Docker ?
Docker est une solution Opensource sous licence Apache, proposée par la société américaine portant le même nom, lancée par le Français Solomon Hykes.
Docker permet d'embarquer une application dans un container virtuel qui peut être exécuté sur n'importe quel serveur. Il s'agit là de son premier but : migrer un container facilement dans le monde du cloud.
ReactJS, le framework Javascript de création de composants visuels de Facebook, est souvent présenté comme rapide, mais moins complet que d'autres frameworks existants. Il ne serait que le V du pattern Model-Vue-Contrôleur. Cette présentation ne permet toutefois pas de rendre compte de l'intérêt grandissant (?) pour ce framework.
Dans le cadre du projet Deal@Elle chez Lagardère (outil de suivi de ventes des espaces publicitaires), nous avons utilisé SignalR, une bibliothèque .NET destinée à la création de fonctionnalités temps-réel sur des applications.
Le scénario typique d’utilisation de SignalR est de notifier tous les utilisateurs connectés en temps-réel. Dans le cas de Deal@Elle, il s’agit de signaler la mise à jour des espaces publicitaires.
Dans le cadre du projet EUROSPORT de refonte des applications iOS et Android nous avons effectué de nombreux tests fonctionnels sur ces deux environnements.
Notre objectif initial était d’automatiser les 700 tests du cahier de recette afin d’accélérer la phase de qualification des applications. Le second objectif était de pouvoir exécuter ces tests en environnement d’intégration continue afin d’éviter les régressions lors de la maintenance des applications.
Vagrant est un outil qui permet de construire rapidement et simplement des environnements de développement. Il permet de déployer et de configurer des machines virtuelles en s'appuyant sur les logiciels de virtualisation existants (Virtualbox, Vmware, AWS, ….).
Vagrant permet aussi de personnaliser chaque instance de machine virtuelle à l'aide d'un système de provisionning (exécution de commandes shell, chef, puppet, …) exécuté lors du premier démarrage de la machine virtuelle.
Vagrant peut s'exécuter sur tous les systèmes d'exploitation existants.
RabbitMQ est une solution de middleware orienté messages. Un middleware est un logiciel permettant de créer un réseau d'échange d'informations entre applications.
La vitesse de chargement des pages est un élément essentiel pour le ressenti utilisateur mais également pour favoriser le référencement naturel par Google (1)(2). Cette vitesse de chargement dépend bien entendu de la performance du site web mais elle dépend également de la structuration des pages.
L’import de données est un élément souvent central et complexe dans le cadre des projets informatiques. Par exemple chez Téléshopping, un ERP contient les quelques milliers de produits qui seront vendus via le catalogue, le téléphone ou le site internet. Pour le site internet fonctionnant avec Magento, il est donc nécessaire de communiquer quotidiennement avec cet ERP pour importer ces produits.
Ce travail n’est pas trivial car il faut composer avec beaucoup de contraintes techniques :
Dans le cadre du projet WeTrak, boitiers antivol automobiles ou motos commercialisés par Identicar, nous recevons et traitons les informations issues des boitiers embarqués afin de localiser les véhicules en cas de vol.
Pour la nouvelle version de l’appli mobile FFF « Le foot amateur », une fonctionnalité de notification a été demandée pour vous prévenir 24h avant le début du match que votre équipe favorite jouera.
OMNILOG a développé la partie Backend.
Pour gérer ces notifications mobiles, le choix s’est porté sur une solution MS Azure.
L’analyse des logs de production peut parfois être un véritable défi en raison du très fort volume généré par les architectures à fort trafic. Ainsi l’architecture mise en œuvre pour www.lemonde.fr génère des millions de lignes de logs quotidiens répartis sur une dizaine de serveurs.
Voici un retour d’expérience à propos d’une optimisation SQL réalisée sur le projet SIMBA où en modifiant la syntaxe de déclaration d'une fonction, nous avons divisé le temps d’exécution par 6…
Voici la syntaxe initiale de la fonction : Multi-Statement Table-Valued Functions (MTVF)
Et voici la syntaxe optimisée : la version Inline Table-Valued Functions (ITVF)
AngularJS est un Framework JavaScript développé par les équipes Google. Il est particulièrement adapté à la réalisation d’application mono-pages (Single Page Application en anglais) car permet de mieux structurer le code JavaScript et surtout de gérer de manière automatique le binding entre la vue HTML et les variables JavaScript. Plus besoin de manipuler le DOM comme avec les Framework traditionnels.