Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Comment j'ai viré Algolia et recréé le Google de 1998 sur mon site

Bon, faut qu'on parle un peu du moteur de recherche de mon site. Ceux qui l'ont déjà utilisé savent de quoi je parle : c'était pas terrible. Enfin, « pas terrible » j'suis gentil. C'est un espèce d'overlay avec des résultats certes fiables mais c'était vraiment pas pratique.

Et en plus de ça, comme j'ai un site statique généré avec Hugo, je passais par Algolia pour la recherche. Si vous ne connaissez pas, Algolia c'est un service cloud qui indexe votre contenu et vous fournit une API de recherche ultra-rapide. Sur le papier c'est génial et dans la pratique aussi d'ailleurs sauf que voilà, ça coûte des sous. Et mon site rencontre un franc succès ces derniers temps (merci à vous !), donc j'ai de plus en plus de visiteurs, donc de plus en plus de recherches, donc une facture Algolia qui grimpe gentiment chaque mois.

Du coup je me suis dit : « Et si je trouvais une solution de recherche pour sites statiques ? » Parce que oui, ça existe et c'est comme ça que j'ai découvert Pagefind.

Pagefind c'est donc un moteur de recherche statique open source développé par CloudCannon qui fonctionne comme ceci : Au moment du build de votre site, Pagefind parcourt tout votre HTML généré et crée un index de recherche qu'on peut interroger avec un peu de JS. Y'a donc plus d'API, et tout se fait localement sur le navigateur des internautes.

Bref, ça avait l'air très cool alors évidemment, je me suis lancé dans l'aventure et comme j'aime bien me compliquer la vie, j'ai décidé de pas juste intégrer Pagefind tel quel. Non non. J'ai voulu recréer l'interface du Google de 1998 parce que à quoi bon avoir son propre site web si on peut pas s'amuser un peu ^^.

Laissez-moi donc vous raconter cette aventure.

Le problème avec Algolia

Leur service est excellent, je dis pas le contraire, la recherche est rapide, les résultats sont pertinents, l'API est bien foutue mais voilà, y'a le modèle de pricing puisque Algolia facture au nombre de requêtes de recherche.

Plus les gens cherchent sur votre site, plus vous payez et quand vous avez un site qui fait plusieurs millions de pages vues par mois, bah... ça chiffre vite. En gros je dépasse très vite les 10 000 recherches offertes chaque semaine et ensuite ça chiffre. C'est pas la mort, mais c'est un coût récurrent débile pour un truc qui pourrait être gratuit.

En plus de ça, y'a la dépendance à un service externe. Si Algolia tombe, ma recherche tombe. Et si Algolia change ses prix, je vais devoir subir. Même chose si Algolia décide de modifier son API... il faudra que j'adapte mon code. Bref, c'est le cloud dans toute sa splendeur... C'est pratique mais on n'est jamais vraiment chez nous.

Pagefind à la rescousse

Pagefind résout donc tous ces problèmes d'un coup. C'est un outil en ligne de commande qui s'exécute après votre générateur de site statique (Hugo dans mon cas, mais ça marche avec Jekyll, Eleventy, Astro, ou n'importe quoi d'autre).

Concrètement, vous lancez :

npx pagefind --site public

Et Pagefind va :

    1. Scanner tous vos fichiers HTML dans le dossier public/
    1. Extraire le contenu textuel (en ignorant la nav, le footer, les pubs si vous lui dites)
    1. Créer un index de recherche optimisé
    1. Générer des fichiers JavaScript pour interroger cet index côté client

Et le résultat c'est un dossier pagefind/ qui contient tout ce qu'il faut. Ensuite; à vous de servir ces fichiers statiquement avec le reste de votre site, et la magie pourra opérer !

L'index pour mes 18 000 articles fait environ 1,5 Go. Ça peut paraître beaucoup, mais Pagefind est malin car il découpe l'index en fragments et ne charge que ce qui est nécessaire pour la recherche en cours. Du coup en pratique, une recherche typique télécharge quelques centaines de Ko, et pas plus.

L'intégration technique

Pour intégrer Pagefind dans mon workflow Hugo, j'ai donc été cherché le binaire, je l'ai mis sur mon serveur et je l'ai appelé dans un cron comme ça, je rafraichi l'index de recherche 1 fois par jour (et pas à chaque génération du site).

0 4 * * * /home/manu/pagefind/pagefind --site /home/manu/public_html --output-path /home/manu/public_html/pagefind >> /var/log/pagefind.log 2>&1

