Informatique

Gitea est l'une des briques majeures de mon informatique puisque c'est le logiciel qui gère l'ensemble de mes projets de développement.

Dès la version 1.17, il sera possible d'utiliser Gitea comme registre de paquets. Ce registre est compatible avec les principaux gestionnaires de paquets du marché : composer, npm, pip, gem, conan, nuget, …

Cette nouvelle fonctionnalié est géniale car elle permet d'avoir un seul et unique outil qui fait office de registre, quelque soit le type de langage. Les paquets et le code source sont au même endroit donc on se disperse moins. Enfin, on contribue à décentraliser l'hébergement de paquets, ce qui peut radicalement réduire le coût énergétique et les ressources réseaux nécessaires pour tester/builder/installer/déployer un logiciel.
Dans mon cas d'usage, j'ai des projets avec une CI/CD qui repose sur docker et des images persos. Pendant un build, les images seront téléchargées depuis mon réseau local donc ça sera bien plus vite.

J'ai testé plusieurs types de paquets et ça fonctionne très bien ! La documentation est disponible ici.

Package sur Gitea

Bravo aux développeur⋅euses de Gitea qui font un boulot monstrueux 💚


Au moment où j'ai commencé à utiliser Wireguard, je me suis aperçu que le principal usage que j'en ferais serait le DNS.

Sur l'ensemble de mes périphériques (ordinateurs, smartphones, serveurs), j'apporte une grande attention à la protection de ma vie privée. Mon informatique n'est pas parfaite mais j'essaye de faire de mon mieux en ajustant la sécurité des services, la protection des données et le confort des outils.
À ce titre, j'utilisais Blockada sur mon smartphone. Cette application permet (principalement) de modifier les DNS utilisés sur votre smartphone. Si on choisi un DNS qui opère du filtrage, alors on peut réduire l'affichage des publicités ou bloquer l'accès à des services malveillants. Mais je devais nécessairement passer par un DNS public que je ne peux pas configurer.

Lors de la configuration d'un accès via Wireguard, on peut spécifier un DNS à attribuer au périphérique. J'ai donc mis en place un DNS redondant dans mon réseau privé, accessible aussi via mon réseau VPN Wireguard. J'ai choisi d'utiliser l'application AdGuard et j'ai ajouté quelques listes pour réaliser du filtrage. Tout mon réseau privé et mes périphériques connectés au VPN bénéficient de ces DNS privés. Que je sois chez moi ou en itinérance, mes filtres DNS sont appliqués et mon traffic mobile passe systématiquement dans mon VPN.

En complément de ce DNS, j'utilise l'extension uBlock Origin et je dois dire que la combo est vraiment efficace. C'est extrèment rare de voir de la publicité et ma navigation est selon moi plus sécurisée. Si toutefois uBlock ne bloque pas une requête, alors le DNS prend le relais et fait le reste du ménage.

Sur les 30 dernières jours, le DNS principal a réalisé 1,3 millions de résolutions et en a bloqué près de 43 milles. En moyenne, 3 à 5% des requêtes DNS sont filtrées, ce qui représente environ 500 domaines qui délivrent majoritairement de la publicité et de la télémétrie.

Adguard


Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Cet article fait partie d'une série de tutoriaux pour présenter les fonctionnalités de Murph.

Contrairement à pas mal de CMS, une page permet de rassembler des contenus qui pourront être réutilisés plusieurs fois dans une arborescence, là où certains CMS lient définitivement une page à un élément du menu.

Par ailleurs, une page ne contient que des données qui pourront être présentées comme on le veut. Autrement dit, la manière de rendre une page est indépendante de la façon de rédiger les contenus.

On va créer une nouvelle page ExamplePage avec ces contenus :

  • un titre title qui sera un champ texte
  • un bloc de contenu content avec l'éditeur TinyMCE

On va ensuite enregistrer la page dans Murph et lui donner le nom Page d'exemple.

core:
    site:
        # ...
        pages:
            App\Entity\Page\ExamplePage:
                name: "Page d'exemple"
                templates:
                    - {name: "Default", file: "page/example/default.html.twig"} 

Quand une page est créée, un template par défaut l'est aussi. Une page peut avoir autant de templates qu'on souhaite.

Éditons le template par défaut pour afficher simplement nos contenus :

{% extends 'base.html.twig' %}

{% block page %}
    <h1>{{ _page.title.value }}</h1>

    {{ _page.content.value|raw }}
{% endblock %}

