SOS mes mails ne partent pas avec Symfony

Ahah, encore un truc que je n’ai pas demandé, mais qui a changé avec Symfony.

Historiquement avec Symfony quand je voulais envoyer un email, par exemple suite à une inscription sur mon site (validation de compte quoi). J’utilise MailerInterface, je peuple mon instance et paf, j’envoie avec la méthode :

$mailer->send();

et zou c’est parti.

Que nenni mon ami, depuis la version 7, il semblerait que ce n’est plus le fonctionnement standard. Il stocke plutôt les messages en BDD via Messenger et les envoie de manière async. Cela part d’une bonne attention, le fait d’éviter les fonctionnements synchrones. En effet, on envoie une notification de création de message, stocké en BDD, puis un worker passe régulièrement pour faire une partie des envois, de manière régulière.

Mais le problème, c’est encore le fonctionnement sur des hébergements mutualisés qui ne nous permettent pas toujours d’avoir accès à ce genre d’outils. (WIP, je vais creuser ça).

Résoudre ça

Pour résoudre ça rapidement, il est possible de faire une rustine ici :

config/package/messager.yaml

au niveau de routing, commentez cette ligne:

# FIXME check for worker in my host
Symfony\Component\Mailer\Messenger\SendEmailMessage: async

Et on n’oublie pas le petit fixme, pour revoir ça plus tard.

Exemple de code pour test

Si vous voulez tester rapidement, vous pouvez créer, si ce n’est déjà fait, un MailController qui va se charger de tout les envoie de mail que je forward sur une route spécifique. C’est ce que je fais dans mes projets afin de séparer les responsabilités.

Dans mon MailController, je crée une route de test (à supprimer en sûr).

   #[Route('/mail_test', name: 'mail_test')]
    public function mailTest(MailerInterface $mailer)
    {
        
        if ($_ENV["APP_ENV"] == 'dev') {

            // create new emailObject
            $email = (new Email())
                ->from('test@test.com')
                ->to("client@client.com")
                ->subject("Mail de test")
                ->text(
                    "Bonjour je suis un mail de test"
                )
                ->html(
                    "<h2>Bonjour je suis un mail de test mais en HTML</h2>"
                );

            // send it via mailerInterface
            $mailer->send($email);
            // dd($email);

        }
        // redirect to home anyway
        return new RedirectResponse("/");
    }

Rechercher une alternance dans le graphisme/webdesign/intégrateur

Présentation


Dans ce guide, nous allons voir comment se préparer à la recherche d’alternance dans le milieu du Web en province.
Je sais que la prospection peut être longue et frustrante, le chemin sera truffé d’embuche, mais c’est un passage obligé, qui sera pour la plupart du temps votre premier contact avec le monde du travail pour la poursuite des cours après le Bac. Mais courage, vos efforts seront récompensés avec l’obtention d’un contrat qui vous permettra de financer votre formation et gagner une vraie expérience.

Le CV

C’est votre carte de visite en entreprise. C’est une étape à ne pas négliger, car un recruteur ne passe que quelques secondes sur un CV, il faut donc l’accrocher directement. La rigueur est donc de mise, la moindre coquille sera éliminatoire. Il existe plusieurs types de CV. Vous pouvez envoyer les deux.


En tant que junior, je vous conseille de mettre les formations d’abord, puis les expériences (significative, pas le stage de 3ᵉ, sauf si c’est en lien avec la formation ou un travail nourricier, par exemple préparateur dans un Mc Do, ou les huitres, qui montre que vous avez déjà un pied dans le monde pro et prêt à donner de votre personne).


Dans les formations (surtout celles techniques), n’hésitez pas à détailler un peu le
programme ou les compétences que vous avez ou allez aborder (oui oui, au futur).
L’alternance est un contrat pour de la formation, même si certaine entreprise l’oublie
parfois.

