Nos articles


Type-hint all the things!

Type-hint all the things!

Recently, a video about "visual debt" as sparked a lot of controversy in the PHP world. In this article, I'll present the best practices we are using at TheCodingMachine, and a brand new tool we use to enforce those best...

A practical guide to continuous integration in PHP

A practical guide to continuous integration in PHP

At TheCodingMachine, we strive to develop projects with the best possible quality. In this article, we are presenting the tools we use internally to do continuous integration. Continuous integration is the process of running a set of automated tools on...

TheCodingMachine partenaire du CNRS

TheCodingMachine partenaire du CNRS

TheCodingMachine, au travers de son Président Jean-Guillaume Dujardin, vient d'intégrer le programme de prématuration du CNRS dans la catégorie Sciences de l'ingénierie et des systèmes (INSIS).

Gérer sa dette technique pour éviter le crash

Gérer sa dette technique pour éviter le crash

“Le projet est trop vieux, il faut tout refaire”, “On jette tout et on recommence”, “Les coûts de maintenance et d’évolutions deviennent exorbitants, on ne peut plus continuer comme ça, il faut refondre entièrement l’application”, “J’en peux plus, le moindre...

Vidéo de notre CTO David Négrier, star du Forum PHP 2016

Vidéo de notre CTO David Négrier, star du Forum PHP 2016

David Négrier a ravi son auditoire avec une conférence sur le thème : Ecrire du code PHP "framework-agnostic" : aujourd'hui et demain. Conférence disponible ci-dessous :

[PSR-11] An in-depth view at the Delegate lookup feature

[PSR-11] An in-depth view at the Delegate lookup feature

PSR-11 is currently in "review" phase. In this article, I'm taking an in-depth look about one often overlooked feature: the Delegate Dependency Lookup.

TheCodingMachine lauréate des Palmarès Great Place to Work et Happy Trainees 2016

TheCodingMachine lauréate des Palmarès Great Place to Work et Happy Trainees 2016

Nous sommes fiers de vous annoncer que notre entreprise fait partie des 22 entreprises françaises de moins de 50 salariés lauréates du palmarès Great Place to Work 2016 qui récompense les sociétés où il fait bon travailler. Mais ce n'est...

Les stagiaires de TheCodingMachine prennent la parole !

Les stagiaires de TheCodingMachine prennent la parole !

Dans le cadre de notre campagne de recrutement, nos stagiaires prennent la parole ! A la recherche d'un CDI ou d'un stage ? Rejoignez-nous !

ORM, Active Record and Data Mapper

ORM, Active Record and Data Mapper

Because Web Applications become more and more complex and users more and more demanding, we must focus on performance. Since querying the database is a sensitive point for performance the focus of this article will be the performance impact of Object-Relational-Mapping.

[PSR-11+] An update on standard service providers

[PSR-11+] An update on standard service providers

In my previous blog post, I talked about the different ways to build interoperable PHP modules. It turns out we have had quite a lot of very constructive feedback from many different sources. In this blog post, I'll keep you...

Service Worker et Push API, comprendre les bases pour démarrer

Service Worker et Push API, comprendre les bases pour démarrer

Avez-vous remarqué que certaines applications (Facebook, Slack, Asana, ...) sont désormais en mesure de pousser, via votre navigateur Web, des notifications pour vous tenir informé de ce qui se passe, ou de ce que vous avez raté ? En plus,...

La nouveauté PHP 7

La nouveauté PHP 7

Sorti début décembre, PHP 7 marque forcément un tournant important dans le monde du développement web dans la mesure où plus de 70 % des applications web sont développées en PHP. Alors, quid des changements et des relations futurs avec...

Interview de Jean-Guillaume DUJARDIN à propos de la pertinence du Retour sur Investissement (ROI).

Interview de Jean-Guillaume DUJARDIN à propos de la pertinence du Retour sur Investissement (ROI).

Le calcul du Retour sur Investissement (ROI) est essentiel pour évaluer les investissements et les profits d'un nouveau projet. En plus du livre blanc et de son outil de calcul disponibles dans la rubrique "Livres blancs", Jean-Guillaume Dujardin revient, dans...

[PSR-11+] An overview of interoperable PHP modules

[PSR-11+] An overview of interoperable PHP modules

A lot has been going on in the past months regarding the creation and standardization of interoperable PHP packages. We (the team behind container-interop) have been testing a lot of different solutions, and many of them have the potential to...

