Planet Libre

Goffi : Salut a Toi at FOSDEM this week-end!

Hello,

a small note to say that I'll be present at FOSDEM this week-end and I'll do 2 talks:

  • "XMPP Beyond Instant Messaging" where I'll show that XMPP is far more than an instant messaging protocol. Room H.1309 (Van Rijn) Sunday at 9:25
  • "Salut à Toi: A Python Based Social Network And More" which will be a presentation of the Salut à Toi ecosystem. Room UD2.120 (Chavanne) Sunday at 16:00

I'll often be at the "XMPP lounge", but I'm also planning to attend some talks and meet people at other booths, so don't hesitate to ping me on the SàT XMPP room sat@chat.jabberfr.org (also available from this link) if you want to talk and/or have a demo.

Salut à Toi is in stabilisation phase, and the incoming 0.7 release will bring a new desktop/mobile(Android) frontend, advanced file sharing, events, the basis of a decentralised code forge (tickets and merge requests), OMEMO end to end encryption, etc.

A major thing is also the new decentralised web framework, the only one of its kind, which allows you to create website naturaly decentralised, by linking XMPP and Python.

See you there!

Gravatar de Goffi
Original post of Goffi.Votez pour ce billet sur Planet Libre.

Articles similaires

Goffi : Salut à Toi au FOSDEM ce week-end

Salut à Vous,

une petite note pour vous indiquer que je serai présent au FOSDEM et que j'y ferai 2 conférences:

  • « XMPP Beyond Instant Messaging » où je montrerai qu'XMPP est bien plus qu'un protocole de messagerie instantanée. Salle H.1309 (Van Rijn) dimanche à 9:25
  • « Salut à Toi: A Python Based Social Network And More » qui sera une présentation de l'écosystème Salut à Toi. Salle UD2.120 (Chavanne) dimanche à 16:00

Je serai régulièrement au « XMPP lounge », mais je compte aussi voir certaines conférences et autres stands, aussi n'hésitez pas à me pinguer sur le salon XMPP sat@chat.jabberfr.org (accessible également via ce lien) si vous souhaitez discuter et/ou une démonstration.

Salut à Toi est en cours de stabilisation, et la version 0.7 à venir verra l'arrivée de la nouvelle interface bureau/appareils portables (Android en particulier), du partage de fichiers avancé, des événements, de la base d'une forge décentralisée (tickets et « merge requests »), du chiffrement via OMEMO, etc.

À noter aussi l'arrivée d'un cadriciel (framework) web unique en son genre, puisqu'il permet de créer des sites naturellement décentralisés en liant XMPP et Python.

Au plaisir de vous voir !

Gravatar de Goffi
Original post of Goffi.Votez pour ce billet sur Planet Libre.

Articles similaires

Framablog : Résistons à la pub sur Internet #bloquelapubnet

Aujourd’hui Framasoft (parmi d’autres) montre son soutien à l’association RAP (Résistance à l’Agression Publicitaire) ainsi qu’à la Quadrature du Net qui lancent une campagne de sensibilisation et d’action pour lutter contre les nuisances publicitaires non-consenties sur Internet.

#BloquelapubNet : un site pour expliquer comment se protéger

Les lectrices et lecteurs de ce blog sont probablement déjà équipé⋅e⋅s de bloqueurs de pub et autres dispositifs de filtrage. Il faut dire que le tracking publicitaire est un des outils essentiels aux  géants du web, à tel point qu’ils nous créent une dystopie histoire que des gens cliquent sur des pubs, et ce malgré des initiatives se voulant respectueuses comme celle de NextINpact ou trollesques comme notre Framadsense.

Cliquez sur l’image pour aller directement sur bloquelapub.net

Si vous, vous savez comment vous prémunir de cette pollution informationnelle… avez-vous déjà songé à aider vos proches, collègues et connaissances ? C’est compliqué de tout bien expliquer avec des mots simples, hein ? C’est justement à ça que sert le site bloquelapub.net  : un tutoriel à suivre qui permet, en quelques clics, d’apprendre quelques gestes essentiels pour notre hygiène numérique. Voilà un site utile, à partager et communiquer autour de soi avec enthousiasme, sans modération et accompagné du mot clé #bloquelapubnet !

Pourquoi bloquer ? – Le communiqué

Nous reproduisons ci dessous le communiqué de presse des associations Résistance à l’Agression Publicitaire et La Quadrature du Net.

Internet est devenu un espace prioritaire pour les investissements des publicitaires. En France, pour la première fois en 2016, le marché de la publicité numérique devient le « premier média investi sur l’ensemble de l’année », avec une part de marché de 29,6 %, devant la télévision. En 2017, c’est aussi le cas au niveau mondial. Ce jeune « marché » est principalement capté par deux géants de la publicité numérique. Google et Facebook. Ces deux géants concentrent à eux seuls autour de 50 % du marché et bénéficient de la quasi-totalité des nouveaux investissements sur ce marché. « Pêché originel d’Internet », où, pour de nombreuses personnes et sociétés, il demeure difficile d’obtenir un paiement monétaire direct pour des contenus et services commerciaux et la publicité continue de s’imposer comme un paiement indirect.

Les services vivant de la publicité exploitent le « temps de cerveau disponible » des internautes qui les visitent, et qui n’en sont donc pas les clients, mais bien les produits. Cette influence est achetée par les annonceurs qui font payer le cout publicitaire dans les produits finalement achetés.

La publicité en ligne a plusieurs conséquences : en termes de dépendance vis-à-vis des annonceurs et des revenus publicitaires, et donc des limites sur la production de contenus et d’information, en termes de liberté de réception et de possibilité de limiter les manipulations publicitaires, sur la santé, l’écologie…