Liste des éléments à faire apparaitre :

  • Vos Coordonnées :
    • Nom, Prénom, adresse électronique (si possible pro, sinon créer une
      nouvelle adresse avec un suffixe pro (par exemple, prénom-nom-pro@gmail.com)
    • Le numéro de téléphone, attention à la diffusion du CV, si c’est pour un
      recruteur oui, si c’est sur du réseau, attention. Notamment pour le public
      féminin, malheureusement, il peut y avoir certaines personnes mal
      intentionnées ou un peu lourdes qui essayeront de vous contacter.
    • Idem, ne mettez pas l’adresse postale complète, la ville avec le code postal
      suffit aux recruteurs.
  • Le permis / Véhicule (l’indépendance et la mobilité sont la garantie de gagner des
    points)
  • Les certifications (sur une technologie, pix, etc.)
  • Vos passions, en cherchant tout de même à être original. Juste mettre musique
    ou voyage ne veut rien dire. Il faut interpeller, cela peut même vous aider à créer
    du lien avec le recruteur si vous avez les mêmes affinités.
  • Si vous avez des engagements dans la vie associative ou des activités annexes
    (genre sports collectifs, jouer dans un groupe de musique), cela peut aider.

Le CV classique

Le CV classique permet d’afficher, de manière assez exhaustive, les compétences, savoir-être et savoir-faire. Pas marquant, mais permet d’afficher de manière lisible vos informations. Pas obligatoirement conseillé, mais pourquoi pas l’envoyer en même temps que le CV graphique.

Le CV graphique

Le CV graphique permet d’exprimer votre créativité, c’est ce qui va vous démarquer des autres candidats. En général, vous pouvez ajouter un logo, définir vous-même votre charte graphique, ou partir sur un Template existant. Les outils pour un CV graphique, peuvent être Figma, Illustrator, pourquoi pas Canva (mais ce n’est pas l’outil idéal pour un professionnel, en tout cas pour un poste de graphiste). De même, n’hésitez pas à ajouter un QR CODE vers votre portfolio, linkedIn…

Ci-dessous des exemples de CV graphique qui vont marquer le recruteur. Vous pouvez aussi trouver des modèles inspirants sur Figma (en tapant « resume » CV en anglais)

https://www.figma.com/community/file/1189988280184166076/resume

CV / Resume – A4 – Print Ready | Figma

Les réseaux sociaux

Le leader du marché est LinkedIn, il est primordial que vous y soyez inscrit. Il va vous permettre de vous présenter (dans l’idée d’un CV, portfolio). Ça, c’est l’étape numéro 1.

Étape 1 : Le profil

Complétez votre profil, mettez-y une photo avantageuse de vous, une bio expliquant votre projet, une bannière, etc. Les formations et surtout la formation à venir. Détaillez-y les compétences à venir, un peu comme sur le CV.

Etape 2 : Réseauter

Une fois cette étape, à ne pas négliger, c’est de chercher du réseau. En effet, LinkedIn est le principal réseau pro, n’hésitez pas à ajouter des personnes présentes dans des entreprises qui vous intéressent. Comme indiqué auparavant, la plupart des offres ne sont pas visibles, donc il vaut mieux développer son réseau avant de passer à l’étape 3 la publication de contenu.

Étape 3 : Publier du contenu

Une fois votre réseau développé, vous pouvez commencer à partager du contenu. Votre CV, votre portfolio, vos réalisations. Un bon moyen d’interpeller c’est de tester des choses, comme un rebranding d’une marque, tester de faire des logos pour vous (votre identité en ligne), etc. Vous pouvez attaquer la recherche d’entreprise (voir partie 4).

Un portfolio, c’est un site, une page web, un book qui contient vos réalisations. Il peut être au format numérique (à privilégier) ou papier.
Dans les métiers du graphisme (Graphiste, web designer) il est obligatoire pour intéresser les potentiels recruteurs.

Dans un premier temps, le portfolio sera réalisé sur une plateforme du type dribbble, doyoubuzz, portfolio-box, etc. Il faudra bien sûr l’alimenter et le mettre à jour très régulièrement, en supprimant les choses dont vous êtes moins fiers (normal, vous allez progresser).
Un plus de le réaliser soi-même (HTML/CSS, et soyons fou PHP et WP), mais il faut déjà être un peu expérimenté.

La lettre de motivation

La lettre de motivation permet d’indiquer à l’entreprise le contexte de votre recherche de stage/alternance. En gros, je cherche une entreprise, car mon projet est de développer mes compétences en développement, mon relationnel client, etc.

En général, cela permet aussi d’essayer d’accrocher l’entreprise avec une partie avec laquelle vous vous projetez au sein de l’entreprise, « j’espère pouvoir apporter mes compétences sur ce nouveau projet que vous venez de lancer ». Le nouveau projet est évidemment quelque chose que vous avez repéré sur leurs sites internet, blog, article de presse ou encore LinkedIn. Il est hyper important de montrer que votre candidature n’est pas entièrement générique et que vous vous êtes renseigné sur l’entreprise et son activité.
Comme pour le CV, le recruteur, s’il lit la lettre, va y passer 20 secondes MAX. Mettez les mots-clés et informations importantes en gras, il faut faciliter au maximum l’accès à l’information au lecteur.

src: Lettre de motivation : structure, contenu et conseils – IONOS

Bien sûr, ce n’est qu’un exemple, vous pouvez bien sûr coordonner votre CV et votre
lettre de motivation pour plus de cohérence et montrer votre patte graphique (important si vous postulez en tant que graphiste).
Pour la partie de l’interlocuteur (le « madame, monsieur »), c’est vraiment si nous n’avons pas l’information, en général, vous la trouverez sur son LinkedIn (important, pour montrer que vous montrez de l’intérêt pour l’entreprise). Pensez à remettre cette info dans la formule de politesse.
Ne terminez pas votre lettre ou votre mail par « Cordialement, ». En effet, cordialement veut dire « chaleureusement », vous ne connaissez pas le recruteur, cela peut être mal perçu. Mettez plutôt une formule de politesse standard, un peu désuet, mais plus dans les conventions.
Regardez comment le recruteur/interlocuteur vous répond pour adapter votre ton. Le cordialement peut être mis une fois que vous avez eu plusieurs échanges avec une personne.

Structure

En général, la structure de la lettre doit être en 3 parties :

Le Moi

Je me présente, moi et mon projet pro. Mes aspirations, mes compétences, savoir-faire et savoir-être. N’hésitez pas à aborder les compétences à venir.

Le vous

Un élément sur l’entreprise, montrez que vous vous êtes intéressé à l’entreprise. Comme évoqué plus haut, une actualité, un nouveau produit, un fait marquant (leader sur le marché régional sur ce secteur par exemple).

Le nous

C’est votre projection de votre projet au sein de l’entreprise, « ensemble, nous ferons ça », « j’ai telle connaissance que je vais pouvoir mettre au service de votre société »

Petite remarque. Quand vous postulez dans une entreprise, on parle de client ou de société. Quand c’est dans une structure publique, on parle d’usagers, de service et de structure.

La recherche d’entreprise

Pour la recherche d’entreprise, il faut partir du principe que la plupart des offres d’emploi (à peu près la moitié) ne sont pas visibles. C’est le bouche-à-oreille qui prime et le meilleur moyen de simuler cela dans la vie numérique, c’est LinkedIn. C’est pour ça que je vous conseille de déjà bien préparer votre profil et de « réseauter ». Vous devez créer un compte et renseigner votre profil. Ajouter une photo pro, sans aller jusqu’au costume trois pièces, mais une photo où :

  • Vous regardez l’objectif, vous pouvez sourire hein !
  • Êtes habillé correctement
  • Environnement pro, on évite les photos de mariage ou les photos à Disneyland.


Ajoutez le contenu adéquat, comme sur votre CV, les compétences, les diplômes et
surtout, indiquez votre formation et votre école.
Dans cette partie formation, ajoutez essentiellement les compétences à venir, vue pendant la formation.

Par exemple, dans l’école où je suis formateur, durant les 2 ans, nous allons voir :

  • Développement Web
    • HTML/CSS
    • Responsive Web Design (Bootstrap, TailWind)
    • JavaScript
    • PHP/WordPress Elementor
      • Divi
      • From Scratch
  • WebDesign
    • Wireframe Maquette (Figma, Adobe XD)
      • Veille graphique
    • Graphisme
      • Création d’infographie, retouche (Photoshop)
      • Création de Logo (Illustrator)
  • Vidéo
    • Scénarisation
    • Storyboard
    • Prise de vue
    • Montage (Première Pro)
    • Motion Design (After Effect)
  • 3D
    • Blender
    • Tinkercad

En dehors de LinkedIn, vous pouvez, bien sûr, écumer les sites spécialisés (monster, météojob, ouestjob), leboncoin peut aussi être un site intéressant.

Si vous ne savez pas quelle entreprise, ou êtes limité niveau mobilité, prenez Google et tapez une requête du genre « pme saint-lô », vous aurez ensuite une liste d’entreprises (avec coordonnée, site, réseau, etc.) agrandissez le cercle de plus en plus. Je vous conseille d’éviter les agences web. En effet, vous pouvez tenter, mais celles-ci reçoivent énormément de candidatures chaque semaine et vous n’avez que peu de chance de vous démarquer, sauf CV et « portfolio béton ».


N’hésitez pas à en parler autour de vous, en repas de famille, cercle d’amis. On ne sait jamais, ils n’ont parfois pas de besoin immédiat, mais peuvent aussi en parler autour d’eux, il faut que votre recherche devienne virale.

Pensez à relancer les entreprises au bout d’un certain délais, histoire de remettre le cv en haut de la pile.

Mise en place de Sphinx pour générer de la doc/Cours

1. Install rst2pdf
    - use your package manager (or)
    - pip install rst2pdf (or)
    - easy_install rst2pdf

2. Add rst2pdf to the list of extensions in conf.py

   

extensions = ['rst2pdf.pdfbuilder']



    This list will be empty if you accepted the defaults when the project was setup. If not, just append 'rst2pdf.pdfbuilder' to the list.


3. Add a pdf_documents variable to conf.py

  pdf_documents = [('index', u'rst2pdf', u'Sample rst2pdf doc', u'Your Name'),]
  # index - master document
  # rst2pdf - name of the generated pdf
  # Sample rst2pdf doc - title of the pdf
  # Your Name - author name in the pdf

4. Generate pdf
  

sphinx-build -b pdf source build/pdf



   The generated pdf will be in the build/pdf directory. 

Déployer son site Symfony sur un serveur Mutualisé

Il y a 2 ou 3 petites choses à faire, mais rien de bien sorcier, par contre la ressource n’est pas facilement trouvable sur le net.

Je vous conseille avant toute chose, de cloner votre projet dans un autre répertoire, il peut y avoir un risque de pétage de projet.

Tout d’abord, il faut faire un dump de votre environnement grâce à la commande :

composer dump-env prod

Une fois fait, vous vous retrouvez avec un fichier env.php qui contient un tableau associatif avec les accès BDD, serveur mail, etc. (ce qui se trouvait dans env.php). Pensez à mettre a jour avec vos identifiants BDD, serveur SMTP

Ensuite, passez en prod et relancez le composer install qui va ne prendre que les dépendances de la prod (pas de web profile, fixtures, etc.)

Une fois fait, vous devez ajouter 2 fichiers .htaccess. Un à la racine du site, le second dans le répertoire public.

Voici le contenu de celui à la racine, qui en gros redirige les requêtes vers le répertoire public en les passant en https.

RewriteEngine on

RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]