J'ai aussi créé un fichier de configuration pagefind.yml pour affiner le comportement :

root_selector: "[data-pagefind-body]"
exclude_selectors:
 - "header"
 - ".site-header"
 - "footer"
 - ".sidebar"

L'astuce ici c'est d'indexer uniquement les div ayant la class data-pagefind-body='true' et d'exclure les éléments qui ne font pas partie du contenu éditorial afin de ne pas indexer ce qui se trouve dans le header, les natives, le footer...etc.

Côté JavaScript, Pagefind utilise les imports ES6 dynamiques. Ça veut dire que le moteur de recherche n'est chargé que quand l'utilisateur lance effectivement une recherche :

async function initPagefind() {
pagefind = await import('/pagefind/pagefind.js');
await pagefind.init();
}

Et pour faire une recherche :

const search = await pagefind.search("linux");
// search.results contient les IDs des résultats
// On charge le contenu de chaque résultat à la demande
for (const result of search.results) {
 const data = await result.data();
 console.log(data.url, data.meta.title, data.excerpt);
}

C'est bien fichu parce que search.results retourne immédiatement les références des résultats, mais le contenu réel (titre, extrait, URL) n'est chargé que quand vous appelez result.data(). Du coup vous pouvez implémenter une pagination propre sans télécharger les données de milliers de résultats d'un coup.

Le délire rétro - Recréer Google 1998

Maintenant que j'avais un moteur de recherche fonctionnel, fallait l'habiller. Et c'est là que j'ai eu cette idée un peu débile : Pourquoi pas recréer l'interface du Google de 1998 ?

Pour les plus jeunes qui lisent ça, Google en 1998 c'était une page blanche avec un logo, un champ de recherche, et deux boutons : « Google Search » et « I'm Feeling Lucky« . Pas de suggestions, pas de carrousels, pas de pubs... Juste un champs de recherche. C'était la belle époque !

J'ai donc créé une page de recherche avec deux vues distinctes. La page d'accueil avec le logo centré et le champ de recherche au milieu, exactement comme le Google originel.

Et la page de résultats avec le logo en petit en haut à gauche et les résultats en dessous.

Pour le code CSS, j'ai voulu être fidèle à l'époque. Times New Roman comme police par défaut, les liens en bleu souligné qui deviennent violet une fois visités. Et surtout, les boutons avec l'effet 3D des interfaces Windows 95 :

.search-button:active { border-style: inset; }

Ce border: outset et border-style: inset au clic, c'est exactement ce qui donnait cet effet de bouton en relief qu'on avait partout dans les années 90. Pour moi, ça fait toute la différence pour l'authenticité. Même le logo, je l'ai volontairement « dégradé » pour qu'il soit de la même qualité que le logo Google d'origine.

La pagination « Koooooorben »

Vous vous souvenez de la pagination de Google avec « Goooooogle » en bas de page ? Le nombre de « o » correspondait au nombre de pages de résultats. J'ai fait pareil, mais avec « Koooooorben ».

let logo = 'K'; for (let i = 0; i < oCount; i++)
{
logo += o;
} logo += 'rben'; }

Plus il y a de résultats, plus il y a de « o ». C'est complètement inutile mais ça me fait marrer à chaque fois que je le vois.

Le bouton « J'ai de la chance »

Ah, le fameux « I'm Feeling Lucky » de Google, j'ai voulu l'implémenter comme à l'époque ! Si vous tapez une recherche et cliquez sur « J'ai de la chance », vous êtes envoyé sur le premier résultat. Classique. Mais si vous cliquez sur le bouton avec le champ vide sur la home de la recherche, vous êtes envoyé sur un article aléatoire parmi les +18 000 du site.

Pour ça, j'ai utilisé une astuce : le sitemap. Mon Hugo génère un fichier sitemap.xml qui contient toutes les URLs du site et je peux aller piocher dedans en JS :

const articles = [...xml.querySelectorAll('loc')] .map(loc => loc.textContent) .filter(url => {
// Exclure les pages qui ne sont pas des articles
const path = new URL(url).pathname;
return !path.startsWith('/categories/') && !path.startsWith('/page/') && path !== '/';
});
const randomUrl = articles[Math.floor(Math.random() * articles.length)];
window.location.href = randomUrl;
} }