En ligne, ces problématiques qui concernent toutes les publicités ont de plus été complétées par un autre enjeu fondamental. Comme l’exprime parfaitement Zeynep Tufekci, une chercheuse turque, « on a créé une infrastructure de surveillance dystopique juste pour que des gens cliquent sur la pub ». De grandes entreprises telles que Google, Facebook et d’autres « courtiers en données » comme Criteo ont développés des outils visant à toujours mieux nous « traquer » dans nos navigations en ligne pour nous profiler publicitairement. Ces pratiques sont extrêmement intrusives et dangereuses pour les libertés fondamentales.

L’Europe dispose pourtant désormais d’un règlement qui devrait mettre majoritairement fin à cette exploitation de nos données personnelles. En vertu du règlement général pour la protection des données RGPD, la plupart de ces pratiques de collecte de données personnelles en ligne devraient reposer sur un consentement libre et éclairé. Sinon, ces pratiques sont illégales. C’est sur ce fondement que La Quadrature du Net a porté plainte collectivement contre les 5 géants du numérique. Si le RGPD est rentré en application récemment et que ces plaintes collectives prennent du temps, la CNIL française a déjà agi sur des questionnements similaires, et a même, lundi 22 janvier 2019, commencé à sanctionner Google à une amende de 50 millions d’euros s’agissant de ces pratiques relatives à Android.

Il est plus temps que cette législation soit totalement respectée et que les publicitaires cessent de nous espionner en permanence en ligne.

 

Un sondage BVA-La Dépêche de 2018, révélait que 77 % des Français·es se disent inquiet·es de l’utilisation que pouvaient faire des grandes entreprises commerciales de leurs données numériques personnelles. 83 % des Français·es sont irrité·es par la publicité en ligne selon un sondage de l’institut CSA en mars 2016 et « seulement » 24 % des personnes interrogées avaient alors installé un bloqueur de publicité.

 

Le blocage de la publicité en ligne apparait comme un bon outil de résistance pour se prémunir de la surveillance publicitaire sur Internet. Pour l’aider à se développer, nos associations lancent le site Internet :

http://bloquelapub.net

Plusieurs opérations collectives ou individuelles de sensibilisation et blocages de la publicité auront lieu sur plusieurs villes du territoire français et sur Internet peu de temps avant et le jour du 28 janvier 2019, journée européenne de la « protection des données personnelles ». Le jour rêvé pour s’opposer à la publicité en ligne qui exploite ces données !

 

RAP et La Quadrature du Net demandent :

  • Le respect de la liberté de réception dans l’espace public et ailleurs, le droit et la possibilité de refuser d’être influencé par la publicité,
  • Le strict respect du règlement général pour la protection des données et l’interdiction de la collecte de données personnelles à des fins publicitaires sans le recueil d’un consentement libre (non-conditionnant pour l’accès au service), explicite et éclairé où les paramètres les plus protecteurs sont configurés par défaut. Les sites Internet et services en ligne ne doivent par défaut collecter aucune information à des fins publicitaires sans que l’internaute ne les y ait expressément autorisés.

 

Rendez-vous sur bloquelapub.net et sur Internet toute la journée du 28 janvier 2019

 

Les associations soutiens de cette mobilisation : Framasoft, Le CECIL, Globenet, Le Creis-Terminal

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

Articles similaires

Journal du hacker : Liens intéressants Journal du hacker semaine #4

Pour la 4ème semaine de l'année 2019, voici 12 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Julien L : Deux problèmes avec password-store et GnuPG

Pour gérer mes mots de passe, j’utilise l’excellent outil pass du projet password-store. Celui-ci utilise GnuPG pour chiffrer chaque mot de passe.

J’ai récemment changé de système d’exploitation (j’y reviendrai probablement en détails dans un prochain article) et je suis tombé sur deux problèmes avec ces deux outils. Comme j’ai mis un certain temps à trouver la cause et la solution à chacun de ces deux problèmes, je les partage ici si cela peut aider quelqu’un.

« Pas de clef secrète »

Le problème

Après avoir migré vers mon nouveau système d’exploitation et après avoir installé password-store, je demande un mot de passe et j’obtiens une erreur inquiétante :

$ pass show gpg: starting migration from earlier GnuPG versions gpg: porting secret keys from '/home/julien/.gnupg/secring.gpg' to gpg-agent gpg: migration succeeded gpg: échec du déchiffrement : Pas de clef secrète

Mon explication

En changement de système d’exploitation, je suis passé d’une version 1.x de GnuPG (version 1.4 ou 1.7) vers une version 2.x (version 2.2.12 exactement). Ma clé secrète a été automatiquement migrée. J’ai, pendant un long moment, pensé que le problème était lié à cette migration mais je  pense qu’il n’en est rien.

L’erreur est en fait due au fait que gpg-agent, le démon lancé en arrière-plan par gpg pour gérer les clés secrètes, ne trouve pas de pinentry, ce petit utilitaire qui permet de taper le mot de passe associé à une clé secrète. Comme aucun mot de passe ne peut être saisi, le déchiffrement ne peut pas se faire.

Ma solution

J’ai d’abord installé un pinentry. Plusieurs sont disponibles mais j’ai choisi pinentry-gtk2 du projet GnuPG lui-même. La procédure dépend ici du système d’exploitation.

Ensuite, je me suis assuré que le pinentry installé soit bien trouvé par gpg-agent. Le chemin par défaut est indiqué dans la page de man de gpg-agent (man gpg-agent). Comme le chemin ne correspondait pas, j’ai configuré gpg-agent en créant un fichier ~/.gnupg/gpg-agent.conf avec le contenu suivant :

pinentry-program

