Mi serve una Web App, da cosa inizio? Framework back end e front end?

SaintTDI

Nuovo Utente
16
0
Ciao a tutti :)


Stanco di non trovare una web app che gestisce il budget familiare come vorrei (bastava una multi utenza) vorrei farmela da solo :)

Ho cercato in lungo e largo un App iOS che poteva ricoprire i miei requisiti... ma secondo me ancora non esiste.

Allora a questo punto mi sono detto... voglio farmela da solo, almeno faccio una webapp per desktop, magari responsive.

Ora veniamo ai problemi :D

Diplomato all'ITI... quasi 14 anni fa :D quindi ho tutti i concetti di programmazione e DB. Lavoro da 12 anni ormai sul CRM Oracle... Siebel.

Il mio problema è che mi manca assolutamente la parte tecnica del PHP e tutto quello che concerne le nuove metodologie di sviluppo di web app

Diciamo che come idea di sviluppo di web app... sono ancora "fermo" a fare tutto quanto a mano, scrivendo il codice php che crea la logica di business e interroga il DB. :D magari usando dei pattern MVC. Diciamo che il codice php lo so leggere... qualche volta leggermente modificato, non mi preoccupa scrivere codice, tanto si trovano molti esempi online

Ho studiato anni fa i vari pattern Java, con utilizzo di framework per interrogare i DB senza usare l'SQL puro e via dicendo... ma appunto l'ho solo studiato :)

Poi... conosco i vari framework front end come jquery, angular, e tantissimi altri... ma solo al livelll di "ok ci sono dei framework che fanno tante cose lato front end, ho visitato le loro homepage ma basta cosi " :D

Sono venuto a conoscenza anche di framework backend... magari come Yii2... che da quanto ho capito ti crea una bella struttura per effettuare la "ciccia"

Ma non so bene se poi questo Yii2 si può fondere eventualmente con altri framework di frontend

Ora però... non so proprio come approcciarmi... nel senso a me serve la web app nel senso della logica che c'è dietro... se poi il sito è bruttissimo, non mi interessa, l'importante è che lo posso usare... poi man mano posso provare a fare il frontend

Voi cosa mi consigliate? come posso approcciarmi per fare questa web app? Conoscete il Yii2 framework?


grazie a tutti per l'aiuto! :)
 
Ultima modifica da un moderatore:

pabloski

Utente Èlite
2,868
916
Se stai iniziando il progetto da zero, mi sa che ti conviene puntare su Google Go, un linguaggio pensato apposta per la creazione di microservizi web, i cui software sono compilati ( quindi performanti ), non necessitano di un web server d'appoggio e tante altre cosine molto utili. A ciò aggiungo la presenza di un modello di concorrenza CSP, che Google ha implementato per porre la parola fine agli sbattimenti della programmazione concorrente.

Per il frontend la scelta è ampia e non c'è un framework che sia oggettivamente superiore agli altri. Angular, React e altri mille. Comunque inizia dal backend, implementalo come servizio REST, così saprai così ti serviva lato frontend.
 

SaintTDI

Nuovo Utente
16
0
Se stai iniziando il progetto da zero, mi sa che ti conviene puntare su Google Go, un linguaggio pensato apposta per la creazione di microservizi web, i cui software sono compilati ( quindi performanti ), non necessitano di un web server d'appoggio e tante altre cosine molto utili. A ciò aggiungo la presenza di un modello di concorrenza CSP, che Google ha implementato per porre la parola fine agli sbattimenti della programmazione concorrente.

Per il frontend la scelta è ampia e non c'è un framework che sia oggettivamente superiore agli altri. Angular, React e altri mille. Comunque inizia dal backend, implementalo come servizio REST, così saprai così ti serviva lato frontend.

Ciao, grazie per la risposta intanto :)

ok ora mi studio Google Go... Ma si può online? Va pubblicato su un dominio? Visto che voglio farmi una web app per un budget familiare.... Così posso accederci da ovunque

