Termini e tecnologie

Database

Database Management System. Un Database è quindi un sistema che permette di salvare i dati (informazioni che il programma ha bisogno di salvare da qualche parte per poter funzionare). Il DB ci consente di fare le operazioni CRUD – Create – Read – Update – Delete. Utilizzando il sistema a tabelle.

Riepilogo:

Quando facciamo login su FB > richiesta HTTP al server > si attiva linguaggio backend (in questo caso Fb utilizza php) che chiede al DB tramite il linguaggio SQL, i dati relativi all’utente (questa operazione si chiama query = interrogazione) >  riceve una risposta e il linguaggio backend verifica che i dati inseriti siano corretti > risposta HTTP al client.

Database Relazionali (SQL):

SQL = Structured Query Language è un linguaggio (non di programmazione) di interrogazione per chiedere al database.

Esempio: immaginiamo un database di utenti. creiamo una tabella chiamata users. Ogni utente ha un ID cioè un codice identificativo, (chiave primaria) questi utenti possono creare dei post (creiamo tabella post) ogni post avrà un ID (chiave primaria) ma i post sono creati dagli utenti quindi c’è una relazione.

Questa relazione non è altro che un riferimento.

Relazione= riferimento es. user_post (chiave esterna)

Quindi possiamo dire che i ‘collegamenti tra le tabelle del DB  sono le relazioni’.

semplificando: SQL = relazioni tra tabelle.

Database Non Relazionali (NoSQL):

Not only SQL. Database NON SOLO SQL cioè che vanno oltre le relazioni tra tabelle.

4 famiglie di DB NoSQL:

  • Key-Value

Un DB dove abbiamo una tabella con due colonne: chiave e valore. Molto veloce in lettura perchè usa memoria RAM ovvero non salva nell’hard disk. Più famoso si chiama REDIS.

  • Wide-Column

Sono dei DB dove ci sono poche righe ma tante colonne. Molto lento. Utilizzato solo in settori particolari. Cassandra più famoso

  • a Grafo

Le relazioni vengono espresse con ‘cerchi’ chiamati vertici e frecce chiamate archi. Adatto ai social network. Perchè ci sono tante relazioni. Il più conosciuto è Neon4j.

  • a Documenti

organizzato con JSON. Può permettere di creare oggetti negli oggetti. Il database più famoso basato su oggetti è MongoDB.

Backend-Framework:

Backend classico > restituisce codici HTML. I classici siti internet.

Backend moderno > genera REST API che restituiscono dei file JSON.

Il framework è come una cassetta degli attrezzi.

Backend-Framework utilizzati nello sviluppo lato server. Quindi o stiamo creando un classico sito internet oppure delle REST API. I B-F ci offrono dei vantaggi:

  1. la Struttura:  organizzazione in cartelle. Tenere separati i file per destinazione d’uso, separare le entità dei codici. Questa suddivisione prende il nome di MVC.  Avremo quindi una cartella Model (dati = DB), View (vista = HTML), Controller (codici effettivi del linguaggio backend che stiamo usando).
  2. Routing = instradamento. Esempio un sito come google.it ha diverse pagine index, gmail, etc. queste sono delle rotte ti portano su diverse destinazioni. dal punto di vista del server possiamo gestire queste rotte per ogni rotta creando un file dentro al server. es index.html, gmail.php, page.jsp… Per ogni rotta c’è un file effettivo sul server questo concetto viene superato dai framework perchè creano una mappa dinamica gestita dal codice in base a GET e POST. Per esempio se atterro tramite chiamata GET sulla pagina login faccio visualizzare qualcosa come un form, quindi reindirizzo. Se invece ci arrivo tramite POST instraderò in un altro percorso, rotta.
  3. Template Engine = abbiamo detto che la cartella view è formata da soli file html. Potrebbe nascere esigenza di creare dinamicità all’interno delle viste. Esempio se devo stampare il nome utente nella pagina per mostrare chi è loggato in quel momento. Per farlo dovremmo passare delle variabili da controller a view. Ovvero da backend a file html, ma non è possibile farlo per non mischiare codici. visto molto male nella programmazione backend. Quindi si usano motori per potenziare codici html.
  4. Error Handling = i framework ti danno a disposizione strumenti per gestire al meglio gli errori.
  5. Permessi = Può capitare che alcune rotte sono solo per tipologie di utenti. Es. solo per utenti a pagamento, amministratori. Di solito i backend framework ti mettono a disposizione delle opzioni, strumenti per gestire permessi alle singole pagine.
  6. Test automatizzati