On peut à présent créer un nouvel élément dans le menu, lui attribuer une nouvelle page et commencer à saisir le contenu.

La documentation complète est disponible sur doc.murph-project.org.


Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Je vais entamer une série de tutoriaux pour présenter les fonctionnalités de Murph.

Cet article va pour expliquer comment utiliser Murph et générer des interfaces de CRUD afin de créer, voir, mettre à jour et supprimer des entités.

Dans un premier temps, il faut créer une nouvelle entité Example. Si vous avez déjà réaliser cette opération, vous pouvez passer à l'étape suivante.

dev@project $ php bin/console make:entity Example

j'ai décidé d'ajouter ces attributs :

  • label de type string obligatoire
  • content de type text obligatoire

On doit maintenant éditer App\Entity\Example et implémenter l'interface App\Core\Entity\EntityInterface :

<?php

namespace App\Entity;

use App\Core\Entity\EntityInterface;
use App\Repository\ExampleRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=ExampleRepository::class)
 */
class Example implements EntityInterface
{

Puis il faut mettre à jour la base de données :

dev@project $ make doctrine-migration

Ensuite on va générer :

  • le générateur de requête App\Repository\ExampleRepositoryQuery
  • la fabrique App\Factory\ExampleFactory
  • le formulaire d'édition App\Form\ExampleType
dev@project $ php bin/console make:repository-query ExampleRepository
dev@project $ php bin/console make:factory ExampleFactory Example
dev@project $ php bin/console make:form ExampleType Example

Générons à présent le CRUD :

dev@project $ php bin/console make:crud-controller \
  ExampleAdminController \
  Example \
  ExampleRepositoryQuery \
  ExampleFactory \
  ExampleType

Enfin, ajoutons le lien dans le menu du backoffice :

{{ include('@Core/admin/module/_menu_section.html.twig', {label: 'My section'}) }}

<ul class="nav flex-column">
    {{ include('@Core/admin/module/_menu_item.html.twig', {
        id: 'example',
        label: 'Examples',
        route: path('admin_example_index'),
        icon: 'fa fa-pen'
    }) }}
</ul>

…et c'est terminé !

Vous pouvez commencer à personnaliser le CRUD en modifiant ExampleAdminController et sa methode getConfiguration. La documentation est ici.


L'énergie qui anime Tinternet & Cie est formidable et donne l'opportunité à l'équipe de faire beaucoup de projets !

Ce début d’année a été un véritable virage pour l’association. En effet, nous avons décidé de renforcer notre équipe d’intervenants et d’employer une coordinatrice et nous en sommes très fiers !

Cela a été notamment possible grâce à un projet monté conjointement avec le département. Plus de 150 interventions ont été planifiées ce premier semestre dans de nombreux collèges et lycées. Nous abordons quatre grandes thématiques avec les élèves : la cyberdépendance, le cyberharcèlement, la désinformation et l'identité numérique.

C’est un projet fort, portant sur des sujets compliqués et nous espérons accompagner à nouveau le département dès la rentrée prochaine, mais aussi créer et travailler sur de nouveaux projets et partenariats toujours plus utiles et efficaces.

En plus de cela, l'association a mis en place et continue d'animer une permanence numérique les 2ème et 4ème mercredis de chaque mois au bar Le Pixel à Besançon. C'est un moment privilégié pour échanger sur un Internet plus ouvert, éthique et respectueux de la vie privée. Un véritable laboratoire, où la pratique de l’éducation populaire est plus que jamais de mise. À ces occasions, un travail de fond est mené et permet d’ores et déjà de répondre à bon nombre de questions au sujet des outils qui, selon nous, peuvent répondre aux besoins communs des Internautes, quels qu’ils soient.

Enfin, vous le savez, le mois dernier, nous vous avions invité à suivre une conférence très particulière au sujet du Web 2.0. L'évènement était organisé à l'occasion du festival « D'Autres formes » réalisé par La Rodia. La conférence a rencontré un réel succès. Nous avons eu l'occasion de travailler avec des gens formidables et répondre à de vrai challenges techniques. La conférence mêlait des séquences vidéos enregistrées et du live sur fond vert dans le but de faire naitre une interaction insoupçonnée avec le public. Si vous avez loupé l'évènement, voici une courte vidéo avec les moments forts.

Bon visionnage !

Tinternet & Cie au festival « D'Autres Formes »