SEO technique et accompagnement client. TheCodingMachine utilise SEMRush.

SEO technique et accompagnement client. TheCodingMachine utilise SEMRush.

Pour accompagner ses clients un peu plus loin, TheCodingMachine déploie actuellement les outils de SEMRush : Analyse sémantique, positionnement dans l’index des moteurs de recherche,…

TheCodingMachine crée Pack Analyst, un outil bientôt indispensable à tous les développeurs

TheCodingMachine crée Pack Analyst, un outil bientôt indispensable à tous les développeurs

Environnement de développement PHP : les bonnes pratiques

Environnement de développement PHP : les bonnes pratiques

L’enjeu de cette série d’astuces est de construire un environnement de développement PHP efficace. En effet, il ne faut surtout pas sous-estimer l’importance d’un environnement bien mis en place. Cela va vous aider à devenir plus efficace, ce qui vous...

OptimisticSessionHandler: A new way to think PHP sessions

OptimisticSessionHandler: A new way to think PHP sessions

PHP sessions are not designed for websites that use AJAX heavily and have multiple concurrent requests. This article will explain how we get rid of this behaviour.

Docker… ou l’art d’héberger plusieurs applications sur un même hôte !

Docker… ou l’art d’héberger plusieurs applications sur un même hôte !

L’intérêt principal de Docker est de permettre d’isoler votre application web dans un container. Comme nous l’avons expliqué, un container dispose de sa propre adresse IP interne (commençant par 172.17.XXX.XXX). Le container n’est pas accessible depuis l’extérieur, sauf si un...

Pourquoi mon site s’est-il fait pirater ?

Pourquoi mon site s’est-il fait pirater ?

Il n'est pas rare aujourd'hui de se rendre sur son site web et de voir que celui-ci a été piraté. Vous vous demandez alors qui l'a fait, comment, et pourquoi sur votre site ? Nous allons donner quelques éléments de...

Interoperable PHP packages with definition-interop and Puli

Interoperable PHP packages with definition-interop and Puli

Lately, I’ve been playing quite a lot with the notion of container definition interoperability.

Tout est expliqué ici ! Vidéo du CEO à propos de la conception d’une application web.

Tout est expliqué ici ! Vidéo du CEO à propos de la conception d’une application web.

Vous êtes chargé de développer un outil pour travailler avec les partenaires de votre entreprise ? Vous souhaitez améliorer l'ergonomie de vos solutions ? Vous souhaitez comprendre la logique de conception d'un Extranet ? Cette vidéo vous donnera les règles...

Docker : comment organiser les containers ?

Docker : comment organiser les containers ?

Si vous allez voir la registry Docker, vous allez trouver de très nombreuses images. Par exemple, vous trouverez des images de serveurs Apache+PHP pour le serveur web, des images MySQL pour la base de données, des images Elasticsearch pour la...

Sauvetage de projets : les cas pratiques de TheCodingMachine

Sauvetage de projets : les cas pratiques de TheCodingMachine

Cas numéro 4 : problèmes détectés suite à l'emploi d'un prestataire offshore. Le projet : cette société de vente par correspondance et de vente à domicile avait décidé de refondre son système d'informations (approvisionnement, vente, facturation, etc.) Le choix d’un...

Docker : un gain d’espace de stockage énorme sur les serveurs!

Docker : un gain d’espace de stockage énorme sur les serveurs!

Il est très facile de créer et démarrer de nouveaux containers avec Docker. Mais quid de l’espace disque ? Puisque chaque container dispose d’un système de fichier d’un OS complet, ça risque de prendre de la place non ?

Docker : un outil pour les développeurs

Docker : un outil pour les développeurs

Cela ne vous aura pas échappé, jusqu’ici, nous avons surtout parlé hébergement. Mais chez TheCodingMachine, notre métier, c’est plutôt le développement web. Alors pourquoi écrire un livre blanc sur une technologie plutôt utilisée par nos partenaires hébergeurs ? Il doit...

Le web scraping : y a-t-il des alternatives ? Des astuces pour qu’il devienne plus efficace ?

Le web scraping : y a-t-il des alternatives ? Des astuces pour qu’il devienne plus efficace ?

Technologies compatibles ou non avec le web scraping ? Utilisation des moteurs de recherche ? TheCodingMachine met en avant des astuces pour optimiser votre scraping.

Docker et la popularisation des containers. Zoom sur tout ce qui va changer !