Rest API:

API Application Programming Interface. Un interfaccia per accedere ad un’ applicazione tramite la programmazione. Attenzione applicazione non deve farci pensare all’app per smartphone ma si intenrde il backend di un sito internet.

Quindi semplificando un modo per accedere a un sito tramite linguaggi di programmazione.

BACKEND CLASSICO: browser > server > restituisce html,css,js che i browser capiscono.

BACKEND MODERNO: Nuovi device come app native, smartwatch, frontend framework fanno comunque chiamate ai server MA non capiscono lo stesso linguaggio del browser. Hanno bisogno di codice JSON quindi esigenza di creare API. (Un url apposito per le API, Endpoint, che capiscono solo quelle applicazioni).

Dato che non possiamo quindi parlare di sito internet ma web services o servizi web. Semplificando ulteriormente sono un modo (interfaccia, url) per accedere a un web services tramite linguaggi di programmazione.

App native e ibride:

IDE e editor:

Stack:

Programmazione ad oggetti OOP:

GIT:

CMS:

Internet e HTTP

Internet:

La rete che contiene tutti i computer connessi tra loro nel mondo.

il world wide web è il servizio di internet che ci consente di navigare da una pagina all’altra.

Indirizzi IP e DNS:

Un numero che identifica la nostra connessione. Come dire la via, CAP e città della nostra abitazione. viene assegnato a tutti i dispositivi connessi a internet, dall’ISP internet service provider ( il tuo fornitore di internet).

Se sono collegato alla linea di casa, con due dispositivi diversi, questi avranno lo stesso IP.

I server sono computer ovviamente quindi anche i server hanno IP.

Il DNS Domain Name System è una lista di domini e IP.

Protocollo HTTP:

Un protocollo è un linguaggio. Ogni volta che facciamo un operazione dal browser come commentare, ricercare, cliccare su pulsanti, il browser fa una richiesta ad un server che ci invia una risposta. Quindi il 99% delle operazioni che facciamo sono tutti trasferimenti di informazioni. Ad ogni trasferimento stiamo usando il protocollo HTTP. Si parla quindi di richieste HTTP e risposte HTTP.

Browser:

Il browser si occupa di convertire, tradurre in qualcosa di visivo, le risposte HTTP del server che arrivano sotto forma di linguaggi come HTML, CSS e JS.

Sito Web:

Un sito web è composto da due parti, la parte dell’interfaccia front-end che possiamo vedere e la parte back-end che è all’interno del server. La parte front è formata da tre linguaggi HTML, CSS, JS, che il browser può interpretare. Quando cerchiamo di interrogarli tramite il sito internet vengono scaricati dal server al tuo pc.

Se interroghiamo invece i file di backend come php, (ad esempio facendo un operazione che implica un database) questi sono eseguiti all’interno del server.
esempio: se andiamo su google.it stiamo facendo una > chiamata http al server > il quale attiva i linguaggi di backend che generano > risposta http restituendo file html inviato verso il nostro computer. Quindi il server http resta in ascolto delle richieste del client.

App:

Come funzionano le App?

Funzionano come un sito web ma con le App abbiamo dei file di backend già installati nel client.

Necessitano di internet per funzionare quindi valgono gli stessi discorsi:

interazione con l’App >richiesta HTTP verso server > esegue codici lato server > risposta HTTP generando un JSON > attiva i file pre-installati

Metodi GET e POST:

