diff --git a/articles/au-coin-du-feu/2018-08-09-zelda-breath-of-the-wild.md b/articles/au-coin-du-feu/2018-08-09-zelda-breath-of-the-wild.md deleted file mode 100644 index bdaf06f..0000000 --- a/articles/au-coin-du-feu/2018-08-09-zelda-breath-of-the-wild.md +++ /dev/null @@ -1,14 +0,0 @@ -Zelda: Breath of the Wild -========================= - -J'ai craqué sur le dernier Zelda. Avant cela, il a fallu passer à la caisse, parce que Zelda, c'est en fait les 60€ du jeu + les 320€ de la Switch + les 42€ pour Mario (je me suis concocté un pack perso :-)). - -Chronologiquement, j'ai épluché Link's Awakening sur GameBoy, j'ai torché la première moitié de A Link to the Past et j'ai terminé les deux épisodes sortis sur GameBoy Advance (Oracle of Seasons/Oracle of Ages). - -Quelques années plus tard, j'ai à nouveau reçu une piqûre de Zelda, qui m'intimait de passer à la caisse pour m'offrir une Switch. - -Concrètement, l'aventure démarre de manière similaire aux autres épisodes: on est à poil. -Après deux pas, c'est déjà différent: on peut s'habiller et on récupère une tablette (dans l'air du temps), qui fera office de mini-carte, d'appareil photo, d'inventaire, ... - -Vous vous rappelez des épisodes précédents ? Dans Link's Awakening, on récupère d'abord son bouclier avant d'aller chercher son épée sur la plage. -Dans Breath Of the Wild, on ... explore. Ici, pas de notion d'écologie et de réutilisation: après 30 minutes de jeu, on aura déjà explosé sa troisième épée, son premier boucler, on aura récupéré deux arcs à flèches, un premier pouvoir et un nouveau pantalon. Sans parler des herbes, pommes, petits lézards à cuire et morceaux de viande. C'est touffu. Vraiment. Les deux premières heures servent de tutoriel: on explore ses premiers donjons (qui excèdent rarement les 20 minutes d'exploration - et il y en a partout !), on récupère ses premiers pouvoirs (les bombes, la télékinésie, la cinétique et la congélation) et on peut (enfin!) aller trucider le gros méchant... Ou partir explorer les contrées, récupérer des plus gros pouvoirs, faire des quêtes, des mini-quêtes et des micro-quêtes, et passer des dizaines d'heures juste à contempler les décors et paysages. \ No newline at end of file diff --git a/articles/au-coin-du-feu/2019-03-11-zelda-breath-of-the-wild.md b/articles/au-coin-du-feu/2019-03-11-zelda-breath-of-the-wild.md new file mode 100644 index 0000000..08a8b7e --- /dev/null +++ b/articles/au-coin-du-feu/2019-03-11-zelda-breath-of-the-wild.md @@ -0,0 +1,24 @@ +Zelda: Breath of the Wild +========================= + +![](../../images/games/zelda-breath-of-the-wild.png) + +J'ai craqué sur le dernier Zelda. Avant cela, il a fallu passer à la caisse, parce que Zelda, c'est en fait les 60€ du jeu + les 320€ de la Switch + les 42€ pour Mario (je me suis concocté un pack perso :-)). + +Chronologiquement, j'ai épluché *Link's Awakening* sur GameBoy, j'ai torché la première moitié de *A Link to the Past*, j'ai bavé devant les screenshots d'*Ocarina Of Time* et j'ai terminé les deux épisodes sortis sur GameBoy Advance (Oracle of Seasons/Oracle of Ages). + +Quelques années plus tard, j'ai à nouveau reçu une piqûre de Zelda, qui m'intimait de passer à la caisse pour m'offrir une Switch. + +Concrètement, l'aventure démarre de manière similaire aux autres épisodes: on est à poil. + +Après deux pas, c'est déjà différent: on peut s'habiller et on récupère une tablette (c'est dans l'air du temps), qui fera office de mini-carte, d'appareil photo, d'inventaire, ... et qui remplace avantageusement la petite fée Navi d'*Ocarina Of Time*. + +Vous vous rappelez des épisodes précédents ? Dans Link's Awakening, on récupère d'abord son bouclier avant d'aller chercher son épée sur la plage. Dans Breath Of the Wild, on ... explore. Ici, pas de notion d'écologie et de réutilisation: après 30 minutes de jeu, on aura déjà explosé sa troisième épée, son premier bouclier, on aura récupéré deux arcs à flèches, un premier pouvoir et un nouveau pantalon. Sans parler des herbes, pommes, petits lézards à cuire et morceaux de viande. C'est touffu. Vraiment. Les deux premières heures servent de tutoriel: on explore ses premiers donjons (qui excèdent rarement les 20 minutes d'exploration - et il y en a partout !), on récupère ses premiers pouvoirs (les bombes, la télékinésie, la cinétique et la congélation) et on peut (enfin!) aller trucider le gros méchant... Ou partir explorer les contrées, récupérer des plus gros pouvoirs, faire des quêtes, des mini-quêtes et des micro-quêtes, et passer des dizaines d'heures juste à contempler les décors et paysages. + +En fait, c'est un jeu pour papa occupé; quelle que soit la durée de la session de jeu, on y sera constamment récompensé. On peut y jouer 10 minutes, comme démarrer une partie de 2h et on trouvera toujours quelque chose à y faire. Une nouvelle montagne inexplorée ? Il y a sans doute un korogu qui y est planqué. Un lac en forme de crâne ? Il s'y trouvera sûrement un personnage hétéroclite. Un labyrinthe ? Il y a sans doute un donjon au bout. Un grand champ bourré de cadavres de Gardiens ? Zou! Des objets par dizaines ! Et en parlant des objets à chercher/trouver, la partie "cuisine" est rarement rébarbative: on trouve beaucoup d'éléments rien qu'en se promenant, et beaucoup de recettes se complètent: coeurs, endurances, rapidité, ... A vous de composer vos plats. + +Vers la fin du jeu, les ennemis posent de moins en moins de problèmes, et on peut remarquer un petit air de déjà-vu... Mais après 70 ou 80h de jeu, qui s'en plaidra ? + +Bref, il m'aura fallu près de 8 mois pour venir à bout du premier *run* (sans être réellement assidu...) - et rien que pour Zelda, la Switch vaut *clairement* le co{ût|up}. + +:-) \ No newline at end of file diff --git a/articles/dev/2019-01-09-build-apis-you-wont-hate.md b/articles/dev/2019-01-09-build-apis-you-wont-hate.md new file mode 100644 index 0000000..8b39d3d --- /dev/null +++ b/articles/dev/2019-01-09-build-apis-you-wont-hate.md @@ -0,0 +1,107 @@ +Build APIs You Won't Hate +========================= + +* **Stocker les timezones, pas les offsets**. De cette manière, on ne dépend pas des différents calculs de zones, ni des zones pourries comme les îles Chatham qui passent en UTC/GMT+13h45 en été. +* En règle générale, le verbe **PUT** est utilisé si on connait l'entièreté de l'URL et que l'action est idempotente (*on peut l'exécuter autant de fois qu'on le souhaite, le résultat sera toujours identique*). +* Utilisez des dénominations plurielles. Cela permet par exemple d'envoyer un **GET** vers l'URL `/places/1` ou `/places/1,2`. Cela permet de conserver une cohérence. +* Tout doit être une ressource, et chaque ressource doit avoir un contrôleur. +* On ne passe pas du JSON dans les paramètres d'une URL ! Ca fait moche: `checkin[place_id]=1&checkin[message]=This is a bunch of text&checkin[with_friends]=1...`. + +## Structure des réponses + +Soit on envoie tout dans une structure pluralisée (même s'il n'y a qu'un seul résultat): + +```json +{ + "posts": [{ + "id": 1, + "title": "Zen of Python" + }] +} +``` + +Soit on envoie le résultat concerné par la réponse (un objet ou une liste d'objets) - c'est l'approche minimaliste conseillée par Twitter: + +```json +{ + "name": "Hulk Hogan", + "id": "10002" +} + +[ + { + "name": "Hulk Hogan", + "id": "10002" + }, + { + "name": "Mick Foley", + "id": "10003" + } +] +``` + +Soit on embarque les collections dans une propriété `data` (Facebook-style): + +```json +{ + "name": "Hulk Hogan", + "id": "10002" +} + +{ + "data": [ + { + "name": "Hulk Hogan", + "id": "10002" + }, + { + "name": "Mick Foley", + "id": "10003" + } + ] +} +``` + +Soit on ajoute par défaut un namespace sur le résultat de retour: + +```json +{ + "data": { + "name": "Hulk Hogan", + "id": "10002" + } +} + +{ + "data": [ + { + "name": "Hulk Hogan", + "id": "10002" + }, + { + "name": "Mick Foley", + "id": "10003" + } + ] +} +``` + +L'avantage de cette dernière proposition est que chaque résultat est wrappé dans une propriété `data` (même les sous-propriétés). En gros, on devrait pouvoir faire profiter de pagination, des liens, ... à n'importe quel niveau de l'API. + +Voir aussi [JSON-API](https://jsonapi.org/). + +## Codes de retour + +* 2XX pour les trucs OK +* 3XX pour les redirections +* 4XX pour les erreurs côtés clients +* 5XX pour les erreurs côtés serveur/service. + +## Tests des points de terminaison + +En plus des tests unitaires, on peut envisager du BDD - *Behavior Driven Development* - notamment avec [Cucumber](https://cucumber.io/). + +## Les librairies à garder en mémoire + +* [Cucumber](https://cucumber.io/) +* [Marshmallow](https://github.com/marshmallow-code/marshmallow) diff --git a/articles/en cuisine/2018-12-27-lessive-diy.md b/articles/en cuisine/2018-12-27-lessive-diy.md new file mode 100644 index 0000000..5884a63 --- /dev/null +++ b/articles/en cuisine/2018-12-27-lessive-diy.md @@ -0,0 +1,23 @@ +Lessive DIY +=========== + +## Ingrédients + +* 3 litres d'eau +* 3 cs rases de cristaux de soude +* 30g de savon de Marseille en pailettes +* 90g de savon noir liquide +* Quelques gouttes d'huiles essentielles (qui sentent bon... menthe, citron, lavance, ...) + +## Préparation pour 1L de lessive + +1. Dans une cocotte, mettre tous les ingrédients sauf l'HE et porter à ébullition +2. Verser la préparation dans des vieilles bouteilles de lessive lorsqu'elle est tiède (mais pas encore froide) +3. Secouer avant chaque utilisation et mettre l'équivalent d'un verre à moutarde directement sur le linge. + +## Les plus + +1. Pour un linge plus blanc, on peut verser 1cs de percarbonate directement sur le linge +2. Mettre du vinaigre blanc dans le bac adoucissant, pour préserver les couleurs du linge et prévenir du tartre dans la machine (**Attention!** Le vinaigre altère les élastiques des couches lavables et de la lingerie fine) +3. Pour le linge vraiment très sale, il est conseillé de faire tremper dans de l'eau bouillante avec 1cs de percarbonate pendant une nuit. Ou prélaver les taches avec du savon noir. +4. Pour les taches de vin, chocolat, ... ou sur des supports non lavables, saupoudrz de la terre de Sommières et laisser sécher. Une fois la poudre sèche, on l'enlève avec un aspirateur. \ No newline at end of file diff --git a/articles/securité+intimité/gafam/amazon.md b/articles/securité+intimité/gafam/amazon.md new file mode 100644 index 0000000..d84b25c --- /dev/null +++ b/articles/securité+intimité/gafam/amazon.md @@ -0,0 +1,4 @@ +[Amazon préfère détruire des invendus](http://www.lefigaro.fr/flash-eco/2019/01/14/97002-20190114FILWWW00013-brune-poirson-condamne-les-pratiques-d-amazon.php) + +La société de consommation par excellence... On produit (donc, on utilise des ressources) des choses qui ne sont pas vendues et qu'on préfère détruire que de donner. +N'y aurait-il pas un problème à la source ? \ No newline at end of file diff --git a/articles/securité+intimité/gafam/facebook.md b/articles/securité+intimité/gafam/facebook.md index ea2d205..b109b04 100644 --- a/articles/securité+intimité/gafam/facebook.md +++ b/articles/securité+intimité/gafam/facebook.md @@ -9,4 +9,8 @@ > [Facebook Security Breach Exposes Accounts of 50 Million Users](https://www.nytimes.com/2018/09/28/technology/facebook-hack-data-breach.html) Objectif des vidéos qui démarrent toutes seules: provoquer une addiction. -Fabrication de la dopamine à répétition. \ No newline at end of file +Fabrication de la dopamine à répétition. + +> [14 years of Mark Zuckerberg saying sorry, not sorry](https://www.washingtonpost.com/graphics/2018/business/facebook-zuckerberg-apologies/?noredirect=on&utm_term=.c8d7c8366bd9) + +> 18/12/2018 - [Facebook shared private user data with other big corporations without the user's consent, of course](https://www.nytimes.com/2018/12/18/technology/facebook-privacy.html). Voir aussi [ici](https://edition.cnn.com/2018/12/14/tech/facebook-private-photos-exposed-bug/index.html). \ No newline at end of file diff --git a/articles/securité+intimité/gafam/microsoft.md b/articles/securité+intimité/gafam/microsoft.md index 8d58824..e8a3ad4 100644 --- a/articles/securité+intimité/gafam/microsoft.md +++ b/articles/securité+intimité/gafam/microsoft.md @@ -1 +1,6 @@ -> [Les recommandations pour diminuer la collecte d'informations dans Windows 10](https://www.ssi.gouv.fr/entreprise/guide/restreindre-la-collecte-de-donnees-sous-windows-10/) \ No newline at end of file +> [Les recommandations pour diminuer la collecte d'informations dans Windows 10](https://www.ssi.gouv.fr/entreprise/guide/restreindre-la-collecte-de-donnees-sous-windows-10/) + +LinkedIn +--------- + +* 2018-11-24 [LinkedIn violated data protection by using 18M email addresses of non-members to buy targeted ads on Facebook](https://techcrunch.com/2018/11/24/linkedin-ireland-data-protection/) \ No newline at end of file diff --git a/articles/sys/borgbackup.md b/articles/sys/borgbackup.md index 6ac338a..667e00f 100644 --- a/articles/sys/borgbackup.md +++ b/articles/sys/borgbackup.md @@ -14,3 +14,4 @@ borg prune -v --list --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /re Puis, pour créer un snapshot, on passe par borg create. +Pour avoir une partie graphique, voir du côté de [Vorta](https://github.com/borgbase/vorta). \ No newline at end of file diff --git a/images/games/zelda-breath-of-the-wild.png b/images/games/zelda-breath-of-the-wild.png new file mode 100644 index 0000000..106ddc2 Binary files /dev/null and b/images/games/zelda-breath-of-the-wild.png differ diff --git a/results/bikes/victoria.xlsx b/results/bikes/victoria.xlsx index 22c93ee..66dc2eb 100644 Binary files a/results/bikes/victoria.xlsx and b/results/bikes/victoria.xlsx differ