Laravel
- Laravel è un framework php che si interfaccia con i database
- In Laravel, e in php, il COMPOSER è uno standard che gestisce le dipendenze
php
- In Laravel, il CONTROLLER è una classe che presenta diversi metodi pubblici da
associare all'URL tramite rotte
- In Laravel, il ROUTING è un sistema di mapping tra URL e funzionalità offerte
dall'applicazione
- Le VISTE rappresentano il componente di Laravel che si occupa di definire la
struttura della pagina HTML
- I MIDDLEWARE rappresentano i componenti dell'applicazione web che
fungono da filtri e per le chiamate http
- MIGRATION è il versioning del data base, ovvero la raccolta di tutte le versioni
del db
- ELOQUENT è un ORM che favorisce l'integrazione di sistemi software aderenti
al paradigma della programmazione orientata agli oggetti con sistemi RDBMS
- Il PATTERN FACADE di Laravel facilita la creazione del facade object che
fornisce un API semplificata per una porzione di codice di grandi dimensioni
- L'APPLICATION KEY rappresenta la chiave di criptazione di sessioni e altri dati
sensibili
- INVERSION OF CONTROL prevede un'inversione rispetto al classico modelle
delle librerie e dipendenze usabili da un particolare componente, non è più il
componente globale a livello applicativo che fornirà le dipendenze.
- DIPENDENCY INJECTION implementazione dell'inversion of control, prevede il
passaggio attraverso i costrutti delle classi o tramite metodi setter dedicati
- L'oggetto illuminate/http/request$request consente il passaggio dei
parametri dal client al server
*se fosse stato response$response, sarebbe stato dal server al client
- I SEEDER permettono la creazione di file fittizi all'interno del db temporanei
- I MODEL FACTORY creano oggetti in poco tempo: riempimento database con
valori fittizi
- BLADE è il motore di template php di Laravel, definisce le viste per visualizzare
variabili all'interno del template blade: {{$nomeVariabile}}
- Return view ('user.detail', ['username'-> 'abc', 'email' >'ab@gmail.com']);
Istruzione definita all'interno di un controller che richiama il metodo detail
della view user e gli passa come parametri username=abc e
email=ab@gmail.com
- MODEL è il componente designato a comunicare con i dati, riceve le richieste
da parte del controller e restituisce i dati.
- Commentare il seguente model: class Studenti extend Model {}
In questo model viene creata la classe studenti che estende il model di base di
nome model. All'interno delle graffe è possibile inserire le caratteristiche
richieste.
- Che tipo di relazione è la seguente?
Class User extends Model {
Public function address () {
Return $this > has One ('App\Address'); }}
RELAZIONE UNO AD UNO
*Altri tipi di relazioni !!!
1:N HAS MANY -> BELONG TO
N:N HAS MANY -> BELONG TO MANY
N: N INDIRETTE HAS MANY THROUGH -> BELONG TO MANY
POLIFORMICHE MORPH TO MANY -> MORPH MANY
POLIFORMICHE N:N MORPH TO MANY -> MORPH TO MANY
- Commentare il seguente codice:
Class UserController extends Controller
{public function index ()
{$user = user :: all ()
Return view ('user', ['user'>$user])
VIENE CREATA LA CLASSE USER CHE ESTENDE IL CONTROLLER DI BASE,
VIENE CREATA UNA FUNZIONE PUBBLICA CHIAMATA INDEX SENZA PARAMETRI
IN INPUT,
L'OGGETTO USERS CONTERRA' TUTTI I VALORI ASSOCIATI AGLI USER TRAMITE
IL METODO ALL DEL CONTROLLER USER,
RITORNA LA VIEW USER PASSANDO IN INPUT ALLA VIEW IL CONTENUTO DI
$USERS
- Assumendo
l'esistenza
di
un model
studente,
l'istruzione
$studente=studente :: find(cognome) utilizzata in un controller: recupera il
valore COGNOME di uno STUDENTE
- Commenta:
Introduzione: I template definiti con blade sfruttano l'ereditarietà dei linguaggi
orientati agli oggetti; è possibile, infatti, definire LAYOUT PADRI astratti e
LAYOUT FIGLI che li estendono (con YELD e SECTION)
inizio file html
apertura sezione head
@yeld ('title') inizializzo lo @yeld 'title'
chiusura sezione head
apertura sezione body
apertura del div con classe "sidebar"
@yeld ('sidebar')
assegno l'alias sidebar al tag yeld
chiusura div, body e html
Questo file rappresenta un layout, una sorta di scheletro astratto con tre sezioni
configurabili : title, sidebar e content, definite tramite costrutto @yeld. commento che indica che abbiamo cambiato file
@extends ('layout.master')
@section
('title', 'page
title')
collego il blade al lavout padre (le section successive si
estende il contenuto dello yeld title e assegna PageTitle
come titolo di pagina
@section ('sidebar') estende il contenuto dello yeld sidebar
Menu laterale
inserisce la stringa 'Menu laterale' come paragrafo
@end section chiusura della sezione
@section ('content') estende il contenuto dello yeld content
Contenuto principale
inserisce la stringa 'Contenuto principale'
come paragrafo
@end section chiusura della sezione
Questo file rappresenta una view concentrata che estende il precedente layout e ne
definisce le sezioni tramite @section
- Le WEB ROUTES sono usate per identificare URL e metodo che porta l'utente a
scatenare una funzione
- Rotta che richiama l'apertura di una pagina che mappi:
url /listastudent
con METODO trova tutti studenti
del CONTROLLER Gestione Studenti:
Route :: get ('/listaStudenti', 'GestioneStudenti@trovatuttiStudenti');
- Esempio di controller chiamato GestioneStudenti avente 2 metodi:
1 trovaTuttiStudenti e 2 TrovaStudente
Il secondo metodo deve essere parametrico e deve ricevere l'id dello studente da
cercare:
Class GestioneStudenti extends Base Controller
Public function trovaTuttiStudenti () {Return listaStudenti }; PRIMO METODO
Public function trovaStudente ($id) {
Return 'dati studente'.$id} SECONDO METODO (ESSENDO PARAMETRICO, TRA LE
PARENTESI, DEVE ESSERE SPECIFICATO IL PARAMETRO CHE VIENE PASSATO)
- Commenta la seguente rotta:
Route := get('user','UserController@get List');
DICHIARAZIONE DI UNA ROTTA DI TIPO GET RELATIVA ALL'URL/USER E CHE RICHIAMA
IL METOOD GETLIST SUL CONTROLLER USERCONTROLLER
- Descrivere il funzionamento della seguente rotta specificando il ruolo della
parola chiave Get
Route :: get ('/iscritti, ['post Detail', function (){
Return 'Hello World';}])
Quando viene richiamato l'url/iscritto, viene richiamata la route Post Detail, infine
viene visualizzato 'Hello World'. GET è il metodo di richiesta effettuata e serve a
prelevare dati dal server
- Commenta un codice all'interno di un ipotetico controller
$video->new Video; creazione di un video
$video-> titolo = "Trono di Spade"; inserimento titolo
$video-> regista = "David Nutter"; inserimento regista
$video-> save (); salva il video con i dati inseriti
$video-> Video :: find (1); ricerca video
$video->regista = "David Benioff"; inserimento regista
$video-> save (); salva il video/aggiorna i dati del video
PHP, JAVASCRIPT, HTML
- JAVASCRIPT è un linguaggio CLIENT SIDE
- Quali sono i super vettori per eseguire le richieste: _ GET e_POST
- La funzione di callback è UNA FUNZIONE CHE VIENE PASSATA AD UN
PARAMETRO AD UNA FUNZIONE CHIAMANTE
Esempio:
Function print (callback) {
Call back ();}
- In html, il tag IMG viene utilizzato per mostrare immagini e l'attributo SRC al
suo interno per definire l'url dell'immagine da mostrare
- In html, l'attributo REQUIRED costringe l'utente ad inserire un valore prima di
sottomettere un form
- Nel css, quale identificatore serve a chiamare un id? '#'
- Tipi di selettori:
- Selettori di elemento e nome elemento, di id e "#" di classe "." Combinato
(selettore di elemento+ di classe) , posso raggruppare gli stili, selettori di
attributo.
- Linguaggio html è un linguaggio INTERPRETATO
- Tag HEADER gestisce l'intestazione di un documento
- Il comando css MARGIN distanzia il contenuto rispetto al bordo
- Commenta il seguente codice css
p.student {
padding: 25px 50px 75px;font: "Times New Roman", Times, serif;}
Richiama l'elemento student, il padding definisce un riempimento esterno
attorno al contenuto e avrà dimensioni 25px superiori, 50px laterali, 75px
inferiori. Il carattere sarà di tipo Times New Roman
- Nella progettazione di un sistema interattivo, l'architettura informatica
rappresenta la SCALETTA LOGICA DEI CONTENUTI
- Cosa visualizzerà il browser se viene eseguito il seguente script e l'utente ne
immette 5 in entrambe le richieste?
Per effettuare la somma fra interi, i numeri devono essere parserizzati con
ROUTE INT. "55"
- Dato il seguente codice, spiegare cosa è il bubbling, cosa comporterebbe nel
seguente codice e come poterlo arrestare:
Il bubbling consiste nella propagazione degli eventi fino al nodo radice. Si può
arrestare con StopPropagation
Teoria
Prototipazione
Inizio
Requisiti
Rilascio
Proget-
tazione
Test
tipo":
tazione di un
un sistema,
parte, che,
Jalche modo
sere utilizzata
alutazione
3407)
Prototi-
pazione
- Verifica
(make the things right)
- Convalida
(make the right thing)
Pro
- Il prodotto si vede, anche se in modo parziale, fin dall'inizio e viene
perfezionato in modo incrementale
- le scelte effettuate possono essere sperimentate subito e si possono
scartare quelle sbagliate
- è il modello concettualmente corretto per la realizzazione di sistemi
complessi
Contro
- difficoltà di stima dei costi a preventivo
- si rischia di far divergere il processo, per troppe richieste di modifiche
- la fluidità delle specifiche rende più difficile la comunicazione fra le
persone coinvolte
Road Map
1
Definizione
dei requisiti
2
Prototipo di navigazione
Avviamento
del progetto
Web design
Prototipo di comunicazione
Tutti navigabili
Visual design
Prototipo funzionale
sottoposti ad attività di
verifica e validazione
specifiche
Sviluppo
del sito
Prototipo editoriale
Redazione
del contenuti
Sito finale
Consolidamento progressivo
7
Pubblicazione
FASE 1 OUTPUT: DOC. DEI REQUISITI BASATO SU UN MODELLO DI QUALITA' PER SITI
WEB
Tecniche per la raccolta dei requisiti
Tecnica | Server per | Vantaggi | Svantaggi |
Questionari | Rispondere a domande specifiche | Si possono raggiungere molte persone
con poco sforzo | Vanno progettati con grande
accuratezza, in caso contrario le
risposte potrebbero risultare poco
informative.
Il tasso di risposta può essere basso. |
Interviste individuali | Esplorare determinati aspetti del
problema e determinati punti di vista | L'intervistatore può controllare il corso
dell'intervista, orientandola verso quei
temi sui quali l'intervistato è in grado di
fornire i contributi più utili | Richiedono molto tempo
Gli intervistati potrebbero evitare di
esprimersi con franchezza su alcuni
aspetti delicati |
Focus group | Mettere a fuoco un determinato
argomento, sui quali possono esserci
diversi punti di vista | Fanno emergere le aree di consenso e di
conflitto
Possono far emergere soluzioni condivise
dal gruppo | La loro conduzione richiede
esperienza
Possono emergere figure dominanti
che monopolizzano la discussione |
Osservazioni sul campo | Comprendere il contesto delle attività
dell'utente | Permettono di ottenere una
consapevolezza sull'uso reale del
prodotto che le altre tecniche non danno | Possono essere difficili da effettuare
e richiedere molto tempo e risorse |
Suggerimenti spontanei
dell'utente | Individuare specifiche necessità di
miglioramento di un prodotto | Hanno bassi costi di raccolta | Hanno normalmente carattere
episodico |
Analisi della concorrenza e delle
best practices | Individuare le soluzioni migliori
adottate nel settore di interesse | Evitare di "reinventare la ruota" e
ottenere un vantaggio competitivo | L'analisi di solito è costosa (tempo e
risorse) |
FASE 2 OUTPUT: DOC. DEL PIANO DI QUALITA'
FASE 3 OUTPUT: MAPPA DEL SITO (DIAGRAMMA CHE RAPPRESENTA LE PAGINE DEL
SITO E I PERCORSI DI NAVIGAZIONE PRINCIPALI TRA ESSE), GABBIA LOGICA DELLE
PAGINE (MOSTRANO SOLO MENU, SPAZI E INGOMBRI DI MASSIMA DI CIASCUNA
PAGINA, SENZA FORNIRE ALCUNA INDICAZIONE PRECISA SULLA GRAFICA),
PROTOTIPO DI NAVIG (PROTOTIPO RUDIMENTALE, NON VIENE CONSERVATO NELLE
FASI SUCCESSIVE, SVILUPPATO IN HTML, COMPLETAMENTE NAVIGABILE, LE PAGINE
SONO COSTITUITE SOLO DA GABBIA LOGICA SENZA GRAFICA.
FASE 4 OUTPUT: GUIDA DI STILE (ELENCO DI TUTTI I LAYOUT GRAFICI DEL SITO),
TEMPLATE HTML, PROTOTIPO DI COMUNICAZIONE (RAFFINA E COMPLETA IL
PROTOTIPO DI NAVIG., PERMETTE DI SPERIMENTARE I MECCANISMI DI NAVIG. NEL
CONTESTO VISUALE DEFINITIVO)
FASE 5 OUTPUT: DIAGR. DI NAVIG E FORM PER LE FUNZIONI, DIAGR. ENTITA'-
RELAZIONI PER LA BASE DI DATI, PROTOTIPO FUNZIONALE (TEST FUNZIONALI E TEST
DI USABILITA')
Possono essere molto specifici