si sicuramente voglio iniziare dal backend, ma per servizio REST cosa intendi?

grazie ancora
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Per quanto riguarda i framework php ti consiglio assolutamente Codeigniter, dato che è molto ben documentato e molto semplice da imparare.

Altro framework molto interessante (e anche molto usato) è Laravel (lo sto usando ora per un progettino), che però ha una curva di apprendimento un po elevata (niente di impossibile è..).

Yii2 non lo conosco quindi non posso farti dei paragoni con gli altri che ho citato.

Per quanto riguarda il frontend, magari puoi iniziare ad imbastire qualcosa con Bootstrap, dato che in poco tempo ti permette di avere qualcosa di usabile (e responsive).
 

SaintTDI

Nuovo Utente
16
0
Per quanto riguarda i framework php ti consiglio assolutamente Codeigniter, dato che è molto ben documentato e molto semplice da imparare.

Altro framework molto interessante (e anche molto usato) è Laravel (lo sto usando ora per un progettino), che però ha una curva di apprendimento un po elevata (niente di impossibile è..).

Yii2 non lo conosco quindi non posso farti dei paragoni con gli altri che ho citato.

Per quanto riguarda il frontend, magari puoi iniziare ad imbastire qualcosa con Bootstrap, dato che in poco tempo ti permette di avere qualcosa di usabile (e responsive).

Ti ringrazio della risposta :)

volevo sapere un attimo come funzionano questi framework... In sostanza io creo il DB.. Con le varie tabelle e le loro relazioni... E il framework crea in automatico delle classi e funzioni "wrapper" per fare dei insert, update e select nelle mie tabelle?

sai se con codeigniter e laravel si possono utilizzare dei template frontend già sviluppati? Per esempio ho trovato AdminLTE https://almsaeedstudio.com/preview che potrebbe essere carino come frontend, già pronto. Con yii2 ho trovato già una pagina che spiega come unire le due cose

grazie ancora :)
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Qualsiasi framework non scrive in automatico niente, il codice dell'applicazione lo devi scrivere interamente tu (dalla logica, al routing, alla validazione dei dati, ecc..).
Fondamentalmente questi framework ti permettono di raggiungere un determinato risultato scrivendo meno codice possibile.

Ad esempio, in php per fare una query ad un database devi scrivere:
PHP:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM tabella";
$result = $conn->query($sql);

$conn->close();
?>


Con Laravel invece (una volta configurato il database e creato il model della tabella) per fare la stessa query basta scrivere:
PHP:
$result = Tabella::all();


Con Codeigniter (sempre dopo aver configurato il tutto) invece:
PHP:
$result = $this->db->get('tabella');


Come puoi vedere il codice da scrivere è decisamente meno.


Per quanto riguarda il template, puoi usare quello che vuoi, basta che lo "adatti" al template engine del framework.
NB. Ogni framework ha il SUO template engine.
 
Ultima modifica:
  • Mi piace
Reazioni: Stefano Novelli

SaintTDI

Nuovo Utente
16
0
Qualsiasi framework non scrive in automatico niente, il codice dell'applicazione lo devi scrivere interamente tu (dalla logica, al routing, alla validazione dei dati, ecc..).
Fondamentalmente questi framework ti permettono di raggiungere un determinato risultato scrivendo meno codice possibile.

Ad esempio, in php per fare una query ad un database devi scrivere:
PHP:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM tabella";
$result = $conn->query($sql);

$conn->close();
?>


Con Laravel invece (una volta configurato il database e creato il model della tabella) per fare la stessa query basta scrivere:
PHP:
$result = Tabella::all();


Con Codeigniter (sempre dopo aver configurato il tutto) invece:
PHP:
$result = $this->db->get('tabella');


Come puoi vedere il codice da scrivere è decisamente meno.


Per quanto riguarda il template, puoi usare quello che vuoi, basta che lo "adatti" al template engine del framework.
NB. Ogni framework ha il SUO template engine.