Docker et la popularisation des containers. Zoom sur tout ce qui va changer !

Créée il y a tout juste 2 ans, Docker est la startup par excellence. 135 millions de dollars levés, évaluée en avril 2015 à plus de 1 milliard de dollars de capitalisation boursière, la société créée par des français fait...

Vive l’Open Science !

Vive l’Open Science !

Message de félicitations. Une fois n'est pas coutume, on publie ! Commençons par des excuses car nous allons commettre un pêché d'orgueil ! Mais quel bonheur d'être félicité pour notre travail... Rappel du contexte : nous avons récemment développé la...

Comment se construit un projet de web scraping ?

Comment se construit un projet de web scraping ?

Dans la plupart des cas, un projet de Web Scraping doit « crawler » (parcourir et analyser) de nombreux sites web, organiser, trier et stocker les données récupérées puis présenter des interfaces d'agrégation et de restitution adaptées. Le web scraping...

Le web scraping ? Tout le monde en parle… Mais qu’est-ce que c’est ?

Le web scraping ? Tout le monde en parle… Mais qu’est-ce que c’est ?

Les sites e-commerce et les moteurs de recherche comparent de plus en plus leurs données avec celles de leurs concurrents par le biais du web scraping. Il y a même des sites Internet dont c'est le coeur de métier (comparateurs...

PSR-11: Performance impact of the delegate lookup feature

PSR-11: Performance impact of the delegate lookup feature

Some people fear that running more than one container in their application will have a negative impact on performances. This article studies the impact on performance of using PHP-11's delegate lookup feature with a composite container.

Sauvetage De Projet : Les Cas Pratiques De TheCodingMachine

Sauvetage De Projet : Les Cas Pratiques De TheCodingMachine

Cas numéro 3 : abandon du projet par un prestataire. Marge de manoeuvre, manque de connaissances, de temps ou de volonté... Les abandons d'un projet informatique par un prestataire sont monnaie courante. Coup d’œil sur une réalité à éviter pour...

DefinitionInterface: Playing with PHP DI compiled containers interoperability

DefinitionInterface: Playing with PHP DI compiled containers interoperability

This article is about experimenting the possibility to standardize how we register things (usually services) into containers. More specifically, here, I'm targeting only containers that can be compiled.

Conception d’un cahier des charges : la migration de données et l’intégration.

Conception d’un cahier des charges : la migration de données et l’intégration.

Si vous avez déjà un site et que vous souhaitez conserver les données déjà présentes, cette partie ne doit pas être négligée ! Dans le même ordre d’idée, une intégration avec des systèmes tiers est parfois loin d’être triviale. Ces...

Sauvetage de projet : les cas pratiques de TheCodingMachine

Sauvetage de projet : les cas pratiques de TheCodingMachine

Cas numéro 2 : un choix technique inadapté. Lorsque l'on choisit un peu trop rapidement les technologies utilisées, on risque de se trouver face à un résultat très différent et inadapté aux attentes. Explications ci-dessous...

Faut-il communiquer son budget à son prestataire ?

Faut-il communiquer son budget à son prestataire ?

Le budget d'un projet est préoccupant, voire déterminant pour chacune des deux parties. Alors, est-ce une bonne idée de communiquer son budget à votre prestataire ? Evidemment, il n'y a pas de réponse parfaite, voici néanmoins quelques suggestions...

Simplifier des requêtes SQL complexes avec Magic Query ! C’est magique !

Simplifier des requêtes SQL complexes avec Magic Query ! C’est magique !

Magic Query, qu’est-ce donc ? C’est un paquet PHP développé par TheCodingMachine pour simplifier la gestion des paramètres dans les requêtes SQL. L’idée est de répondre à un besoin récurrent : éviter que le code devienne de plus en plus...

Web Marketing : les différentes étapes de l’acquisition de trafic

Web Marketing : les différentes étapes de l’acquisition de trafic

Une fois arrivé sur le site, le visiteur doit y rester ! Cette mesure s'appelle le taux de rebond. Explications ci-dessous !

Conception d’un Extranet : le dashboard

Conception d’un Extranet : le dashboard

Il s’agit de la touche finale de votre application ! Malgré son aspect essentiel, c’est en effet un des éléments de conception que l’on fait en dernier.

Web marketing : l’acquisition de trafic par l’inbound marketing

Web marketing : l’acquisition de trafic par l’inbound marketing