Enfin, j’ai tué le démon gpg-agent afin qu’il soit relancé avec la nouvelle configuration :

$ killall gpg-agent

J’ai relancé la commande pass ci-dessus et la boîte de dialogue du pinentry est bien apparue pour me demander mon mot de passe de clé secrète. Après saisie, le mot de passe désiré a bien été déchiffré.

« No public key »

Le problème

Cette fois, c’est lorsque j’ai essayé d’ajouter un mot de passe que j’ai obtenu une erreur :

$ pass insert Enter password for : Retype password for : XXX : skipped: No public key gpg: [stdin]: encryption failed: No public key Password encryption aborted.

Mon explication

GnuPG ne retrouve pas la clé publique dont la référence est fournie par password-store. Cette référence se trouve dans le fichier ~/.password-store/.gpg-id. Dans mon cas, c’est l’alias de la clé (XXX ) qui y est indiqué. Cet alias contient un caractère français accentué. Je suspecte donc un problème de décodage de caractères, peut-être lié à l’absence de locales dans le système.

Ma solution

J’ai indiqué l’identifiant de la clé à password-store, au lieu de l’alias, afin d’éviter tout problème lié au codage de caractères.

Pour cela, j’ai d’abord listé les clés :

$ gpg --list-keys /home/julien/.gnupg/pubring.kbx ------------------------------- pub   rsa2048 2013-08-23 [SC]       704B4670E3A941D56A1C57829AB0A8F0A73DDA4C uid          [ inconnue] XXX sub   rsa2048 2013-08-23 [E]

Puis j’ai remplacé le contenu du fichier ~/.password-store/.gpg-id par l’identifiant de la clé (704B4670E3A941D56A1C57829AB0A8F0A73DDA4C).

J’ai relancé la commande pass ci-dessous et tout a fonctionné.

Gravatar de Julien L
Original post of Julien L.Votez pour ce billet sur Planet Libre.

Thuban : Syspatch : patch mincore, nfs, unveil - multiarch - 6.3+6.4

Ce matin, l'équipe OpenBSD nous livre trois correctifs, principalement pour OpenBSD 6.4 :

  • le premier 'mincore' : les appels systèmes fait par mincore() peuvent être utilisés pour observer les accès mémoire des autres processus. patch n°11
  • le second pour 'nfs' : des vérifications de longueur manquantes sur le serveur et le client NFS peuvent entraîner des pannes et d’autres erreurs. patch n°12
  • et le troisième pour 'unveil' : les appels systèmes par unveil() peuvent provoquer des fuites mémoires. patch n°13

Le redémarrage de votre machine est nécessaire, car les trois correctifs touchent le noyau.

Architectures concernées : amd64, arm64 et i386

Les deux premiers correctifs seraient disponibles pour OpenBSD 6.3 ; à l'heure de cette édition, la page errata63.html ne comporte pas les informations adéquates !

 

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Littlewing : Deuxième crossover : Opensource business models

Voici ma deuxième contribution pour une série d’articles sur l’opensource pour le blog de mon entreprise.

Les articles précédents traitaient de l’histoire de l’opensource puis des différentes formes que peut prendre l’open source.

Cette fois j’aborde les business models du monde opensource.

Bonne lecture 🙂

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Le Journal du hacker, le Hacker News francophone

Le Journal du hacker est un agrégateur de liens sur l’activité des hackers francophones, du mouvement du Logiciel Libre et open source en langue française, mais aussi des startups et du mouvement entrepreunarial de la communauté francophone, outil contributif et participatif avec déjà 4 ans d’existence, aussi présent sur les réseaux sociaux comme Mastodon, Twitter et Diaspora*.

Outil de veille technologique

Le Journal du hacker est avant tout un outil de veille technologique, qui permet de se tenir au courant de toutes les dernières publications importantes de la sphère technologique francophone. Plusieurs axes sont couverts : la technologie elle-même, mais aussi la communauté et le côté politique de la vie de cette communauté, comme des questions politiques, de la vie privée et/ou des libertés individuelles.

Le but est aussi d’offrir un moyen de faire connaître des créateurs de contenus technologiques qui proposent eux-mêmes leurs contenus via le Journal du hacker.

 

Contributf et participatif

L’outil est contributif et participatif car tout les membres peuvent proposer des liens vers des articles et poster des commentaires.

Pour devenir membre, il suffit pour cela de demander une invitation. Tous les articles proposés doivent être en langue française.

Attention toutefois avant de vous inscrire, la communauté du Journal du hacker est orientée vers l’encouragement à la production de contenus et la critique positive. Si vous êtes dans cette démarche, vous serez le bienvenue. Sinon les trolleurs gratuits et sans démarche constructives y sont en général peu appréciés.

Le Journal du hacker sur les réseaux sociaux

À la différence de nombreux sites web, le Journal du hacker ne cherche pas à retenir ou à faire venir le public sur le site. Il diffuse le plus largement possible les liens qui lui sont soumis, principalement via les réseaux sociaux, aujourd’hui Mastodon, Twitter et Diaspora*.

Compte Mastodon du Journal du hacker

En effet la façon de consommer l’information change et les réseaux sociaux sont la plus récente expression de ce changement.

Apporter le meilleur contenu de la sphère technologique francophone aux lecteurs présents sur ces réseaux apparaît comme le meilleur moyen de poursuivre le but de faire connaître et lire le plus largement possible les meilleurs articles.

Projets dérivés

Pour rappel, le Journal du hacker met librement à disposition ses données pour que des projets parallèles puissent s’en servir pour se construire et se développer. Son code source est également librement disponible.