Si certo, la parte di logica e validazione dati, so bene che la devo scrivere io, sinceramente non so cosa intendi per il routing :)

Ok perfetto... semplifica molto il codice da scrivere :)

Sull'esempio che hai fatto di Laravel, immagino che Tabella sia una classe creata sopra la tabella sql "Tabella" e all() si una funzione che in pratica fa una select * giusto? ma la funzione all() e la classe Tabella vengono generati automaticamente da Laravel giusto?

cercando al volo ho trovato la community Laravel Italia, immagino che sia un buon punto di partenza dove poter parlare con persone che usano Laravel giusto? Lo conosci... sai se è buono... oppure ci sono altre community/forum in italiano su Laravel?

Ok... capito per quanto riguarda i template e i framework. Basta sapere che ogni framework ha la possibilità di adattarci questi template già fatti :) e da quanto ho capito ognuno ha il suo engine... quindi basta "solo" adattarli :)

grazie tante e scusa ancora il disturbo... ma sono abbastanza indietro su queste "metodologie" e in effetti ci rosico un pò :)
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Si certo, la parte di logica e validazione dati, so bene che la devo scrivere io, sinceramente non so cosa intendi per il routing :)

Il routing è sostanzialmente la correlazione tra il model/controller e l'url della pagina. Codeigniter e Laravel li gestiscono in modo differente (IMHO Laravel in modo molto più flessibile)


Ok perfetto... semplifica molto il codice da scrivere :)

Sull'esempio che hai fatto di Laravel, immagino che Tabella sia una classe creata sopra la tabella sql "Tabella" e all() si una funzione che in pratica fa una select * giusto? ma la funzione all() e la classe Tabella vengono generati automaticamente da Laravel giusto?

Esattamente..
In Laravel ogni tabella di ogni database ha un suo model (il che può anche rivelarsi un bel casino quando si lavora con database multipli con molte tabelle IMHO)


cercando al volo ho trovato la community Laravel Italia, immagino che sia un buon punto di partenza dove poter parlare con persone che usano Laravel giusto? Lo conosci... sai se è buono... oppure ci sono altre community/forum in italiano su Laravel?

Non seguo i forum italiani di laravel, ti posso però consigliare Laracast (dove puoi trovare dei video molto ben fatti che ti permetteranno di apprendere il framework abbastanza agevolmente) e relativo forum.

Ok... capito per quanto riguarda i template e i framework. Basta sapere che ogni framework ha la possibilità di adattarci questi template già fatti :) e da quanto ho capito ognuno ha il suo engine... quindi basta "solo" adattarli :)

grazie tante e scusa ancora il disturbo... ma sono abbastanza indietro su queste "metodologie" e in effetti ci rosico un pò :)

Con questi framework non ci vuole molto tempo per imparare ad utilizzarli (almeno le funzioni base) ed avere un buon risultato funzionante.
Tieni presente che io (che non sono assolutamente un genio della programmazione) ho cominciato all'incirca ad ottobre dell'anno scorso.
In un paio di settimane (smanettandoci la sera e nei weekend, non a tempo pieno) sono riuscito ad ottenere un sito completo e funzionante con Codeigniter (che poi ho abbandonato per usare Laravel che è più adatto alle esigenze della mia applicazione).
Per usare con profitto Laravel invece ci ho impiegato circa un mesetto (anche se ci sono molte cose che ancora che non ho approfondito perchè al momento non mi servono).
 

pabloski

Utente Èlite
2,868
916
ok ora mi studio Google Go... Ma si può online?

Certo.

Va pubblicato su un dominio? Visto che voglio farmi una web app per un budget familiare.... Così posso accederci da ovunque

Puoi fare come ti piace. Puoi pure usare Dyndns in modo da usare un tuo pc come server.

si sicuramente voglio iniziare dal backend, ma per servizio REST cosa intendi?

grazie ancora