Et celui à mettre dans public qui va faire les branchements avec le moteur de Symfony


<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
    RewriteRule .* - [E=BASE:%1]

   
    RewriteCond %{HTTP:Authorization} .+
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

    RewriteCond %{ENV:REDIRECT_STATUS} =""
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 307 ^/$ /index.php/

    </IfModule>
</IfModule>

une fois fait, envoyez ça sur votre hébergement et normalement ça marche. En cas de problème, pensez à virer le cache, le plus facile c’est d’aller dans var et de renommer le répertoire prod en prod_ (c’est plus rapide, car il contient des centaines de fichiers)

Fichier robots.txt et autre ads avec Symfony

Comme vous le savez, une bonne pratique est d’ajouter un fichier robots.txt pour indiquer vos préférences en terme de crawler (enfin quand c’est pris en compte) idem si vous utilisez une régie de pub (ads.txt).

Pour qu’il soit visible dans un projet Symfony, il faut les placer dans le dossier public.

CKEDITOR avec FOSCkE ne fonctionne plus

Alors il semblerais que cela fasse partie de la nouvelle stratégie de CKEditor (pour faire acheter + de licence) et c’est un peu moche. C’est que des que l’ont va vouloir passer à l’installe de la derniere versio de FOSCKEditor pour Symfony, le message suivant d’affiche dans la console :

