<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikibr.binets.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thibaut.de-saivre</id>
	<title>WikiBR - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wikibr.binets.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thibaut.de-saivre"/>
	<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/Sp%C3%A9cial:Contributions/Thibaut.de-saivre"/>
	<updated>2026-05-11T17:16:55Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Chocapix&amp;diff=10569</id>
		<title>Chocapix</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Chocapix&amp;diff=10569"/>
		<updated>2025-04-05T21:43:10Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{menu services}}&lt;br /&gt;
&lt;br /&gt;
Chocapix est le site des bars d'étage.&lt;br /&gt;
&lt;br /&gt;
Il avait été antérieurement développé par [[Utilisateur:Basile.Bruneau|ntag]], [[Utilisateur:Guillaume.Boisseau|nadrieril]] et [[Utilisateur:Camille.Masset|tizot]] en 2014-15 pour remplacer l'ancien site des bars, et avait été déployé pour l'arrivée des 2014, qui n'ont du coup pas connu l'ancien site.&lt;br /&gt;
&lt;br /&gt;
Il a ensuite été intégralement recodé par les BR 20, 21 et 22 suite à l'abandon progressif de la codebase qui ne permettait plus de le mettre à jour. Le BR 20 a notamment initié la création d'un nouveau frontend en React, qui a été récupéré par le BR 21 ayant initié la création d'un nouveau backend en Adonis JS. Le backend actuel a été quasiment intégralement codé par Thibaut de Saivre (VPrez BR21), en espérant qu'il ait été cette fois-ci suffisamment documenté pour garantir sa pérennité.&lt;br /&gt;
&lt;br /&gt;
L'ancienne API (lancée en 2014-15) était implémentée avec django : le code est toujours hébergé sur [https://gitlab.binets.fr/br/chocapix-server GitLab]. L'ancienne partie client était écrite en AngularJS : le code est toujours hébergé sur [https://gitlab.binets.fr/br/chocapix-client GitLab].&lt;br /&gt;
&lt;br /&gt;
Le nouveau frontend en React.js, développé depuis 2021, est hébergé sur Gitlab [https://gitlab.binets.fr/br/chocapix-frontend ici]. Le backend [https://gitlab.binets.fr/br/chocapix-backend aussi].&lt;br /&gt;
&lt;br /&gt;
L'antique repo principal est disponible sur [https://github.com/BinetReseau/chocapix-docker GitHub].&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
Pour des détails sur l'implémentation/la maintenance :&lt;br /&gt;
* [[Admin:Chocapix|Administration]]&lt;br /&gt;
* [[Chocapix:Rôles|Rôles et permissions]]&lt;br /&gt;
* [[Chocapix:Aliments|Aliments]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Rechercher_ldap.png&amp;diff=10567</id>
		<title>Fichier:Rechercher ldap.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Rechercher_ldap.png&amp;diff=10567"/>
		<updated>2025-04-03T23:29:51Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Menu_recherche_binet_love.png&amp;diff=10565</id>
		<title>Fichier:Menu recherche binet love.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Menu_recherche_binet_love.png&amp;diff=10565"/>
		<updated>2025-04-03T23:28:11Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Resultat_recherche_binet_love.png&amp;diff=10563</id>
		<title>Fichier:Resultat recherche binet love.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Resultat_recherche_binet_love.png&amp;diff=10563"/>
		<updated>2025-04-03T23:26:46Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Les_2_ldaps.png&amp;diff=10561</id>
		<title>Fichier:Les 2 ldaps.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Les_2_ldaps.png&amp;diff=10561"/>
		<updated>2025-04-03T23:14:18Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10099</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10099"/>
		<updated>2024-02-16T06:16:15Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Comment ça marche ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
Lorsqu'un utilisateur souhaite s'authentifier, voici les actions qui devront être réalisées par votre site :&lt;br /&gt;
&lt;br /&gt;
* Un bouton de Login de votre frontend fait une requête à votre backend.&lt;br /&gt;
* Votre backend renvoie une redirection vers [https://auth.binets.fr Authelia] à l'aide d'un client OpenID (de nombreux packages sont disponibles dans tous les langages de programmation à cet effet). Il doit aussi envoyer une chaîne de caractères aléatoire (state) à Authelia, et la garder en mémoire pour cet utilisateur. Elle sera utilisée pour confirmer la validité de la redirection Authelia.&lt;br /&gt;
* L'utilisateur sera alors redirigé vers [https://auth.binets.fr Authelia] pour s'authentifier. S'il l'est déjà (session Authelia valide existante), cette étape sera passée.&lt;br /&gt;
* Après authentification, [https://auth.binets.fr Authelia] redirigera l'utilisateur vers la route de votre backend précisée en tant que &amp;lt;code&amp;gt;callback url&amp;lt;/code&amp;gt; dans la configuration d'authelia, en envoyant en prime des données liées à cet utilisateur (nom, email...) ainsi que le &amp;quot;state&amp;quot;.&lt;br /&gt;
* Votre backend reçoit ces données, et crée une session propre à votre site pour cet utilisateur (session, JSON Web Token, Opaque Access Token...). Lorsque cette session propre à votre site expirera, l'utilisateur pourra à nouveau d'authentifier via Authelia pour la renouveler.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' : il est pratique d'envoyer le &amp;quot;state&amp;quot; à l'utilisateur via un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt; à expiration session. Il sera facile à récupérer après retour d'Authelia pour comparaison, et expirera tout seul à la fermeture de l'onglet du navigateur.&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles (scopes)==&lt;br /&gt;
&lt;br /&gt;
Authelia met à disposition différentes données utilisateur à travers des &amp;lt;code&amp;gt;scopes&amp;lt;/code&amp;gt;.&lt;br /&gt;
Lors de la configuration du client OpenID dans votre backend, vous devrez préciser les scopes auquels vous souhaitez accéder afin de recevoir les données correspondantes. Le scope &amp;lt;code&amp;gt;openid&amp;lt;/code&amp;gt; est obligatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les informations suivantes sont mises à votre disposition :&lt;br /&gt;
* email (scope &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Prénom NOM (scope &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;);&lt;br /&gt;
* groupes Sigma dont l'utilisateur est membre (scope &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Lorsque votre backend reçoit ces informations après une authentification réussie avec Authelia, il est conseillé de créer votre propre session utilisateur en émettant un JSON Web Token (stocké dans un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt;, pour les sites avec Server-Side template Rendering), un Opaque Access Token (pour les sites avec un frontend et un backend séparés).&lt;br /&gt;
&lt;br /&gt;
==Exemples d'implémentation==&lt;br /&gt;
===Backend Node.js basé sur Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, Nest JS, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' : une autre possibilité est, lors de la redirection vers Authelia, d'envoyer le &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; à l'utilisateur sous la forme d'un cookie. Il sera renvoyé à votre backend lors du retour vers l'url callback, évitant la nécessité d'utiliser une base de données. &lt;br /&gt;
&lt;br /&gt;
===Backend Golang basé sur Echo===&lt;br /&gt;
&lt;br /&gt;
Un exemple codé en Go est disponible dans [https://gitlab.binets.fr/thibaut.de-saivre/skibidi-site ce repository]. Il utilise le package [https://github.com/coreos/go-oidc OIDC] pour son client OpenID.&lt;br /&gt;
&lt;br /&gt;
Le flow d'authentification de ce backend est le suivant :&lt;br /&gt;
* Le bouton de login du frontend effectue une requête POST sur la route &amp;lt;code&amp;gt;/api/openid_redirect&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Cette route redirige l'utilisateur vers Authelia, et crée un &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt; qu'elle envoie à l'utilisateur via un cookie &amp;quot;state&amp;quot;, ainsi qu'à Authelia.&lt;br /&gt;
* Authelia redirige l'utilisateur vers la route &amp;lt;code&amp;gt;/api/openid_callback&amp;lt;/code&amp;gt;. Le backend compare le state envoyé au callback avec celui contenu dans le cookie &amp;quot;state&amp;quot;.&lt;br /&gt;
* Le backend crée un JSON Web Token avec les informations de l'utilisateur et le renvoie sous la forme d'un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt; avec une durée de vie de 72 heures. Tant que ce cookie est valide, le site ne demandera pas à l'utilisateur de se réauthentifier.&lt;br /&gt;
&lt;br /&gt;
Voir la [https://gitlab.binets.fr/thibaut.de-saivre/skibidi-site#authentication section Authentication du README] pour plus de détails ainsi que des liens vers le code source pertinent.&lt;br /&gt;
&lt;br /&gt;
===Inclure Authelia pour le développement de votre site===&lt;br /&gt;
&lt;br /&gt;
Pour avoir accès à un serveur Authelia test pour le développement de votre site, vous pouvez utiliser [https://gitlab.binets.fr/br/docker-openid ce repository]. Les instructions d'installation sont détaillées dans le README.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc par exemple changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent).&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10098</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10098"/>
		<updated>2024-02-16T06:10:16Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Example d'implémentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
Lorsqu'un utilisateur souhaite s'authentifier, voici les actions qui devront être réalisées par votre site :&lt;br /&gt;
&lt;br /&gt;
* Un bouton de Login de votre frontend fait une requête à votre backend.&lt;br /&gt;
* Votre backend renvoie une redirection vers [https://auth.binets.fr Authelia] à l'aide d'un client OpenID (de nombreux packages sont disponibles dans tous les langages de programmation à cet effet).&lt;br /&gt;
* L'utilisateur sera alors redirigé vers [https://auth.binets.fr Authelia] pour s'authentifier. S'il l'est déjà (session Authelia valide existante), cette étape sera passée.&lt;br /&gt;
* Après authentification, [https://auth.binets.fr Authelia] redirigera l'utilisateur vers la route de votre backend précisée en tant que &amp;lt;code&amp;gt;callback url&amp;lt;/code&amp;gt; dans la configuration d'authelia, en envoyant en prime des données liées à cet utilisateur (nom, email...).&lt;br /&gt;
* Votre backend reçoit ces données, et crée une session propre à votre site pour cet utilisateur (session, JSON Web Token, Opaque Access Token...). Lorsque cette session propre à votre site expirera, l'utilisateur pourra à nouveau d'authentifier via Authelia pour la renouveler.&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles (scopes)==&lt;br /&gt;
&lt;br /&gt;
Authelia met à disposition différentes données utilisateur à travers des &amp;lt;code&amp;gt;scopes&amp;lt;/code&amp;gt;.&lt;br /&gt;
Lors de la configuration du client OpenID dans votre backend, vous devrez préciser les scopes auquels vous souhaitez accéder afin de recevoir les données correspondantes. Le scope &amp;lt;code&amp;gt;openid&amp;lt;/code&amp;gt; est obligatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les informations suivantes sont mises à votre disposition :&lt;br /&gt;
* email (scope &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Prénom NOM (scope &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;);&lt;br /&gt;
* groupes Sigma dont l'utilisateur est membre (scope &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Lorsque votre backend reçoit ces informations après une authentification réussie avec Authelia, il est conseillé de créer votre propre session utilisateur en émettant un JSON Web Token (stocké dans un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt;, pour les sites avec Server-Side template Rendering), un Opaque Access Token (pour les sites avec un frontend et un backend séparés).&lt;br /&gt;
&lt;br /&gt;
==Exemples d'implémentation==&lt;br /&gt;
===Backend Node.js basé sur Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, Nest JS, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' : une autre possibilité est, lors de la redirection vers Authelia, d'envoyer le &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; à l'utilisateur sous la forme d'un cookie. Il sera renvoyé à votre backend lors du retour vers l'url callback, évitant la nécessité d'utiliser une base de données. &lt;br /&gt;
&lt;br /&gt;
===Backend Golang basé sur Echo===&lt;br /&gt;
&lt;br /&gt;
Un exemple codé en Go est disponible dans [https://gitlab.binets.fr/thibaut.de-saivre/skibidi-site ce repository]. Il utilise le package [https://github.com/coreos/go-oidc OIDC] pour son client OpenID.&lt;br /&gt;
&lt;br /&gt;
Le flow d'authentification de ce backend est le suivant :&lt;br /&gt;
* Le bouton de login du frontend effectue une requête POST sur la route &amp;lt;code&amp;gt;/api/openid_redirect&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Cette route redirige l'utilisateur vers Authelia, et crée un &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt; qu'elle envoie à l'utilisateur via un cookie &amp;quot;state&amp;quot;, ainsi qu'à Authelia.&lt;br /&gt;
* Authelia redirige l'utilisateur vers la route &amp;lt;code&amp;gt;/api/openid_callback&amp;lt;/code&amp;gt;. Le backend compare le state envoyé au callback avec celui contenu dans le cookie &amp;quot;state&amp;quot;.&lt;br /&gt;
* Le backend crée un JSON Web Token avec les informations de l'utilisateur et le renvoie sous la forme d'un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt; avec une durée de vie de 72 heures. Tant que ce cookie est valide, le site ne demandera pas à l'utilisateur de se réauthentifier.&lt;br /&gt;
&lt;br /&gt;
Voir la [https://gitlab.binets.fr/thibaut.de-saivre/skibidi-site#authentication section Authentication du README] pour plus de détails ainsi que des liens vers le code source pertinent.&lt;br /&gt;
&lt;br /&gt;
===Inclure Authelia pour le développement de votre site===&lt;br /&gt;
&lt;br /&gt;
Pour avoir accès à un serveur Authelia test pour le développement de votre site, vous pouvez utiliser [https://gitlab.binets.fr/br/docker-openid ce repository]. Les instructions d'installation sont détaillées dans le README.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc par exemple changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent).&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10097</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10097"/>
		<updated>2024-02-16T05:51:54Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Informations disponibles (scopes) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
Lorsqu'un utilisateur souhaite s'authentifier, voici les actions qui devront être réalisées par votre site :&lt;br /&gt;
&lt;br /&gt;
* Un bouton de Login de votre frontend fait une requête à votre backend.&lt;br /&gt;
* Votre backend renvoie une redirection vers [https://auth.binets.fr Authelia] à l'aide d'un client OpenID (de nombreux packages sont disponibles dans tous les langages de programmation à cet effet).&lt;br /&gt;
* L'utilisateur sera alors redirigé vers [https://auth.binets.fr Authelia] pour s'authentifier. S'il l'est déjà (session Authelia valide existante), cette étape sera passée.&lt;br /&gt;
* Après authentification, [https://auth.binets.fr Authelia] redirigera l'utilisateur vers la route de votre backend précisée en tant que &amp;lt;code&amp;gt;callback url&amp;lt;/code&amp;gt; dans la configuration d'authelia, en envoyant en prime des données liées à cet utilisateur (nom, email...).&lt;br /&gt;
* Votre backend reçoit ces données, et crée une session propre à votre site pour cet utilisateur (session, JSON Web Token, Opaque Access Token...). Lorsque cette session propre à votre site expirera, l'utilisateur pourra à nouveau d'authentifier via Authelia pour la renouveler.&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles (scopes)==&lt;br /&gt;
&lt;br /&gt;
Authelia met à disposition différentes données utilisateur à travers des &amp;lt;code&amp;gt;scopes&amp;lt;/code&amp;gt;.&lt;br /&gt;
Lors de la configuration du client OpenID dans votre backend, vous devrez préciser les scopes auquels vous souhaitez accéder afin de recevoir les données correspondantes. Le scope &amp;lt;code&amp;gt;openid&amp;lt;/code&amp;gt; est obligatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les informations suivantes sont mises à votre disposition :&lt;br /&gt;
* email (scope &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Prénom NOM (scope &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;);&lt;br /&gt;
* groupes Sigma dont l'utilisateur est membre (scope &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Lorsque votre backend reçoit ces informations après une authentification réussie avec Authelia, il est conseillé de créer votre propre session utilisateur en émettant un JSON Web Token (stocké dans un cookie &amp;lt;code&amp;gt;HttpOnly&amp;lt;/code&amp;gt;, pour les sites avec Server-Side template Rendering), un Opaque Access Token (pour les sites avec un frontend et un backend séparés).&lt;br /&gt;
&lt;br /&gt;
==Example d'implémentation==&lt;br /&gt;
===Pour Node.js et Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, nest.js, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
===Utilisation du serveur Authelia de test===&lt;br /&gt;
&lt;br /&gt;
L'exemple précédent utilise le serveur réel du BR, mais il est préférable d'utiliser un serveur de test sur ton ordinateur pendant que tu développes.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, clone ce [https://gitlab.binets.fr/br/docker-openid repo] sur ton pc.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent)&lt;br /&gt;
&lt;br /&gt;
Pour lancer le serveur de test fait &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10096</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10096"/>
		<updated>2024-02-16T05:46:39Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Informations disponibles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
Lorsqu'un utilisateur souhaite s'authentifier, voici les actions qui devront être réalisées par votre site :&lt;br /&gt;
&lt;br /&gt;
* Un bouton de Login de votre frontend fait une requête à votre backend.&lt;br /&gt;
* Votre backend renvoie une redirection vers [https://auth.binets.fr Authelia] à l'aide d'un client OpenID (de nombreux packages sont disponibles dans tous les langages de programmation à cet effet).&lt;br /&gt;
* L'utilisateur sera alors redirigé vers [https://auth.binets.fr Authelia] pour s'authentifier. S'il l'est déjà (session Authelia valide existante), cette étape sera passée.&lt;br /&gt;
* Après authentification, [https://auth.binets.fr Authelia] redirigera l'utilisateur vers la route de votre backend précisée en tant que &amp;lt;code&amp;gt;callback url&amp;lt;/code&amp;gt; dans la configuration d'authelia, en envoyant en prime des données liées à cet utilisateur (nom, email...).&lt;br /&gt;
* Votre backend reçoit ces données, et crée une session propre à votre site pour cet utilisateur (session, JSON Web Token, Opaque Access Token...). Lorsque cette session propre à votre site expirera, l'utilisateur pourra à nouveau d'authentifier via Authelia pour la renouveler.&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles (scopes)==&lt;br /&gt;
&lt;br /&gt;
Authelia met à disposition différentes données utilisateur à travers des &amp;lt;code&amp;gt;scopes&amp;lt;/code&amp;gt;.&lt;br /&gt;
Lors de la configuration du client OpenID dans votre backend, vous devrez préciser les scopes auquels vous souhaitez accéder afin de recevoir les données correspondantes. Le scope &amp;lt;code&amp;gt;openid&amp;lt;/code&amp;gt; est obligatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les informations suivantes sont mises à votre disposition :&lt;br /&gt;
* email (scope &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Prénom NOM (scope &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;);&lt;br /&gt;
* groupes Sigma dont l'utilisateur est membre (scope &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Example d'implémentation==&lt;br /&gt;
===Pour Node.js et Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, nest.js, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
===Utilisation du serveur Authelia de test===&lt;br /&gt;
&lt;br /&gt;
L'exemple précédent utilise le serveur réel du BR, mais il est préférable d'utiliser un serveur de test sur ton ordinateur pendant que tu développes.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, clone ce [https://gitlab.binets.fr/br/docker-openid repo] sur ton pc.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent)&lt;br /&gt;
&lt;br /&gt;
Pour lancer le serveur de test fait &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10095</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10095"/>
		<updated>2024-02-16T05:41:10Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Comment ça marche ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
Lorsqu'un utilisateur souhaite s'authentifier, voici les actions qui devront être réalisées par votre site :&lt;br /&gt;
&lt;br /&gt;
* Un bouton de Login de votre frontend fait une requête à votre backend.&lt;br /&gt;
* Votre backend renvoie une redirection vers [https://auth.binets.fr Authelia] à l'aide d'un client OpenID (de nombreux packages sont disponibles dans tous les langages de programmation à cet effet).&lt;br /&gt;
* L'utilisateur sera alors redirigé vers [https://auth.binets.fr Authelia] pour s'authentifier. S'il l'est déjà (session Authelia valide existante), cette étape sera passée.&lt;br /&gt;
* Après authentification, [https://auth.binets.fr Authelia] redirigera l'utilisateur vers la route de votre backend précisée en tant que &amp;lt;code&amp;gt;callback url&amp;lt;/code&amp;gt; dans la configuration d'authelia, en envoyant en prime des données liées à cet utilisateur (nom, email...).&lt;br /&gt;
* Votre backend reçoit ces données, et crée une session propre à votre site pour cet utilisateur (session, JSON Web Token, Opaque Access Token...). Lorsque cette session propre à votre site expirera, l'utilisateur pourra à nouveau d'authentifier via Authelia pour la renouveler.&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles==&lt;br /&gt;
&lt;br /&gt;
Les informations disponibles sur authelia pour un utilisateur sont :&lt;br /&gt;
* email ;&lt;br /&gt;
* uid ;&lt;br /&gt;
* Prénom NOM ;&lt;br /&gt;
* groupes Sigma (seulement les groupes dont on est membre).&lt;br /&gt;
&lt;br /&gt;
==Example d'implémentation==&lt;br /&gt;
===Pour Node.js et Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, nest.js, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
===Utilisation du serveur Authelia de test===&lt;br /&gt;
&lt;br /&gt;
L'exemple précédent utilise le serveur réel du BR, mais il est préférable d'utiliser un serveur de test sur ton ordinateur pendant que tu développes.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, clone ce [https://gitlab.binets.fr/br/docker-openid repo] sur ton pc.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent)&lt;br /&gt;
&lt;br /&gt;
Pour lancer le serveur de test fait &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10094</id>
		<title>Authentification OpenID par Authelia</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Authentification_OpenID_par_Authelia&amp;diff=10094"/>
		<updated>2024-02-16T05:30:13Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'annuaire des utilisateurs Sigma est disponible pour l'authentification auprès de sites binets tiers à travers le protocole [https://fr.wikipedia.org/wiki/OpenID OpenID].&lt;br /&gt;
&lt;br /&gt;
Le serveur d'authentification est situé à l'adresse [https://auth.binets.fr auth.binets.fr] et est une instance [https://www.authelia.com/ Authelia].&lt;br /&gt;
&lt;br /&gt;
Pour permettre à votre site de bénéficier de ce moyen d'authentification, faites un [https://panix.binets.fr ticket Panix] en précisant l'url complète de callback vers laquelle Authelia redirigera l'utilisateur après une connexion réussie. La demande doit être justifiée, suite à quoi un BRman ajoutera votre site à la liste des bénéficiaires autorisés.&lt;br /&gt;
&lt;br /&gt;
==Comment ça marche ?==&lt;br /&gt;
TODO: expliquer le flow, les scopes&lt;br /&gt;
&lt;br /&gt;
==Informations disponibles==&lt;br /&gt;
&lt;br /&gt;
Les informations disponibles sur authelia pour un utilisateur sont :&lt;br /&gt;
* email ;&lt;br /&gt;
* uid ;&lt;br /&gt;
* Prénom NOM ;&lt;br /&gt;
* groupes Sigma (seulement les groupes dont on est membre).&lt;br /&gt;
&lt;br /&gt;
==Example d'implémentation==&lt;br /&gt;
===Pour Node.js et Adonis JS===&lt;br /&gt;
&lt;br /&gt;
Le protocole OpenID est très commun, et de nombreux packets existent qui nous simplifieront la vie. Pour tous les backend basés sur Node.js (Adonis JS, nest.js, Express...), il est possible d'utiliser le packet [https://www.npmjs.com/package/openid-client openid-client].&lt;br /&gt;
&lt;br /&gt;
Voici un example pour Adonis JS, qui s'adapte à tout backend basé sur Node.js, sur [https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/auth/authSigmaUser.ts Gitlab].&lt;br /&gt;
&lt;br /&gt;
Cette implémentation nécessite:&lt;br /&gt;
* Qu'une route (comme &amp;lt;code&amp;gt;/auth/sigmaUser/login/&amp;lt;/code&amp;gt;) pointe vers la fonction&amp;lt;code&amp;gt;loginSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Que la route &amp;lt;code&amp;gt;/auth/sigmaUser/callback/&amp;lt;/code&amp;gt; pointe vers la fonction &amp;lt;code&amp;gt;callbackSigmaUser&amp;lt;/code&amp;gt;&lt;br /&gt;
* Une base de données avec trois colonnes: state, codeVerifier et date de création&lt;br /&gt;
* Un cron (fonction qui s'éxécute régulièrement, par exemple une fois par jours) qui supprime les lignes de la base de donnée susnommée qui sont trop vieilles (par exemple vieilles de plus d'une heure). Voir l'[https://gitlab.binets.fr/svg/example-backend/-/blob/main/app/Controllers/cron.ts implémentation du cron] (qui est ici exécuté lorsqu'un autre programme fait une requête à une certaine route)&lt;br /&gt;
&lt;br /&gt;
Le cron est nécessaire, car si un utilisateur commence à se connecter, une nouvelle ligne est crée dans la base de données. Elle est ensuite supprimée lorsqu'il a tapé ses identifiants. Si l'utilisateur ne tape jamais ses identiiants, la ligne n'est jamais supprimée, d'où la nécessité du cron.&lt;br /&gt;
&lt;br /&gt;
===Utilisation du serveur Authelia de test===&lt;br /&gt;
&lt;br /&gt;
L'exemple précédent utilise le serveur réel du BR, mais il est préférable d'utiliser un serveur de test sur ton ordinateur pendant que tu développes.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, clone ce [https://gitlab.binets.fr/br/docker-openid repo] sur ton pc.&lt;br /&gt;
&lt;br /&gt;
L'adresse du serveur d'authentification devient alors &amp;lt;code&amp;gt;http://localhost:9091&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;https://auth.binets.fr&amp;lt;/code&amp;gt; (il faut donc changer la variable &amp;lt;code&amp;gt;AUTH_URL&amp;lt;/code&amp;gt; de l'exemple précédent)&lt;br /&gt;
&lt;br /&gt;
Pour lancer le serveur de test fait &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=10087</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=10087"/>
		<updated>2024-02-12T17:22:43Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnements python avec Mamba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Menu tutoriels}}&lt;br /&gt;
[[Catégorie:Tutoriels]]&lt;br /&gt;
&lt;br /&gt;
Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
Le [https://revanced.app site officiel], et un [https://www.reddit.com/r/revancedapp/comments/xlcny9/revanced_manager_guide_for_dummies/ guide pour l'installation].&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Pour le développement d'applis python, sites, etc : voir [[Trucs_et_astuces#Environnements_virtuels_python_avec_Pyenv| Pyenv]].&lt;br /&gt;
&lt;br /&gt;
Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
==== Environnements virtuels python avec Pyenv ====&lt;br /&gt;
&lt;br /&gt;
===== Installation =====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
===== Installer des versions de python =====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
===== Générer un environnement virtuel =====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
===== Environnement virtuel global =====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec Mamba ====&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html#mamba-install ici].&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec poetry ====&lt;br /&gt;
&lt;br /&gt;
[https://python-poetry.org/ poetry] est un autre gestionnaire de dépendance extrêmement utile si vous développez en collaboratif notamment avec [[Git]]. Là où [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]] permet de réutiliser ses environnements, la logique de '''poetry''' est d'utiliser un environnement par projet.&lt;br /&gt;
&lt;br /&gt;
L'intérêt est que '''poetry''' produit un fichier '''poetry.lock''' permettant de reproduire à l'identique l'environnement virtuel sur une autre machine en une commande, tout en gardant la possibilité d'effectuer des mises à jour des dépendances aisément.&lt;br /&gt;
&lt;br /&gt;
Installation [https://python-poetry.org/docs/#installation ici]&lt;br /&gt;
&lt;br /&gt;
Les principales commandes de '''poetry''' sont :&lt;br /&gt;
&lt;br /&gt;
Création d'un environnement poetry :&lt;br /&gt;
 poetry init&lt;br /&gt;
&lt;br /&gt;
Cette commande permet d'initialiser '''poetry''' dans le dossier courant de manière interactive, en définissant le nom du projet, les auteurs et les dépendances.&lt;br /&gt;
&lt;br /&gt;
Cette commande génère les fichiers &amp;lt;code&amp;gt;pyproject.toml&amp;lt;/code&amp;gt;, qui contient toutes les informations du projet, et &amp;lt;code&amp;gt;poetry.lock&amp;lt;/code&amp;gt;, qui contient l'état exact du projet (l'équivalent de &amp;lt;code&amp;gt;pip freeze&amp;lt;/code&amp;gt;). Il est fortement recommandé de traquer ces fichiers avec [[Git]] si votre projet utilise [[Git]].&lt;br /&gt;
&lt;br /&gt;
Installation d'un environnement '''poetry''' :&lt;br /&gt;
 poetry install&lt;br /&gt;
&lt;br /&gt;
Cette commande permet d'installer un environnement sur la base d'un fichier &amp;lt;code&amp;gt;poetry.lock&amp;lt;/code&amp;gt; (typiquement suite à un &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Ajout de dépendances :&lt;br /&gt;
 poetry add &amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande ajoute et installe la dépendance. La gestion des dépendances de poetry respecte [https://semver.org/ semver], c'est-à-dire qu'un projet peut indiquer être compatible avec toute version ultérieure de la dépendance ayant la même version majeure (c'est le cas par défaut). Cela est indiqué en ajoutant &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; à la version requise, par exemple &amp;lt;code&amp;gt;python = &amp;quot;^3.8&amp;quot;&amp;lt;/code&amp;gt; (i.e. cela indique que le projet est compatible avec Python 3.8, 3.9, 3.10... mais pas 4.0)&lt;br /&gt;
&lt;br /&gt;
Mettre à jour les dépendances :&lt;br /&gt;
 poetry update&lt;br /&gt;
&lt;br /&gt;
Lancer une commande dans l'environnement :&lt;br /&gt;
 poetry run &amp;lt;commande&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
 poetry run python mon_projet.py&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement :&lt;br /&gt;
 poetry shell&lt;br /&gt;
&lt;br /&gt;
Cette commande génère un shell dans l'environnement&lt;br /&gt;
&lt;br /&gt;
Ces commandes sont détaillées en détail [https://python-poetry.org/docs/basic-usage/ ici]&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;br /&gt;
&lt;br /&gt;
== Utiliser Windows Subsystem for Linux pour faire du C++ ==&lt;br /&gt;
&lt;br /&gt;
L'environnement de Windows est peu optimisé pour faire du C++. Le C++ est un langage qui, contrairement à python, javascript, Go, Rust... n'a pas de '''gestionnaire de paquets'''. Il est donc incroyablement difficile d'installer et utiliser des librairies supplémentaires sur un système d'exploitation qui n'est pas fait pour ça (Windows) ! Ce problème ne se pose pas sous Linux, dont le système de fichiers et les gestionnaires de paquets intégrés fonctionnent très bien avec ce langage.&lt;br /&gt;
&lt;br /&gt;
Heureusement, Windows dispose d'un système de machines virtuelles légères pour utiliser Linux dans un terminal. Voici un guide pour la mise en place de WSL sur une machine Windows.&lt;br /&gt;
''Note: le script fourni dans le guide a été conçu pour mettre en place l'environnement c++ pour inf442. Si vous ne suivez pas ce cours, il vous suffit juste d'installer les outils de développement c++ avec la commande &amp;lt;code&amp;gt;apt-get install -y build-essential&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/pFkqwMAqTaLK9QY guide].&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/545XG3sGP3bHHqE script].&lt;br /&gt;
&lt;br /&gt;
''Guide réalisé par Thibaut de Saivre, VPrez BR21. Contactez-moi si vous avez un problème avec ce setup''&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Volumes_logiques_endalcher.png&amp;diff=9648</id>
		<title>Fichier:Volumes logiques endalcher.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Volumes_logiques_endalcher.png&amp;diff=9648"/>
		<updated>2023-10-27T20:42:52Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : Thibaut.de-saivre a téléversé une nouvelle version de Fichier:Volumes logiques endalcher.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Volumes_logiques_endalcher.png&amp;diff=9647</id>
		<title>Fichier:Volumes logiques endalcher.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Volumes_logiques_endalcher.png&amp;diff=9647"/>
		<updated>2023-10-27T20:40:19Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Configuration_du_proxy&amp;diff=9603</id>
		<title>Configuration du proxy</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Configuration_du_proxy&amp;diff=9603"/>
		<updated>2023-09-28T17:11:12Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Se connecter aux sites On Platal depuis l'extérieur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Comment créer un proxy ==&lt;br /&gt;
&lt;br /&gt;
=== C'est quoi un proxy ? ===&lt;br /&gt;
&lt;br /&gt;
Un proxy est un serveur qui sert de relais entre ton ordinateur et le serveur auquel tu veux accéder. Le proxy a plusieurs intérêts, comme masquer ton adresse IP sur le site auquel tu accèdes, ou encore accéder à des serveurs auxquels tu n'as pas accès depuis ton adresse IP actuelle. En gros, le proxy récupère les requêtes de ton ordinateur et le retransmet au serveur que tu interroges. Lorsque celui-ci répond, il te renvoie sa réponse. Un VPN est un exemple de proxy, qui a la particularité de chiffrer les transmissions.&lt;br /&gt;
&lt;br /&gt;
=== Comment créer un proxy ? ===&lt;br /&gt;
&lt;br /&gt;
Pour créer un proxy, il faut avoir accès à un ''serveur'' qui peut servir d'intermédiaire. Pour accéder aux sites binets accessibles uniquement sur le Plâtal, on peut se servir de ''Moaz'' comme proxy. Pour cela, on demande d'abord (gentiment) à un BRman de nous créer un compte. Ensuite, on s'y connecte avec la commande suivante : &lt;br /&gt;
&amp;lt;code&amp;gt;ssh -D 8080 129.104.201.55&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Alternativement, on peut utiliser le serveur &amp;lt;code&amp;gt;manche.polytechnique.fr&amp;lt;/code&amp;gt; avec les identifiants Polytechnique.fr : &lt;br /&gt;
&amp;lt;code&amp;gt;ssh -D 8080 prenom.nom@manche.polytechnique.fr&amp;lt;/code&amp;gt; puis entrer son mot de passe.&lt;br /&gt;
&lt;br /&gt;
Ceci va créer le proxy sur ton port 8080. Cela signifie que les données que tu vas envoyer et recevoir depuis ton navigateur devront désormais passer par ce port (ports 80 et 443 par défaut). Il faut donc que tu configures ton navigateur pour qu'il sache qu'il doit faire ça. Pour cela, trouve les réglages de proxy de ton navigateur (&amp;lt;code&amp;gt;preferences&amp;gt;network proxy&amp;lt;/code&amp;gt; sur firefox, &amp;lt;code&amp;gt;settings&amp;gt;system&amp;lt;/code&amp;gt; sur chrome). Ensuite, sélectionne &amp;quot;manual proxy configuration&amp;quot; puis choisis &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; pour &amp;quot;HTTP Proxy&amp;quot; et &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; pour le port. Coche enfin la case &amp;quot;SOCKS_v5&amp;quot;. Tu devrais maintenant avoir accès aux sites binets !&lt;br /&gt;
&lt;br /&gt;
Si tu n'as pas envie de recommencer cette manip' à chaque fois, tu peux utiliser un add-on qui enregistre ces réglages tout seul, tel que Foxy-Proxy.&lt;br /&gt;
&lt;br /&gt;
=== Se connecter aux sites On Platal depuis l'extérieur ===&lt;br /&gt;
&lt;br /&gt;
[[SSH#Accès_aux_sites_internes|Voir la section sur les clés SSH]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Configuration_du_proxy&amp;diff=9602</id>
		<title>Configuration du proxy</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Configuration_du_proxy&amp;diff=9602"/>
		<updated>2023-09-28T17:05:37Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Comment créer un proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Comment créer un proxy ==&lt;br /&gt;
&lt;br /&gt;
=== C'est quoi un proxy ? ===&lt;br /&gt;
&lt;br /&gt;
Un proxy est un serveur qui sert de relais entre ton ordinateur et le serveur auquel tu veux accéder. Le proxy a plusieurs intérêts, comme masquer ton adresse IP sur le site auquel tu accèdes, ou encore accéder à des serveurs auxquels tu n'as pas accès depuis ton adresse IP actuelle. En gros, le proxy récupère les requêtes de ton ordinateur et le retransmet au serveur que tu interroges. Lorsque celui-ci répond, il te renvoie sa réponse. Un VPN est un exemple de proxy, qui a la particularité de chiffrer les transmissions.&lt;br /&gt;
&lt;br /&gt;
=== Comment créer un proxy ? ===&lt;br /&gt;
&lt;br /&gt;
Pour créer un proxy, il faut avoir accès à un ''serveur'' qui peut servir d'intermédiaire. Pour accéder aux sites binets accessibles uniquement sur le Plâtal, on peut se servir de ''Moaz'' comme proxy. Pour cela, on demande d'abord (gentiment) à un BRman de nous créer un compte. Ensuite, on s'y connecte avec la commande suivante : &lt;br /&gt;
&amp;lt;code&amp;gt;ssh -D 8080 129.104.201.55&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Alternativement, on peut utiliser le serveur &amp;lt;code&amp;gt;manche.polytechnique.fr&amp;lt;/code&amp;gt; avec les identifiants Polytechnique.fr : &lt;br /&gt;
&amp;lt;code&amp;gt;ssh -D 8080 prenom.nom@manche.polytechnique.fr&amp;lt;/code&amp;gt; puis entrer son mot de passe.&lt;br /&gt;
&lt;br /&gt;
Ceci va créer le proxy sur ton port 8080. Cela signifie que les données que tu vas envoyer et recevoir depuis ton navigateur devront désormais passer par ce port (ports 80 et 443 par défaut). Il faut donc que tu configures ton navigateur pour qu'il sache qu'il doit faire ça. Pour cela, trouve les réglages de proxy de ton navigateur (&amp;lt;code&amp;gt;preferences&amp;gt;network proxy&amp;lt;/code&amp;gt; sur firefox, &amp;lt;code&amp;gt;settings&amp;gt;system&amp;lt;/code&amp;gt; sur chrome). Ensuite, sélectionne &amp;quot;manual proxy configuration&amp;quot; puis choisis &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; pour &amp;quot;HTTP Proxy&amp;quot; et &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; pour le port. Coche enfin la case &amp;quot;SOCKS_v5&amp;quot;. Tu devrais maintenant avoir accès aux sites binets !&lt;br /&gt;
&lt;br /&gt;
Si tu n'as pas envie de recommencer cette manip' à chaque fois, tu peux utiliser un add-on qui enregistre ces réglages tout seul, tel que Foxy-Proxy.&lt;br /&gt;
&lt;br /&gt;
=== Se connecter aux sites On Platal depuis l'extérieur ===&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9531</id>
		<title>Routeurs Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9531"/>
		<updated>2023-09-13T12:15:49Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Configuration point d’accès */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Menu tutoriels}}&lt;br /&gt;
&lt;br /&gt;
Cette page a pour vocation d'aider les propriétaires d'un routeur paramétré par le BR. Elle recense différents conseils et méthodes pour personnaliser son routeur et résoudre les éventuels problèmes rencontrés. Si vous désirez configurer votre routeur de A à Z, des tutoriels sont disponibles sur les pages suivantes :&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel]] qui explique en particulier le cas d'anciens modèles avec peu de mémoire&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel TP-Link Archer C50]] qui explique en particulier le cas de modèles plus récents mais qui risquent d'être briqués si on fournit directement l'image d'OpenWRT depuis l'interface GUI, d'où l'utilisation du protocole TFTP qui y est détaillée&lt;br /&gt;
&lt;br /&gt;
== Configuration initiale ==&lt;br /&gt;
Une suggestion de Rémi Grzeczkowicz : [https://amzn.eu/d/0mpDzCh Cudy WR1300 Gigabit Routeur Wi-FI Dual Band AC1200 sans Fil 5 Ports Gigabit, 4 antennes, 2,4 GHz/5 GHz, Mode d’accès Point, 128 Mo RAM, OpenWrt, VPN]&lt;br /&gt;
&lt;br /&gt;
=== Flasher Openwrt ===&lt;br /&gt;
&lt;br /&gt;
Les firmwares disponibles pour les différents hardwares sont listés [https://openwrt.org/toh/views/toh_fwdownload ici].&lt;br /&gt;
&lt;br /&gt;
Cependant, pour certains routeurs comme le Cudy WR1300 v3 vendu sur amazon il n’existe pas de firmware compatible pour l’instant (seulement les anciennes v1 et v2 sont supportées). CEPENDANT : Cudy propose une version d’openwrt compatible [http://www.cudytech.com/openwrt_software_download ici].&lt;br /&gt;
&lt;br /&gt;
Pour Cudy, l’adresse à laquelle se connecter est http://192.168.10.1/ ou http://cudy.net/ (cf manuel). Après avoir flashé Openwrt, l’adresse est http://192.168.1.1&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
La configuration suivante permet de se connecter en tant que client au réseau ethernet 802.1x de l’école avec le routeur, qui servira ensuite de point d’accès.&lt;br /&gt;
&lt;br /&gt;
==== Packages requis ====&lt;br /&gt;
&lt;br /&gt;
Il faut installer les packages suivants (via l’interface web, ou &amp;lt;code&amp;gt;opkg update&amp;lt;/code&amp;gt; puis &amp;lt;code&amp;gt;opkg install xxx&amp;lt;/code&amp;gt;). Pour installer wpa_supplicant, il faudra d’abord désinstaller &amp;lt;code&amp;gt;wpad-wolfssl&amp;lt;/code&amp;gt; (se fait facilement via l’interface web).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; (dépendances: &amp;lt;code&amp;gt;terminfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libncurses6&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;wpa-supplicant-openssl&amp;lt;/code&amp;gt; (dépendance: &amp;lt;code&amp;gt;hostapd-common&amp;lt;/code&amp;gt;) (prendre la version openssl ! Depuis août 2023, wpa_supplicant de base ne fonctionne plus…)&lt;br /&gt;
* &amp;lt;code&amp;gt;dhcpcd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB : il est possible que la configuration de réseau retourne une erreur d’authentification. Dans ce cas, il faut utiliser le package wpa_supplicant_openssl.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas d’une connexion filaire sans protection pour installer ces packages directement depuis le routeur, il est possible de télécharger les fichiers &amp;lt;code&amp;gt;.ipk&amp;lt;/code&amp;gt; afin de les upload depuis l’interface web (system -&amp;amp;gt; software) à l’adresse suivante:&lt;br /&gt;
&lt;br /&gt;
https://downloads.openwrt.org/releases/&amp;lt;openwrt_version&amp;gt;/packages&lt;br /&gt;
&lt;br /&gt;
Il faudra d’abord connaître l’architecture du routeur pour aller sur la page des bons packages. &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; (ligne cpu model).&lt;br /&gt;
&lt;br /&gt;
Dans le cas du routeur Cudy WR1300 v3 on obtient &amp;lt;code&amp;gt;MIPS 1004Kc V2.15&amp;lt;/code&amp;gt;, ce qui correspond à &amp;lt;code&amp;gt;mipsel_24kc&amp;lt;/code&amp;gt; à l’url précédente ''(testé en regardant l’url de téléchargement des packages à partir d’un point d’accès sans fil mobile)''.&lt;br /&gt;
&lt;br /&gt;
''Note : quand un grand nombre de packages sont disponibles, choisir le package &amp;lt;code&amp;gt;&amp;amp;lt;nom_du_package&amp;amp;gt;_&amp;amp;lt;date&amp;amp;gt;&amp;lt;/code&amp;gt; plutôt que &amp;lt;code&amp;gt;&amp;amp;lt;nom_du_package&amp;amp;gt;-basic&amp;lt;/code&amp;gt; ou autres.''&lt;br /&gt;
&lt;br /&gt;
==== Configuration client ====&lt;br /&gt;
&lt;br /&gt;
Suivre les instructions de https://portail.polytechnique.edu/dsi/acces-internet/logements/ethernet-8021x-sur-linux, section '''En ligne de commande''' ''pour utilisateurs expérimentés''.&lt;br /&gt;
&lt;br /&gt;
Quelques remarques: * L’interface ethernet est '''wan''' et non '''eth0''' (même si cette interface existe bien). * Pour obtenir une adresse ip : utiliser &amp;lt;code&amp;gt;udhcpc -i wan&amp;lt;/code&amp;gt; et non &amp;lt;code&amp;gt;dhcpcd wan&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tester si la connexion fonctionne bien (ping, nslookup…)&lt;br /&gt;
&lt;br /&gt;
==== Configuration au démarrage ====&lt;br /&gt;
&lt;br /&gt;
Pour que votre routeur se connecte automatiquement au démarrage, il suffit d’aller dans l’interface graphique System &amp;amp;gt; Startup &amp;amp;gt; Local startup et d’entrer la commande : &amp;lt;code&amp;gt;wpa_supplicant -c /etc/wpa_supplicant/polytechnique.conf -D wired -i NOM_DE_L'INTERFACE -B&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque : * Si vous avez mis votre fichier .conf dans un autre chemin, pensez à corriger le chemin. * NOM_DE_L’INTERFACE est wan pour le routeur cudy v3&lt;br /&gt;
&lt;br /&gt;
==== Configuration point d’accès ====&lt;br /&gt;
&lt;br /&gt;
À partir de maintenant, le routeur devrait déjà fonctionner en tant que point d’accès filaire (ethernet).&lt;br /&gt;
&lt;br /&gt;
Setup du wifi depuis l’interface web:&lt;br /&gt;
&lt;br /&gt;
Network -&amp;amp;gt; Wireless Éditer l’une des deux interfaces marquées ''Wireless is disabled.''&lt;br /&gt;
&lt;br /&gt;
[[File:Interface_wifi_routeur.png]]&lt;br /&gt;
&lt;br /&gt;
Sous '''Interface configuration''' : * Dans &amp;lt;code&amp;gt;General setup&amp;lt;/code&amp;gt;, mettre un ESSID (nom du point d’accès) custom. Vous pouvez définir le point d’accès comme caché ou non selon votre envie de crâner. * Dans &amp;lt;code&amp;gt;Wireless security&amp;lt;/code&amp;gt; : choisir l’encryption ''WPA2-PSK (strong encryption)'' et mettre un mot de passe pour le point d’accès dans ''Key''.&lt;br /&gt;
&lt;br /&gt;
Enfin, il faut '''Save &amp;amp;amp; Apply''' les modifications, puis '''enable''' l’interface qui vient d’être configurée. Le point d’accès wifi est configuré !&lt;br /&gt;
&lt;br /&gt;
=== Probl ===&lt;br /&gt;
&lt;br /&gt;
J’ai rencontré quelques problèmes par la suite, voilà une liste de solutions possibles: * débrancher / rebrancher la prise ethernet murale * &amp;lt;code&amp;gt;service network restart&amp;lt;/code&amp;gt; * Exécuter à nouveau &amp;lt;code&amp;gt;wpa_supplicant -c /etc/wpa_supplicant/polytechnique.conf -D wired -i NOM_DE_L'INTERFACE -B&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;udhcpc -i wan&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pour la reconnexion automatique au reboot (pas encore testé) ====&lt;br /&gt;
&lt;br /&gt;
Cf https://forum.openwrt.org/t/connect-router-archer-c50-to-a-802-1x-eap-network/34602/20&lt;br /&gt;
&lt;br /&gt;
== Depuis l'interface LuCi ==&lt;br /&gt;
Toutes les manipulations qui suivent sont relativement simples et accessibles à tous. Elles s'effectuent depuis l'interface web LuCi, disponible à l'adresse http://192.168.1.1 lorsque l'on est connecté au routeur. Elles ne nécessitent donc l'installation d'aucun outil externe (par exemple PuTTY sur Windows). Pour valider les changements effectués, appuyez sur le bouton &amp;quot;Save &amp;amp; Apply&amp;quot;, en bas de chaque page.&lt;br /&gt;
&lt;br /&gt;
=== Changer le mot de passe root ===&lt;br /&gt;
Avant toute chose, il est conseillé de changer le mot de passe root. Le mot de passe par défaut est « root ». Allez dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Administration&amp;quot; et changez le mot de passe.&lt;br /&gt;
&lt;br /&gt;
=== Changer le nom/le mot de passe du réseau Wi-Fi ===&lt;br /&gt;
{{Attention|&lt;br /&gt;
*'''Tous''' les routeurs, y compris ceux des bars d'étage, '''doivent''' être protégés par un mot de passe sécurisé. '''Le BR interdit strictement toute utilisation de routeur dont le réseau Wi-Fi n'est pas protégé par un mot de passe'''.&lt;br /&gt;
*En mettant un mot de passe trop simple ou trop proche de votre mot de passe LDAP/ENEX/Zimbra, vous risqueriez de compromettre sa sécurité, et donc l'ensemble de vos comptes liés, qui pourraient alors être coupés par la DSI.}}&lt;br /&gt;
Le nom et le mot de passe du réseau peuvent être changé en allant dans &amp;quot;Network&amp;quot; -&amp;gt; &amp;quot;Wi-Fi&amp;quot;. Désactivez temporairement le Wi-Fi en appuyant sur le bouton &amp;quot;Disable&amp;quot;, puis cliquez sur &amp;quot;Edit&amp;quot;. Le nom du réseau est personnalisable via le champ &amp;quot;ESSID&amp;quot;, dans l'onglet &amp;quot;General Setup&amp;quot;, en bas de la page. Le mot de passe est personnalisable via l'onglet &amp;quot;Wireless Security&amp;quot;. '''Laissez bien l'option &amp;quot;WPA2-PSK&amp;quot; active'''.&lt;br /&gt;
&lt;br /&gt;
== Problèmes connus ==&lt;br /&gt;
=== Le réseau coupe souvent ===&lt;br /&gt;
Au 16/10/2016, une des raisons connues est un problème dans l'infrastructure de la DSI, qui touche aussi les personnes ne possédant pas de routeur. Il faut alors débrancher et brancher la prise à chaque fois que le réseau se coupe. Le routeur peut néanmoins simuler cette manipulation de lui-même à intervalles réguliers. Pour cela, ajoutez la ligne suivante dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Scheduled Tasks&amp;quot; (ne supprimez pas les autres lignes !) :&lt;br /&gt;
:&amp;lt;code&amp;gt;0 */1 * * * kill $(pidof wpa_supplicant) $(pidof udhcpc) &amp;amp;&amp;amp; rm -rf /tmp/run/wpa_supplicant/ &amp;amp;&amp;amp; /etc/init.d/wpa start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le problème est antérieur au 08/10/2016, voir aussi [[Routeurs_Wi-Fi/Tutoriel#Je_dois_souvent_red.C3.A9marrer_mon_routeur|cette section du tutoriel]] ou encore [[Routeurs_Wi-Fi/Tutoriel#Probl.C3.A8me_de_date|celle-ci]].&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Tutoriels]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Fichier:Interface_wifi_routeur.png&amp;diff=9530</id>
		<title>Fichier:Interface wifi routeur.png</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Fichier:Interface_wifi_routeur.png&amp;diff=9530"/>
		<updated>2023-09-13T12:14:41Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : Screenshot de l'interface du routeur OpenWRT pour le setup du wif dans un casert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
Screenshot de l'interface du routeur OpenWRT pour le setup du wif dans un casert&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9529</id>
		<title>Routeurs Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9529"/>
		<updated>2023-09-13T12:10:12Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Configuration initiale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Menu tutoriels}}&lt;br /&gt;
&lt;br /&gt;
Cette page a pour vocation d'aider les propriétaires d'un routeur paramétré par le BR. Elle recense différents conseils et méthodes pour personnaliser son routeur et résoudre les éventuels problèmes rencontrés. Si vous désirez configurer votre routeur de A à Z, des tutoriels sont disponibles sur les pages suivantes :&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel]] qui explique en particulier le cas d'anciens modèles avec peu de mémoire&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel TP-Link Archer C50]] qui explique en particulier le cas de modèles plus récents mais qui risquent d'être briqués si on fournit directement l'image d'OpenWRT depuis l'interface GUI, d'où l'utilisation du protocole TFTP qui y est détaillée&lt;br /&gt;
&lt;br /&gt;
== Configuration initiale ==&lt;br /&gt;
Une suggestion de Rémi Grzeczkowicz : [https://amzn.eu/d/0mpDzCh Cudy WR1300 Gigabit Routeur Wi-FI Dual Band AC1200 sans Fil 5 Ports Gigabit, 4 antennes, 2,4 GHz/5 GHz, Mode d’accès Point, 128 Mo RAM, OpenWrt, VPN]&lt;br /&gt;
&lt;br /&gt;
=== Flasher Openwrt ===&lt;br /&gt;
&lt;br /&gt;
Les firmwares disponibles pour les différents hardwares sont listés [https://openwrt.org/toh/views/toh_fwdownload ici].&lt;br /&gt;
&lt;br /&gt;
Cependant, pour certains routeurs comme le Cudy WR1300 v3 vendu sur amazon il n’existe pas de firmware compatible pour l’instant (seulement les anciennes v1 et v2 sont supportées). CEPENDANT : Cudy propose une version d’openwrt compatible [http://www.cudytech.com/openwrt_software_download ici].&lt;br /&gt;
&lt;br /&gt;
Pour Cudy, l’adresse à laquelle se connecter est http://192.168.10.1/ ou http://cudy.net/ (cf manuel). Après avoir flashé Openwrt, l’adresse est http://192.168.1.1&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
La configuration suivante permet de se connecter en tant que client au réseau ethernet 802.1x de l’école avec le routeur, qui servira ensuite de point d’accès.&lt;br /&gt;
&lt;br /&gt;
==== Packages requis ====&lt;br /&gt;
&lt;br /&gt;
Il faut installer les packages suivants (via l’interface web, ou &amp;lt;code&amp;gt;opkg update&amp;lt;/code&amp;gt; puis &amp;lt;code&amp;gt;opkg install xxx&amp;lt;/code&amp;gt;). Pour installer wpa_supplicant, il faudra d’abord désinstaller &amp;lt;code&amp;gt;wpad-wolfssl&amp;lt;/code&amp;gt; (se fait facilement via l’interface web).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; (dépendances: &amp;lt;code&amp;gt;terminfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libncurses6&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;wpa-supplicant-openssl&amp;lt;/code&amp;gt; (dépendance: &amp;lt;code&amp;gt;hostapd-common&amp;lt;/code&amp;gt;) (prendre la version openssl ! Depuis août 2023, wpa_supplicant de base ne fonctionne plus…)&lt;br /&gt;
* &amp;lt;code&amp;gt;dhcpcd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB : il est possible que la configuration de réseau retourne une erreur d’authentification. Dans ce cas, il faut utiliser le package wpa_supplicant_openssl.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas d’une connexion filaire sans protection pour installer ces packages directement depuis le routeur, il est possible de télécharger les fichiers &amp;lt;code&amp;gt;.ipk&amp;lt;/code&amp;gt; afin de les upload depuis l’interface web (system -&amp;amp;gt; software) à l’adresse suivante:&lt;br /&gt;
&lt;br /&gt;
https://downloads.openwrt.org/releases/&amp;lt;openwrt_version&amp;gt;/packages&lt;br /&gt;
&lt;br /&gt;
Il faudra d’abord connaître l’architecture du routeur pour aller sur la page des bons packages. &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; (ligne cpu model).&lt;br /&gt;
&lt;br /&gt;
Dans le cas du routeur Cudy WR1300 v3 on obtient &amp;lt;code&amp;gt;MIPS 1004Kc V2.15&amp;lt;/code&amp;gt;, ce qui correspond à &amp;lt;code&amp;gt;mipsel_24kc&amp;lt;/code&amp;gt; à l’url précédente ''(testé en regardant l’url de téléchargement des packages à partir d’un point d’accès sans fil mobile)''.&lt;br /&gt;
&lt;br /&gt;
''Note : quand un grand nombre de packages sont disponibles, choisir le package &amp;lt;code&amp;gt;&amp;amp;lt;nom_du_package&amp;amp;gt;_&amp;amp;lt;date&amp;amp;gt;&amp;lt;/code&amp;gt; plutôt que &amp;lt;code&amp;gt;&amp;amp;lt;nom_du_package&amp;amp;gt;-basic&amp;lt;/code&amp;gt; ou autres.''&lt;br /&gt;
&lt;br /&gt;
==== Configuration client ====&lt;br /&gt;
&lt;br /&gt;
Suivre les instructions de https://portail.polytechnique.edu/dsi/acces-internet/logements/ethernet-8021x-sur-linux, section '''En ligne de commande''' ''pour utilisateurs expérimentés''.&lt;br /&gt;
&lt;br /&gt;
Quelques remarques: * L’interface ethernet est '''wan''' et non '''eth0''' (même si cette interface existe bien). * Pour obtenir une adresse ip : utiliser &amp;lt;code&amp;gt;udhcpc -i wan&amp;lt;/code&amp;gt; et non &amp;lt;code&amp;gt;dhcpcd wan&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tester si la connexion fonctionne bien (ping, nslookup…)&lt;br /&gt;
&lt;br /&gt;
==== Configuration au démarrage ====&lt;br /&gt;
&lt;br /&gt;
Pour que votre routeur se connecte automatiquement au démarrage, il suffit d’aller dans l’interface graphique System &amp;amp;gt; Startup &amp;amp;gt; Local startup et d’entrer la commande : &amp;lt;code&amp;gt;wpa_supplicant -c /etc/wpa_supplicant/polytechnique.conf -D wired -i NOM_DE_L'INTERFACE -B&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque : * Si vous avez mis votre fichier .conf dans un autre chemin, pensez à corriger le chemin. * NOM_DE_L’INTERFACE est wan pour le routeur cudy v3&lt;br /&gt;
&lt;br /&gt;
==== Configuration point d’accès ====&lt;br /&gt;
&lt;br /&gt;
À partir de maintenant, le routeur devrait déjà fonctionner en tant que point d’accès filaire (ethernet).&lt;br /&gt;
&lt;br /&gt;
Setup du wifi depuis l’interface web:&lt;br /&gt;
&lt;br /&gt;
Network -&amp;amp;gt; Wireless Éditer l’une des deux interfaces marquées ''Wireless is disabled.''&lt;br /&gt;
&lt;br /&gt;
[[File:https://stratus.binets.fr/s/a3dEeP6WSYSRG7i/preview|thumb|none|alt=Wifi à éditer|Wifi à éditer]]&lt;br /&gt;
&lt;br /&gt;
Sous '''Interface configuration''' : * Dans &amp;lt;code&amp;gt;General setup&amp;lt;/code&amp;gt;, mettre un ESSID (nom du point d’accès) custom. Vous pouvez définir le point d’accès comme caché ou non selon votre envie de crâner. * Dans &amp;lt;code&amp;gt;Wireless security&amp;lt;/code&amp;gt; : choisir l’encryption ''WPA2-PSK (strong encryption)'' et mettre un mot de passe pour le point d’accès dans ''Key''.&lt;br /&gt;
&lt;br /&gt;
Enfin, il faut '''Save &amp;amp;amp; Apply''' les modifications, puis '''enable''' l’interface qui vient d’être configurée. Le point d’accès wifi est configuré !&lt;br /&gt;
&lt;br /&gt;
=== Probl ===&lt;br /&gt;
&lt;br /&gt;
J’ai rencontré quelques problèmes par la suite, voilà une liste de solutions possibles: * débrancher / rebrancher la prise ethernet murale * &amp;lt;code&amp;gt;service network restart&amp;lt;/code&amp;gt; * Exécuter à nouveau &amp;lt;code&amp;gt;wpa_supplicant -c /etc/wpa_supplicant/polytechnique.conf -D wired -i NOM_DE_L'INTERFACE -B&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;udhcpc -i wan&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pour la reconnexion automatique au reboot (pas encore testé) ====&lt;br /&gt;
&lt;br /&gt;
Cf https://forum.openwrt.org/t/connect-router-archer-c50-to-a-802-1x-eap-network/34602/20&lt;br /&gt;
&lt;br /&gt;
== Depuis l'interface LuCi ==&lt;br /&gt;
Toutes les manipulations qui suivent sont relativement simples et accessibles à tous. Elles s'effectuent depuis l'interface web LuCi, disponible à l'adresse http://192.168.1.1 lorsque l'on est connecté au routeur. Elles ne nécessitent donc l'installation d'aucun outil externe (par exemple PuTTY sur Windows). Pour valider les changements effectués, appuyez sur le bouton &amp;quot;Save &amp;amp; Apply&amp;quot;, en bas de chaque page.&lt;br /&gt;
&lt;br /&gt;
=== Changer le mot de passe root ===&lt;br /&gt;
Avant toute chose, il est conseillé de changer le mot de passe root. Le mot de passe par défaut est « root ». Allez dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Administration&amp;quot; et changez le mot de passe.&lt;br /&gt;
&lt;br /&gt;
=== Changer le nom/le mot de passe du réseau Wi-Fi ===&lt;br /&gt;
{{Attention|&lt;br /&gt;
*'''Tous''' les routeurs, y compris ceux des bars d'étage, '''doivent''' être protégés par un mot de passe sécurisé. '''Le BR interdit strictement toute utilisation de routeur dont le réseau Wi-Fi n'est pas protégé par un mot de passe'''.&lt;br /&gt;
*En mettant un mot de passe trop simple ou trop proche de votre mot de passe LDAP/ENEX/Zimbra, vous risqueriez de compromettre sa sécurité, et donc l'ensemble de vos comptes liés, qui pourraient alors être coupés par la DSI.}}&lt;br /&gt;
Le nom et le mot de passe du réseau peuvent être changé en allant dans &amp;quot;Network&amp;quot; -&amp;gt; &amp;quot;Wi-Fi&amp;quot;. Désactivez temporairement le Wi-Fi en appuyant sur le bouton &amp;quot;Disable&amp;quot;, puis cliquez sur &amp;quot;Edit&amp;quot;. Le nom du réseau est personnalisable via le champ &amp;quot;ESSID&amp;quot;, dans l'onglet &amp;quot;General Setup&amp;quot;, en bas de la page. Le mot de passe est personnalisable via l'onglet &amp;quot;Wireless Security&amp;quot;. '''Laissez bien l'option &amp;quot;WPA2-PSK&amp;quot; active'''.&lt;br /&gt;
&lt;br /&gt;
== Problèmes connus ==&lt;br /&gt;
=== Le réseau coupe souvent ===&lt;br /&gt;
Au 16/10/2016, une des raisons connues est un problème dans l'infrastructure de la DSI, qui touche aussi les personnes ne possédant pas de routeur. Il faut alors débrancher et brancher la prise à chaque fois que le réseau se coupe. Le routeur peut néanmoins simuler cette manipulation de lui-même à intervalles réguliers. Pour cela, ajoutez la ligne suivante dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Scheduled Tasks&amp;quot; (ne supprimez pas les autres lignes !) :&lt;br /&gt;
:&amp;lt;code&amp;gt;0 */1 * * * kill $(pidof wpa_supplicant) $(pidof udhcpc) &amp;amp;&amp;amp; rm -rf /tmp/run/wpa_supplicant/ &amp;amp;&amp;amp; /etc/init.d/wpa start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le problème est antérieur au 08/10/2016, voir aussi [[Routeurs_Wi-Fi/Tutoriel#Je_dois_souvent_red.C3.A9marrer_mon_routeur|cette section du tutoriel]] ou encore [[Routeurs_Wi-Fi/Tutoriel#Probl.C3.A8me_de_date|celle-ci]].&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Tutoriels]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9528</id>
		<title>Routeurs Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Routeurs_Wi-Fi&amp;diff=9528"/>
		<updated>2023-09-13T12:06:49Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Menu tutoriels}}&lt;br /&gt;
&lt;br /&gt;
Cette page a pour vocation d'aider les propriétaires d'un routeur paramétré par le BR. Elle recense différents conseils et méthodes pour personnaliser son routeur et résoudre les éventuels problèmes rencontrés. Si vous désirez configurer votre routeur de A à Z, des tutoriels sont disponibles sur les pages suivantes :&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel]] qui explique en particulier le cas d'anciens modèles avec peu de mémoire&lt;br /&gt;
* [[Routeurs Wi-Fi/Tutoriel TP-Link Archer C50]] qui explique en particulier le cas de modèles plus récents mais qui risquent d'être briqués si on fournit directement l'image d'OpenWRT depuis l'interface GUI, d'où l'utilisation du protocole TFTP qui y est détaillée&lt;br /&gt;
&lt;br /&gt;
== Configuration initiale ==&lt;br /&gt;
&lt;br /&gt;
== Depuis l'interface LuCi ==&lt;br /&gt;
Toutes les manipulations qui suivent sont relativement simples et accessibles à tous. Elles s'effectuent depuis l'interface web LuCi, disponible à l'adresse http://192.168.1.1 lorsque l'on est connecté au routeur. Elles ne nécessitent donc l'installation d'aucun outil externe (par exemple PuTTY sur Windows). Pour valider les changements effectués, appuyez sur le bouton &amp;quot;Save &amp;amp; Apply&amp;quot;, en bas de chaque page.&lt;br /&gt;
&lt;br /&gt;
=== Changer le mot de passe root ===&lt;br /&gt;
Avant toute chose, il est conseillé de changer le mot de passe root. Le mot de passe par défaut est « root ». Allez dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Administration&amp;quot; et changez le mot de passe.&lt;br /&gt;
&lt;br /&gt;
=== Changer le nom/le mot de passe du réseau Wi-Fi ===&lt;br /&gt;
{{Attention|&lt;br /&gt;
*'''Tous''' les routeurs, y compris ceux des bars d'étage, '''doivent''' être protégés par un mot de passe sécurisé. '''Le BR interdit strictement toute utilisation de routeur dont le réseau Wi-Fi n'est pas protégé par un mot de passe'''.&lt;br /&gt;
*En mettant un mot de passe trop simple ou trop proche de votre mot de passe LDAP/ENEX/Zimbra, vous risqueriez de compromettre sa sécurité, et donc l'ensemble de vos comptes liés, qui pourraient alors être coupés par la DSI.}}&lt;br /&gt;
Le nom et le mot de passe du réseau peuvent être changé en allant dans &amp;quot;Network&amp;quot; -&amp;gt; &amp;quot;Wi-Fi&amp;quot;. Désactivez temporairement le Wi-Fi en appuyant sur le bouton &amp;quot;Disable&amp;quot;, puis cliquez sur &amp;quot;Edit&amp;quot;. Le nom du réseau est personnalisable via le champ &amp;quot;ESSID&amp;quot;, dans l'onglet &amp;quot;General Setup&amp;quot;, en bas de la page. Le mot de passe est personnalisable via l'onglet &amp;quot;Wireless Security&amp;quot;. '''Laissez bien l'option &amp;quot;WPA2-PSK&amp;quot; active'''.&lt;br /&gt;
&lt;br /&gt;
== Problèmes connus ==&lt;br /&gt;
=== Le réseau coupe souvent ===&lt;br /&gt;
Au 16/10/2016, une des raisons connues est un problème dans l'infrastructure de la DSI, qui touche aussi les personnes ne possédant pas de routeur. Il faut alors débrancher et brancher la prise à chaque fois que le réseau se coupe. Le routeur peut néanmoins simuler cette manipulation de lui-même à intervalles réguliers. Pour cela, ajoutez la ligne suivante dans &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Scheduled Tasks&amp;quot; (ne supprimez pas les autres lignes !) :&lt;br /&gt;
:&amp;lt;code&amp;gt;0 */1 * * * kill $(pidof wpa_supplicant) $(pidof udhcpc) &amp;amp;&amp;amp; rm -rf /tmp/run/wpa_supplicant/ &amp;amp;&amp;amp; /etc/init.d/wpa start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le problème est antérieur au 08/10/2016, voir aussi [[Routeurs_Wi-Fi/Tutoriel#Je_dois_souvent_red.C3.A9marrer_mon_routeur|cette section du tutoriel]] ou encore [[Routeurs_Wi-Fi/Tutoriel#Probl.C3.A8me_de_date|celle-ci]].&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Tutoriels]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9512</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9512"/>
		<updated>2023-08-01T20:37:38Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* L'appli Youtube sans pubs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Menu tutoriels}}&lt;br /&gt;
[[Catégorie:Tutoriels]]&lt;br /&gt;
&lt;br /&gt;
Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
Le [https://revanced.app site officiel], et un [https://www.reddit.com/r/revancedapp/comments/xlcny9/revanced_manager_guide_for_dummies/ guide pour l'installation].&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Pour le développement d'applis python, sites, etc : voir [[Trucs_et_astuces#Environnements_virtuels_python_avec_Pyenv| Pyenv]].&lt;br /&gt;
&lt;br /&gt;
Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
==== Environnements virtuels python avec Pyenv ====&lt;br /&gt;
&lt;br /&gt;
===== Installation =====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
===== Installer des versions de python =====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
===== Générer un environnement virtuel =====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
===== Environnement virtuel global =====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec Mamba ====&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici].&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;br /&gt;
&lt;br /&gt;
== Utiliser Windows Subsystem for Linux pour faire du C++ ==&lt;br /&gt;
&lt;br /&gt;
L'environnement de Windows est peu optimisé pour faire du C++. Le C++ est un langage qui, contrairement à python, javascript, Go, Rust... n'a pas de '''gestionnaire de paquets'''. Il est donc incroyablement difficile d'installer et utiliser des librairies supplémentaires sur un système d'exploitation qui n'est pas fait pour ça (Windows) ! Ce problème ne se pose pas sous Linux, dont le système de fichiers et les gestionnaires de paquets intégrés fonctionnent très bien avec ce langage.&lt;br /&gt;
&lt;br /&gt;
Heureusement, Windows dispose d'un système de machines virtuelles légères pour utiliser Linux dans un terminal. Voici un guide pour la mise en place de WSL sur une machine Windows.&lt;br /&gt;
''Note: le script fourni dans le guide a été conçu pour mettre en place l'environnement c++ pour inf442. Si vous ne suivez pas ce cours, il vous suffit juste d'installer les outils de développement c++ avec la commande &amp;lt;code&amp;gt;apt-get install -y build-essential&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/pFkqwMAqTaLK9QY guide].&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/545XG3sGP3bHHqE script].&lt;br /&gt;
&lt;br /&gt;
''Guide réalisé par Thibaut de Saivre, VPrez BR21. Contactez-moi si vous avez un problème avec ce setup''&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9424</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9424"/>
		<updated>2023-05-06T14:13:26Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Utiliser Windows Subsystem for Linux pour faire du C++ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Pour le développement d'applis python, sites, etc : voir [[Trucs_et_astuces#Environnements_virtuels_python_avec_Pyenv| Pyenv]].&lt;br /&gt;
&lt;br /&gt;
Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
==== Environnements virtuels python avec Pyenv ====&lt;br /&gt;
&lt;br /&gt;
===== Installation =====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
===== Installer des versions de python =====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
===== Générer un environnement virtuel =====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
===== Environnement virtuel global =====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec Mamba ====&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici].&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;br /&gt;
&lt;br /&gt;
== Utiliser Windows Subsystem for Linux pour faire du C++ ==&lt;br /&gt;
&lt;br /&gt;
L'environnement de Windows est peu optimisé pour faire du C++. Le C++ est un langage qui, contrairement à python, javascript, Go, Rust... n'a pas de '''gestionnaire de paquets'''. Il est donc incroyablement difficile d'installer et utiliser des librairies supplémentaires sur un système d'exploitation qui n'est pas fait pour ça (Windows) ! Ce problème ne se pose pas sous Linux, dont le système de fichiers et les gestionnaires de paquets intégrés fonctionnent très bien avec ce langage.&lt;br /&gt;
&lt;br /&gt;
Heureusement, Windows dispose d'un système de machines virtuelles légères pour utiliser Linux dans un terminal. Voici un guide pour la mise en place de WSL sur une machine Windows.&lt;br /&gt;
''Note: le script fourni dans le guide a été conçu pour mettre en place l'environnement c++ pour inf442. Si vous ne suivez pas ce cours, il vous suffit juste d'installer les outils de développement c++ avec la commande &amp;lt;code&amp;gt;apt-get install -y build-essential&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/pFkqwMAqTaLK9QY guide].&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/545XG3sGP3bHHqE script].&lt;br /&gt;
&lt;br /&gt;
''Guide réalisé par Thibaut de Saivre, VPrez BR21. Contactez-moi si vous avez un problème avec ce setup''&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9423</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9423"/>
		<updated>2023-05-06T14:12:15Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Pour le développement d'applis python, sites, etc : voir [[Trucs_et_astuces#Environnements_virtuels_python_avec_Pyenv| Pyenv]].&lt;br /&gt;
&lt;br /&gt;
Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
==== Environnements virtuels python avec Pyenv ====&lt;br /&gt;
&lt;br /&gt;
===== Installation =====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
===== Installer des versions de python =====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
===== Générer un environnement virtuel =====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
===== Environnement virtuel global =====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec Mamba ====&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici].&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;br /&gt;
&lt;br /&gt;
== Utiliser Windows Subsystem for Linux pour faire du C++ ==&lt;br /&gt;
&lt;br /&gt;
L'environnement de Windows est peu optimisé pour faire du C++. Le C++ est un langage qui, contrairement à python, javascript, Go, Rust... n'a pas de '''gestionnaire de paquets'''. Il est donc incroyablement difficile d'installer et utiliser des librairies supplémentaires sur un système d'exploitation qui n'est pas fait pour ça (Windows) ! Ce problème ne se pose pas sous Linux, dont le système de fichiers et les gestionnaires de paquets intégrés fonctionnent très bien avec ce langage.&lt;br /&gt;
&lt;br /&gt;
Heureusement, Windows dispose d'un système de machines virtuelles légères pour utiliser Linux dans un terminal. Voici un guide pour la mise en place de WSL sur une machine Windows.&lt;br /&gt;
''Note: le script fourni dans le guide a été conçu pour mettre en place l'environnement c++ pour inf442. Si vous ne suivez pas ce cours, il vous suffit juste d'installer les outils de développement c++ avec la commande &amp;lt;code&amp;gt;apt-get install -y build-essential&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/pFkqwMAqTaLK9QY guide].&lt;br /&gt;
&lt;br /&gt;
Le [https://stratus.binets.fr/s/545XG3sGP3bHHqE script].&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9422</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9422"/>
		<updated>2023-05-06T13:01:37Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Pour le développement d'applis python, sites, etc : voir [[Trucs_et_astuces#Environnements_virtuels_python_avec_Pyenv| Pyenv]].&lt;br /&gt;
&lt;br /&gt;
Pour le développement de scripts scientifiques en python, avec utilisation de notebooks jupyter et shell IPython, etc : voir [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
==== Environnements virtuels python avec Pyenv ====&lt;br /&gt;
&lt;br /&gt;
===== Installation =====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
===== Installer des versions de python =====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
===== Générer un environnement virtuel =====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
===== Environnement virtuel global =====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Environnements python avec Mamba ====&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici].&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9418</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9418"/>
		<updated>2023-05-06T12:54:11Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnements python avec Mamba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications) !&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci-dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvironnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9416</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9416"/>
		<updated>2023-05-06T12:53:37Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Gestionnaires de versions pour coder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
&lt;br /&gt;
Selon les projets d'informatique que vous réalisez, vous aurez probablement besoin d'utiliser des versions de python ou node différentes (node16 pour Sigma, python3.7 pour les sites binets python hébergés par le BR).&lt;br /&gt;
&lt;br /&gt;
C'est notamment une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet. On vous explique comment configurer et utiliser tout ça.&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Mod%C3%A8le:Content_tutoriels&amp;diff=9415</id>
		<title>Modèle:Content tutoriels</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Mod%C3%A8le:Content_tutoriels&amp;diff=9415"/>
		<updated>2023-05-06T12:49:06Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Trucs_et_astuces|Trucs et astuces du BR]]&lt;br /&gt;
* [[Diagnostiquer_une_panne_réseau|Diagnostiquer une panne réseau]]&lt;br /&gt;
* [[Routeurs_Wi-Fi|Configurer un routeur dans son casert]]&lt;br /&gt;
* [[Comptes_Sigma|Création d'un compte Sigma]]&lt;br /&gt;
* [[Recuperation de donnees perdues|Comment récupérer mes données que j'ai effacées sur mon disque dur ?]]&lt;br /&gt;
* [[Git|Comment utiliser Git ? (Pour les projets en équipe)]]&lt;br /&gt;
* [[SSH|Comment utiliser SSH ?]]&lt;br /&gt;
* [[Identifiants à l'X|Comprendre les différents identifiants à l'X]]&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9414</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9414"/>
		<updated>2023-05-06T12:45:34Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Générer un environnement virtuel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3 # Utiliser cette version temporairement, dans ce shell&lt;br /&gt;
 pyenv local 3.11.3 # Toujours utiliser cette version dans ce dossier&lt;br /&gt;
 pyenv global 3.11.3 # Toujours utiliser cette version, partout&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9413</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9413"/>
		<updated>2023-05-06T12:44:30Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnement virtuel global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici]. C'est similaire au fonctionnement de [[Trucs_et_astuces#Environnements_python_avec_Mamba|Mamba]].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9412</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9412"/>
		<updated>2023-05-06T12:42:40Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnements python avec Mamba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt; python=3.10 # Avec une version spécifique de python&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9411</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9411"/>
		<updated>2023-05-06T12:38:06Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Plusieurs versions de Node.js avec NVM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;br /&gt;
&lt;br /&gt;
Si vous faites du développement web avec du Typescript/Javascript sans utiliser de conteneurs docker, vous avez besoin d'installer [https://nodejs.org/en/about Node.js], un runtime javascript. Selon votre système d'exploitation, il est possible que la version de node installée par défaut ne corresponde pas à celle attendue par votre projet (sous Linux, en particulier).&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de versions Node [https://github.com/nvm-sh/nvm NVM] permet d'installer et switcher rapidement entre plusieurs versions de Node.&lt;br /&gt;
&lt;br /&gt;
Installer une version :&lt;br /&gt;
 nvm install &amp;lt;version&amp;gt;&lt;br /&gt;
 nvm install 16 # Pour Sigma, par exemple&lt;br /&gt;
&lt;br /&gt;
Utiliser une version :&lt;br /&gt;
 nvm ls # Lister les versions&lt;br /&gt;
 nvm use &amp;lt;version&amp;gt; # Utiliser une version&lt;br /&gt;
 node -v # Vérifier que la version est bien utilisée&lt;br /&gt;
&lt;br /&gt;
Pour utiliser à nouveau la version système dans votre shell :&lt;br /&gt;
 nvm use system&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9410</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9410"/>
		<updated>2023-05-06T12:31:42Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
==== Environnement virtuel global ====&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9409</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9409"/>
		<updated>2023-05-06T12:31:19Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnements virtuels python avec Pyenv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
=== Environnement virtuel global ===&lt;br /&gt;
&lt;br /&gt;
Pyenv permet aussi de générer des environnements virtuels globaux avec &amp;lt;code&amp;gt;pyenv virtualenv&amp;lt;/code&amp;gt;, un plugin que vous pouvez installer [https://github.com/pyenv/pyenv-virtualenv ici].&lt;br /&gt;
&lt;br /&gt;
Créez un environnement virtuel global avec la commande suivante :&lt;br /&gt;
 pyenv virtualenv &amp;lt;version&amp;gt; &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite l'activer comme les autres environnements avec&lt;br /&gt;
 pyenv shell &amp;lt;nom de votre environnement global custom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
	<entry>
		<id>https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9408</id>
		<title>Trucs et astuces</title>
		<link rel="alternate" type="text/html" href="https://wikibr.binets.fr/index.php?title=Trucs_et_astuces&amp;diff=9408"/>
		<updated>2023-05-06T12:27:45Z</updated>

		<summary type="html">&lt;p&gt;Thibaut.de-saivre : /* Environnements python avec Mamba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le saviez-vous ? Il est possible de stocker tous ses mots de passe de manière sécurisée, de regarder youtube sans les pubs, d'utiliser l'intelligence artificielle pour faire les TD d'info (sous réserve de quelques modifications)!&lt;br /&gt;
&lt;br /&gt;
Ci dessous, les trucs et astuces du BR pour avoir une vie numérique un peu plus confortable.&lt;br /&gt;
&lt;br /&gt;
== Extensions de navigateur recommandées ==&lt;br /&gt;
Les extensions de navigateur, ça change la vie. Ci dessous sont énumérées quelques extensions populaires qui rendent la navigation plus agréable.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Si vous utilisez Firefox, vous disposerez aussi des extensions sur mobile ! Ce n'est pas le cas de Chrome, qui pourrait bien interdire les adblockers dans le futur.&lt;br /&gt;
&lt;br /&gt;
=== uBlock Origin ===&lt;br /&gt;
&lt;br /&gt;
[https://ublockorigin.com/ ublock Origin] est un Ad Blocker open source très efficace. Il retire l'intégralité des pubs des sites web et de youtube, et n'est pas vendu aux publicitaires.&lt;br /&gt;
&lt;br /&gt;
=== Bitwarden ===&lt;br /&gt;
&lt;br /&gt;
[https://bitwarden.com/download/ Bitwarden] est un gestionnaire de mot de passe open-source hébergé dans le cloud et disponible sur navigateur, mobile et desktop. Il permet de générer des mots de passe aléatoires customisés, d'avoir de l'autocomplétion sur vos sites préférés, etc. Ça vaut toujours mieux que les gestionnaires intégrés de Chrome ou Firefox, ou même que d'autres gestionnaires de mots passe propriétaires.&lt;br /&gt;
&lt;br /&gt;
=== Return Youtube Dislike ===&lt;br /&gt;
&lt;br /&gt;
[https://www.returnyoutubedislike.com/ Return Youtube Dislike] est une extension toute simple qui fait revenir l'affichage des dislikes sur le site de [https://www.youtube.com/ Youtube].&lt;br /&gt;
&lt;br /&gt;
=== Dark Reader ===&lt;br /&gt;
&lt;br /&gt;
[https://darkreader.org/ Dark Reader] est une extension qui permet d'avoir un mode sombre sur votre navigateur. Il fonctionne très bien pour la plupart des sites, et peut-être configuré pour afficher un mode sombre par défaut, ou bien seulement pour les sites que vous choisissez.&lt;br /&gt;
&lt;br /&gt;
== L'appli Youtube sans pubs ==&lt;br /&gt;
&lt;br /&gt;
Si vous voulez utiliser une version modifiée du client officiel, continuez votre lecture. Si vous préférez utiliser un client open source, sachez qu'il existe Newpipe qui permet également de bloquer les publicités et de télécharger les vidéos (voir [[#Applications open source sur Android]]).&lt;br /&gt;
&lt;br /&gt;
'''Youtube Revanced''' est un patch open source (seul le patch est open source, pas l'application) non officiel de l'application Youtube, qui intègre de nombreuses fonctionnalités additionnelles. Elle n'est actuellement disponible que pour Android, car Apple n'autorise pas l'installation d'applications ne figurant pas sur l'Apple Store (tandis qu'Android, si). On y trouve notamment :&lt;br /&gt;
&lt;br /&gt;
* Blocage des pubs et sponsorisations (configurable)&lt;br /&gt;
* Retour de l'affichage des dislikes&lt;br /&gt;
* Lecture en arrière plan&lt;br /&gt;
* Téléchargement de vidéos&lt;br /&gt;
* Contrôle du son et de la luminosité avec des swipe gestures, etc.&lt;br /&gt;
&lt;br /&gt;
L'apk est téléchargeable sur le site [https://revanced.net/ Youtube ReVanced] (Youtube ReVanced app).&lt;br /&gt;
&lt;br /&gt;
'''Remarque:''' même après avoir téléchargé l'application, les liens vers youtube seront toujours ouverts avec l'application youtube. Pour y remédier, il faut désactiver l'appli youtube, puis associer l'application Revanced avec les liens youtube. Cette option est disponible dans l'application '''Settings''' -&amp;gt; '''Applications''' -&amp;gt; '''Applications par défaut''' -&amp;gt; '''Ouverture des liens''' -&amp;gt; '''ReVanced''' -&amp;gt; '''Adr. Web prises en charge''', puis cocher les 4 adresses (testé sur téléphone Samsung).&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour:''' pour mettre à jour l'application (nécessaire pour résoudre les bugs susceptibles d'apparaître), il faut télécharger à nouveau l'apk la plus récente. Elle mettra automatiquement à jour l'application.&lt;br /&gt;
&lt;br /&gt;
== Github Copilot ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/features/copilot Github Copilot] est un outil d'intelligence artificielle utile pour accélérer le développement informatique. Il est disponible dans la plupart des IDE. En temps normal, son utilisation se paye 10$/mois, ou 100$/an, mais elle est gratuite pour les étudiants !&lt;br /&gt;
&lt;br /&gt;
Pour accéder gratuitement à Github Copilot, il suffit de:&lt;br /&gt;
* Disposer d'un compte Github&lt;br /&gt;
* S'inscrire comme étudiant sur [https://education.github.com/discount_requests/application education.github.com] en ajoutant son adresse en ''polytechnique.edu'' comme preuve.&lt;br /&gt;
* Une fois la vérification faite, configurer l'accès à Copilot depuis les [https://github.com/settings/copilot settings] de votre compte Github.&lt;br /&gt;
&lt;br /&gt;
Et voilà ! Il n'y a plus qu'à installer l'extension '''Github Copilot''' dans l'IDE de votre choix, puis d'authentifier votre compte Github, et vous êtes prêts à coder !&lt;br /&gt;
&lt;br /&gt;
== Applications open source sur Android ==&lt;br /&gt;
&lt;br /&gt;
Sur Android, il existe un magasin d'applications qui ne contient que des logiciels libres : F-droid. Le client officiel est daté et pose des problèmes de sécurité. On vous conseille donc d'installer un client plus récent : [https://f-droid.org/en/packages/com.looker.droidify/ Droid-ify] (bouton ''DOWNLOAD F-DROID'') (disponible uniquement sur Android, évidemment). &lt;br /&gt;
&lt;br /&gt;
Cette application est un ''Google Play'' pour applications libres et open source. Pour pouvoir l'utiliser, il faudra d'abord l'autoriser comme application de téléchargement d'autres applications (à l'ouverture). &lt;br /&gt;
&lt;br /&gt;
On vous recommande notamment l'application '''NewPipe''', un client Youtube libre n'utilisant pas l'API de Google qui enlève les publicités et qui permet de télécharger des vidéos et d'écouter des vidéos en arrière plan.&lt;br /&gt;
&lt;br /&gt;
== Gestionnaires de versions pour coder ==&lt;br /&gt;
En chantier !&lt;br /&gt;
on peut avoir besoin de plusieurs versions installées en même temps pour gérer différents projets (sigma : node16, python d'ostizan: python3.7). Voici différents gestionnaires pour faire ce genre de choses facilement.&lt;br /&gt;
&lt;br /&gt;
C'est une très bonne pratique pour faciliter le déploiement d'applications python que d'utiliser un environnement virtuel pour son projet, avec un liste de dépendances requirements.txt à la racine du projet (TODO : expliquer comment on fait ça).&lt;br /&gt;
&lt;br /&gt;
=== Environnements virtuels python avec Pyenv ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Pyenv] est un gestionnaire de versions Python qui permet de changer rapidement de version '''sans toucher à la version python utilisée par le système'''. Les versions sont installées dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/.pyenv/versions/&amp;lt;/code&amp;gt; sous Linux, et &amp;lt;code&amp;gt;C:\Users\&amp;lt;username&amp;gt;\.pyenv\versions\&amp;lt;/code&amp;gt; sous Windows. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv-win/pyenv-win Installer pyenv sur Windows]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pyenv/pyenv Installer pyenv sur Linux] (ou via votre gestionnaire de paquets).&lt;br /&gt;
&lt;br /&gt;
==== Installer des versions de python ====&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions de python disponibles :&lt;br /&gt;
 pyenv install --list&lt;br /&gt;
&lt;br /&gt;
Pour lister des versions spécifiques :&lt;br /&gt;
 pyenv install --list | grep 3.11 # Sur Linux&lt;br /&gt;
 pyenv install --list | findstr 3.11 # Sur Windows&lt;br /&gt;
&lt;br /&gt;
Pour installer une version :&lt;br /&gt;
 pyenv install -v 3.11.3 # Remplacer par le nom complet de la version désirée&lt;br /&gt;
&lt;br /&gt;
Pour lister les versions disponibles via pyenv :&lt;br /&gt;
 pyenv versions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Générer un environnement virtuel ====&lt;br /&gt;
&lt;br /&gt;
Pour générer un environnement virtuel python à la racine d'un projet :&lt;br /&gt;
Activer une version de python dans le shell:&lt;br /&gt;
 pyenv shell 3.11.3&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel dans un dossier &amp;lt;code&amp;gt;venv/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 python -m venv venv&lt;br /&gt;
&lt;br /&gt;
Activer l'environnement virtuel :&lt;br /&gt;
 source venv/bin/activate # Sous Linux&lt;br /&gt;
 .\venv\Scripts\activate # Sous Windows&lt;br /&gt;
&lt;br /&gt;
Vous avez à présent un environnement virtuel python à la racine de votre projet, qu'il vous suffira d'activer à chaque fois que vous lancez votre projet. '''Note :''' VSCode réalise cette activation tout seul si vous lui dites d'utiliser l'environnement virtuel pour votre projet.&lt;br /&gt;
&lt;br /&gt;
'''Remarque :''' si votre projet est versionné avec ''Git'', il ne faut pas commit votre venv! Ajoutez un fichier &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; à la racine de votre projet, et ajoutez une ligne &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; dedans.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez à présent installer des packages (après avoir activé l'environnement virtuel !)&lt;br /&gt;
 pip install &amp;lt;packages&amp;gt;&lt;br /&gt;
 pip install -r requirements.txt # Si vous récupérez un projet avec des dépendances existantes&lt;br /&gt;
&lt;br /&gt;
Pour générer un fichier &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; afin de faciliter la mise en place pour vos collègues / pour le déploiement de votre app sur les serveurs du BR :&lt;br /&gt;
 pip freeze &amp;gt; requirements.txt&lt;br /&gt;
&lt;br /&gt;
=== Environnements python avec Mamba ===&lt;br /&gt;
&lt;br /&gt;
Vous connaissez peut-être déjà [https://docs.conda.io/en/latest/ Conda], un gestionnaire de paquets et d'environnements python principalement utilisé pour des projets scientifiques. [https://github.com/mamba-org/mamba Mamba] en est une version entièrement réécrite en C++, bien plus rapide et performante.&lt;br /&gt;
&lt;br /&gt;
Installation [https://mamba.readthedocs.io/en/latest/installation.html ici]&lt;br /&gt;
&lt;br /&gt;
Mamba permet de créer des environnements virtuels dans &amp;lt;code&amp;gt;/home/&amp;lt;username&amp;gt;/mambaforge-pypy3/envs&amp;lt;/code&amp;gt; (sous Linux, par exemple) qui seront réutilisables dans tous vos projets !&lt;br /&gt;
&lt;br /&gt;
Créer un environnement virtuel :&lt;br /&gt;
 mamba create -n nom_de_lenvirnonnement &amp;lt;liste de packages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
 mamba create -n inf442 numpy pandas scikit-learn&lt;br /&gt;
&lt;br /&gt;
Activation d'un environnement virtuel :&lt;br /&gt;
 mamba activate inf442&lt;br /&gt;
 mamba deactivate # Pour le désactiver&lt;br /&gt;
&lt;br /&gt;
Installation de paquets : après avoir activé votre environnement mamba, utilisez la commande &amp;lt;code&amp;gt;mamba install&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;, et le tout est joué.&lt;br /&gt;
&lt;br /&gt;
=== Plusieurs versions de Node.js avec NVM ===&lt;/div&gt;</summary>
		<author><name>Thibaut.de-saivre</name></author>
	</entry>
</feed>