Chiamata GET servono per ottenere delle informazioni. Ad esempio chiamata utilizzata quando utente naviga su motore di ricerca o cerca siti dal proprio Client ( Programma o parte di un programma (per es. un browser, smartphone, computer) che permette di scambiare dati con un server.

chiamata POST servono per inviare informazioni nascoste. Esempio faccio login con email e password

HTTPS e SSL:

è l’HTTP che funziona sopra il certificato SSL. La connessione tra client e server è protetta e viene criptata. abbiamo la certezza di parlare con il server giusto. Perchè i server vengono approvati.

es. abbiamo il classico http. ci logghiamo su qualche piattaforma. Se qualche malintenzionato fosse connesso alla nostra stessa rete internet o alla nostra stessa rete wi-fi, potrebbe accedere ai nostri dati perchè vengono inviati in chiaro. l’https invece cripta questi dati. Solo il client e il server vedrebbero in chiaro.

Dark Web e Deep Web:

Le basi

Computer:

Possiamo definire computer una qualsiasi macchina automatizzata programmabile in grado in grado di eseguire calcoli e elaborazione di dati.  I computer sono formati da due parti Hardware e Software. L’Hardware è composta da:

  • La CPU – chiamato anche processore
  • La MEMORIA – RAM e ROM
  • L’HARD DISK – dispositivo di archiviazione

La CPU è sempre in esecuzione. Continua a fare calcoli. il suo motore è il CORE. più core ha più calcoli alla volta può eseguire. La velocità di elaborazione della CPU è misurata in giga hertz GHz.

La memoria si divide in due parti. RAM e ROM. la parte che gestisce i programmi in esecuzione è la RAM. E’ definita volatile perché appena spegniamo il pc viene azzerata.

NB. La memoria RAM è MOLTO più veloce in lettura e scrittura rispetto a quella ROM che usa l’hard disk.

L’hard disk è una memoria permanente. I file rimangono dove li abbiamo messi alla riaccensione del computer.

Bit, byte, KB, MB :

Il BIT è l’unità di misura che utilizza il computer. Il computer capisce solo due numeri lo 0 e l’1. Questi due numeri 01 prendono il nome di BIT. I dati che la CPU può elaborare sono una combinazione di questi due valori. Si chiama sistema binario perché può avere appunto solo due valori. Per semlicità di lettura del codice i valori si raggruppano in 8. Per questo si parla di 8bit.

 ad esempio il valore 1 nel sistema binario si scrive: 00000001

il valore singolo ( 0 oppure 1) prende il nome di bit.

0 oppure 1 1 Bit
8 Bit 1 Byte
1024 Byte 1 kilobyte o KB
1024KB 1 Megabyte o MB
1024MB 1 Gigabyte o GB
1024GB 1 Terabyte o TB

Sistema Operativo:

L’hardware comunica in linguaggio binario. L’utente interagisce con la parte software non con il sistema binario. Quindi ll sistema operativo si occupa di mettere in comunicazione i HARDWARE e SOFTWARE, traduce i nostri input come i click in un linguaggio che l’hardware può comprendere.

Fino a qualche anno fa il sistema operativo era utilizzabile solo tramite terminale, una schermata nera e delle righe di comando. Successivamente grazie alla  GUI ( graphic user interface ) siamo arrivati alla visualizzazione a finestre a cui siamo abituati a pensare.

windows, ios, linux.

il sistema operativo creato da google , Android si basa su linux.

Linux è utilizzatissimo nei server.

 

Server:

E’ un computer sempre connesso a internet, i file all’interno dell’hard disk sono accessibili anche dall’esterno tramite un programma installato all’interno del server. Utilizza linguaggi di programmazione lato backend come php, java, ruby, python, node.js

Possono essere

Dominio, Hosting, Programmazione:

Un sito internet è formato da 3 parti. Un dominio, server e programmazione.

dominio : miosito.it

hosting: server

Tipi di server:

Condivisi – i più economici. condividiamo un server con un altro. Può rubarci la cpu

VPS virtual private server – lo stesso hardware diviso tra più utenti ma ci viene garantito un tot di memoria.

Dedicati – i più costosi

Cloud