[CKEDITOR] Error code: invalid-lts-license-key.

La solution est trivial, mais pas top, il suffit de passer CKEditor à une version ultérieure, mais bon, c’est moins sécure.

php bin/console ckeditor:install --tag=4.22.1

Il vous demande si vous voulez garder l’install(keep) ou recommencer(drop). Vous dropper, puis relancer la commande install:

php bin/console assets:install public

En esperant qu’une solution soit trouver, sinon il faudra trouver un éditeur WYSIWYG alternatif. J’ai testé des trucs (editorJS), je documenterais ici une fois maitrisé.

Ajouter une variable d’environnement sous Windows 10

Sous windows 10 (mais c’est à peu près la même chose sur les autres windows), cliquez sur le bouton démarrer ou la touche win et tapez « variable ».

Cliquez dessus sur le lien

Puis variable d’environnement en bas

Double cliquez sur Path ou une fois selection cliquez sur « Modifier ».

Selectionner la variable à ajouter, dans mon cas c’est PHP.

Donc « Nouveau » puis entrez l’URI du fichier, le plus simple c’est de le copier depuis l’explorateur Windows

Coller ici

Une fois ajouté, valider toute les fenetres (ok, ok,ok ), puis redemarer votre terminal, si tout c’est bien passé, vous devrez pouvoir appeler votre programme directement.