L'inbound marketing est intrinsèquement lié au référencement naturel et donc au SEO (Search Engine Optimization). Plus d'explications ci-dessous:

Sauvetage de projet : les cas pratiques de TheCodingMachine

Sauvetage de projet : les cas pratiques de TheCodingMachine

Cas numéro 1 : une mauvaise architecture. Une mauvaise architecture peut être fatale à un projet informatique car elle le rend complètement instable. Explications ci-dessous...

Conception d’un Extranet : les formulaires

Conception d’un Extranet : les formulaires

La structure des formulaires peut être complexe (lorsqu’ils présentent de nombreux champs par exemple). Coup d’œil sur la forme la plus adaptée à la conception d 'un formulaire...

Framework PHP : qui de Symfony 2 ou de Zend 2 remporte la bataille ?

Framework PHP : qui de Symfony 2 ou de Zend 2 remporte la bataille ?

Zend 2 et Symfony 2 sont les deux frameworks PHP les plus complets. Mais quel est le plus maniable et le plus efficace des deux? Verdict par notre CTO, David Négrier.

Conception d’un cahier des charges : la description du nouveau site/application

Conception d’un cahier des charges : la description du nouveau site/application

Cette partie peut être plus ou moins détaillée selon votre avancement. Mais, même si cette partie peut faire l’objet d’un appel d’offres, TheCodingMachine vous conseille de bien y réfléchir car elle donne une réalité à votre projet et elle vous...

Sauvetage de projet : la gestion des problèmes techniques

Sauvetage de projet : la gestion des problèmes techniques

Voici la présentation d'une méthode de gestion des problèmes techniques rigoureuse et efficace.

Conception d’un extranet : Les grandes fonctionnalités

Conception d’un extranet : Les grandes fonctionnalités

L’objectif de cette partie est de vous donner la plupart des bonnes pratiques qui fonctionnent sur les listes et les filtres.

Web marketing : l’Acquisition de trafic par l’outbound marketing

Web marketing : l’Acquisition de trafic par l’outbound marketing

Le référencement payant demeure l'une des techniques les plus célèbres pour acquérir du trafic. Mais les méthodes ont bien évolué depuis l'émergence d'Internet. Ci-dessous un petit tour d'horizon des bonnes pratiques d'outbound marketing.

Framework PHP : Zend Framework 2

Framework PHP : Zend Framework 2

L'autre mastodonte du monde des frameworks PHP : Zend Framework 2. Voici sa présentation par TheCodingMachine :

Web marketing : tunnel de transformation

Web marketing : tunnel de transformation

N'importe quel site Internet fonctionne (à peu près) selon trois étapes. Modéliser ces différentes étapes (en les adaptant à votre propre business) va vous permettre de mettre en oeuvre la seule stratégie qui fonctionne sur Internet, l'approche "test and learn"...

Conception d’un cahier des charges : la réponse souhaitée…

Conception d’un cahier des charges : la réponse souhaitée…

La réponse souhaitée doit faire l'objet d'une réflexion en amont afin d'ensuite être décrite de la manière la plus claire possible. Cela permettra au prestataire de formuler une réponse au plus près de vos attentes.

Les différentes solutions pour gérer l’humain lors d’un sauvetage de projet

Les différentes solutions pour gérer l’humain lors d’un sauvetage de projet

Gérer les problèmes périphériques : quelles solutions pour gérer les problèmes humains ?

Framework PHP : Symfony 2

Framework PHP : Symfony 2

L’un des 2 mastodontes du monde PHP (l’autre étant Zend Framework 2). Symfony 2 est extrêmement complet. Présentation ci-dessous.

Les Grands Principes de la conception d’un Extranet

Les Grands Principes de la conception d’un Extranet

