AFUP AFUP Day 2024 Baromètre Planète PHP PUFA
planete-php.fr Articles Blogs Infos RSS Feed Atom Feed Twitter

Articles

Optimiser vim et le terminal pour le développement

De geek à directeur technique 10/03/2024

Pour développer, vous utilisez sûrement un IDE, qui peut aller de l’éditeur de texte survitaminé comme Sublime Text jusqu’à un environnement complet comme Eclipse, en passant par des outils spécifiques à certaines plateformes, comme Android Studio ou Xcode.





Suivant les projets, les entreprises et les équipes, j’ai été amené à beaucoup utiliser Sublime Text et les outils de JetBrains (PhpStorm et PyCharm).
Durant mes études et ma première année professionnelle, je développais exclusivement avec Emacs, dont j’appréciais la puissance et l’extensibilité. Par la suite, j’ai eu besoin de travailler à distance sur des serveurs via des connexions SSH, et vim s’est alors imposé. Cet outil, qui peut sembler fruste au premier abord, est particulièrement efficace lorsqu’on sait précisément ce qu’on veut faire et qu’on a pris le temps d’en apprendre les nombreux raccourcis clavier. Il a aussi l’avantage d’être présent sur toutes les machines Unix, donc c’est toujours utile de savoir l’utiliser.





Avec vim et un terminal capable de gérer des onglets, on peut se faire un environnement de développement minimaliste mais très productif.





Par exemple, pour travailler sur un projet développé en C typique, on voudra avoir plusieurs onglets, avec dans chaque onglet un vim séparé (« splitté ») en deux parties verticales, l’une avec un fichier .c, et l’autre avec le fichier .h correspondant. On voudra que le titre de l’onglet soit le nom des fichiers ouverts, pour s’y retrouver dans les différents onglets ouverts.





Regardez cette capture d’écran :





Voir la suite

Forcer le redémarrage d'un worker Symfony

Jolicode 05/03/2024

Il arrive de temps en temps que notre worker n’arrive pas à se relever. Aussi fort que vous vous battez, l’erreur a mis PHP ou votre application dans un état instable et il n’y a rien à faire à part l’achever !


Pour pallier ça, vous avez deux options !


Si vous avez la main sur l’exception qui est levée, vous pouvez implémenter StopWorkerExceptionInterface ou lever directement une instance de StopWorker. Symfony laissera alors le worker s'éteindre après le traitement du message.


Cependant, il y a des cas où vous n’avez pas la main sur l’exception. Prenons l’exemple de "RedisException". Si la connexion entre PHP et Redis est instable, les appels vers Redis échoueront. Et même si la connexion revient à la normale, un certain nombre d’appels seront toujours en échec. Il est possible de wrapper tous les appels à Redis. Mais… c’est long et fastidieux.


À la place, nous vous proposons ce listener, qui permettra d’éteindre le worker, si une exception d’un certain type est levée :


namespace App\Messenger\Listener;

use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
use Symfony\Component\Messenger\Event\WorkerRunningEvent;
use Symfony\Component\Messenger\Exception\HandlerFailedException;