Un seul fetch, un peu de parsing XML natif, et hop c'est le grand retour de la fonctionnalité « article aléatoire » qui vous manquait, je le sais !

Tri et nombre de résultats

Je vous ai aussi mis une listbox qui vous permet d'afficher 10, 25 ou 50 résultats ainsi qu'un tri par pertinence ou data. Et ça aussi Pagefind sait parfaitement le navigateur.

Mode sombre et accessibilité

Même si l'interface est rétro, j'ai quand même ajouté quelques fonctionnalités modernes. Le mode sombre respecte les préférences système, et j'ai intégré la police OpenDyslexic pour les personnes dyslexiques.

Le truc important c'est de charger ces préférences avant le rendu de la page pour éviter le fameux flash. J'ai donc un petit script qui lit les préférences dans le localStorage et applique les classes CSS immédiatement :

function() {
 if (localStorage.getItem('theme') === 'dark') {
 document.documentElement.classList.add('dark-mode');
 }
 if (localStorage.getItem('dyslexic-font') === 'true') {
 document.documentElement.classList.add('dyslexic-mode');
 }
});

Gestion de l'historique navigateur

Un détail qui peut sembler anodin mais qui est super important pour l'expérience utilisateur c'est la gestion du bouton retour du navigateur.

Quand vous faites une recherche, l'URL change selon votre requête du genre /recherche/?q=linux&p=2. Du coup si vous partagez cette URL à un collègue, la personne arrivera directement sur les résultats de recherche. Et si vous utilisez le bouton retour, vous reviendrez alors à la recherche précédente.

window.addEventListener('popstate', () => {
const query = new URLSearchParams(location.search).get('q');
if (query) doSearch(query);
else showHomePage();
});

Liens vers d'autres moteurs

Et si vous ne trouvez pas votre bonheur dans mes +18 000 articles (ce qui serait quand même étonnant ^^), j'ai ajouté des liens pour relancer la même recherche sur Google, DuckDuckGo, Qwant, Brave et Ecosia. Bref, un petit service bonus pour mes visiteurs, exactement comme le proposait Google à l'époque.

Le bilan - Algolia vs Pagefind

Après 1 semaine d'utilisation, voici donc mon verdict ! Côté portefeuille d'abord, Algolia me coûtait entre 60 et +100 euros par mois et maintenant pour Pagefind, c'est zéro euros ! Et les performances sont également au rendez-vous. Algolia c'était rapide et bien là, ça l'est encore plus. Seul compromis à noter, l'index Algolia se mettait à jour en temps réel, alors que Pagefind nécessite une reconstruction au moment du build.

La conclusion

Voilà, j'ai maintenant une recherche qui marche vraiment bien, qui me coûte 0€ par mois, et qui a un look rétro qui va en surprendre plus d'un...

Alors est-ce que c'était nécessaire de passer autant de temps sur le design rétro ? Hé bien absolument pas. Mais est-ce que ça valait le coup ?

Franchement, oui !! C'est mon site, je fais ce que je veux, et si ça peut faire sourire quelques visiteurs nostalgiques des débuts du web, c'est du bonus. D'ailleurs un grand merci aux Patreons qui me soutiennent car sans eux, je n'aurais pas pu passer mon dimanche là dessus ^^

Et puis surtout, ça m'a permis de découvrir Pagefind qui est vraiment un excellent outil. Donc si vous avez un site statique (ou n'importe quel type de contenu textuel) et que vous cherchez une solution de recherche gratuite et performante, je vous le recommande chaudement. La documentation est claire, l'intégration est simple, et le résultat est top !

Allez, maintenant vous pouvez aller tester la nouvelle recherche sur le site . Et si vous cliquez sur « J'ai de la chance » sans rien taper... bonne découverte !

Quand je pense que Win32 est devenu la couche de compatibilité la plus stable sur Linux...

Vous avez déjà essayé de faire tourner un vieux logiciel Linux sur une distrib récente, du genre un truc compilé il y a 5 ans ? Bah bon courage, parce que y'a de grandes chances que ça plante lamentablement à cause d'une dépendance qui aura changé entre-temps.

Maintenant, prenez un .exe Windows de 1998, genre un vieux jeu ou une appli Win32 classique. Lancez-le sous Wine et là, ô surprise... y'a de bonnes chances que ça tourne ! Bon, ça dépend des applis évidemment, mais le taux de réussite est souvent meilleur qu'avec les vieux binaires Linux...