REST è un modello usato praticamente ovunque per l'implementazione dei web services. In pratica definisce una serie di operazioni ( che poi sono le stesse del protocollo HTTP ) tramite cui il servizio fornisce i suoi servizi ai client. Puoi anche usare RPC, oppure definire un tuo protocollo. REST però è uno standard de facto e i vari framework che si trovano in giro lo supportano.
 

Stefano Novelli

Amministratore
Staff Forum
4,299
5,233
Un attimo, passo indietro.
Partiamo dall'identificare i campi in cui dovrai "affondare", altrimenti si rischia di parlare di framework e pacchi senza poi avere il quadro della situazione.

LATO SERVER

Prima di tutto, se hai intenzione di sviluppare una web app da pubblicare magari in un'app store/play store allora devi riferirti ad app ibrida (o hybrid app) che per quanto sia scontato come concetto porta con se alcune scelte a monte che devi fare.
Intendo, se vuoi sviluppare una hybrid app devi essere consapevole che dovrai usare un server in locale (se non puoi permetterti un server a pagamento) e comunque dovrai essere in grado di riconvertire la tua app in software accettato dalle clausole dei vari dev center.

IMHO la scelta di un framework PHP fa parte del processo logistico del software, spesso se ne parla ma in pochi ne sfruttano le reali necessità: ad esempio io sto sviluppando un software kiosk ma non significa che ho bisogno di un framework PHP, anzi! La struttura software lato server deve essere pesata al caso, se stiamo parlando di 4-5 pagine in croce con qualche chiamata al DB IMHO un framework PHP (Lavarel, CodeIgniter e compagnia bella) è uno spreco, specie se sviluppato da una sola persona che non conosce pattern MVC, logiche di Routing e via dicendo.

A proposito del DB, anche qui bisogna sceglierne uno in base alle proprie esigenze. SQL o NoSQL? Questo è il dilemma.
E per quanto riguarda il Web Server? Apache, Lighttpd o Nginx ? E se non si usa PHP, perchè non crearselo da soli?

Come vedi la logica può essere varia per ogni caso, non è detto che il PHP faccia per forza al caso tuo e il motivo si cela dietro al prossimo argomento.

LATO CLIENT

Quando sviluppo un progetto in solo per prima cosa valuto l'esperienza visiva dell'utente (quindi abbozzo una grafica) e in base alle necessità valuto quale linguaggio o tecnologia uso.
Nel tuo caso (ne parlo non perchè sono io ma perchè ci sto passando sopra in questo momento) per prima cosa ho scelto il Framework Client, l'unico framework che ho scelto di usare per questo progetto.

Ti parlo di Framework7, l'unico utile nel mio caso. Ho bisogno di una hybrid app che ricalchi la tecnologia Material/iOS grafica e in base a questo ho capito che avevo necessità di PHP.
Se avessi scelto ad es. Ionic o simili avrei preferito Golang o Elixir, questo perchè entrambi i linguaggi mi avrebbero permesso lo sviluppo non solo del server side tramite JSON (che con AngularJS ci calza a pennello) ma anche del server web.
Altre scelte sono Bootstrap, Ionic, Onsen e co.

Insomma, scelto il Framework Client ho iniziato a valutare se anche un framework Javascript mi sarebbe stato utile. Così non è stato.
Mi è bastato jQuery (una libreria Javascript) e per aumentare il tutto un bel Font Awesome. Non ti sto dicendo che è la scelta migliore, ma forse quella più completa per avere il miglior compromesso lato UI.

Scelto il modo in cui si vuole sviluppare la User Interface ora scelgo quali sono le tecnologie a me utili.

DIETROFRONT LATO SERVER

PHP è un ottimo linguaggio per lo sviluppo lato server ma non è l'unico che si può usare.
Ci sono i già citati Golang (ottimo per chi vuole sviluppare velocemente), il mio preferito Elixir (che forse è troppo complesso per chi è alle prime armi) ma anche NodeJS e molti altri.

