Une autre tentative de framework fullstack mais cette fois en utilisant un langage de haut niveau pour décrire une application.
Le "compilateur" Wasp (plutôt un générateur) va ensuite générer le code backend (Node.js), frontend (React) et le modèle de données (Prisma ORM).
C'est intéressant comme démarche mais à priori je vois deux limitations importantes:
- introduction d'un nouveau langage dans la stack (qui plus est un langage peu mature)
- manque de personnalisation du code généré (pour aller au delà du CRUD quoi)
Ça ressemble à ça le WASP:
// file: main.wasp
app TodoApp {
title: "Todo App"
}
route RootRoute { path: "/", to: MainPage }
page MainPage {
component: import Main from "@ext/pages/Main.js" // Importing React component.
}
query getTasks {
fn: import { getTasks } from "@ext/queries.js", // Importing NodeJS code.
entities: [Task]
}
entity Task {=psl
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
psl=}
Liste de builtin Bash et comment les utiliser
Celle que je retiens à force d'en avoir besoin:
# Positional arguments
$0 $1 $2 ...
# All arguments as an array
$@
# Return code of the last command
$?
# Print each script line as it is executed (debug)
set -x
# Exit the script immediately if a command return an error (CI/CD)
set -e
Tim Berners-Lee flingue le Web3 qui promeut la décentralisation à base de blockchain.
Selon lui "cette nouvelle itération du Web était inutile".
C'est un peu hypocrite de sa part après avoir vendu un soi disant NFT à plusieurs millions d'euro mais au moins ça donne un autre son de cloche que celui des ayatollah de la blockchain qui veulent "révolutionner" le monde.
Non, la blockchain ne va pas décentraliser internet et la blockchain ne va pas remplacer le système bancaire
Excellent article de NextInpact sur l'utilisation de Strada (le réseau social sportif) et des traces GPS des utilisateurs pour identifier le personnel des services de renseignements, et même de désanonymiser certains profils !
C'est un très bon exemple d'OSINT (Open Source Intelligence), une discipline qui consiste à collecter du renseignement depuis des sources publiques.
PS: si vous n'avez pas d'abonnement sur ce média indépendant alors il suffit d'attendre quelques jours pour que l'article soit disponible.
Pas de pub, pas de trackers, pas d'actionnaires, NextInpact est un des derniers média indépendants High Tech de qualité et ils ont besoin de soutien!
Un article de Ploum sur la connexion constante aux flux d'informations de notre société
Des questions très intéressantes à demander en entretien d'embauche.
Le but est de déterminer si l'entreprise à un produit pérenne, une stratégie de vente qui tient la route et une culture tech acceptable.
Quelques exemples:
- Votre produit a t-il trouvé son marché ?
- À quelle vitesse "brûlez" vous votre argent ? Quand pensez-vous atteindre la rentabilité ?
- Quel est le turnover ? Comment faites vous pour garder vos employés ?
Collection d'avis (réels ou pas) sur Jira 🙈
Excellente bande dessinée sur la diabolisation d'une partie de la gauche sous l'étiquette "extrême gauche" par LREM en opposition avec l'extrême droite qui lui est préférée.
Enfaîte c'est plutôt la droite qui rejoint l'extrême droite, naturellement.
L'histoire dingue d'un mec qui a été payé pendant des années à écrire des faux articles de presse commandés par des lobbies dans le but d'influencer la population en fonction de leurs intérêts.
Des exercices pour progresser avec l'utilisation des types en TypeScript !
Grâce aux corrections c'est aussi une très bonne source d'informations pour résoudre des problèmes de définition de types 🔥
Earthly est un framework pour définir ses jobs de CI.
On écrit le job dans une syntax qui ressemble à un Dockerfile et ensuite on peut l'exécuter dans une CI (Github, Gitlab, Jenkins, etc) mais aussi sur sa machine en dev !
Ça permet de tester le fonctionnement des étapes de CI en local donc énormément de temps gagné lors de la mise en place.
# Earthfile
VERSION 0.6
FROM golang:1.15-alpine3.13
RUN apk --update --no-cache add git
WORKDIR /go-example
all:
BUILD +lint
BUILD +docker
build:
COPY main.go .
RUN go build -o build/go-example main.go
SAVE ARTIFACT build/go-example AS LOCAL build/go-example
lint:
RUN go get golang.org/x/lint/golint
COPY main.go .
RUN golint -set_exit_status ./...
Puis dans la CI où en local: earthly +all
Une awesome liste de moteurs de recherche et autres ressources liées à la sécurité informatique et la recherche d'informations sur une cible.
Mon best-of:
- Virus Total excellent antivirus en ligne
- Have I Been Pwned savoir si votre adresse e-mail a été compromise et surtout par qui
- Spy On Web identifier des domaines liés entre eux, notamment via les trackers (l'arroseur arrosé 😉)
- That's Them annuaire inversé pour téléphones et e-mails
- Exploit DB chercher un exploit pour une version spécifique d'un logiciel
- Shodan basé de données de TOUS les services exposés sur internet
Decathlon à organisé un live bug bounty, cela s'apparente à une compétition type hackaton mais dont le but est de trouver des failles de sécurité.
A priori cela a porté ses fruits car entre autre une RCE (Remote Code Execution, une faille parmi les plus critique) et une injection SQL ont été découvertes.
La cible était la plate-forme e-commerce réalisée avec Prestashop.
Amazon annonce une alternative à Copilot (Github/Microsoft).
Il y a fort à parier que leur IA a aussi été entraînée avec le code open source sur Github.
A noter que Github Copilot est maintenant payant (10$/mois)
Les Service Workers ne vont pas magiquement améliorer les performances d'une application notamment car l'envoi de données entre les processus (postMessage
) est relativement lente comme tous les autres mécanismes d'Inter Process Communication (IPC)
En général pour faire des calculs intensifs il est préférable de le faire durant le temps restant après que le navigateur ait terminé le rendu d'une frame de la page Web avec requestIdleCallback
Un meta article qui résume pleins de choses sur les Service Workers des navigateurs.
Très bon explication sur les différences entre les Map
et les POJO en Javascript.
En substance:
- utilisez les POJO lorsque le nombre de clé est connu d'avance et en tant que Data Transfer Object (DTO)
- utilisez les
Map
pour tout ce qui s'apparente à un cache RAM et nécessite des insertions/deletions arbitraires
Lorsqu'elle sont bien utilisées, les Map
auront une meilleure performance, utilisent moins de RAM et offre une meilleure API plus complète POJO (e.g. Map.clear
) au prix d'une perte en DX (e.g. initialisation, spread operator)
Un article très complet sur le fonctionnement des lexer / parser de v8 (Chrome, Node.js) et SpiderMonkey (Firefox)
On comprend notamment que v8 se "plie" aux conventions des outils de minification du code ou encore que le point virgule est bien nécessaire ;-)
Un article très complet sur l'utilisation de AbortController
pour annuler des requêtes réseau en cours notamment.
Je ne savais pas qu'il était aussi possible d'arrêter un listener de cette manière ! C'est pratique car il n'y a pas besoin de garder une référence sur la callback.
const controller = new AbortController();
const { signal } = controller;
window.addEventListener('resize', () => doSomething(), { signal });
// later
controller.abort();
Un runtime Javascript (comme v8 qui est utilisé dans Chrome et Node.js) qui utilise seulement 8.5 Ko d'espace disque et minimum 34 octets de RAM!
Le but est d'utiliser du Javascript dans des micro contrôleurs qui pour la plupart ont 64 Ko de disque et 2 Ko de RAM.
L'auteur défend son projet avec notamment l'argument du single thread de javascript qui consomme moins de ressources que le multi thread.
On peut aussi ajouter qu'il est nettement plus simple et maintenable d'écrire du JS à mémoire managé que du C.