Comme exemple de projets dérivés, j’ai pour ma part trouvé qu’il était très important de proposer une newsletter résumant chaque semaine l’actualité du Logiciel Libre et Open Source, à partir des liens proposés sur le Journal du hacker.

C’est ainsi que le Courrier du hacker est né il y a plus d’un an, avec aujourd’hui plus de 71 numéros et 2000 abonnés.

E-mail S'abonner

Il s’agit bien d’un projet parallèle, qui n’est pas supporté par l’équipe du Journal du hacker. Et c’est très bien ainsi, le Journal du hacker apporte un contenu incroyable qui doit être exploité pour créer encore davantage d’initiatives et de ressources pour la communauté.

Futur du Journal du hacker

Nous allons mettre en production la dernière version du Journal du hacker sous peu, afin d’apporter quelques nouvelles fonctionnalités et améliorations.

À plus long terme, beaucoup d’évolutions ont lieu actuellement dans la manière de partager et de mettre en relation l’information, avec la fédération basée sur le protocole ActivityPub. Je vais suivre en particulier l’avancement du projet Prismo.

Au quotidien, le travail habituel ne changera pas, pour continuer à apporter du contenu de grande qualité à tous les lecteurs du Journal du hacker.

L’auteur

Carl Chenet est un acteur de la communauté du Logiciel Libre et Open Source francophone, fondateur du Journal du hacker, du Courrier du hacker et du site d’emploi LinuxJobs.fr. Il a écrit et maintient également de nombreux logiciels libres.

Me suivre sur les réseaux sociaux

N’hésitez pas à me suivre directement sur les différents sociaux pour suivre au jour le jour mes différentes projets dans le Logiciel Libre :

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

genma : Les tutoriaux de Grenode

Présentation de Grenode

Grenode est un opérateur Internet créé en 2008. Cette structure est issue de la volonté de participer à la décentralisation de l'Internet dans la région grenobloise. Son objectif actuel est de mutualiser l'accès à Internet pour ses membres. Grenode est membre de Gitoyen, de Rézopole ainsi que correspondant de la FFDN.

Différents tutoriels sont en lignes

Parmi lesquels je retiendrai :
-Orchestration de configuration avec Ansible
-Les sauvegardes avec les outils backupninja et duplicity.
-Backups avec borg en 2ème partie du tutoriel
-Configuration / Utilisation d'etckeeper

N'hésitez pas à fouiller sur le site pour avoir d'autres tutoriels.
Et merci aux membres de Grenode pour leur partage de connaissance !

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #3

Pour la 3ème semaine de l'année 2019, voici 12 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Renault : Un nouveau logo pour Fedora ?

L'équipe design de Fedora est en train de travailler sur un changement du logo de Fedora. Et l'équipe a proposé deux possibilités et souhaite des retours constructifs, en anglais uniquement, pour éventuellement peaufiner ces idées.

Si vous lisez l'anglais, je vous conseille de lire cet excellent article qui présente le sujet. Ou si vous souhaitez voir l'ensemble des tests intermédiaires. Je me contenterai de résumer l'essentiel.

Déjà il y a eu 2 versions du logo de Fedora comme vous pouvez le voir ci-dessous. Ce n'est donc pas un changement inédit même si le dernier changement date un peu, à savoir vers l'année 2005.

Premier logo :

Fedora_Core.png

Second et actuel logo :

fedora-2005.png

Pourquoi ce changement ? Logo complexe à travailler

Tout d'abord il y a un problème dans le rendu. Le logo actuel contient plusieurs couleurs, ce qui complexifie la réalisation de goodies ou les rend plus chers suivant le prestataire. C'est un élément important pour la réalisation de la communication autour du projet.

Fedora-décomposition.png

Ensuite, cela rend le logo plus difficilement visible en cas de fond foncé, en particulier avec un fond bleu. Cela est particulièrement le cas pour la réalisation de fonds d'écran ou de pochettes CD. Pour les pochettes CD, il n'était pas rare que l'équipe design ruse un peu en utilisant un dégradé de bleu et de positionner le logo de Fedora sur la partie claire. Mais pour le rendu d'un site web, il est plus délicat de s'assurer de la position du logo par rapport à la clarté du bleu du fond de page, suivant la taille de l'écran du visiteur.

Jacquette-F12.png

De par la composition du logo, un texte + la bulle avec le fameux F, il est difficile de centrer les éléments et de calculer les espacements entre les éléments, que ce soit pour un centrage vertical comme horizontal.

Enfin, la police choisie à l'époque souffre d'un défaut. Le a final ressemble trop à un o ce qui gêne bien entendu la communication.

Confusion possible

La bulle de Fedora avec son F ressemble trop au logo de Facebook. Si cela peut prêter à sourire, les logos étant quand même différents, il est en effet courant (pour l'avoir vécu comme d'autres ambassadeurs) que les personnes qui ne sont pas du milieu confondent les deux. Et en effet c'est une remarque apparemment récurrente depuis 2009/2010 quand le réseau social a commencé à se répandre.

Question de cohérence, pour la liberté !

Fedora se veut être une distribution libre. C'est un élément important du projet. Mais jusqu'ici la police choisie pour former le texte du logo n'était pas libre. C'est en effet la version 2005 de Bryant.

Cela était justifié car à l'époque il y avait assez peu de polices libres de qualité mais depuis les temps ont changé. Red Hat, Google et d'autres entreprises comme amateurs ont travaillé sur la question et le choix aujourd'hui est bien plus large.

Pour respecter donc les principes mêmes du projet, abandonner une police propriétaire semble évident.

Cheminement

Le travail a été amorcé suite à une discussion au sein du Conseil en octobre 2018. Qui a mené à l'ouverture d'un ticket auprès de l'équipe design.