C'est précisément ce paradoxe que pointe le projet loss32 , une distro Linux expérimentale dont l'idée complètement dingue serait de faire tourner TOUT l'environnement de bureau en Win32 via Wine. Leur slogan c'est "Win32 is the stable Linux ABI!" ce qui veut dire en gros que l'interface binaire la plus fiable pour faire tourner des applications sur Linux à long terme, c'est celle de Windows. Ahaha, je suis mort de rire en écrivant ça car j'imagine votre tête énervée de barbu ! Pourtant, vous allez voir, c'est difficile de leur donner tort...

Alors c'est quoi le problème avec Linux exactement ?

Hé bien en août 2022, un changement dans la toolchain a fait des dégâts. Beaucoup de distributions ont basculé vers l'option --hash-style=gnu au lieu de --hash-style=both, ce qui génère des binaires sans la section DT_HASH classique. L'idée c'était de gagner quelques kilobytes par binaire avec DT_GNU_HASH, qui est plus moderne et plus performant.

Ça n'a l'air de rien comme ça... sauf que ça a cassé pas mal de trucs. Des jeux utilisant Easy Anti-Cheat d'Epic se sont retrouvés en vrac, par exemple Shovel Knight a eu des soucis, ou encore le limiteur de framerate libstrangle . Bref, des logiciels qui marchaient très bien la veille se sont retrouvés dans les choux du jour au lendemain.

Et c'est là qu'on touche au cœur du problème car sous Windows, Microsoft maintient une compatibilité binaire quasi-religieuse pour les applis Win32 classiques. Un programme compilé pour Windows 95, s'il n'utilise pas de drivers ou d'APIs obsolètes, a de bonnes chances de tourner sur Windows 11. C'est un contrat tacite entre Microsoft et les développeurs qui a tenu pendant trois décennies.

Et même si sous Linux, le kernel et glibc sont plutôt stables, c'est vrai, dès qu'on parle de binaires tiers liés à des bibliothèques user, c'est une autre histoire. Et comme c'est le bordel et que chaque distribution fait un peu ce qu'elle veut, et les dépendances évoluen forcement. Du coup, si votre binaire précompilé casse, c'est votre problème. La philosophie c'est donc plutôt "recompile ton truc et arrête de te chialer 'spèce de fragile".

Et c'est pour ça que Valve a misé gros sur Proton. Officiellement, ils n'ont pas de préférence entre ports natifs et Windows via Proton, mais dans les faits, Proton fonctionne tellement bien que pas mal de studios ne se cassent plus la tête à faire des ports Linux natifs. Et parfois, les jeux Windows via Proton tournent même mieux que les ports natifs ... c'est dire.

Et le projet loss32 pousse cette logique jusqu'au bout car pourquoi se battre contre les moulins à vent de la fragmentation Linux quand on peut simplement tout faire tourner en Win32 ?

Alors perso, j'ai hâte de voir ça et visiblement un PoC devrait sortir en janvier 2026 avec un paquet APT pour qu'on puisse tous tester ça chez nous. Et si ça fonctionne bien, ça veut dire que si vous créez une application desktop simple et que vous voulez qu'elle tourne sur Linux encore dans 10 ans, cibler Win32 et distribuer un .exe via Wine/Proton est une option à considérer sérieusement.

Ça semble contre-intuitif, mais pour certains cas d'usage, c'est une stratégie pragmatique...

Pour les utilisateurs, ça veut dire aussi que Wine et Proton ne sont pas des rustines en attendant mieux mais des des solutions de première classe pour faire tourner des logiciels de manière stable sur Linux. Le Steam Deck l'a prouvé avec des milliers de jeux Windows qui tournent nickel.

Bref, on en est là... Win32, l'API de Microsoft, est devenue paradoxalement une des couches de compatibilité les plus stables pour faire tourner des logiciels sur Linux. C'est fou non ? Ça va faire grincer des dents de barbus c'est sûr mais c'est aussi la preuve que parfois, les solutions terre à terre l'emportent sur l'idéologie.

Source

Stranger Things : vous avez peur que Steve meure dans le final de la saison 5 ? Les créateurs répondent

Alors que l'ultime épisode de Stranger Things sera dévoilé le 1er janvier 2026, sur Netflix, les fans s'inquiètent évidemment pour le sort de leurs personnages préférés. Parmi eux, un nom revient très souvent : celui de Steve. Le beau gosse d'Hawkins va-t-il survivre à cette toute dernière aventure ? Les créateurs de la série ont donné leur réponse.