Google Font ⚠ Attention Danger

En effet, j’ai appris il n’y a pas longtemps qu’il ne fallait en France surtout pas utiliser Google Font pour vos sites.

En fait c’est tout bête, lorsque vous utilisez Google Font, vous utiliser un outils qui va devoir recuperer des informations du visiteur pour fonctionner (adresse IP, type de client HTTP, etc.). Le problème, c’est que ces données vont être recuperées avant même que vous affichiez le prompt de consentement. Donc gros, gros warning là-dessus. Voici ce que dit l’article de la loi 226-16 :

Article 226-16

Le fait, y compris par négligence, de procéder ou de faire procéder à des traitements de données à caractère personnel sans qu’aient été respectées les formalités préalables à leur mise en oeuvre prévues par la loi est puni de cinq ans d’emprisonnement et de 300 000 euros d’amende.

Est puni des mêmes peines le fait, y compris par négligence, de procéder ou de faire procéder à un traitement qui a fait l’objet de l’une des mesures prévues au 3° du III de l’article 20 de la loi n° 78-17 du 6 janvier 1978 relative à l’informatique, aux fichiers et aux libertés.

https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037825509

Pour information Google Font est déjà interdit en Allemagne depuis 1 an, et même si il n’est pas encore interdits en France, il est très compliqué de rester dans les clous de la loi RGPD sans risquer une amende. Vous risquez jusqu’a 300000€ d’amende et 5 ans de prison (enfin ça c’est se qui est écrit dans le texte).

Transferer les captures/vidéos depuis sa Nintendo Switch

Pour les besoins de solucepedia, j’ai eu besoin de récuperer les captures d’écran depuis ma Switch.

Il suffit d’aller dans les parametres de la console (pour la version actuelle du firmware 15.0) puis dans « gestion des données »

transfert de fichier vers un PC

et de brancher le cable, une fois la switch installée, elle apparait comme un lecteur et il suffit d’aller dans les albums de copier les éléments voulus.

Voilà simple, mais sachez que c’est seulement en lecture seul et que l’on ne peut les supprimer depuis le PC.