{firstname:'Stéphane' , lastname : 'Michel', job: 'Software Craftsman'}
© Stéphane Michel
Lien vers des cheat sheet sur ES6 (à avoir sous la main)
Gestionnaire de sources incontournable.
A utiliser quelle que soit la taille du projet et le nombre de participant (même un seul !)
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
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
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 app.js
Installation
Utilisation
npm i nodemon
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. |
Une des principales BDD no SQL.
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
curl like tool
Disponible dans plusieurs langages : python, go et node.js
npm i -g npmstat
Excellent éditeur de code, gratuit, rapide, riche (plugin)..
Plugins quelques indispensables
Plugins quelques indispensables
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
Outil graphique (contrairement à curl qui est en ligne de commande) pour réaliser des appels d'URL.
Riche et bien conçu.
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.
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
Utilisation très simple
Résultat d'une attaque
Le module node helmet permet de régler une grande partie des failles détectés par ZAP
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