La scelta del linguaggio viene PRIMA del Framework: prima di tutto perchè non è fondamentale un framework lato server, secondo perchè si sceglie il linguaggio in base alle necessità. Una volta scelto il linguaggio, se lo si vuole, si sceglie il framework.

Se vuoi puoi usare microframework come Slim o Lumen (per citarne alcuni) che ti aiutano solo con alcuni concetti di Routing, Error Handling e altre piccole cose prese in prestito da framework più enormi.



In definitiva: dipende da cosa vuoi e da cosa sei già in grado di fare.
Non mi basta un post per spiegarti le differenze di tutto, il web è pieno di benchmark e mi di teoria si quale sia meglio. Basta un'approfondita ricerca, anche perchè sono della scuola che una buona pianificazione è già metà dell'opera.

Buon divertimento ;)
 
  • Mi piace
Reazioni: Mursey e cdtux

SaintTDI

Nuovo Utente
16
0
Ciao Stefano, grazie della lunga e dettagliata riposta... abbiamo pure lo stesso nome ;)

Allora... inizio dicendoti che voglio fare questa web app per un mio utilizzo. La utilizzeremo solo io e mia moglie :) quindi già questo abbatte tante "problematiche". Devo farmi una web app per il bilancio familiare, visto che tutte quelle che ci sono per iOS (noi abbiamo 2 iPhone) non vanno bene... e quando parlo di tutte... parlo veramente di tutte :D ho cercato in lungo e in largo, ma nessun App ha una gestione multi utenza :)

Detto questo... la web app mi basta che funziona tramite browser, sia su PC che su iPhone (o iPad... cmq mobile)

Ho pensato al php... perchè "lo conosco" nel senso che lo so leggere... qualcosina l'ho modificata... e so che è "abbastanza" semplice. Ho già un sito, su hosting aruba, con mysql, dove c'è un blog e poche altre cose, lo uso d'appoggio ftp per adesso :)

Per dirti... La parte di codice che ha scritto cdtux per la connessione a DB e query SQL... la conosco, e diciamo che la saprei anche scrivere (e cmq ci vuole poco a trovare uno script per fare una select su internet)

Quindi appunto sono partito con la scelta del php... che mi sembra la più appropriata.

Per quanto riguarda il DB... si direi SQL e precisamente MySQL, visto che già ho usato phpmyadmin... e poi uso il DB Oracle a lavoro... da 12 anni (a livello di interrogazioni di controllo)

Il pattern MVC l'ho studiato a più riprese negl'anni ... soprattutto in ambiente Java, ma il pattern quello è :) quindi con un refresh potrei andare bene :)

Il fatto è che fare una web app per un budget familiare... è facile ma difficile allo stesso tempo. Alla fine sono solo delle form che fanno insert in tabella (la parte facile) e far visualizzare le informazioni (la parte difficile)

Quindi è per questo che cercavo cmq una linea guida da utilizzare... credo che fare tutto a mano, per me è impossibile. Anche se sarebbe meglio sotto una aspetto "studia un framework, usalo, e se poi c'è qualcosa che per te non va bene hai buttato via il tempo" ... però ecco non mi trovo nella situazione tecnica di poter far tutto da solo senza framework.

il lato front end... sinceramente mi interessa ben poco... visto che è per me e mia moglie :) potrebbe essere anche una pagina bianca con una form per inserire l'entrata o la spesa o il trasferimento :D Certo poi creare dei grafici è la parte difficile. Appunto per questo avevo pensato al template AdminLTE ... che ha tante cose. Quindi l'integrazione AdminLTE con framework back end diciamo che è molto importante...

alla luce di tutto questo... credo che appunto il miglior approccio è usare dei framework giusto?

Un attimo, passo indietro.
Partiamo dall'identificare i campi in cui dovrai "affondare", altrimenti si rischia di parlare di framework e pacchi senza poi avere il quadro della situazione.

LATO SERVER