Gérer les permissions NTFS avec PowerShell sur Windows 11/10

Sous Windows 11/10, les fichiers et dossiers stockés sur un disque NTFS possèdent des autorisations (ACL) qui définissent précisément quels utilisateurs peuvent lire, modifier ou supprimer leur contenu.
Si ces permissions peuvent être configurées via l’interface graphique, PowerShell permet d’aller beaucoup plus loin :
afficher, modifier et automatiser la gestion des droits d’accès à grande échelle.

Grâce aux cmdlets Get-Acl et Set-Acl, vous pouvez :

  • afficher les permissions d’un dossier ou d’un fichier,
  • ajouter ou retirer des autorisations,
  • appliquer les mêmes règles à plusieurs répertoires,
  • et même changer le propriétaire d’un dossier bloqué.

Cette approche est particulièrement utile pour les administrateurs ou utilisateurs avancés souhaitant :

  • automatiser la gestion des droits sur un serveur ou un poste multi-utilisateurs,
  • corriger des problèmes d’accès (“Accès refusé”) sans interface graphique,
  • ou déployer des permissions identiques sur plusieurs répertoires partagés.
👉 Pour comprendre en détail la différence entre les autorisations NTFS et les permissions de partage, consultez le guide complet : Autorisations et permissions NTFS : gérer les droits d’accès et le partage de dossiers sous Windows 11/10

Gérer les permissions avec PowerShell

Lister les permissions NTFS (Get-Acl)

Pour afficher la liste complète des autorisations appliquées à un dossier ou fichier :

Get-Acl "C:\Dossier"

Cette commande affiche les ACL (Access Control List) associées à l’élément.
Pour un affichage plus lisible :

Get-Acl "C:\Dossier" | Format-List

Exemple de sortie :

Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\maill
Owner : NT-AUTORITÄT\SYSTEM
Group : NT-AUTORITÄT\SYSTEM
Access : NT-AUTORITÄT\SYSTEM Allow FullControl
VORDEFINIERT\Administratoren Allow FullControl
hp-MAC\maill Allow FullControl
S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575 Allow
ExecuteFile, Synchronize
Audit :
Sddl : O:SYG:SYD:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;S-1-5-21-2373467495-3460344319-1749951908-1001)(A;;0x1
00020;;;S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575)

Ajouter une autorisation (AddAccessRule)

Pour accorder une permission spécifique à un utilisateur ou groupe, utilisez Set-Acl avec une nouvelle règle d’accès.

Exemple : donner le Contrôle total à l’utilisateur Paul sur le dossier C:\Partage

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Partage" $acl

Explications :

  • Get-Acl → récupère les permissions existantes.
  • New-Object …FileSystemAccessRule → crée une nouvelle règle d’accès.
  • AddAccessRule → ajoute la règle à la liste.
  • Set-Acl → applique la nouvelle configuration.

Vous pouvez remplacer "FullControl" par : "Read", "Write", "Modify", "ReadAndExecute" selon les besoins.

Supprimer une autorisation (RemoveAccessRule)

Pour supprimer une règle d’accès existante :

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.RemoveAccessRule($rule)
Set-Acl "C:\Partage" $acl

La suppression nécessite d’utiliser exactement les mêmes paramètres que la règle initiale (même utilisateur, droit et type “Allow” ou “Deny”).

Modifier les permissions d’un dossier et de ses sous-dossiers (Set-Acl)

Pour appliquer les nouvelles autorisations à tous les sous-dossiers et fichiers :

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Get-ChildItem "C:\Partage" -Recurse | Set-Acl -AclObject $acl

Explications :

  • Get-ChildItem -Recurse → parcourt récursivement toute l’arborescence.
  • ContainerInherit,ObjectInherit → applique la règle aux sous-dossiers et fichiers.
Cette commande réécrit les ACL de tous les sous-dossiers.
Utilisez-la avec prudence sur un volume contenant beaucoup de fichiers.

Supprimer toutes les autorisations personnalisées (réinitialiser les ACL)

Pour revenir à la configuration par défaut (héritée du dossier parent) :

icacls "C:\Partage" /reset /T

Cette commande supprime toutes les règles explicites et rétablit les permissions héritées.
Elle est utile pour corriger des erreurs “Accès refusé” ou des droits corrompus.

Changer le propriétaire d’un dossier (SetOwner)