Il y a eu pas mal d'essais et de réflexion en jouant sur le logo. Jouer sur le F, le symbole infini, sur la perspective ou encore en modifiant la bulle.

Pourquoi donner notre avis ?

Ce n'est pas une décision qui a été prise à la légère, changer un logo a un gros impact. Il faudra en effet changer toutes les référence de ce logo au fur et à mesure. Sur le site du projet, sur les sites non officiels mais liés à Fedora comme fedora-fr.org bien entendu.

Mais à cause de l'inertie du logo actuel, adopter le prochain prendra du temps. Que ce soit dans les sites d'actus, dans les goodies employés et distribués, sur les différents sites où Fedora est mentionné comme Wikipédia, etc. Il est donc impératif que ce changement ne donne pas lieu à un changement peu de temps après pour corriger certains éléments.

Et bien entendu il est important que la communauté de Fedora soit à l'aise avec ce nouveau logo. Pour que son adoption soit une réussite. Cela évite aussi que changement paraisse comme imposé par les dirigeants.

Cela donne quoi ?

L'équipe a proposé deux illustrations pour montrer les différentes déclinaisons du logo et donner un exemple d'usage.

Dans les deux cas, la police retenue est Confortaa de Google Fonts. Elle a été légèrement modifiée pour l'occasion.

Voici la proposition 1 :

Proposition1.png

Et la proposition 2 :

Proposition2.png

Qu'en pensez-vous ?

Gravatar de Renault
Original post of Renault.Votez pour ce billet sur Planet Libre.

Articles similaires

blog-libre : WordPress pour un blog personnel ?

Olivier Laurelli (aka Bluetouff) a publié un article de réflexion intéressant concernant WordPress sur le blog de Bearstech. Le nouvel éditeur Gutenberg de WordPress 5.0 divise mais il faut surtout se demander si on doit continuer d’utiliser WordPress.

WordPress est-il toujours pertinent comme solution pour un blog personnel ?

WordPress aujourd’hui

D’après Wikipédia en avril 2018 WordPress est utilisé par 30,6 % des sites web dans le monde, ses principaux concurrents sont à 3,1 % (Joomla) et à 2,1 % (Drupal). On peut dire qu’il règne sur le net : Sites institutionnels et commerciaux, blogs, milliers de plugins et de thèmes.

De mon point de vue pour un blog, il faut éviter ce genre de solutions. Après 4 ans à utiliser WP sur Blog Libre et depuis que je bosse chez un hébergeur web, je pense savoir pourquoi on le choisit et pourquoi on le quitte. WP tout le monde connaît ou a bossé dessus, c’est simple à prendre en main, la communauté et la doc est énorme, les plugins et thèmes foisonnants, on peut tout faire avec. Après quelques temps on se rend compte de pas mal de choses négatives : Les MAJ de WP/plugins/thèmes sont obligatoires, vraiment. WP restera encore de longues années comme LA cible de choix pour des attaquants. Les plugins et thèmes rajoutent des bugs et failles en pagaille. Au final WP est simple à prendre en main et peut tout faire malheureusement la simplicité est de façade, sécurité, performance et stabilité sont les parents pauvres de cette solution.

Un autre article intéressant publié sur WP Formation parle de sécuriser WordPress. Je voudrais souligner 2 points qui me paraissent importants. Contrairement à ce qu’on pourrait croire, ce n’est ni simple ni rapide de sécuriser WordPress (et de le maintenir sécurisé). Deuxièmement et c’est tout de même une immense blague, la plupart du temps pour sécuriser WP il s’agira de rajouter des plugins… qui eux-mêmes amèneront des bugs/failles et qu’il faudra maintenir à jour.

Les sites statiques

En 2019 il y a de nombreuses solutions en face de WP pour un blog personnel notamment Dotclear, Ghost, Grav, PluXml, les générateurs de site statique. Wix et Medium permettent rapidement et facilement de lancer un blog sans payer et sans avoir réellement à s’en occuper, on ne s’étendra pas dessus, ici on parle logiciel libre.

Pour un blog les générateurs de site statique me semblent être clairement le choix à considérer avant les autres :

  • StaticGen recense les générateurs de site statique, vous pourrez constater qu’il y a du choix
  • Hugo/Jekyll/Pelican/Next sont régulièrement mis à jour, ont déjà une solide base d’utilisateurs, de devs et de documentation
  • Le chargement des pages est beaucoup plus rapide sur un site statique, sa surface d’attaque est considérablement réduite, la plupart gère nativement le Markdown et s’intègre dans un workflow avec Git
  • Pas de base de données (MySQL/MariaDB) à gérer/sauvegarder, possibilité de pusher/versionner le contenu aisément sur un repository Git (GitHub et GitLab proposent la création d’un compte personnel gratuit) puis mettre en ligne gratuitement et facilement avec Netlify
  • On a la chance d’avoir une très bonne ressource en Français sur les sites statiques : Jamstatic

Sur Blog Libre nous sommes 4 blogueurs, plus de 500 articles au compteur pour 4 ans d’existence. 9 articles sur 10 ne sont constitués que de mots (aucune image ou vidéo), sur un blog l’écriture est la base. Je n’ai personnellement aucun regret d’être passé par WordPress mais tout comme c’était une quasi-évidence de commencer dessus, en 2019 c’en est une autre de le quitter. Je connais le mauvais calcul de beaucoup d’utilisateurs : On ne sait pas trop où on va partons sur le truc le plus gros et le plus façonnable. On se retrouve avec une solution qui s’adresse à un maximum de cas/utilisateurs, qui doit brasser large pour convenir à tous sans être optimale pour aucune catégorie d’utilisateurs. Quels sont vos besoins ? Prenez une solution en adéquation avec, elle sera logiquement plus adaptée. Un site statique ne nécessite aucune maintenance, la surface d’attaque est réduite au maximum, la plupart des solutions gère nativement le responsive design et propose des thèmes sympas, les performances sont excellentes, vous consommez moins de bande-passante. On peut espérer mieux pour un blog ?