final class RestartWorkerListener implements EventSubscriberInterface
{
private const array EXCEPTIONS_TO_RESTART_WORKER = [
// Redis cannot recover from a connection error.
\RedisException::class,
];

private bool $stop = false;

public function __construct(
private readonly LoggerInterface $logger = new NullLogger(),
) {
}

public function onMessageFailed(WorkerMessageFailedEvent $event): void
{
$e = $event->getThrowable();

if ($this->stopIfNeeded($e)) {
return;
}

if ($e instanceof HandlerFailedException) {
foreach ($e->getWrappedExceptions() as $e) {
if ($this->stopIfNeeded($e)) {
return;
}
}
}
}

public function onWorkerRunning(WorkerRunningEvent $event): void
{
if ($this->stop) {
$event->getWorker()->stop();
}
}

public static function getSubscribedEvents(): array
{
return [
WorkerMessageFailedEvent::class => 'onMessageFailed',
WorkerRunningEvent::class => 'onWorkerRunning',
];
}

private function stopIfNeeded(\Throwable $e): bool
{
if ($this->shouldRestartWorker($e)) {
$this->stop = true;

$this->logger->error('Worker will stop due to an error.

Voir la suite

Le baromètre des salaires en PHP 2023 publie ses résultats

AFUP 05/03/2024

Les résultats portent sur l'analyse des réponses de 1042 personnes, sur une période allant du 18 septembre au 18 décembre 2023.


Comment ont évolué les salaires en 2023 ?


Si les salaires ont toujours augmenté en 2023, ils ont surtout suivi le rythme de l'inflation : le salaire médian des devs en CDI a augmenté de 4,7%, suivant de près le taux d’inflation constaté par l’INSEE en 2023.

En étudiant le salaire moyen par genre, on peut constater que, pour les hommes, on passe d'un salaire annuel brut moyen de 43 653€ à 45 518€, soit une augmentation de 4%. Pour les femmes, cette année, nous ne relevons pas d'augmentation notable (0.5%). L'écart annuel entre hommes et femmes interrogées se creuse donc encore davantage, en passant de 3 747€ à 4 805€ en moyenne sur l'année.
Attention cependant, au vu du nombre de femmes ayant répondu, nous ne pouvons nous assurer de la pertinence de ces résultats.


Quotidien de la vie des dev


Si la question des salaires est évidemment essentielle, le baromètre permet aussi de s'intéresser au quotidien dans notre milieu professionnel, se penchant ainsi sur la qualité de vie au travail.


Versions de PHP, recours à Symfony ou Laravel


Comme il l'a déjà été constaté lors des analyses des années précédentes, la communauté suit de près les évolutions de PHP : ainsi, 44% des personnes ayant répondu ont indiqué utiliser la version 8.2 de PHP, sortie en décembre 2022.

Et qu'en est-il de l'évolution de l'utilisation des frameworks ? Si Symfony reste la spécialité des personnes répondantes à 67%, nous constatons cependant la croissance continue de Laravel, qui atteint maintenant 12% des répondants et répondantes.

Au contraire, l'utilisation de Zend Framework/Laminas se réduit drastiquement : seulement 1,7% des répondants et répondantes ont indiqué ce framework en tant que spécialité alors qu'elles étaient 21% à le faire 10 ans auparavant.


Dynamisme du secteur et turn-over


Cette année, une nouvelle question relative au changement de poste a été posée. Ainsi, 36% des personnes ont indiqué chercher à changer de poste en 2023. Quasiment la moitié d'entre elles (48,2%) ont réussi à en changer. Malgré la situation économique actuelle, le secteur semble rester dynamique.

Cette information vise à se confirmer via une autre nouvelle question, relative à l'ancienneté dans l'entreprise. En effet, notre secteur est souvent connu pour avoir un turn-over assez important.

Voir la suite

Comment écrire une règle Rector

Jolicode 21/02/2024

Afin de mettre à jour Symfony sur l’application d'un client, nous avons dû corriger quelques usages de Doctrine au préalable. Il y a quelques années de cela, il était commun d'écrire ce genre de code dans un contrôleur :


$order = $this->getDoctrine()->getRepository('App:Order')->find($id);

La syntaxe <Namespace>:<EntityName> étant dépréciée, il faut mettre à jour en utilisant la syntaxe FQCN.


use App\Entity\Order;

$order = $this->getDoctrine()->getRepository(Order::class)->find($id);

A travers cet article, nous verrons comment créer une règle custom Rector, qui répondra à ce besoin.


Mais quitte à écrire une règle, ne pouvons-nous pas corriger le code ci-dessus pour qu'il ne transgresse pas la loi de Demeter ?


use App\Repository\OrderRepository;

class OrderController
{
public function __construct(
private readonly OrderRepository $orderRepository,
) {
}

public function show(string $id)
{
$order = $this->orderRepository->find($id);
//...
}

}

Mise en place de rector


À JoliCode, nous n'aimons pas ajouter les outils directement aux applications Symfony :


  • Ils peuvent mettre en conflit certaines dépendances ;

  • Ils alourdissent le projet ;

  • Pour des projets avec plusieurs applications (micro ou macro services), il faut installer N fois les outils ;

  • "Ce n'est pas bien rangé".

Nous avons l'habitude de les mettre dans le dossier tools/<outils> :


tools
├─ rector
│ ├─ composer.json
│ └─ composer.lock
├─ phpstan
│ ├─ composer.json
│ └─ composer.lock
└─ php-cs-fixer
├─ composer.json
└─ composer.lock

Dans le dossier tools/rector, nous avons le fichier composer.json suivant :


{
"type": "project",
"license": "proprietary",
"require": {
"rector/rector": "^1.0.1"
},
"require-dev": {
"phpunit/phpunit": "^9.6.16",
"symfony/var-dumper": "^5.4.35"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
}
}

Vous noterez que nous avons pris un peu d'avance en ajoutant :



  • symfony/var-dumper pour pouvoir utiliser dump() dans les tests et lors du debug ;


  • phpunit/phpunit pour pouvoir tester nos règles ;

  • l'autoloading de notre "application".

Voir la suite

Bloquez votre 13 mars pour le Super Apéro PHP 2024

AFUP 21/02/2024

Depuis 2017, le Super Apéro PHP est le rendez-vous de mars où les antennes AFUP synchronisent leurs montres et proposent une soirée de talks, d'échanges et de rencontres autour de quelques boissons. L'occasion, où qu'on soit en France, de passer un moment avec la communauté et de lever nos verres à l'unison en l'honneur du langage !


Le Super Apéro PHP 2024 se tiendra le soir du mercredi 13 mars : dès 18h30, dans les antennes AFUP participantes, la communauté PHP est invitée à une soirée de talks, un hackathon ou à un gros apéro PHP : quel que soit le programme de la soirée, l'essentiel est de passer un moment avec les devs de la région, de se rencontrer, d'échanger, d'apprendre, et de célébrer le langage qui permet de nous fédérer.


Retrouvez ce que vous proposent les antennes AFUP participantes sur la page du Super Apéro PHP 2024.
Votre antenne AFUP n'affiche encore aucune info ? Pas de panique, un certain nombre est encore en train de travailler sur le programme de la soirée. Votre antenne AFUP ne semble plus donner signe de vie depuis un petit moment ? Et si c'était là le signal vous invitant à la relancer ? Tenez-nous au courant si l'idée vous intéresse !

Nous sponsorisons les événements AFUP en 2024

Stéphane Hulard (CH Studio) 19/02/2024

Cette année encore, nous accompagnons l'AFUP en sponsorisant les événements.


L’article Nous sponsorisons les événements AFUP en 2024 est apparu en premier sur CH Studio - Incubateur d'innovation, conseil et accompagnement.


Passage de l'AFUP à la TVA : qu'est-ce qui change pour la billetterie ?

AFUP 19/02/2024

L'assujettissement à la TVA a un impact sur la billetterie. Le taux de TVA concernant ce sujet est de 10%. Les décisions prises par l'équipe sur la façon dont ce changement impacte les tarifs des places diffèrent selon les événements à venir.


Concernant le prix des places de l'AFUP Day 2024


La billetterie de l'AFUP Day 2024 est à cheval sur deux années : elle a ouvert en octobre 2023 (quand la TVA n’était pas applicable) et reste ouverte en 2024 (quand l'assujettissement à la TVA est désormais appliqué).


Si nous avions appliqué la TVA aux tarifs de billetterie à compter du 1er janvier 2024, le tarif pratiqué dépuis octobre 2023 serait alors devenu le tarif hors-taxe. Les particuliers achetant leur billet après le 1er janvier 2024 auraient donc payé plus que ceux ayant pris leur place en 2023 (les entreprises récupérant la TVA, cet impact était insensible pour elles). Nous ne trouvions pas cette augmentation juste, d’autant plus que nous n’avions pas communiqué en amont sur ce changement.


Nous avons donc décidé que, pour l’AFUP Day 2024, les tarifs pratiqués depuis l'ouverture de la billetterie en 2023 deviendraient le montant TTC en 2024 : l’AFUP prend donc à sa charge l’impact de l'assujettissement à la TVA sur cet événement. Ainsi, les particuliers paient le même montant, qu'ils aient acheté leur billet en 2023 ou qu'ils l'achètent en 2024. Quant aux entreprises, elles y gagnent puisque le tarif devient encore plus attractif pour elles ! Si vous ne l’avez pas fait, prenez vos places pour l’AFUP Day 2024.


Concernant le prix des places du Forum PHP 2024


La billetterie du Forum PHP 2024 ouvrant le 24 mai prochain, nous ne rencontrons pas le problème lié au calendrier. De plus, les finances de l'AFUP ne sont pas en mesure d'éponger l'intégralité des sommes liées à cet assujettissement à la TVA pour le Forum PHP 2024. Il nous a donc semblé essentiel de trouver un compromis juste à la fois pour le budget de l'événement tout comme celui des membres du public, en particulier celles et ceux dont l'entreprise ne couvre pas les frais d'inscription au Forum PHP.


Il a alors été décidé, pour le Forum PHP 2024, de reprendre les tarifs du Forum PHP 2023 et de répercuter la TVA de 10% sur les billets liés aux périodes des tarifs de croisière et des tarifs Late Bird.
Les tarifs Early Bird, qui proposent les billets les moins chers, disponibles entre l'ouverture de la billetterie et la publication du programme (ou jusqu'à écoulement des stocks), étant principalement destinés aux personnes aux plus faibles moyens, ils seront épargnés par la hausse de prix. L'AFUP prend en charge l'augmentation dûe à la TVA sur ces billets : nous visons ainsi à conserver l'esprit communautaire de l'événement et à permettre son accès au plus grand nombre. Le nombre de billets Early Bird disponibles sera également augmenté, afin de faciliter leur accès à notre public.

Voir la suite

Quelques conseils pour optimiser votre environnement de travail sous Linux

Eleven labs 19/02/2024

Dans cet article, je vais partager quelques conseils pour optimiser votre environnement de travail sous Linux. Tout ce que nous allons aborder ici représente des éléments que j'ai personnellement mis en place et que j'utilise quotidiennement.
Nous explorerons la configuration de plusieurs accès SSH, la personnalisation de notre Interface de Ligne de Commande CLI avec bash, et comment abandonner l'utilisation de zsh et Oh My Zsh.


Configuration de plusieurs accès SSH dans votre environnement Linux


Pour ce premier conseil, nous allons nous intéresser à SSH. Il vous est peut-être déjà arrivé d'avoir plusieurs accès SSH avec des informations de connexion différentes telles que l'adresse du serveur, l'utilisateur, les clés privées et publiques, etc.
Et vous avez probablement utilisé SSH en spécifiant toutes les informations de connexion, comme dans l'exemple ci-dessous :


ssh -i path-to-ssh-public-key user@host:port

Si vous avez plusieurs accès à différents serveurs SSH, vous devez probablement faire quelque chose de similaire à ceci :


ssh -i path-to-ssh-public-key-server-1 user-server-1@host-server-1:port-server-1

ssh -i path-to-ssh-public-key-server-2 user-server-2@host-server-2:port-server-2

ssh -i path-to-ssh-public-key-server-3 user-server-3@host-server-3:port-server-3

Si vous êtes un peu paresseux, vous avez peut-être configuré des aliases. C'est bien, mais non optimal !
Nous allons voir comment configurer notre client SSH de manière à simplifier tout cela. Allez, c'est parti !


Tout d'abord, vous allez créer le fichier .ssh/config avec les permissions suivantes : 0600 ou, si vous préférez, - rw- --- ---. Ensuite, vous allez l'éditer avec votre éditeur préféré : vim. ?


Dans ce fichier, nous allons ajouter des blocs de configuration ssh comme suit :


Host <<nom-super-nom-d-host>>
Property value
Property value

Vous voyez, ce n'est pas compliqué du tout ! Prenons un exemple plus concret avec un compte Gitlab auto-hébergé, un compte Gitlab, un compte Github, et deux accès à un serveur virtuel :


Host my-private-gitlab.com
PreferredAuthentications publickey
User git
HostName my-private-gitlab.com
IdentityFile ~/.ssh/id_my-private-gitlab.com

Host github
User git
HostName github.

Voir la suite

Compte-rendu de l'assemblée générale 2024

AFUP 12/02/2024

Bilan moral du bureau 2023-2024


Sébastien Rogier, président 2023-2024, a présenté un tour d'horizon des différents projets, pôles et groupes de travail à l'AFUP, lors de son bilan moral.


État des adhésions


Au moment de l'assemblée générale, l'AFUP compte 613 membres (dont 217 via une entreprise et 65 personnes morales). Par rapport aux années précédentes, ces chiffres reflètent une baisse en 2023 des cotisations des personnes morales en particulier : les entreprises ont moins adhéré à l’AFUP en 2023, ce qui fait également écho à la baisse de participation au Forum PHP 2023, les entreprises profitant souvent du Forum PHP pour renouveler leur adhésion.


État des lieux au sein des antennes AFUP


Depuis la fin du pic de la crise sanitaire, le constat porté sur l’activité au sein des antennes est toujours difficile : avec 53 meetups en 2023, il reste compliqué de relancer la machine et les antennes n’ont toujours pas retrouvé le niveau d’activité connu en 2019, avec plus de 100 meetups/an.

Cependant l’équipe souligne la réactivation de certaines antennes, qui étaient en sommeil depuis quelques années : Toulouse et Rennes par exemple ont repris l’organisation de meetups réguliers.


Du côté du baromètre des salaires en PHP 2023


La onzième enquête du baromètre des salaires en PHP menée par l'AFUP a été un succès, avec un record de participation de 1042 réponses ! Cette édition 2023 a été portée en collaboration avec un nouveau partenaire média, WeLoveDevs.com. La publication des résultats aura lieu en mars prochain, et une nouvelle enquête sera lancée en 2024, sur la base d’un nouveau calendrier afin de mieux correspondre aux périodes d’entretiens annuels au sein des entreprises.


AFUP Day 2023 et préparation de l'AFUP Day 2024


L’AFUP Day 2023 marquait enfin le retour de l’événement à son format multi-destinations : l’événement a été accueilli à Lille et à Lyon, et a accueilli environ 400 participants (246 à Lyon et 159 à Lille). 18 speakers étaient au programme et 17 sponsors ont soutenu l’événement.


L’AFUP Day 2024 sera quant à lui accueilli dans 4 villes : Lille et Lyon renouvellent l’expérience, et deux nouvelles villes, Nancy et Poitiers, s’ajoutent à la liste. Les équipes sont motivées, dynamiques et enthousiastes : l’AFUP Day 2024 Nancy annonce même d’ores et déjà complet !

Une adaptation du pôle antenne a été nécessaire pour permettre de suivre les 4 événements par le pôle antennes. Le fait d’avoir deux équipes plus expérimentées (Lille et Lyon) en parallèle de villes plus novices (Poitiers et Nancy) permet aussi de réguler la charge de travail : les équipes les plus rodées ont peut-être moins besoin d’accompagnement que des équipes découvrant toute l’organisation.


Forum PHP 2023 et 2024


Forum PHP 2023

Le Forum PHP 2023 a été organisé pour la deuxième année consécutive à Disneyland Paris.

Voir la suite

Héberger un projet PHP sans serveur avec WebAssembly

Jolicode 08/02/2024

D'après Wikipedia :



WebAssembly, abrégé wasm, est un standard du World Wide Web pour le développement d’applications. Il est conçu pour remplacer JavaScript avec des performances supérieures. Le standard consiste en un bytecode, sa représentation textuelle et un environnement d'exécution dans un bac à sable compatible avec JavaScript. Il peut être exécuté dans un navigateur Web et en dehors. WebAssembly est standardisé dans le cadre du World Wide Web Consortium.



Ce qu'il ne faut pas retenir, c'est que wasm est conçu pour remplacer JavaScript.


Ce qu'il faut retenir, c'est que WebAssembly est un langage de bas niveau qui est conçu pour être exécuté dans un contexte sécurisé. On le retrouve aussi bien dans un navigateur, que dans des workers @edge (comme chez fastly) ou dans les blockchains/smart contracts. Sa force est sa sandbox qui, par défaut ne permet pas d’interagir avec l'extérieur : pas de réseau, pas de système de fichier, etc.


Il existe cependant une interface WebAssembly System Interface (WASI) qui permet de communiquer avec l'extérieur. C'est dans celle-ci qu'il est possible de définir et configurer les fonctions qui permettent d'interagir avec d’autres systèmes.


Wasm est un langage qui est ensuite exécuté par un Runtime Environment. C'est une machine virtuelle qui va interpréter le bytecode wasm. Ce n'est ni plus ni moins qu'un "Processeur basé sur la pile" (Stack Machine en Anglais).


Mais ne vous méprenez pas, nous n'écrivons jamais du wasm a la main. Nous utilisons des langages de plus haut niveau, comme Rust, C, C++, etc. qui sont ensuite compilés en wasm.


Notre projet en quelques mots


À JoliCode, nous maintenons une librairie qui corrige automatiquement les problèmes de micro-typographie sur les contenus Web. Nous proposons aussi une demo en ligne. Cependant, cette démo est en PHP. Cela veut dire que nous avons besoin d'un cluster Kubernetes avec 80 nodes d'un serveur pour la faire tourner. Cela implique une dépense d'argent, de la maintenance, un serveur allumé en permanence, etc. Nous aimerions donc la migrer en wasm. Reste à savoir si c'est possible !


Le code


Le code à faire tourner dans le navigateur est le suivant :


require '/app/vendor/autoload.php';

use JoliTypo\Fixer;

$fixer = new Fixer('fr');
$fixer->setLocale(['Dash', 'Dimension', /*...*/ 'Unit']);

echo $fixer->fix('Merci de fixer ce texte.');

Rien de spécialement compliqué ?! Sauf qu'il y a quand même un require, et donc des fichiers à charger… (les dépendances Composer).

Voir la suite

Blogs

Infos

Ajouter une source ?

Envoyez un email avec l'URL du site et du flux à planetephpfr AT afup POINT org

Gestion

AFUP