Un réseau anonymisant comme Tor mais qui va plus loin en
- mélangeant les paquets de tous le monde entre les noeuds
- ajoutant des délais pour lutter contre les timing attaque
- injectant du faux traffic
Surtout la grosse différence est la rétribution des nœuds via une cryptomonnaie. En gros on doit payer pour faire passer du traffic anonymisé et en échanges les nœuds sont rémunérés.
Très bonne explication des différences entre Nested fields et Object fields pour stocker des tableaux d'objets avec Elasticsearch.
Si on souhaite faire des recherches sur plusieurs propriétés contenues dans ces tableaux, alors on devra utiliser le type nested
car sinon ES "applatit" les champs.
{
"authors": [
{ "name": "Gustavo Llermaly", "age": "32", "country": "Chile" },
{ "name": "John Doe", "age": "20", "country": "USA" }
]
}
Sans préciser le type nested
, cela sera indexé de cette manière:
{
"authors.name": ["Gustavo Llermaly", "John Doe"],
"authors.age": [32, 20],
"authors.country": ["Chile, USA"]
}
Un retour de Buffer sur la semaine de 4 jours.
Buffer est une des boites "à la pointe" du bien être au travail et des méthodes de travail async/remote.
Ils ont mis ça en place petit à petit avec un essai sur 1 mois puis sur 6 mois.
Au final il n'y a pas eu de baisse de productivité manifeste mais par contre les employés se sentent beaucoup mieux.
Une vidéo sur l'attaque qu'à subit Google en 2009 et qui venait apparement du gouvernement Chinois dans le but de récupérer les comptes Gmail d'activistes.
Pas beaucoup de détails techniques malheureusement.
Sinon à la fin ça fait un peu trop les gentils Google qui nous protègent des méchants espions venant d'autres gouvernements alors que le gouvernement US est en capacité de siphonner la totalité des données de Google.
Un site qui permet d'avoir un fond avec effet Matrix :D
Le classique: https://rezmason.github.io/matrix/?width=50&fallSpeed=0.1
Version 3D: https://rezmason.github.io/matrix/?width=50&fallSpeed=0.1&version=3d
Slack ont une utilisation intensive de Terraform (infrastructure as code)
Comme beaucoup de monde, ils stockent les state Terraform dans S3.
Je suis par contre surpris de voir Jenkins en CI!
Dans l'article ils parlent de leur gestion:
- des versions de Terraform
- des modules via un catalogue maison
- des tests
Il est illégal d'utiliser les Google Fonts en Europe et ça a été confirmé par une décision de justice en Allemagne !
Une excellente explication du fonctionnement de Mastodon et des autres application fédérés comme PeerTube.
Contrairement à ce que raconte les ayatollah de la blockchain, le web 3.0 (et non pas web3) est bien dans ce genre d'alternatives et non dans la re-centralisation dans des blockchains et la monetisation de l'ensemble des transactions.
Rome est un outil pour Javascript/Typescript qui sert de linter, formatter, bundler et test runner.
En gros ça remplace Eslint, Prettier, Webpack, Babel et Jest.
C'est écrit en Rust et beaucoup plus performant que les outils JS.
L'autre avantage est de n'avoir qu'un outil binaire plutôt que des centaines de dépendances et des centaines de méga-octets dans le dossier node_modules.
(Via Ludo)
Un outil open source basé sur l'algorithme Demucs de Facebook pour isoler n'importe quelle partie d'un instrument de musique !
Génial pour s'entraîner sur ses morceaux préférés 😄
Happy Birthday, Go!
13 ans déjà, le langage est beaucoup plus mature aujourd'hui et même si il n'a pas pris la place du C comme langage pour la programmation système (c'est plutôt Rust qui est en passe de le faire), Golang reste un des langage majoritaire dans les outils d'infrastructure aujourd'hui.
Kubernetes, Terraform, Traefik et de nombreux autres outils très populaires son écrit en Golang.
Une feature intéressante que je ne connaissais pas, le fuzzing intégré au langage pour tester le comportement de son programme avec des milliers d'inputs aléatoires !
L'un des membre de l'équipe du ransomware LockBit aurait été arrêté par le Department of Justice, aux USA donc.
Il aurait entre autre été identifié via des transactions réalisées en Bitcoin.
LockBit est un Ransomware as a Service, c-a-d que les créateurs sont rémunérés lorsque d'autre pirates réussissent à soutirer des rançon en piratant des entreprises avec LockBit.
Un article qui explique pas à pas le fonctionnement d'une base de données relationnelle.
Il utilise l'algèbre relationnel pour décrire chaque opération.
Dans une DB relationnelle, chaque ligne peut-être considérée comme un vecteur à N dimensions (les dimensions sont les colonnes).
"Adrien", 29, "Minsk" est un vecteur à 3 dimension (nom, age, ville) qui représente une personne.
A partir du la on peut dérouler toutes les opérations comme la projection (SELECT), la selection (WHERE), le produit vectoriel (JOIN)
Ça devait arrivé, Copilot propose parfois en suggestion du code sous licence.
Ici un développeur s'en est rendu compte et Microsoft est attaqué en justic pour non respect des licences.
Une base de données pee-to-peer, c-a-d qui permet de communiquer avec d'autres clients pour se synchroniser sur l'état commun partagé.
ça m'a l'air plutôt compliqué à gérer, surtout avec des clients malicieux mais par contre le côté offline first est toujours bon à prendre :-)
(Merci Pierre pour le partage)
Une usurpation d'identité 100% online via un crack de mot de passe email et un changement d'opérateur téléphonique, ça fait peur!
Des statistiques sur les attaques informatiques réalisées depuis plus de 20 ans.
On y voit l'évolution des types d'attaques mais aussi l'évolution du type de cible.
Un manifest qui va dans le sens du KISS (Keep It Simple, Stupid)
Mes préférés:
Synthesis is the key of communication. We have to write code for humans not machines.
Keep it plain. Try to keep your designs with few layers of indirection.
Une explication très clair du fonctionnement des executions asynchrones avec Node.js.
La plupart des opérations de type I/O (lire un fichier, faire une requête http, etc) sont réalisées en parallèle du reste du code dans une pool de thread gérée par la libuv.
Cela permet de ne pas bloquer le thread principal en attendant le retour d'une requête HTTP (qui est très long comparé à executer du code ou récupérer une donnée en RAM)
(Merci Ludo pour le partage)
De bon conseils pour créer des types, notamment des union types pour être sur de manipuler des objets correctes.
Plutôt que de faire ça
type Event = {
name: 'CREATE' | 'DELETE';
id?: string;
content?: string;
}
Faites plutôt:
type EventCreate = {
name: 'CREATE';
content: string;
}
type EventDelete = {
name: 'DELETE';
id: string;
}
type Event = EventCreate | EventDelete;