Prima di tutto, se hai intenzione di sviluppare una web app da pubblicare magari in un'app store/play store allora devi riferirti ad app ibrida (o hybrid app) che per quanto sia scontato come concetto porta con se alcune scelte a monte che devi fare.
Intendo, se vuoi sviluppare una hybrid app devi essere consapevole che dovrai usare un server in locale (se non puoi permetterti un server a pagamento) e comunque dovrai essere in grado di riconvertire la tua app in software accettato dalle clausole dei vari dev center.

IMHO la scelta di un framework PHP fa parte del processo logistico del software, spesso se ne parla ma in pochi ne sfruttano le reali necessità: ad esempio io sto sviluppando un software kiosk ma non significa che ho bisogno di un framework PHP, anzi! La struttura software lato server deve essere pesata al caso, se stiamo parlando di 4-5 pagine in croce con qualche chiamata al DB IMHO un framework PHP (Lavarel, CodeIgniter e compagnia bella) è uno spreco, specie se sviluppato da una sola persona che non conosce pattern MVC, logiche di Routing e via dicendo.

A proposito del DB, anche qui bisogna sceglierne uno in base alle proprie esigenze. SQL o NoSQL? Questo è il dilemma.
E per quanto riguarda il Web Server? Apache, Lighttpd o Nginx ? E se non si usa PHP, perchè non crearselo da soli?

Come vedi la logica può essere varia per ogni caso, non è detto che il PHP faccia per forza al caso tuo e il motivo si cela dietro al prossimo argomento.

LATO CLIENT

Quando sviluppo un progetto in solo per prima cosa valuto l'esperienza visiva dell'utente (quindi abbozzo una grafica) e in base alle necessità valuto quale linguaggio o tecnologia uso.
Nel tuo caso (ne parlo non perchè sono io ma perchè ci sto passando sopra in questo momento) per prima cosa ho scelto il Framework Client, l'unico framework che ho scelto di usare per questo progetto.

Ti parlo di Framework7, l'unico utile nel mio caso. Ho bisogno di una hybrid app che ricalchi la tecnologia Material/iOS grafica e in base a questo ho capito che avevo necessità di PHP.
Se avessi scelto ad es. Ionic o simili avrei preferito Golang o Elixir, questo perchè entrambi i linguaggi mi avrebbero permesso lo sviluppo non solo del server side tramite JSON (che con AngularJS ci calza a pennello) ma anche del server web.
Altre scelte sono Bootstrap, Ionic, Onsen e co.

Insomma, scelto il Framework Client ho iniziato a valutare se anche un framework Javascript mi sarebbe stato utile. Così non è stato.
Mi è bastato jQuery (una libreria Javascript) e per aumentare il tutto un bel Font Awesome. Non ti sto dicendo che è la scelta migliore, ma forse quella più completa per avere il miglior compromesso lato UI.

Scelto il modo in cui si vuole sviluppare la User Interface ora scelgo quali sono le tecnologie a me utili.

DIETROFRONT LATO SERVER

PHP è un ottimo linguaggio per lo sviluppo lato server ma non è l'unico che si può usare.
Ci sono i già citati Golang (ottimo per chi vuole sviluppare velocemente), il mio preferito Elixir (che forse è troppo complesso per chi è alle prime armi) ma anche NodeJS e molti altri.

La scelta del linguaggio viene PRIMA del Framework: prima di tutto perchè non è fondamentale un framework lato server, secondo perchè si sceglie il linguaggio in base alle necessità. Una volta scelto il linguaggio, se lo si vuole, si sceglie il framework.

Se vuoi puoi usare microframework come Slim o Lumen (per citarne alcuni) che ti aiutano solo con alcuni concetti di Routing, Error Handling e altre piccole cose prese in prestito da framework più enormi.



In definitiva: dipende da cosa vuoi e da cosa sei già in grado di fare.
Non mi basta un post per spiegarti le differenze di tutto, il web è pieno di benchmark e mi di teoria si quale sia meglio. Basta un'approfondita ricerca, anche perchè sono della scuola che una buona pianificazione è già metà dell'opera.

Buon divertimento ;)
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!