Outillage du développeur backend
{firstname:'Stéphane' , lastname : 'Michel', job: 'Software Craftsman'}
© Stéphane Michel
https://groupe-sii.github.io/cheat-sheets/es6/index.html
ES6 Cheat sheets • SSI

Lien vers des cheat sheet sur ES6 (à avoir sous la main)
https://groupe-sii.github.io/cheat-sheets/git/index.html
GIT Cheat sheets • SSI

Gestionnaire de sources incontournable.
A utiliser quelle que soit la taille du projet et le nombre de participant (même un seul !)
http://ndpsoftware.com/git-cheatsheet.html
GIT Cheat sheets (interactive) • NDP Software
https://www.bennadel.com/blog/3587-my-opinionated-git-cheat-sheet.htm#blog-post
My Opinionated git Cheat Sheet • Ben Nadel

Installation / configuration
Doc d'install par Delicious Insight, très bien faite
Fichier de configuration global à la racine du compte : gitconfig
[user]
name = Stephane Michel
email = smichel@sogitec.fr
[color]
# Enable colors in color-supporting terminals
ui = auto
[alias]
st = status
ci = commit
lg = log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'
oops = commit --amend --no-edit
review-local = "!git lg @{push}.."
[core]
whitespace = -trailing-space
[pull]
rebase = preserve # réalise un rebase par défaut au lieu d'un merge lors d'un pull (évite la création systématique d'un commit de merge)
Pour windows config du shell ici

Principes


Principes
- Working directory : Répertoire de travail. Vu comme un bac à sable. C’est là que les fichiers sont modifiés avant d’être éventuellement envoyés dans le stage avec un git add.
- Stage : Zone de préparation (aussi nommé « cache » ou « index »). Contient la liste des fichiers qui seront examinée lors du prochain git commit.
- Repository : Ensemble des commits réalisés. Le HEAD (état courant) pointe vers l’un d’eux. Le HEAD sera le parent du prochain commit. Les commandes git checkout (changement de branche) et git reset (annulation d’une modif) permettent de déplacer le HEAD.

sha1
Un commit regroupe un ensemble de modifications (dans un ou plusieurs fichiers).
La granularité est la modification, pas le fichier.
Chaque commit est identifié par un code alphanumérique appelé sha1
HEAD indique la branche (ou le commit) courant-e
Le sha1 permet de cibler un commit dans de nombreuses commandes git.