Pour appliquer le changement de propriétaire à tout un dossier et ses sous-dossiers :

$path = "C:\Dossier"
$owner = [System.Security.Principal.NTAccount]"Administrateurs"
Get-ChildItem -Path $path -Recurse -Force | ForEach-Object {
    $acl = Get-Acl $_.FullName
    $acl.SetOwner($owner)
    Set-Acl $_.FullName $acl
}

Cette commande parcourt récursivement tous les fichiers et sous-dossiers.
Elle peut être longue sur un volume contenant de nombreux éléments.

👉Pour le guide complet sur le changement de propriétaire via l’interface graphique ou la ligne de commande :
Changer le propriétaire d’un dossier sous Windows 11/10

Vérifier le propriétaire actuel

Pour afficher le propriétaire d’un dossier ou fichier :

(Get-Acl "C:\Dossier").Owner

→ Renvoie le nom du compte ou groupe actuellement propriétaire du dossier.

Exemple de script complet : accorder des droits en masse

$users = @("Paul", "Jean", "ServiceRH")
$path = "C:\Dossiers\RH"

foreach ($user in $users) {
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-Acl $path $acl
}

Ce script attribue automatiquement les permissions “Modifier” à plusieurs utilisateurs pour un même dossier.

PowerShell permet d’automatiser facilement des opérations complexes, comme appliquer des autorisations à plusieurs répertoires ou générer un rapport d’audit des droits.

Tableau récapitulatif des cmdlets PowerShell pour gérer les permissions NTFS

