<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>PartITech — Blog</title>
    <link>https://www.partitech.com/en/blog</link>
    <description>Articles techniques publiés par PartITech.</description>
    <language>en</language>
    <item>
      <title>RAG System and Txtai Part 3: Practical Cases</title>
      <link>https://www.partitech.com/en/technical-blog-article/rag-system-txtai-practical-cases-part-3</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/rag-system-txtai-practical-cases-part-3</guid>
      <description>Explore the practical applications of creating a RAG system and initiating dialogue with the Txtai model. Enhance documentation and enable seamless IT integration through indexing and querying with Txtai. Dive into part 3 of our series for insights and practical cases.</description>
      <pubDate>Mon, 22 Jan 2024 08:49:05 +0000</pubDate>
    </item>
    <item>
      <title>RAG System and TxtAI Part 2: Databases and Vector Indexing</title>
      <link>https://www.partitech.com/en/technical-blog-article/rag-system-txtai-part-2-databases-vector-indexing</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/rag-system-txtai-part-2-databases-vector-indexing</guid>
      <description>In this article, we explore the use of databases for knowledge storage with TxtAi and discuss vector indexing technologies such as Elasticsearch, Faiss, Milvus, Pinecone, Weaviate, Annoy, HNSW, and Postgresql with pgvector.</description>
      <pubDate>Mon, 22 Jan 2024 08:45:07 +0000</pubDate>
    </item>
    <item>
      <title>RAG System and TxtAi Part 1: Transforming Language Generation with Intelligence</title>
      <link>https://www.partitech.com/en/technical-blog-article/system-rag-txtai-part-1</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/system-rag-txtai-part-1</guid>
      <description>Discover the world of "Retrieval-Augmented Generation" (RAG) - a groundbreaking fusion of information retrieval and language generation in natural language processing. Explore the key components, challenges, and opportunities of this technology, and follow a practical guide to implement a RAG system using TxtAi and Llama.cpp.</description>
      <pubDate>Fri, 08 Dec 2023 22:21:28 +0000</pubDate>
    </item>
    <item>
      <title>Llama.cpp bringing LLM to your fingertips</title>
      <link>https://www.partitech.com/en/technical-blog-article/llama-cpp-bringing-llm-to-your-fingertips</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/llama-cpp-bringing-llm-to-your-fingertips</guid>
      <description>Llama CPP is a new tool designed to execute language models, directly in C/C++. This tool is specially optimized for Apple Silicon processors through the use of ARM NEON technology and the Accelerate framework. It also offers AVX2 compatibility for systems based on x86 architectures. Operating mainly on the CPU, Llama CPP also integrates 4-bit quantization capabilities, thus enhancing its efficiency.</description>
      <pubDate>Tue, 05 Dec 2023 19:36:59 +0000</pubDate>
    </item>
    <item>
      <title>Introduction to txtai: Simplifying and Empowering LLMs for Developers</title>
      <link>https://www.partitech.com/en/technical-blog-article/introduction-to-txtai-simplifying-and-empowering-llms-for-developers</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/introduction-to-txtai-simplifying-and-empowering-llms-for-developers</guid>
      <description>In the ever-evolving universe of artificial intelligence and natural language processing, txtai emerges as a groundbreaking tool, especially for those delving into the world of large-scale language models (LLMs). Imagine a bridge between you and a range of powerful LLMs, where txtai plays the role of facilitating intermediary, simplifying and amplifying your interactions with these complex technologies.</description>
      <pubDate>Tue, 05 Dec 2023 19:10:30 +0000</pubDate>
    </item>
    <item>
      <title>Sonata Page 5: Adding Open Graph Tags with SonataPage and SonataMediaSonata</title>
      <link>https://www.partitech.com/en/technical-blog-article/sonata-page-5-adding-open-graph-tags-with-sonatapage-and-sonatamediasonata-page-5</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/sonata-page-5-adding-open-graph-tags-with-sonatapage-and-sonatamediasonata-page-5</guid>
      <description>Si vous avez déjà utilisé SonataPage et SonataMedia, vous savez à quel point ils sont puissants pour gérer le contenu et les médias de votre site. Dans cet article, je vais vous montrer comment étendre ces outils pour ajouter facilement des balises Open Graph à vos pages, afin d’améliorer leur partage sur les réseaux sociaux. Pourquoi les balises Open Graph ? Les balises Open Graph (OG) sont des méta-tags que vous pouvez ajouter à vos pages pour définir des titres, descriptions, images et autres informations qui seront utilisées lorsque la... Read More</description>
      <pubDate>Mon, 02 Oct 2023 11:18:52 +0000</pubDate>
    </item>
    <item>
      <title>Sonata Page 5: Hide blocks within shared blocks.</title>
      <link>https://www.partitech.com/en/technical-blog-article/sonata-page-5-hide-blocks-in-shared-blocks</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/sonata-page-5-hide-blocks-in-shared-blocks</guid>
      <description>Si vous utilisez le bundle SonataPage , vous avez du remarquer que les blocks qui sont proposées sont pour certain, inutiles, ou non fonctionnels. Nous allons voir comment nous pouvons cacher ces blocs de la liste de manière propre, avec un fichier de configuration, et une surcharge des templates admin de SonataPage. 1 – La configuration Nous allons devoir créer une liste des services que nous ne voulons pas afficher. Cette liste va aller naturellement dans les parameters de notre fichier services : Pour savoir le nom du service a... Read More</description>
      <pubDate>Sat, 30 Sep 2023 10:19:01 +0000</pubDate>
    </item>
    <item>
      <title>Sonata: Add an Admin Panel without an Entity with Sonata Admin 5 and Symfony 6.2</title>
      <link>https://www.partitech.com/en/technical-blog-article/sonata-add-an-admin-panel-without-an-entity-with-sonata-admin-5-and-symfony-6-2</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/sonata-add-an-admin-panel-without-an-entity-with-sonata-admin-5-and-symfony-6-2</guid>
      <description>Dans cet article, nous allons apprendre comment ajouter un panel d’administration sans entité dans un projet Symfony 6.2 en utilisant Sonata Admin 5. Notre base de projet sera de créer une interface d’upload de fichier simple. Mais vous pouvez faire n’importe quelle application. Y compris ajouter un simple texte. 1. Installation de Sonata Admin Bundle Si vous n’avez pas déjà installé Sonata Admin, vous pouvez le faire avec composer : Je vous invite à parcourir notre site pour installer Sonata Admin Bundle proprement. ici 2. Création d’une classe Admin Dans... Read More</description>
      <pubDate>Tue, 06 Jun 2023 09:20:13 +0000</pubDate>
    </item>
    <item>
      <title>How to Create a Custom Email Transport with Symfony Mailer</title>
      <link>https://www.partitech.com/en/technical-blog-article/how-to-create-a-custom-email-transport-with-symfony-mailer</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/how-to-create-a-custom-email-transport-with-symfony-mailer</guid>
      <description>Aujourd’hui, nous allons voir comment créer un transport d’e-mail personnalisé avec Symfony Mailer. Pour l’exemple, nous créerons un transport nommé « pt ». Prérequis Avant de commencer, assurez-vous d’avoir installé et configuré Symfony Mailer et HttpClient dans votre projet. Vous pouvez les ajouter à votre projet avec les commandes suivantes: Création de la classe de transport La première chose à faire est de créer une nouvelle classe qui implémente SymfonyComponentMailerTransportTransportInterface. Nous l’appellerons PtTransport. Voici un exemple de ce à quoi cela pourrait ressembler : Création de la classe de factory Ensuite, nous... Read More</description>
      <pubDate>Fri, 19 May 2023 11:48:40 +0000</pubDate>
    </item>
    <item>
      <title>PHP FFI: Creating a Bind with a Library, QuickJS – Part 5</title>
      <link>https://www.partitech.com/en/technical-blog-article/php-ffi-creating-a-bind-with-a-library-quickjs-part-5</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/php-ffi-creating-a-bind-with-a-library-quickjs-part-5</guid>
      <description>Pour clôturer ce mini dossier technique sur les foreign functions interface de PHP, je me suis mis en tête de me connecter simplement à une lib. Une sorte de Challenge qui pourrait en même temps me faire progresser sur le sujet. Il m’a fallu donc trouver une idée de projet. Un truc pas trop petit ni trop simple mais pas non plus un truc trop gros. Raté, j’ai trouvé une idée mais celle ci s’avère bien plus complexe que je ne l’imaginais. Qu’à cela ne tienne, j’ai tout de même tenté. Donc pour... Read More</description>
      <pubDate>Tue, 24 Jan 2023 16:42:19 +0000</pubDate>
    </item>
    <item>
      <title>Symfony: Forcing an entity to use a different database connection than the default configured one</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-force-an-entity-to-use-a-different-db-connection-than-the-default-configured-one</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-force-an-entity-to-use-a-different-db-connection-than-the-default-configured-one</guid>
      <description>Il n’est pas rare d’avoir plusieurs bases de données pour un même projet. Normalement, lorsque 2 bases de données sont utilisées les entités peuvent être rangées dans des répertoires spécifiques qui sont déclarés dans votre configuration. Et dans ce cas le système va utiliser la connexion configurée pour le répertoire de l’entité. Vous pouvez voir un exemple de connexion multiple ici Symfony 4 / Sonata : gérer une interface d’admin multi serveur Admettons que nous voulions juste pointer sur une base de données en lecture seule (une réplication), à chaque... Read More</description>
      <pubDate>Thu, 19 Jan 2023 14:09:45 +0000</pubDate>
    </item>
    <item>
      <title>Use composer and bin/console from your Docker image directly within PHPSTORM</title>
      <link>https://www.partitech.com/en/technical-blog-article/use-the-composer-from-your-docker-image-directly-in-phpstorm</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/use-the-composer-from-your-docker-image-directly-in-phpstorm</guid>
      <description>Ok, vous êtes comme moi. Votre machine n’a rien d’installé en local. Pas même composer et même pas PHP en CLI ! Alors que vous utilisez PHP et peut être bien Symfony (ou pas) vous avez besoin dans tous les cas d’utiliser composer quotidiennement. Vous utilisez tous les jours PhpStorm et vous vous dites que c’est dommage de ne pas bénéficier de toutes les options de votre IDE notamment tout ce qui concerne composer et la console Symfony. Alors comment configurer PhpStorm pour spécifier que le composer de votre projet... Read More</description>
      <pubDate>Thu, 19 Jan 2023 13:15:40 +0000</pubDate>
    </item>
    <item>
      <title>Sonata Custom Actions</title>
      <link>https://www.partitech.com/en/technical-blog-article/en-sonata-custom-actions</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/en-sonata-custom-actions</guid>
      <description>Pour faire suite à l’article écrit par Thomas Bourdin SYMFONY / SONATA : AJOUTER UNE FONCTION CLONE DANS UN CRUD, nous allons montrer comment, de manière très simple, nous pouvons ajouter des actions personnalisées dans une interface. Sur le Dashboard : Mais nous allons également voir comment personnaliser simplement et de manière générique les actions personnalisées du listing, de l’entête de votre CRUD et pour finir comment ajouter des actions pour un traitement par lot. Pour mon exemple je suis parti d’une table toute simple appelée Title dont voici l’entité.... Read More</description>
      <pubDate>Thu, 19 Jan 2023 13:06:51 +0000</pubDate>
    </item>
    <item>
      <title>Debug with PhpStorm and Symfony in a Docker Image</title>
      <link>https://www.partitech.com/en/technical-blog-article/debug-with-phpstorm-and-symfony-in-a-docker-image</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/debug-with-phpstorm-and-symfony-in-a-docker-image</guid>
      <description>Configuration de PHP/Docker Si vous développez sous Symfony, installé dans un docker compose et que vous n’utilisez pas encore le debugger, alors cet article est fait pour vous. Nous allons vous montrer comment préparer votre environnement pour ne plus avoir à faire de dd() ni de var_dump. Une fois que vous aurez goûté aux joies du debugger vous ne pourrez plus vous en passer tellement vous allez gagner en confort. Pour cet article vous devez avoir une app Symfony propulsée avec apache/php (ou bien nginx et fpm, peu importe) avec... Read More</description>
      <pubDate>Thu, 19 Jan 2023 12:54:45 +0000</pubDate>
    </item>
    <item>
      <title>Create a library with composer</title>
      <link>https://www.partitech.com/en/technical-blog-article/create-a-library-with-composer</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/create-a-library-with-composer</guid>
      <description>Composer c’est quoi ? A l’image de NPM pour javascript , composer est l’outil dédié à PHP vous permettant de gérer les dépendances de librairies de vos applications. Si vous utilisez un framework du type Symfony vous l’avez obligatoirement utilisé. En réalité tout développeur PHP l’utilise quotidiennement. Si vous êtes sur cette page c’est que probablement vous vous demandez comment on crée une librairie que l’on peut redistribuer facilement et partager avec la communauté. C’est ce que je vais tenter de vous montrer. Pour le bien de notre tutoriel je... Read More</description>
      <pubDate>Wed, 04 Jan 2023 14:46:12 +0000</pubDate>
    </item>
    <item>
      <title>PHPSTORM Configuration of 'Quality Tools' in a Docker Image</title>
      <link>https://www.partitech.com/en/technical-blog-article/phpstorm-configuration-of-quality-tools-in-a-docker-image</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/phpstorm-configuration-of-quality-tools-in-a-docker-image</guid>
      <description>Voici une question que je me suis posée récemment. Habituellement j’installe directement les outils de QA sur mon host ou directement dans l’image Docker. Si les outils sont installés sur mon host, pas de problèmes pour configurer PhpStorm. Si les outils sont directement configurés dans l’image Docker, pas de problèmes non plus pour l’utiliser à l’intérieur de l’image. En revanche comment peut on allier la puissance de PhpStorm et de Docker pour lier les deux ? Voici donc comment procéder pour l’installation de php_codesniffer, Mess Detector, CS Fixer, PSalm, PhpStan.... Read More</description>
      <pubDate>Thu, 15 Dec 2022 12:26:38 +0000</pubDate>
    </item>
    <item>
      <title>Configure Exim to send emails with Gmail</title>
      <link>https://www.partitech.com/en/technical-blog-article/configure-exim-to-send-emails-with-gmail</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/configure-exim-to-send-emails-with-gmail</guid>
      <description>Nous allons voir comment configurer Exim4 pour envoyer des emails système avec Gmail. Cela permettrait que vos emails envoyés avec vos CRON soient correctement routés et n’atterrissent pas dans les spams. Installons Exim4 Configuration Choisissez : mail sent by smarthost; no local mail Ensuite répondez aux questions comme suit : Ouvrez et éditez le fichier : /etc/exim4/exim4.conf.template Recherchez : Et ajoutez ces lignes juste après : Il faut supprimer tous les autres blocks smarthost contenants : Commentez les avec un # en début de ligne Recherchez les authenticators avec l’occurrence... Read More</description>
      <pubDate>Mon, 12 Dec 2022 10:24:05 +0000</pubDate>
    </item>
    <item>
      <title>Sonata DataMapper and Autowiring</title>
      <link>https://www.partitech.com/en/technical-blog-article/sonata-datamapper-and-autowiring</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/sonata-datamapper-and-autowiring</guid>
      <description>Si vous avez un besoin spécifique de transformation de données entre le formulaire et l’enregistrement de votre entité et que vous pensez que ce code de transformation devrait se trouver dans un service, car cela vous semble plus logique, vous pouvez utiliser le dataMapper en utilisant l’injection de dépendance fournit par Symfony. Mais alors comment le mettre en oeuvre ? Un petit rappel sur le DataMapper. Si on s’accorde à la documentation officielle de Symfony concernant les DataMapper et DataTransformer, un dataMapper a la responsabilité de lire et écrire un... Read More</description>
      <pubDate>Thu, 08 Dec 2022 19:35:40 +0000</pubDate>
    </item>
    <item>
      <title>SF6 / Sonata 5: Managing a OneToMany interface in a CRUD with Sonata's CollectionType</title>
      <link>https://www.partitech.com/en/technical-blog-article/sf6-sonata-5-managing-a-onetomany-interface-in-a-crud-with-sonata-collectiontype</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/sf6-sonata-5-managing-a-onetomany-interface-in-a-crud-with-sonata-collectiontype</guid>
      <description>Dans cet exemple nous allons prendre le cas concret d’une interface simple qui comprend des éléments multiples. Nous avons choisis d’utiliser une table « Projets » dans laquelle nous allons affecter des documents. Donc pour un projet, nous pouvons affecter plusieurs documents. Et pour faciliter l’administration, nous allons faire en sorte de pouvoir gérer notre interface imbriquée directement dans la vue d’édition de notre projet. Il nous faut créer le schéma. Au préalable on importe notre schéma actuel dans MysqlWorbench avec la fonction « Database/reverse engineer ». Ce qui nous permettra d’avoir les tables... Read More</description>
      <pubDate>Sun, 27 Nov 2022 07:39:34 +0000</pubDate>
    </item>
    <item>
      <title>PHP FFI: Using a Kotlin Multiplatform Library – Part 4</title>
      <link>https://www.partitech.com/en/technical-blog-article/php-ffi-part-4</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/php-ffi-part-4</guid>
      <description>Avec Stéphane Péchard https://www.linkedin.com/in/stephanepechard/, expert Android et guru KMP, on s’est demandé si développer un algorithme sous KMP et l’exécuter directement en PHP serait réalisable. Le cahier des charges était simple : le dev Android (Stéphane donc) me fournit un header file, un .so et je me débrouille. Avec le header file, le contrat, à priori on devrait arriver à quelque chose… Alors on a réussi à faire notre appel de fonction. Mais en toute franchise j’ai tout de même pas mal galéré avant d’y arriver. Voici le fichier header fourni : Mauvaise surprise, le header faisait planter PHP 🙂 En... Read More</description>
      <pubDate>Fri, 11 Nov 2022 13:21:41 +0000</pubDate>
    </item>
    <item>
      <title>PHP FFI: Callback - Part 3</title>
      <link>https://www.partitech.com/en/technical-blog-article/php-ffi-part-3</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/php-ffi-part-3</guid>
      <description>Le CallBack J’ai pu remarquer pendant la préparation de cet article que pas mal de ressources sur le net utilisent la libc directement pour faire leurs exemples. Vous trouverez facilement des exemples assez démonstratifs et simples. Mais pour faire cool et original, je me suis dit “allez moi aussi je vais trouver un truc à montrer avec cette libc”. M’enfin… si c’est juste passer une structure comme le font la plus part des exemples ça ne servira à rien. Et puis je tombe sur une fonction dans un forum ou les gens pestent en disant que... Read More</description>
      <pubDate>Fri, 11 Nov 2022 13:21:36 +0000</pubDate>
    </item>
    <item>
      <title>PHP FFI: Passing Parameters – Part 2</title>
      <link>https://www.partitech.com/en/technical-blog-article/php-ffi-part-2</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/php-ffi-part-2</guid>
      <description>Appeler directement la librairie php ? Et si on s’amusait à réaliser un bout de code qui ne sert à rien ? Allez !!! Allez !! Allez !!! Bon OK. Je vous propose comme truc inutile d’utiliser PHP pour appeler une lib en C qui utilise le Zend Engine. En réalité ce paragraphe n’est pas aussi inutile que cela. Son but est de vous montrer un comportement particulier 🙂 PHP-ffi a quelques limitations : impossible de lui passer une variable PHP directement pour récupérer sa valeur dynamiquement depuis la lib externe. Vous n’avez accès qu’au passage de type de données... Read More</description>
      <pubDate>Fri, 11 Nov 2022 13:21:32 +0000</pubDate>
    </item>
    <item>
      <title>PHP FFI: Introduction – Part 1</title>
      <link>https://www.partitech.com/en/technical-blog-article/php-ffi-part1</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/php-ffi-part1</guid>
      <description>Introduction Depuis la version 7.4 de PHP nous avons enfin accès aux fonctions d’interopérabilité entre les différents languages et PHP: le FFI ou Foreign function interface. FFI c’est quoi ? C’est tout simplement la possibilité d’utiliser une librairie externe (.dll ou .so) directement dans PHP, et ce, sans avoir à créer un module PHP. Oui oui, juste avec un script PHP ! C’est entre autre ce qui à fait la gloire de python et lui a permis d’avoir tant de fonctionnalités. Ce qui est génial avec FFI c’est qu’un développeur PHP non-expert en C/Rust/Go/Kotlin (liste non exhaustive) peut enfin lier une librairie externe... Read More</description>
      <pubDate>Fri, 11 Nov 2022 13:21:27 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 6 / Sonata 5: Installing SonataClassification.</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-5-installing-sonataclassification</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-5-installing-sonataclassification</guid>
      <description>Nous avons vu dans les article précédents comment initialiser un projet Symfony 6 + Sonata 5 avec les médias et les utilisateurs dans un admin sécurisé. Nous avons vu ensuite comment gérer les localisations de l’utilisateur.Nous allons voir maintenant comment installer et gérer les classifications. On procède à l’installation de la dernière version en date. Visiblement, nous avons une erreur de configuration. On retire la section médias de la configuration sonata_classification.yaml Nous avons ensuite une nouvelle erreur. Ce n’est pas grave, on va tout configurer pour que ça passe du... Read More</description>
      <pubDate>Mon, 14 Mar 2022 11:04:04 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 6 / Sonata 5: Link locales and timezone to user preferences.</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-5-link-locales-and-timezone-to-user-preferences</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-5-link-locales-and-timezone-to-user-preferences</guid>
      <description>Nous avons vu dans un article précédent comment installer Symfony 6 + Sonata Admin 5 avec une gestion d’utilisateurs et de médias. Nous allons poursuivre cette installation avec la configuration des langues et des fuseaux horaires. Nous allons installer intlBundle qui permet de gérer l’affichage localisé. On en profite pour ajouter un champs timezone et locale à l’utilisateur.Pour cela, nous allons étendre userBundle et ajouter un champs dans l’admin. On étend user en déplaçant l’entité user dans : src/Application/Sonata/UserBundle/Entity/User.phpEt on lui ajoute un champs timezone et un champs locale. On... Read More</description>
      <pubDate>Thu, 10 Mar 2022 18:02:52 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 6 / Sonata 5: Initialize a Symfony 6 + Sonata Admin 5 + UserBundle + MediaBundle project</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-initialize-a-symfony-6-sonata-userbundle-media-project</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-6-sonata-initialize-a-symfony-6-sonata-userbundle-media-project</guid>
      <description>Voici les commandes pour initialiser un projet Symfony avec un admin sécurisé. Pour faire tourner Symfony 6 nous devrons installer php8.0 ou php8.1 Pour php8.0 Pour php8.1 Ensuite on installe le skeleton du projet. On vérifie que tout fonctionne bien à ce stade en lançant le serveur web intégré à php. Ce qui nous donne l’url suivante dans notre navigateur : http://localhost:8000/ On installe ensuite user-bundle qui nous est nécessaire dans l’admin Sonata. Il va nous installer toutes les dépendances nécessaires, y compris Sonata/admin.On prend soin de downgrader Syfony/translation qui... Read More</description>
      <pubDate>Thu, 10 Mar 2022 12:17:21 +0000</pubDate>
    </item>
    <item>
      <title>Install Dropbox headless on a Linux server</title>
      <link>https://www.partitech.com/en/technical-blog-article/install-dropbox-headless-on-a-linux-server</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/install-dropbox-headless-on-a-linux-server</guid>
      <description>Dropbox est un service de stockage et de partage de copies de fichiers locaux en ligne proposé par Dropbox Inc. Via un agent installé sur votre ordinateur ou mobile, il est capable de synchroniser une arborescence sur le cloud et permet ainsi une sauvegarde et un versionning de celui-ci.L’usage classique de Dropbox est d’utiliser un outil sur votre Desktop. Un usage moins évident est de l’utiliser sans le programme Desktop Windows sur un serveur LINUX.Nous allons voir comment l’installer et le configurer sur un serveur LINUX DEBIAN. La première étape... Read More</description>
      <pubDate>Thu, 30 Sep 2021 14:06:33 +0000</pubDate>
    </item>
    <item>
      <title>Migration and upgrade of a GitLab-ce server</title>
      <link>https://www.partitech.com/en/technical-blog-article/migration-and-upgrade-of-a-gitlab-ce-server</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/migration-and-upgrade-of-a-gitlab-ce-server</guid>
      <description>Tous les 5 ans c’est la même musique. La version de Debian LTS arrive à expiration et il faut mettre à jour le serveur. Et du coup, on en profite pour prendre une machine récente pour bénéficier des meilleurs performances.Si on a un disque dur SATA, il vaut mieux repartir sur de nouveaux disques quoi qu’il arrive. Leurs durée de vie étant limitées. Nous allons donc procéder à une série de backups sur l’ancien serveur, les rapatrier sur le nouveau et tout réinstaller à l’identique. Dans notre cas, nous étions... Read More</description>
      <pubDate>Tue, 29 Jun 2021 12:54:50 +0000</pubDate>
    </item>
    <item>
      <title>WordPress: Disable the Gutenberg Editor in the Widgets Administration</title>
      <link>https://www.partitech.com/en/technical-blog-article/wordpress-disable-gutenberg-editor-in-widgets-administration</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/wordpress-disable-gutenberg-editor-in-widgets-administration</guid>
      <description>Il ne vous a sûrement pas échappé que Wordpress avait mis a jour son éditeur de contenu WYSIWYG.Et cela marche très bien pour les pages de contenu classiques. Il y a quelques mois, l'éditeur a été implémenté dans la gestion des widgets. Et là, patatras...</description>
      <pubDate>Sun, 04 Apr 2021 15:08:27 +0000</pubDate>
    </item>
    <item>
      <title>Replace a string in a large file with VI</title>
      <link>https://www.partitech.com/en/technical-blog-article/replace-a-string-in-a-large-file-with-vi</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/replace-a-string-in-a-large-file-with-vi</guid>
      <description>Un gros fichier, et pas d’éditeur assez puissant sous la main pour faire un rechercher/remplacer ? Rien de plus simple avec vi. Edition du fichier avec la commande vi vi fichier Puis dans l’éditeur saisir: :%s/machaine1/machaine2/ Sinon il y a une autre option avec sed : sed -i -e "s/machaines1/machaine2/g" fichier si la chaîne contient des caractères spéciaux, on devra les échapper avec ‘’ sed -i -e "s/#machaines1/#machaine2/g" fichier</description>
      <pubDate>Mon, 29 Mar 2021 15:04:26 +0000</pubDate>
    </item>
    <item>
      <title>Microsoft Teams: Join a chat room automatically from a link on Linux</title>
      <link>https://www.partitech.com/en/technical-blog-article/microsoft-teams-join-a-chat-room-automatically-from-a-link-on-linux</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/microsoft-teams-join-a-chat-room-automatically-from-a-link-on-linux</guid>
      <description>Aujourd’hui, utiliser Teams sous Linux est indispensable tant il est utilisé dans le monde de l’entreprise. Vous aurez toujours un contact, un client, un groupe de travail, qui utilisera cet outil.Et cela fonctionne très bien sous Linux. SAUF depuis la dernière mise à jour, où les liens d’accès directs aux meetings ne fonctionnent plus. Vous cliquez sur le lien, une page web s’ouvre, puis vous cliquez sur « Ouvrir votre application Teams ». Et là, l’application s’ouvre, mais pas la conf. Et comme on est pas sous Zoom, impossible d’ouvrir la conférence... Read More</description>
      <pubDate>Sun, 28 Mar 2021 10:04:28 +0000</pubDate>
    </item>
    <item>
      <title>Gmail: Free up space by automatically deleting all archives.</title>
      <link>https://www.partitech.com/en/technical-blog-article/gmail-free-up-space-by-automatically-deleting-all-archives</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/gmail-free-up-space-by-automatically-deleting-all-archives</guid>
      <description>Il faut le savoir, par défaut, Gmail ne supprime jamais les messages de votre boite. Il les archives.Du coup, il n’est pas rare d’atteindre la limite de l’espace disponible, alors même que vous venez de supprimer tous vos message. Gmail les places, non pas dans une section « Archives », mais dans « Tous les messages ». De sorte que vous vous retrouvez avec un dossier contenant tous les bon messages, et tous les messages supprimés.Et démerde-toi avec ça ! Quand on a que quelques pages, à la limite ça se gère. Mais si... Read More</description>
      <pubDate>Sat, 27 Mar 2021 09:49:13 +0000</pubDate>
    </item>
    <item>
      <title>WordPress: Add a New Widget Area to a WordPress Theme</title>
      <link>https://www.partitech.com/en/technical-blog-article/wordpress-add-a-new-widget-area-to-a-wordpress-theme</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/wordpress-add-a-new-widget-area-to-a-wordpress-theme</guid>
      <description>Si vous êtes familier avec les thèmes WordPress, vous savez que de nombreux thèmes ont une barre latérale widgetisée. Cela signifie que vous pouvez ajouter, supprimer et réorganiser des widgets sur votre site Web WordPress en utilisant la section «widget» de votre tableau de bord WordPress. Avoir une barre latérale widgetisée est très utile mais vous voudrez peut-être également widgetiser d’autres parties de votre thème WordPress. C’est très facile à faire, et une fois que votre thème est modifié, il sera simple pour vous, ou l’administrateur WordPress, de réorganiser cette... Read More</description>
      <pubDate>Sun, 21 Mar 2021 13:30:39 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a second interface with the same entity</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-second-interface-with-the-same-entity</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-second-interface-with-the-same-entity</guid>
      <description>Nous allons voir ici comment créer une deuxième interface alors que l’entité est déjà utilisée dans une interface CRUD. Le problème des interfaces générées automatiquement est qu’elles utilisent le nom de l’entité pour construire les routes.Si on configure une deuxième interface avec une entité déjà utilisée on se retrouvera avec la même route que la première. Et pour cela nous allons utiliser ces deux paramètres dans notre classe d’admin pour surcharger les valeurs par défaut.Imaginons que nous utilisons l’entité « modele » nous pourrons utiliser le terme « modele2 » (ou toto, ce que... Read More</description>
      <pubDate>Fri, 06 Nov 2020 10:29:14 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Managing a Multi-Language Admin Interface</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-managing-a-multi-language-admin-interface</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-managing-a-multi-language-admin-interface</guid>
      <description>Nous allons voir comment configurer une interface d’administration en multilingue avec un bouton de sélection de langue (language switcher). Installation de translationBundle Le language switcher nécessite un filtre twig spécifique.Sinon vous aurez une erreur de type : Unknown "language_name" filter. Il faut alors installer ces deux bundles On ajoute la configuration par défaut Et on ajoute les styles dans l’admin On surcharge l’affichage du template sonata On rajoute les routes Et on active le language switcher Et dernier point pour éviter l’erreur Argument 5 passed to TwigExtraIntlIntlExtension::formatDateTime() must be of... Read More</description>
      <pubDate>Fri, 30 Oct 2020 09:49:36 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Manage a Multi-Server Admin Interface</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-manage-a-multi-server-admin-interface</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-manage-a-multi-server-admin-interface</guid>
      <description>Nous allons voir comment gérer une interface d’admin qui se connecte à plusieurs serveurs.Dans notre exemple nous avons monté un serveur mysql par défaut qui gère notre interface d’admin. Les utilisateurs, les médias, etc.Et nous avons monté un serveur postgreSql qui contient une table que nous souhaitons administrer.Nous pouvons ajouter autant de serveurs que nous souhaitons. Notre serveur Mysql Nous avons classiquement monté une instance symfony sonata par défaut avec une connexion mysql classique. On peut donc créer notre base, le schéma, et l’utilisateur par défaut de notre interface d’admin.... Read More</description>
      <pubDate>Fri, 11 Sep 2020 09:51:10 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Use json fields</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-use-json-fields</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-use-json-fields</guid>
      <description>Nous allons voir comment exploiter les types de champs Jsonb de postgreSql dans une interface générée de sonata.</description>
      <pubDate>Thu, 10 Sep 2020 09:12:29 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a Custom Form Field Type</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-custom-form-field-type</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-custom-form-field-type</guid>
      <description>Nous allons voir comment nous pouvons créer un type de champ personnalisé. Dans notre exemple, nous voulons un champ qui a le même rendu qu’un type de champ MoneyType mais dans lequel nous pourrons ajouter n’importe quel suffixe, car le champ money n’accepte que les devises. Or dans notre projet nous voulons utiliser des kilogrammes, des mois ou encore des kilomètres. Bref, tout un tas de type de données possibles. On commence par créer notre classe Type : Ensuite on rajoute notre template Nous devons enregistrer notre template Accessoirement, on... Read More</description>
      <pubDate>Wed, 09 Sep 2020 15:05:31 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a configuration interface.</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-configuration-interface</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-configuration-interface</guid>
      <description>Un des besoins récurent d'un projet web, est d'avoir besoin de paramètres globaux pour votre application. Généralement, on stock ca dans un fichier yml et le tour est joué. Mais cela se complique lorsque le client demande à pouvoir avoir la main dessus.Lui donner les accès FTP/SSH pour les modifier ? Non, certainement pas. Surtout si c'est pour refiler cette tache au stagiaire.Il faudra lui mettre à disposition une interface d'admin avec un formulaire pour pouvoir les modifier.Dans notre cas, nous avons besoin de juste de quelques paramètres, mais cette interface permettra de gérer autant de paramètres que nous souhaitons.</description>
      <pubDate>Sun, 23 Aug 2020 10:08:31 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a REST API</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-rest-api</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-rest-api</guid>
      <description>Dans cet article nous allons voir comment créer une API rest avec FOS/rest-bundle, avec une authentification, et un générateur de documentation de type swagger. %</description>
      <pubDate>Tue, 18 Aug 2020 10:53:34 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Install the Sonata Page CMS</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-install-the-sonata-page-cms</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-install-the-sonata-page-cms</guid>
      <description>Sonata est une suite de bundle pour Symfony 4. L'un d'entre eux permet de gérer du contenu à la manière de wordpress.Vous trouverez assez peu de documentations sur le net, et pour cause, l'installation est bugué, et les rares personnes qui se sont frotté au bugtracker sur github, se sont vu répondre un RTFM bien en règle.</description>
      <pubDate>Tue, 07 Jul 2020 07:56:34 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a CSV export page</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-csv-export-page</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-csv-export-page</guid>
      <description>Les interfaces par défaut de sonata sont des CRUD. Ce qui est archi pratique (sinon on ne l'utiliserais pas). Mais une administration n'est pas uniquement composée de CRUD. Ici nous allons voir comment on peux faire une page d'export de donnée de manière simple, en supprimant les vues par défaut des interfaces, et en créant la notre pour gérer notre bouton d'export.</description>
      <pubDate>Thu, 02 Apr 2020 11:06:37 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4/ Sonata: Create a Nested Interface</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-nested-interface</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-create-a-nested-interface</guid>
      <description>Nous allons voir comment on construit une interface d'admin, composée de plusieurs tables qui ont des relations Many2Many.</description>
      <pubDate>Mon, 02 Mar 2020 09:06:30 +0000</pubDate>
    </item>
    <item>
      <title>Symfony4 / Sonata: Create a Many/Many Admin</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-sonata-create-a-many-many-admin</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-sonata-create-a-many-many-admin</guid>
      <description>Nous allons ici développer l'ensemble des manipulations pour construire une interface many to many via sonata.Nous prendrons comme exemple une gestion de zones avec une liaison par départements. Chaque zones est donc constitué d'un liaison multiple avec la table département.</description>
      <pubDate>Sun, 01 Mar 2020 12:21:37 +0000</pubDate>
    </item>
    <item>
      <title>Symfony / Sonata: Add a clone function in a CRUD</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-sonata-add-a-clone-function-in-a-crud</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-sonata-add-a-clone-function-in-a-crud</guid>
      <description>Pour ajouter une fonctionnalité de duplication d'objet sur une liste CRUD, il faut modifier la liste en ajoutant le bouton, configurer une route, et exécuter un code de duplication d'objet, et pour finir, référencer le controller qui accueillera notre fonction dans notre interface, via son service.</description>
      <pubDate>Mon, 24 Feb 2020 10:11:52 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Create a nested CRUD interface (child 1-&gt;N) with drag'n drop ordering</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-sonata-create-a-nested-crud-interface-child-1-n-with-drag-n-drop-ordering</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-sonata-create-a-nested-crud-interface-child-1-n-with-drag-n-drop-ordering</guid>
      <description>En gros on souhaites faire une interface CRUD, 1N, avec laquelle, lorsque l'on est sur l'édition d'un élément, on ajoute un panel pour gérer tous les éléments fils.</description>
      <pubDate>Fri, 21 Feb 2020 14:53:23 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Manage the Order with Drag'n Drop</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-sonata-manage-order-with-drag-n-drop</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-sonata-manage-order-with-drag-n-drop</guid>
      <description>Il faut installer pixassociates/sortable-behavior-bundle et stof/doctrine-extensions-bundle Ajouter la configuration dans pix_sortable.yamlEn ajoutant l’entité et le champs dans position_field (ici wconf, et le champs position) Dans l’entitée il faut créer un champs qui va gérer la position (au hazard on l’appel position) Dans le controller, il faut rajouter la ref dans use, ajouter la route, et le bouton Ajouter ensuite les assets javascripts dans config/sonata_admin.yaml ajouter le service gedmo, et ajouter la configuration des arguments et calls Dans la configuration des services :</description>
      <pubDate>Thu, 20 Feb 2020 16:16:04 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: form types</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-sonata-form-types</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-sonata-form-types</guid>
      <description>Voici une liste de forms types comums utilisés dans les interfaces d’admin. Date time picker Ajouter le template dans le fichier config/packages/twig.yaml Et dans le controller : Html Area Il faut installer le bundle formatter :https://sonata-project.org/bundles/formatter/3-x/doc/reference/installation.html Ajouter une configuration dans le composer.json Creer le fichier de configuration /config/sonata_formatter.yml avec le contenu suivant : Dans config/sonata_admin.yaml ajoutez les css et js Dans config/twig.yaml Lancez les commandes : Et dans votre controller : Checkbox (boolean) Il faudra configurer le champs en boolean dans l’entity Et utiliser la configuration suivante pour le formulaire... Read More</description>
      <pubDate>Wed, 19 Feb 2020 18:36:03 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata add a filter linked to a OneToMany entity</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-add-a-filter-linked-to-a-onetomany-entity</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-add-a-filter-linked-to-a-onetomany-entity</guid>
      <description>Les filtres sont géré dans la méthode configureDatagridFilters On peu rajouter un filtre simple sur un titre ou n’importe quel paramètre de notre entité.Le paramètre show_filter permet d’afficher celui-ci au chargement de la page. Combiné avec la valeur de $filters on peut spécifier de garder l’élément affiché après soumission du filtre. Par axample , on peut dire d’afficher en permanence le filtre : Ou alors dire de l’afficher uniquement si il a été utilisé Pour une liaison oneToMany, nous allons si votre entité est correctement configuré, vous pouvez configurer simplement... Read More</description>
      <pubDate>Mon, 10 Feb 2020 12:28:22 +0000</pubDate>
    </item>
    <item>
      <title>Symfony 4 / Sonata: Using a primary key with a /</title>
      <link>https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-using-a-primary-key-with-a</link>
      <guid isPermaLink="true">https://www.partitech.com/en/technical-blog-article/symfony-4-sonata-using-a-primary-key-with-a</guid>
      <description>Aussi bizarre que cela puisse paraître j’ai du utiliser une entity avec une primary key positionné sur un champ de type varchar, et certaines valeurs contenaient un « / ». Tant que l’on est pas confronté au problème, impossible de se dire que cela va poser un soucis. Et la c’est le drame. En gros, le slash est interprété par le générateur d’URL comme un séparateur de l’URL et cela fait planter le système.Du coup, il faut modifier le générateur d’URL pour qu’il transforme ce « / » en autre chose (en gros URL... Read More</description>
      <pubDate>Mon, 10 Feb 2020 11:18:25 +0000</pubDate>
    </item>
  </channel>
</rss>