Quelques commandes indispensables 1/2
git help | Aide sur les commande git. Exemple : git help commit |
git init | Initialisation du projet. Le répertoire courant devient la racine du projet (un répertoire .git est créé). A faire en même temps que le npm init. |
git add myfile | Ajout dans le cache/stage du fichier myfile |
git add . | Ajout dans le cache/stage de tous les fichiers modifiés à partir le répertoire courant (scan les sous répertoires) |
git commit -m "Message commit" | Commit des fichiers présents dans le stage. Le message doit être cours mais parlant. |
git st | Etat des modifications (fichiers modifiés, fichiers dans le stage, nouveaux fichiers) Alias de git status |
git lg --all -10 | Affiche l'histo des derniers commit (ici 10) sur toutes les branches (--all). Alias du git log (voir slide précédent) |
git diff myfile | Affiche les différences entre le fichier local et sa version dans le dernier commit. |
git reset HEAD myfile | Enlève un fichier du stage (si un git add l'y avait mis par erreur) |
git stash | Prend toutes les modifs en cours et les met de côté temporairement. git stash pop : permet de retrouver les modifications du dernier stash réalisé |

Quelques commandes indispensables 2/2
git clone URI | Permet de télécharger en local un repository git complet. Exemple : git clone https://git.lolcatz.com/git/yolo.git |
git push referentiel branche | Sauvegarde les commits locaux dans le référentiel distant |
git pull referentiel branche | Récupère en local des commit présents dans le référentiel distant. Réalise un git fetch puis soit un git merge ou un git rebase (suivant la manière dont git est configuré) |
git fetch referentiel branche | Récupère les données du référentiel distant et les stockent dans le référentiel local. Mais ne modifie pas le workspace courant (pratique si l'on souhaite récupérer des sources distantes avant de se déconnecter du réseau et faire le merge plus tard dans le train...) |
git merge branche/sha1 | Réalise le merge (des commit ciblés par la branche ou le sha1) dans la branche locale. |
git branch maBranche | Permet de créer une branche au niveau du commit courant. Attention, ne se postionne pas dans la nouvelle branche créée. Pour cela il faut faire ensuite un git checkout maBranche. |
git checkout branch | Permet de changer de branche. |
git checkout myfile | Permet d'annuler les modifications locale d'un fichier en l'écrasant à partir du dernier commit. |

.gitignore
A la racine du projet, un fichier .gitignore contient la définition des sources qui ne doivent pas être prises en compte dans GIT.
Exemple : fichiers de compilation (dll, fichier temporaires, exe, etc.)
Pour générer automatiquement un .gitignore en fonction de la technologie de développement utilisée :
gitignore.io http://www.gitignore.io/



Customisation de son prompt pour GIT
http://overapi.com/nodejs
Node.js cheat sheets • overapi.com

https://nikgrozev.com/2017/01/22/node-js-cheatsheet-part-1/
Node.js cheat sheets [Part 1] • Nikolay Grozev • 22/01/2017 • Toute la chaîne depuis l'installation de node (avec nvm) jusqu'aux promesses en passant par le paramétrage babel.
https://github.com/LeCoupa/awesome-cheatsheets/blob/master/backend/node.js
Owesome cheat sheets • Julien Le Coupanec
Initialisation d'un projet avec express
express --view=pug myProject // pug remplace jade cd myProject npm i // téléchargement des modules git init // initialisation du projet git // creation .gitignore (via https://www.gitignore.io/) git add . // Ajout de tous les fichiers dans stage git commit -m "Initialisation"

nodemon

nodemon app.js
Installation
Utilisation
npm i nodemon
https://devhints.io/npm
npm cheat sheets • devhints.io

Node package manager
Installé avec node.js

Quelques commandes
npm init | Création d'un nouveau projet node dans le répertoire courant (à faire en même temps que le git init). Un fichier package.json est créé. |
npm i --save monmodule | Télécharge et installe monmodule dans les modules du projet (propriété "dependencies" de package.json). Alias de npm install --save monmodule. |
npm i --save-dev monmodule | Idem mais le module est associé à l'environnement de développement uniquement (propriété "devDependencies" de package.json). Exemple : modules du genre outils ou tests unitaire. |
npm i | Télécharge et install tous les modules déclarés dans le fichier package.json. Permet d'initialiser un projet node. |
npm i --production | Idem npm i mais se limite aux packages qui sont dans "dependencies" (et pas ceux de devDependencies) |
npm uninstall monmodule | Supprime le module monmodule du projet. |
npm update monmodule | Met à jour le module monmodule (la dernière version stable) |
npm list | Liste l'ensemble des modules et sous modules du projet. |
https://groupe-sii.github.io/cheat-sheets/mongodb/index.html
MongoDB Cheat sheets • SSI

MongoDB
Une des principales BDD no SQL.
https://github.com/tedyoung/curl-api-cheat-sheet/blob/master/cheat-sheet.pdf
curl Cheat sheets • Ted M. Young
https://curl.haxx.se/docs/manpage.html
curl man page • Daniel Stenberg

Outil en ligne de commande pour la manipulation d'URL.
Couvre l'ensemble du protocole HTTP(s).

Outil en ligne de commande pour la manipulation d'URL.
Couvre l'ensemble du protocole HTTP(s).
curl -i mon_URL
Requête de type GET avec affichage de l'entête
Requête de type POST avec envoi de données en JSON et affichage de l'entête
curl -i -X POST -H 'Content-Type: application/json' -d '{"login":"davidwalsh","password":"something"}' http://localhost:3000/v1/auth/login
https://www.npmjs.com/package/httpstat
httpstat • Yosuke FURUKAWA
curl like tool
httpstat
Disponible dans plusieurs langages : python, go et node.js

npm i -g npmstat
https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
Keyboard shortcuts for Windows • Microsoft

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf
Keyboard shortcuts for Linux • Microsoft
https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf
Keyboard shortcuts for MacOS • Microsoft



Excellent éditeur de code, gratuit, rapide, riche (plugin)..
Plugins quelques indispensables

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
ESLint • Dirk Baeumer • Vérification de code JS

https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
GitLens • Eric Amodio • Intégration de GIT dans l'éditeur


https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script
npm • egamma • Intégration de npm dans l'éditeur

https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
Prettier • Esben Petersen • Beautyfullage de code
Plugins quelques indispensables


https://marketplace.visualstudio.com/items?itemName=arjun.swagger-viewer
Swagger Viewer • Arjun G • Visualisation des fichiers swagger ou OpenAPI dans VSC. Attention : Supporte mal l'OpenAPI 3.0
https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced
Markdown Preview Enhanced • Yiyi Wang • Visualisation des fichiers markdown (exemple : readme.md de GitHub)


https://marketplace.visualstudio.com/items?itemName=zoellner.openapi-preview
OpenAPI Viewer • Andreas Zoellner • Visualisation des fichiers OpenAPI 3.0 dans VSC
eslint --init
? How would you like to configure ESLint? Answer questions about your style
? Which version of ECMAScript do you use? ES2015
? Are you using ES6 modules? Yes
? Where will your code run? Node
? Do you use CommonJS? Yes
? Do you use JSX? No
? What style of indentation do you use? Spaces
? What quotes do you use for strings? Single
? What line endings do you use? Unix
? Do you require semicolons? No
? What format do you want your config file to be in? JSON
Local ESLint installation not found.
The config that you've selected requires the following dependencies:
eslint@latest
Successfully created .eslintrc.json file in G:\dev\Projects\restfull1
ESLint was installed locally. We recommend using this local copy instead of your globally-installed copy.

Installation globale
npm i -g eslint
Initialisation



et
Faire cohabiter ESLint et Prettier dans VSCode
https://learning.getpostman.com/
Postman learning center • postman

Outil graphique (contrairement à curl qui est en ligne de commande) pour réaliser des appels d'URL.
Riche et bien conçu.
https://portswigger.net/burp
The burp Suite family • Portswigger
Outil de "hacker" pour réaliser de l'interception et de l'analyse de trafic.
Très utile pour analyser les requêtes entre le client et le serveur, plus plein d'outils inclus.
La version community est gratuite et déjà très riche.

https://httpd.apache.org/docs/current/programs/ab.html
Apache Bench tool • Apache Fundation
ab : Apache Bench tool

Outil d'injection / montée en charge en ligne de commande.
Simple, gratuit mais très efficace.
ab : Apache Bench tool

Usage: ab [options] [http[s]://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make at a time -t timelimit Seconds to max. to spend on benchmarking This implies -n 50000 -s timeout Seconds to max. wait for each response Default is 30 seconds -p postfile File containing data to POST. Remember also to set -T -u putfile File containing data to PUT. Remember also to set -T -T content-type Content-type header to use for POST/PUT data, eg. 'application/x-www-form-urlencoded' Default is 'text/plain' -v verbosity How much troubleshooting info to print -C attribute Add cookie, eg. 'Apache=1234'. (repeatable) -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) -V Print version number and exit -k Use HTTP KeepAlive feature -g filename Output collected data to gnuplot format file. -e filename Output CSV file with percentages served -r Don't exit on socket receive errors. -m method Method name -h Display usage information (this message)
...
La boite à outils pour la gestion des certificats (HTTPs dans notre cas).

Téléchargement
Teste la sécurité des serveurs Web

ZAP
Utilisation très simple

ZAP

Résultat d'une attaque

ZAP

Le module node helmet permet de régler une grande partie des failles détectés par ZAP
Markdown
Markdown Cheatsheet - Adam Pritchard - https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

La syntaxe markdown - Framasoft - https://docs.framasoft.org/fr/grav/markdown.html

Outillage du développeur backend
By steph michel
Outillage du développeur backend
Liste des outils utiles aux développeurs backend. URL de téléchargement, liste de cheat sheets, etc.
- 773