Cmdlet / CommandeFonction principaleSyntaxe de baseExemple d’utilisation
Get-AclAffiche la liste des autorisations (ACL) appliquées à un fichier ou dossier.Get-Acl "C:\Dossier"Affiche les permissions et le propriétaire du dossier.
Set-AclApplique ou met à jour des autorisations sur un fichier ou dossier.Set-Acl "C:\Dossier" $aclMet à jour les ACL selon les règles définies dans $acl.
New-Object System.Security.AccessControl.FileSystemAccessRuleCrée une nouvelle règle d’autorisation NTFS (utilisateur, droit, type).$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","Allow")Crée une règle donnant à Paul le droit de modifier le dossier.
AddAccessRule()Ajoute une nouvelle autorisation à une ACL existante.$acl.AddAccessRule($rule)Ajoute la règle $rule aux ACL existantes du dossier.
RemoveAccessRule()Supprime une autorisation spécifique.$acl.RemoveAccessRule($rule)Supprime la règle $rule précédemment définie.
SetOwner()Définit un nouveau propriétaire sur un dossier ou fichier.$acl.SetOwner([System.Security.Principal.NTAccount]"Administrateurs")Change le propriétaire pour le groupe Administrateurs.
Get-ChildItem -Recurse + Set-AclApplique des permissions à tous les sous-dossiers et fichiers.`Get-ChildItem « C:\Dossier » -RecurseSet-Acl -AclObject $acl`
**Get-AclFormat-List**Affiche les ACL dans un format lisible.`Get-Acl « C:\Dossier »
icacls (CMD) (complément)Réinitialise ou sauvegarde les ACL en ligne de commande.icacls "C:\Dossier" /reset /TRéinitialise toutes les permissions NTFS du dossier.
takeown (CMD) (complément)Reprend la propriété d’un dossier ou fichier.takeown /f "C:\Dossier" /r /d yAttribue la propriété au compte administrateur courant.

Notes importantes

  • Les cmdlets PowerShell (Get-Acl, Set-Acl, etc.) sont plus flexibles et scriptables que les commandes classiques (icacls, takeown).
  • Pour toute commande modifiant les ACL, il est recommandé d’exécuter PowerShell en tant qu’administrateur.
  • Avant de modifier massivement des droits, vous pouvez sauvegarder les ACL avec : icacls "C:\Dossier" /save C:\backup_acl.txt /T
PowerShell ne demande pas de confirmation avant d’appliquer une modification via Set-Acl.
Une erreur dans la variable $acl ou dans les permissions héritées peut supprimer des droits critiques.

Bonnes pratiques et précautions

  • Ne jamais appliquer un script sans sauvegarder les ACL : icacls "C:\Dossier" /save C:\Backup_ACL.txt /T
  • Utiliser la commande Test-Path pour vérifier les chemins avant exécution.
  • Toujours tester sur un dossier isolé avant d’appliquer sur un volume complet.
  • Exécuter PowerShell en mode Administrateur.
Une mauvaise manipulation des ACL peut rendre un dossier ou un disque inaccessible.
Pensez à sauvegarder vos permissions avant toute modification en masse.

Ressources utiles et articles liés

L’article Gérer les permissions NTFS avec PowerShell sur Windows 11/10 est apparu en premier sur malekal.com.

Un ex-dirigeant de TSMC passe chez la concurrence et dévoile de nombreuses informations secrètes

Les autorités taïwanaises ont saisi des documents confidentiels liés aux technologies avancées de TSMC au domicile d'un ancien dirigeant ayant rejoint Intel, déclenchant une enquête pour violation potentielle de la loi sur la sécurité nationale et vol de secrets commerciaux.

L’article Un ex-dirigeant de TSMC passe chez la concurrence et dévoile de nombreuses informations secrètes est apparu en premier sur Tom’s Hardware.

full

thumbnail

Asus dévoile des cartes mères avec une chambre à vapeur pour rafraîchir vos SSD

Asus dévoilera au CES 2026 sa nouvelle gamme de cartes mères AM5 "Neo", caractérisée par un refroidissement innovant par chambre à vapeur pour les SSD et un système de gestion des câbles via broches pogo.

L’article Asus dévoile des cartes mères avec une chambre à vapeur pour rafraîchir vos SSD est apparu en premier sur Tom’s Hardware.

full

thumbnail

3 sites pour jouer aux jeux rétro directement dans votre navigateur

Qu'est-ce que j'ai pu passer de temps sur les émulateurs ces dernières années... Entre les ROMs à chercher, les émulateurs à configurer, les manettes à mapper... Y'a des jours où j'avais juste envie de lancer un petit Sonic ou un Street Fighter sans me prendre la tête. Hé bien bonne nouvelle, y'a des sites qui font exactement ça, et j0j0b4rj0 vient de m'en partager trois qui valent le détour.

Le principe est simple, vous ouvrez votre navigateur, vous choisissez un jeu, et hop c'est parti. Pas de téléchargement, pas d'installation, juste du rétro gaming !

Le premier c'est RetroGames.cc . C'est probablement le plus fourni des trois avec un catalogue qui couvre à peu près toutes les consoles de l'âge d'or : NES, SNES, Game Boy, N64, Mega Drive, PlayStation 1, et même des trucs plus exotiques comme la PC Engine ou la Neo Geo Pocket. L'interface est pas super moderne mais elle fait le taf, avec une recherche et un tri par console. Par contre y'a des pubs, faudra pas s'étonner.

Ensuite y'a ClassicGameZone . Celui-là il est dispo en français et il a un truc en plus : un système de sauvegarde. Si vous créez un compte, vous pouvez sauvegarder vos parties et les reprendre plus tard. Le catalogue dépasse les 2100 jeux répartis sur 23 plateformes, et y'a même du multijoueur sur certains titres. L'interface est plus propre que RetroGames et y'a un système de favoris pour retrouver vos jeux rapidement.

Et le troisième c'est Retro-Games.org . Lui aussi est dispo en français et propose une couverture impressionnante des consoles. L'interface est sobre avec un mode sombre, et y'a une FAQ sympa qui raconte l'histoire du jeu vidéo pour les curieux. Comme les autres, c'est gratuit avec de la pub pour financer le service.

Les trois sites utilisent des émulateurs JavaScript qui tournent directement dans le navigateur, donc ça marche sur à peu près tout : PC, Mac, tablette... Faut juste un navigateur pas trop vieux et une connexion correcte pour charger les jeux.

Bon évidemment, côté légalité c'est un peu la zone grise habituelle des ROMs sur le web. Les jeux sont protégés par le droit d'auteur, mais les sites se retranchent derrière le fair use ou le fait que certains éditeurs n'existent plus. À vous de voir où vous placez le curseur.

En tout cas, si un soir vous avez une envie soudaine de relancer Tetris, Zelda ou Final Fantasy sans vous prendre la tête avec un émulateur, ces trois sites font le job.

Merci à j0j0b4rj0 et Lorenper pour le partage !

Article publié initialement le 7 octobre 2020 et mis à jour le 30 décembre 2025.

U.S. Treasury Lifts Sanctions on Three Individuals Linked to Intellexa and Predator Spyware

The U.S. Department of the Treasury's Office of Foreign Assets Control (OFAC) on Tuesday removed three individuals linked to the Intellexa Consortium, the holding company behind a commercial spyware known as Predator, from the specially designated nationals list. The names of the individuals are as follows - Merom Harpaz Andrea Nicola Constantino Hermes Gambazzi Sara Aleksandra Fayssal Hamou

Beelink ME Pro : MiniPC et NAS modulaire

BL ME Pro - Beelink ME Pro : MiniPC et NAS modulaire

Beelink est bien connu de l’univers des mini-PC. Récemment, le constructeur s’est également positionné sur le marché des NAS avec le ME Mini, un boîtier compact avec 6 emplacements NVMe. Aujourd’hui, il revient avec un produit pour le moins atypique : le Beelink ME Pro. À première vue, il s’agit d’un NAS au format relativement classique, doté de 2 baies… avec une carte mère amovible et interchangeable.

BL ME Pro - Beelink ME Pro : MiniPC et NAS modulaire

Beelink ME Pro

Le principal argument mis en avant par Beelink (voir vidéo ci-dessous) est clairement la modularité. Contrairement aux NAS traditionnels, dont la carte mère est unique et fixée dans le boîtier, le ME Pro adopte une approche différente. Il intègre un tiroir dans lequel vient se loger un module complet comprenant la carte mère, le processeur, la mémoire vive ainsi que les emplacements pour SSD M.2 (en nombre variable selon la configuration).

Beelink prévoit 3 architectures distinctes pour ces modules : Intel, AMD et ARM.

 

Pour le moment, peu d’informations techniques ont été communiquées. Le ME Pro se présente comme un NAS à 2 baies, compatibles disques durs et SSD. Ses mensurations seraient : 166 x 121 x 112 mm (L x P x H). Oui, vous avez bien lu 112 mm de haut. Concernant le module Intel, Beelink annonce la présence d’un processeur Quad Core Intel N150 cadencé jusqu’à 3,6 GHz (ou un N95 cadencé à 3,4 GHz au choix). La quantité de mémoire vive devrait varier selon le modèle choisi, idem pour le nombre d’emplacements pour SSD NVMe.

Par défaut, un SSD serait fourni : 128 Go, 512 Go ou 1 To suivant la configuration choisit.

Connectique

La connectique réseau est plutôt intéressante. Le ME Pro dispose de 2 ports RJ45, l’un en 5 Gb/s (Realtek RTL8126) et l’autre en 2,5 Gb/s (Intel i226-v), ce qui plutôt pas mal pour ce type de produit.

Beelink ME Pro arriere - Beelink ME Pro : MiniPC et NAS modulaire

On retrouve également :

  • 3 ports USB 3.2 Gen 2 (10 Gb/s), dont un port USB-C ;
  • 1 port USB 2.0 ;
  • 1 sortie audio-video HDMI Ultra HD/4K ;
  • 1 sortie audio jack 3,5mm.

Un des ports USB (2 ou 3.2) serait présent en façade… D’après les premières images, le reste de la connectique serait positionné à l’arrière du boîtier.

Beelink ME Pro - Beelink ME Pro : MiniPC et NAS modulaire

Autre information importante, le Wi-Fi 6 et le Bluetooth 5.4 seraient de la partie également.

OS

Pour le moment, Beelink n’a rien précisé concernant le système d’exploitation. Le ME Pro semble se situer à mi-chemin entre un NAS clé en main et une solution DIY. On ne sait pas si un OS sera préinstallé (Windows 11 Home).

L’utilisateur pourra aussi faire le choix parmi les solutions habituelles : OpernMediaVault, Unraid, TrueNAS, ZimaOS, etc. À noter qu’OMV ne prend plus en charge les processeurs ARM. TrueNAS, en revanche, est compatible à la fois avec les architectures ARM et x86 (Intel et AMD).

En synthèse

Sur le papier, le concept est séduisant. Beelink propose un NAS 2 baies relativement standard, mais laisse à l’utilisateur le choix de l’architecture matérielle via des modules interchangeables, en fonction de ses besoins et de son budget.

On peut facilement imaginer débuter avec un module ARM, plus abordable, puis évoluer vers une solution Intel ou AMD ultérieurement. La migration serait alors aussi simple qu’un remplacement de module. Reste toutefois une question en suspens : que faire de l’ancien module ? Revente, reprise par le constructeur, marché de l’occasion… autant de points qui mériteront des précisions.

Nous devrions recevoir un modèle en prêt dans les prochains jours…

source

❌