Sono dei templates engine, cioè semplificano la creazione del lato front-end di un sito web scrivendo codice simil-javascript. A quanto pare son tutti linguaggi compilati, quindi da evitare.
In debug mode:
DEBUG=app:* npm start
npm install
Aggiungere il path di npm e node prima di npm install
con:
export PATH=$PATH:/usr/local/node/bin/
export PATH=$PATH:/usr/local/npm/bin/
Bisogna connettersi ad una macchina di laboratorio, da cui ci si deve poi collegare a gocker usando il comando
ssh gocker.cs.unibo.it
La connessione al server remoto funziona utilizzando 2 container:
-
Un container che esegue il server mongo. la creazione e partenza del server avviene con
start mongo nome.cognome
che fornira' successivamente nome utente, password e host per connettersi a mongoDB
(password potrebbe non funzionare).per fermare il database bisogna usare il comando
stop mongo nome.cognome
-
Un container che esegue lo script node.js che gli viene fornito. Per crearlo si usa il comando
create node-15 nome.cognome path\to\app.js
notare che il path viene evalutato a partire da
home/web/nome.cognome/html/
.
Una volta creato bisogna farlo partire con il comandostart node-15 nome.cognome path\to\app.js
e da ora si possono osservare gli output dell'esecuzione usando il comando
logs nome.cognome
inoltre, se si fa qualche modifica allo script passato al container node, si puo' far ripartire il sito web usando
restart nome.cognome
Infine, l'uri da passare a mongoose/MongoClient per connettersi al server e':
mongodb://nome.cognome:password@mongo_nome.cognome:27017?writeConcern=majority
Esso permette di collegarsi solo al database test presente nel container mongo.
L'utilizzo di 2 container fa in modo che la porta 27017 per comunicare con il server sia accessibile solo da un altro container, nel nostro caso quello che sta eseguendo node.js Inoltre e' questo stesso script a contenere la entry point per potercisi connettere dal web, tale entry point e' obbligatoriamente la porta 8000.
- Prendere tutte le modifiche che son state fatte da experimental e next
git fetch
- Ti sposti nella branch da cui vuoi creare la tua nuova branch (assicurati che sia aggiornata con
git pull
prima dei prossimi comandi)
git checkout <branch_in_cui_spostarsi>
- Ti crei la propria branch locale per la tua task dalla branch
git checkout -b <nome_nuova_branch_locale>
- Ci fai tutte le modifiche etc con i vari commit necessari
git add .
git commit -m "Breve descrizione delle modifiche fatte"
- Provi a vedere se non c'è alcun conflitto con la branch su cui devi aggiungere il codice
git checkout <nome_branch_principale>
git rebase <nome_nuova_branch_locale>
- Risolvi i conflitti e vai avanti
git rebase --continue
- Una volta che è tutto a posto aggiungi le modifiche al remote
git push
-
Si crea la branch locale in cui si inizia la prima fase di testing da o experimental o next in modo tale da avere tutto sempre aggiornato (meglio next)
-
Sequenza di testing:
<branch_locale> -> (<branch_remote_task> ->) gocker_<tuo_nome> -> experimental -> next
-
Esemplificazione dello schema:
-
Prima si prova in locale (con localhost) usando la propria branch locale (<branch_locale>)
1bis. Se ci sono molte modifiche ed è prolungato il tempo di modifiche si può aggiungere la branch su remote 1tris. Ricordarsi di eliminare la branch in remote in modo da non intasare il remote -
Poi si testa le modifiche sul proprio gocker personale (gocker_<nome>)
-
Dopo si testa le modifiche sul gocker di gruppo per assicurarsi che sia a posto pure con le modifiche fatte dagli altri componenti del gruppo (experimental)
-
Infine quando tutto funziona perfettamente si aggiunge il tutto alla branch di partenza (next)
-
Se non avete bene idea su che fare inizialmente con il logger sul file logger.js
c'è un esemepio iniziale che viene usato anche per testare le sue funzionalità,
basta decommentare le varie righe.
In ogni caso il processo è molto semplice, basta importare il logger dal file
logger.js ed iniziare ad usare tale variabile con i propri metodi
const logger = require('./logger.js');
logger.info ('first test');
Ricordatevi che il file si può trovare in una posizione diversa quindi descrivere bene il path.
I vari metodi utilizzabili per il logger sono info
, warn
, debug
a cui si da
in input semplicemente una stringa o oggetto. Mentre trace
, fatal
, error
si
deve dare come parametro un Error
, quindi o si passa l'errore che si è appena proso
(catch
) oppure si crea un errore custom. Ecco due esempi:
logger.info ('first info');
logger.error (new Error('first error'));
try { nonExistentFunction(); } catch (err) { logger.fatal (err); }