Je vois deux gros points négatifs aux générateurs de site statique. On peut voir d’un mauvais œil l’utilisation préconisée de Git pour les pages de son site statique. On sera tous d’accord pour dire que Git a pignon sur rue et de nombreux avantages comme la gestion de versions, décentralisation, les Git Hooks, la possibilité de cloner son dépôt puis de bosser n’importe où en local. Cependant Git n’est pas à la portée de tous et ajoute de la complexité. Le deuxième point noir ce sont les besoins type commentaires, il y a 3 solutions qui sortent du lot : Isso, staticman, intégration des commentaires à la mano versionnés dans Git avec le site statique (1, 2). Évidemment vous pouvez vous passer de Git et des commentaires.

Je n’ai fait qu’effleurer le sujet des sites statiques, vous trouverez une meilleure introduction chez Lord sur Hugo (les thèmes pour info).

WordPress hégémonique ou solution adéquate

On doit se réjouir qu’un logiciel libre comme WP représente quasiment 1 site sur 3 sur le net mais ne pas oublier également que n’importe quelle solution hégémonique dans un écosystème est mauvaise pour la diversité, la concurrence et l’innovation. WordPress peut tout faire mais est-ce qu’il le fait bien ?

D’autres ressources autour des sites statiques :
Les générateurs de site Web statiques, et mon choix de Pelican
Passage à un système de blog statique
La mouvance statique
La hype statique ne fait que commencer

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Guillaume Vaillant : LDAP: déléguer l'authentificaiton à SASL

Suite du dernier artcile… 2 ans après. Pour plein de raison, je ne veux pas gérer les mots de passe de mes utilisateurs directement via le LDAP. Il existe des outils graphiques (comme ApacheDirectoryStudio) pour manipuler vite/bien/facilement un LDAP si on est allergique au LDIF, mais si on peut faire plus simple, et en limitant les intéractions avec les utilisateurs pour des problèmes idiots («j’ai oublié mon mot de passe suite à ma cuite d’hier soir»)…

Gravatar de Guillaume Vaillant
Original post of Guillaume Vaillant.Votez pour ce billet sur Planet Libre.

Morot : Mettre en forme du texte sous Bash

A chaque fois que je cherche à mettre du texte en forme pour mettre en valeur l’affichage de mes scripts sous bash je perds du temps retrouver mes petits. J’ai donc fini par faire ce petit script qui créé une palette facilitant le choix de la mise en forme.

Voici la sortie :

\\Users\\Julien\\Desktop\\bash-color-style-picker.png

Et pour le code :

#!/bin/bash

#man 4 console_codes

echo "### Colorisation ###"
for bg in {40..47} {100..107} 49 ; do
for fg in {30..37} {90..97} 39 ; do
echo -ne "\\e[${bg};${fg}m ${bg};${fg}\\e[${bg};${fg}m\\e[0m\\c"
done
echo ""
done
echo ""
echo "### Formattage ###"
echo ""
echo -e "\\e[0mNormal"
echo -e "\\e[1mGras\\e[0m"
echo -e "\\e[2mFaible\\e[0m"
echo -e "\\e[4mSouligné\\e[0m"
echo -e "\\e[5mClignotant\\e[0m"
echo -e "\\e[7mCouleurs inversées\\e[0m"
echo -e "\\e[8mMasqué\\e[0m"

exit 0

Gravatar de Morot
Original post of Morot.Votez pour ce billet sur Planet Libre.

Articles similaires

Full Circle Magazine FR : Bonne année !

Pour fêter le nouvel an, voici le numéro 140 du FCM en français ! Comme d'habitude, vous pouvez le télécharger ou le visionner sur notre page NUMÉROS ou le récupérer directement en cliquant sur l'image de couverture ci-dessous.

issue140fr.png

Vous n'avez jamais entendu parler de MilkyTracker ? C'est un programme musical dont le titre pourrait se traduire par PisteurLaiteux et avec lequel vous pouvez dessiner (oui, vous avez bien lu) votre propre musique !

Vous voulez essayer un hyperviseur ou, au moins apprendre ce que c'est ? En fait, comme vous verrez, l'Hyperviseur LXD est disponible dans les dépôts d'Ubuntu - le récupérer est aussi facile qu'un petit apt-get install.

Maintenant, en 2019, vous commencez à vous poser des questions sur les résultats du sondage FCM de 2018 ? Pas d'inquiétude, les réponses sont détaillées dans ce numéro.

Enfin, si un vrai jeu sous Python vous tente, vous serez emballé par la description de Unvisible, un jeu de cartes et de dés. En plus, comme il est écrit en Python, ceux qui connaissent bien le langage peuvent transformer le jeu - qui n'est pas terminé - à souhait...

Vous y trouverez tout cela et bien plus encore... Nous vous en souhaitons bonne lecture !

Ont participé à la traduction et la relecture du N° 140 : d52fr, qui, en plus, a créé le PDF avec Scribus - un grand merci, d52fr ! - et moi-même, AE

Gravatar de Full Circle Magazine FR
Original post of Full Circle Magazine FR.Votez pour ce billet sur Planet Libre.

Articles similaires

Miamondo : Un environnement de bureau tout en Python (acte II : le fond d’écran)