L’objectif de cette partie est de vous présenter les grands principes concernant les enchaînements des écrans d’une application. Ces principes peuvent sembler triviaux mais NE PAS LES RESPECTER CONDUIT SOUVENT À L’ÉCHEC DU PROJET (vous ne pourrez pas dire qu'on...

Comment faire un cahier des charges pour un site web ?

Comment faire un cahier des charges pour un site web ?

Présentation, ci-dessous, du projet et de la réponse souhaitée. Cette première partie vise à cadrer la réponse attendue : dans quel contexte vous lancez ce projet, de quelle manière vous souhaitez qu’il soit conduit.

La gestion de soi lors du sauvetage d’un projet

La gestion de soi lors du sauvetage d’un projet

Le diagnostic est sans appel, votre projet est planté. Pas de panique, TheCodingMachine vous apporte des solutions !

Principaux composants d’un framework PHP

Principaux composants d’un framework PHP

La grande majorité des frameworks reprennent les éléments contenus dans le tableau ci-dessous. Ils constituent donc les principaux composants d’un framework.  

Conception d’un Extranet : ce qu’il faut éviter…

Conception d’un Extranet : ce qu’il faut éviter…

A tout prix...

Le guide du Framework PHP

Le guide du Framework PHP

D’abord, pourquoi utiliser un framework ? La définition et l'intérêt d’un framework de développement sont essentiels pour en comprendre le fonctionnement...

En quoi la conception d’un extranet est-elle (un peu) difficile ?

En quoi la conception d’un extranet est-elle (un peu) difficile ?

On dit « difficile » mais pas infaisable (puisque vous avez ce livre blanc entre les mains !) Certaines contraintes doivent pourtant impérativement être prises en compte lors de la réflexion sur la création d’un Extranet

La définition du périmètre : facteur essentiel du sauvetage de projet

La définition du périmètre : facteur essentiel du sauvetage de projet

Un projet évolue dans un environnement hostile...

Un Extranet, pour quoi faire ?

Un Extranet, pour quoi faire ?

Un Extranet est une extension du système d'information d’une société à l’usage de ses partenaires (clients, fournisseurs...) Il peut avoir plusieurs usages et s'avère, quoi qu'il arrive, indispensable à l'entreprise...

Méthode pour un sauvetage de projet efficient

Méthode pour un sauvetage de projet efficient

Votre projet n'avance plus ? Il est dans une situation critique ? Cet article se propose de vous donner les clés pour sauver un projet en distinguant différentes étapes : 1. Est-il possible de sauver le projet ? 2. Quelles...

Les 3 piliers d’un bon référencement web

Les 3 piliers d’un bon référencement web

Un bon référencement web se construit brique par brique. C'est un travail de longue haleine (pour ne pas dire un travail de romain). Pour ne rien faciliter, il est très difficile de trouver la bonne méthode car les moteurs de...

POST – Optimiser son site web aux petits oignons

POST – Optimiser son site web aux petits oignons

Toutes les recettes concoctées par TheCodingMachine pour optimiser les performances de votre site web. Amazon indique que si le temps de chargement de la page augmente de 0,1 seconde, les ventes chutent de 1%. Vous qui n'avez pas optimisé votre...

Gérer un pic d’audience

Gérer un pic d’audience

Un jour, vous passerez sur Télématin, vous serez à la une de MyLittleParis, vous lèverez des fonds, vous ferez de la pub avant le 20h et vous aurez une actu terrible reprise par l'AFP. Ce jour là, "si vous n'avez...

Installing Drupal using Composer

Installing Drupal using Composer

Lately, I have been playing a lot with Composer. If you don't know Composer, it is a great dependency manager for PHP, and will probably become the defacto standard in the coming months. I wanted to see if Composer could...

Triggering a PHP script when your Postfix server receives a mail

Triggering a PHP script when your Postfix server receives a mail

In this tutorial, we will see how to trigger a PHP script each time your web server is receiving some e-mails. Why would you want to do that? Well you could want to do that to develop a custom mailing...

Fixing Java memory leaks in Ubuntu 11.04 using jmap

Fixing Java memory leaks in Ubuntu 11.04 using jmap

When facing problems regarding memory consumption of a Java application, the JDK contains a number of useful tools to help you understand what is going on. You can get a list of the tools on this page. One of these...

Solving the « Too many open files » exception in Red5 (or any other application)

Solving the « Too many open files » exception in Red5 (or any other application)

We have been running a Red5 server for quite some time, and as our application was getting more popular, we happened to see new errors we had never seen before. Actually, we saw a bunch of "Too many open files"...

Setting up a XDebug debugging environment for PHP / WAMP / Eclipse PDT

Setting up a XDebug debugging environment for PHP / WAMP / Eclipse PDT

In this article, we will step through all the steps required to enable debugging on your PHP environment. The setup we will use is: WAMP 2 with PHP 5.3, Eclipse Helios with PDT.

Installing the PHP geolocalization extension on CentOS

Installing the PHP geolocalization extension on CentOS

Lately, I've had the need to install a geolocation database on a web server to localize (as closely as possible) a visitor based on its IP address. For this, I've been using the MaxMind geolocation database. Although Maxmind is a...

image description