Bonjour, Après le premier épisode où je vous avais présenté le menu principal, me voici de retour! Et cette fois-ci, j'ai dans mon baluchon,  trois scripts qui génèrent : un fond d'écran avec une image fixe ou bien un fond d'écran choisi au hasard dans un répertoire et remplacé par un nouveau fond d'écran à... Lire la Suite →

Gravatar de Miamondo
Original post of Miamondo.Votez pour ce billet sur Planet Libre.

Articles similaires

genma : Secure-delete

Il y a quelques années, j'avais écrit un billet sur la commande Shred
Shred - effacer définitivement un fichier.

Mais cette commande ne permet que d'effacer des données de type ficher sur un disque dur mécanique. Pour aller plus loin, il existe un outil plus complet, secure-delete qui s'installe facilement

sudo apt-get install secure-delete

Et qui une fois installé apporte les commandes suivantes dans la ligne de commande (un terminal shell) :

-srm : Cette commande est utilisée pour supprimer des fichiers et des répertoires de votre disque dur. Un équivalent de Shred
-smem : un outil qui nettoie en toute sécurité la mémoire de l'ordinateur (RAM), qui peut contenir l'état des programmes en cours d'exécution ainsi que des données de programme sensibles, même après la mise hors tension de l'ordinateur. (pour contrer les attaques de type Cold boot).
-sfill : Efface toutes les données de l'espace libre sur votre disque. Pour s'assurer qu'il n'y a plus de fichiers récupérables sur le disque / la partition via des outils comme Photorec / TestDisk
-sswap : Efface toutes les données de la partition de swap.

On retrouvera toutes ces commandes sur un tutoriel en anglais Permanently Delete Files on Linux with Secure-Delete

A noter que le shred ne marche que pour des disques durs mécaniques (à plateau), les SSD étant à base de cellules, à part réduire prématurément la durée de vie du disque, l'effacement via écrire et écrire à différents endroits / différentes cellules et non effacer toujours le même espace comme c'est le cas d'un disque dur à l'ancienne. La solution pour les SSD est le chiffrement intégral du disque avec protection par phrase de passe pour protéger les données (qui sont vue comme du blob aléatoire si on ne déchiffre pas).

Et pour faire l'inverse, à savoir retrouver des données sur un disque dur, on pourra utiliser des outils comme TestDisk/Photorec ou
une distribution Linux spécialisée dans le forensic, Deft (analyse post-mortem, un peu ce que fait l'expert judiciaire Zythom)

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

dada : Nextcloud, PHP-FPM, Nginx et Kubernetes




Ma première installation de Nextcloud dans Kubernetes était basée sur l'image Docker contenant Apache2. Aucun souci notable au niveau de la synchro des agendas, des fichiers ou encore des contacts. Par contre, la génération des miniatures des photos s'est révélée être un drame : Apache s'emballait et entraînait le nœud sur lequel il tournait avec lui, dans la tombe. Il me fallait une solution, j'ai donc décidé de changer de conteneur et de prendre celui basé sur PHP-FPM.
Un pod avec deux conteneursOn entend souvent la rumeur racontant qu'un pod ne contient qu'un conteneur. C'est souvent vrai, mais c'est aussi faux. Dans l'exemple qui va suivre, le pod gérant Nextcloud contiendra le conteneur officiel de Nextcloud et un conteneur Nginx.ContextePour suivre, sachez que mon cluster, celui grâce auquel vous lisez ces quelques lignes, gère son système de fichier avec Rook, dont j'ai déjà parlé ici. Mes nœuds sont chez Hetzner, ce sont des CX21, du cloud public donc, et mes services sont exposés en NodePort derrière un Nginx configuré en LoadBalancer. Maintenant que vous savez ça, on peut y aller.
Le DeploymentOn va commencer par balancer le Yaml qui marche :
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nextcloud-deployment
spec:
  selector:
    matchLabels:
      app: nextcloud
  replicas: 1
  template:
    metadata:
      labels:
        app: nextcloud
    spec:
      containers:
      - name: nginx
        image: nginx:1.15
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: pv-nextcloud
          mountPath: /var/www/html
        lifecycle:
          postStart:
            exec:
             command: ["bin/sh", "-c", "mkdir -p /var/www/html"]
      - name: nextcloud
        image: nextcloud:14.0-fpm
        ports:
        - containerPort: 9000
        volumeMounts:
        - name: pv-nextcloud
          mountPath: /var/www/html
        resources:
          limits:
            cpu: "1"
      volumes:
      - name : nginx-config
        configMap:
           name: nginx-config
      - name: pv-nextcloud
        flexVolume:
          driver: ceph.rook.io/rook
          fsType: ceph
          options:
            fsName: myfs
            clusterNamespace: rook-ceph
            path: /nextcloud2

Il n'y a pas le Service associé pour la simple et bonne raison que chacun fait comme il le veut. Si vous êtes chez DigitalOcean, OVH ou chez un des GAFAM qui propose du k8s, vous aurez un LoadBalancer qui va bien. Si vous êtes comme moi, vous êtes réduit à faire du NodePort.

Ce qu'il faut comprendreVous remarquerez qu'il y a deux conteneurs : Nginx et Nextcloud-FPM. Nginx écoute sur le port 80 et va router le trafic à travers vers le port 9000 du conteneur de Nextcloud.
Nginx      - name: nginx
        image: nginx:1.15
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: pv-nextcloud
          mountPath: /var/www/html
        lifecycle:
          postStart:
            exec:
             command: ["bin/sh", "-c", "mkdir -p /var/www/html"]On va faire gober à Nginx deux points de montage : sa configuration et les sources de Nextcloud. Sans les sources de l'application, Nginx ne pourra pas avoir accès aux fichiers PHP, et ne servira donc à rien. On va donc prendre le point de montage originalement dédié à Nextcloud pour le monter une deuxième fois dans un deuxième conteneur, celui de Nginx.
LifecycleRemarquez la présence de la section lifecycle, elle permet d’exécuter ce que vous voulez au démarrage du conteneur. Quand j'apprenais à me servir de ce couple, je ne comprenais pas pourquoi Nginx ne voulait pas correctement fonctionner. J'ai passé du temps à comprendre que le conteneur Nginx et le conteneur Nextcloud n'avait pas le même docRoot :
  • Nginx : /srv/html
  • Nextcloud : /var/www/html
Comprenez que les requêtes Nginx allaient cherchez des fichiers dans /srv/html/blabla.php quand Nextcloud annonçait la présence de ses sources dans /var/www/html/blabla.php. Le bordel.
C'est là que je n'ai trouvé pas idiot l'idée de créer le chemin manquant au démarrage du pod avec un postStart. Du coup, j'avais Nginx et Nextcloud au diapason. Il est sans doute possible de configurer Nginx pour surcharger son docRoot, mais c'était l'occasion de jouer avec des commandes en amont de la création d'un conteneur.
Les deux points de montageOn a donc un point de montage pour les sources de Nextcloud :        - name: pv-nextcloud
          mountPath: /var/www/htmlEt un point de montage pour la configuration de Nginx :        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
Là aussi, j'ai perdu un peu de temps avant de comprendre qu'il fallait balancer toute la configuration de Nginx et pas seulement ce que j'ai l'habitude de mettre dans les sites-enabled. C'est du moins à faire quand on écrase le nginx.conf du pod. En y réfléchissant, c'est sans doute plus simple de modifier le point montage pour n'ajouter qu'un fichier dans le fameux sites-enabled.

Pour gérer la configuration de Nginx, je passe par une ConfigMap :kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
data:
  nginx.conf: |
    worker_processes  1;

    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;

    events {
        worker_connections  1024;
    }

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile        on;
        #tcp_nopush     on;

        keepalive_timeout  65;

        #gzip  on;

        server {
            listen 80;

            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;

            root /var/www/html;

            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }

            location = /.well-known/carddav {
                return 301 $scheme://$host/remote.php/dav;
            }
            location = /.well-known/caldav {
                return 301 $scheme://$host/remote.php/dav;
            }

            # set max upload size
            client_max_body_size 10G;
            fastcgi_buffers 64 4K;

            # Enable gzip but do not remove ETag headers
            gzip on;
            gzip_vary on;
            gzip_comp_level 4;
            gzip_min_length 256;
            gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
            gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

            location / {
                rewrite ^ /index.php$request_uri;
            }

            location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
                deny all;
            }
            location ~ ^/(?:\\.|autotest|occ|issue|indie|db_|console) {
                deny all;
            }

            location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\\.php(?:$|/) {
                fastcgi_split_path_info ^(.+\\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                # fastcgi_param HTTPS on;
                #Avoid sending the security headers twice
                fastcgi_param modHeadersAvailable true;
                fastcgi_param front_controller_active true;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;
            }

            location ~ ^/(?:updater|ocs-provider)(?:$|/) {
                try_files $uri/ =404;
                index index.php;
            }

            # Adding the cache control header for js and css files
            # Make sure it is BELOW the PHP block
            location ~ \\.(?:css|js|woff|svg|gif)$ {
                try_files $uri /index.php$request_uri;
                add_header Cache-Control "public, max-age=15778463";
                add_header X-Content-Type-Options nosniff;
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
                add_header X-Download-Options noopen;
                add_header X-Permitted-Cross-Domain-Policies none;
                add_header Referrer-Policy no-referrer;

                # Optional: Don't log access to assets
                access_log off;
            }

            location ~ \\.(?:png|html|ttf|ico|jpg|jpeg)$ {
                try_files $uri /index.php$request_uri;
                # Optional: Don't log access to other assets
                access_log off;
            }
        }

    }Eh oui, il y a tout dedans. Ça déforme l'affichage de ce billet, m'enfin. C'est une configuration Nginx classique.
On peut quand même s'arrêter sur la configuration du fastcgi_pass : il tape sur le 127.0.0.1 et le port 9000 du conteneur Nextcloud. Je n'ai pas encore gratté pour comprendre le pourquoi du comment mais je suppose que les deux conteneurs tournant dans le réseau du pod, ils se comportent comme deux services dans une seule et même machine. À confirmer.
On apply tout çaAttention ! Avant de balancer le Deployment, balancez le yaml de la ConfigMap. Sans ça, Nginx ne chargera pas votre configuration !dada@k8smaster1:~$ kubectl apply -f configmap.yaml
dada@k8smaster1:~$ kubectl apply -f nextcloud.yamlSi tout se passe bien, vous devriez pouvoir voir ça :dada@k8smaster1:~$ kubectl get pods
nextcloud-deployment-d6cbb8446-87ckf   2/2     Running   0          15hRemarquez que Kubernetes vous montre bien qu'il y a deux conteneurs dans ce pod : 2/2.
Pour aller plus loinJe ne parle pas des vérifications de l'état des conteneurs. Il faudrait placer des sondes liveness et readness pour parfaitement vérifier l'état des conteneurs. Sans ça, si l'un des services tombe, Kubernetes ne sera pas forcément en mesure de le détecter et de relancer le pod.Il est aussi possible, pour respecter le concept de micro-service, de ne pas concaténer deux conteneurs dans un seul pod mais de faire un pod par conteneur et des services associés. Ça demande plus de travail pour un résultat qui, dans mon cas, n'apporte pas grand chose.

Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #2

Pour la seconde semaine de l'année 2019, voici 14 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Pages