* * * *
10 Visitatori, 0 Utenti

Autore Topic: Esempio di applicazione web con lazarus  (Letto 1174 volte)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Esempio di applicazione web con lazarus
« il: Ottobre 24, 2018, 09:50:02 am »
Ciao ragazzi, se provate a scaricare da questo link il mio progetto vedrete che ho creato un esempio (con commenti in Italiano) in cui dimostro come creare una web application bootstrap (con pattern MVC). Si basa su Indy per implementare il web server che prende il template da file html. Non è perfetto, perchè nella unit unit_controller.pas la funzione GetHTML adopera synapse per recuperare l'html in quanto sembra che synapse abbia un bug (in maniera arbitraria non sempre mi legge il contenuto correttamente e questo mi fa saltare la validità del json contenuto).

www.lazaruspascal.it/esempi/ngit_bootstrap_application.zip

Fatemi sapere le vostre impressioni
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #1 il: Ottobre 24, 2018, 10:44:39 am »
dimenticavo per fare il login le credenziali sono

user: root
pwd: 1234
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1836
  • Karma: +4/-0
Re:Esempio di applicazione web con lazarus
« Risposta #2 il: Ottobre 25, 2018, 01:45:32 pm »
50 mega :) 
(Magari la prossima volta togli i compilati per mac, creano uno zip inutilmente cicciotto :) :) )
Come mai hai scelto indy?
Freepascal ha il suo server web.
 custhttpapp, custweb, HTTPDefs, fphttpserver, fpaouth2

alcune unit :)
Codice: [Seleziona]
 TNGITController = class
      private
             ListOfItemControl: array of TItemControl;
come mai non ha usato i generics e creato una lista di ItemControl ?Più comoda da usare e non hai il vincolo delle dimensioni decise a priori.Più che altro ho avuto l'impressione (non uso Indy) leggendo il codice che hai reimplementato alcune cose già rilasciate nella versione 3 di fpc :)

PS1:
La scelta di AdminLte mi piace ;)PS2:Prova a vedere (devo sistemare un problema per le sessioni di accesso concorrente al disco e la sessione "auto avviante", quindi non ho postato la gestione della sessione)

https://github.com/paxtibi/paxhttp
La parte server è dentro http.server.pasMagari qualche spunto su come usare le librerie di base la trovi ;)Lo scopo è essere compatibile con le vecchia gestione di fpc :p

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #3 il: Ottobre 25, 2018, 01:51:57 pm »
50 mega :) 
(Magari la prossima volta togli i compilati per mac, creano uno zip inutilmente cicciotto :) :) )
Come mai hai scelto indy?
Freepascal ha il suo server web.
 custhttpapp, custweb, HTTPDefs, fphttpserver, fpaouth2

alcune unit :)
Codice: [Seleziona]
 TNGITController = class
      private
             ListOfItemControl: array of TItemControl;
come mai non ha usato i generics e creato una lista di ItemControl ?Più comoda da usare e non hai il vincolo delle dimensioni decise a priori.Più che altro ho avuto l'impressione (non uso Indy) leggendo il codice che hai reimplementato alcune cose già rilasciate nella versione 3 di fpc :)

PS1:
La scelta di AdminLte mi piace ;)PS2:Prova a vedere (devo sistemare un problema per le sessioni di accesso concorrente al disco e la sessione "auto avviante", quindi non ho postato la gestione della sessione)

https://github.com/paxtibi/paxhttp
La parte server è dentro http.server.pasMagari qualche spunto su come usare le librerie di base la trovi ;)Lo scopo è essere compatibile con le vecchia gestione di fpc :p

Olaaaa, hai ragione, scusa per i binari. Allora diciamo che la scelta di indy è stata quasi obbligata perchè non ho trovato il modo con synapse di leggere i file html a run time (e quindi automaticamente di leggere i css e i js contenuti nell'html). Su synapse leggeva l'html ma non andava a leggere i file necessari al corretto funzionamento: css, js ecc. Devo dire che ListOfItemControl è stata una scelta diciamo casuale, nel senso che era solo un test, uno spunto per chi fosse interessato. Tutto li.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #4 il: Ottobre 25, 2018, 01:54:06 pm »
Praticamente alla fine avevo voglia di fare uno strumento dove la logica era cablata nell'eseguibile (in modo che non tutti possano metterci le mani) e la parte di estetica fosse nel file html in modo da personalizzarla in base alle esigenze. Tieni presente che la vedo una buona soluzione per creare delle intranet aziendali.
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1836
  • Karma: +4/-0
Re:Esempio di applicazione web con lazarus
« Risposta #5 il: Ottobre 25, 2018, 02:11:24 pm »
[cite]una buona soluzione per creare delle intranet aziendali.[/cite]Sospetto manchi "applicazione".
Dipende dall'esperienza che hai maturato nelle RichWebApplication aziendali.
La tendenza adesso è mettere tutte le cose "statiche" (che non hanno bisogno di essere processate dal server) dentro un apache (ad esempio) che serve a tempo zero le risorse statiche.Tramite js si fanno le chiamate al server che eroga servizi o microservizi.
Poi tramite un socket e un url puoi erogare quello che vuoi :)

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #6 il: Ottobre 25, 2018, 02:19:45 pm »
[cite]una buona soluzione per creare delle intranet aziendali.[/cite]Sospetto manchi "applicazione".
Dipende dall'esperienza che hai maturato nelle RichWebApplication aziendali.
La tendenza adesso è mettere tutte le cose "statiche" (che non hanno bisogno di essere processate dal server) dentro un apache (ad esempio) che serve a tempo zero le risorse statiche.Tramite js si fanno le chiamate al server che eroga servizi o microservizi.
Poi tramite un socket e un url puoi erogare quello che vuoi :)
Si ho dimenticato applicazione. Si ho presente la struttura che descrivi. Infatti per alcune cose la uso, ad esempio con fullcalendar. Dove i dati sono in json e vengono letti dopo che il componente js è stato caricato. Però diciamo che l'idea di caricare alcuni dati al momento della generazione della pagina non mi dispiace. Anche per poter cambiare alcuni valori da database (da remoto) senza bisogno di dover accedere fisicamente ai file per cambiare tali parametri. Un esempio è la dimensione delle celle di fullcalendar. Sicuramente non è la cosa più elegante, ma è funzionale. Poi ripeto, il mio è solo un esempio appena accennato.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #7 il: Ottobre 25, 2018, 02:26:17 pm »
Ovviamente non mi sono appoggiato ad altro che non al programma lazarus in modo da non dover installare niente sul server/pc di un ipotetico cliente (tipo apache). In futuro mi piacerebbe affiancargli una gestione della reportistica tipo fpreport.
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1836
  • Karma: +4/-0
Re:Esempio di applicazione web con lazarus
« Risposta #8 il: Ottobre 25, 2018, 02:32:20 pm »
Butta l'occhio al repository che  ti ho indicato e guarda il server demo. 😉
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #9 il: Ottobre 25, 2018, 02:49:26 pm »
Butta l'occhio al repository che  ti ho indicato e guarda il server demo. 😉

Oooook
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2495
  • Karma: +6/-0
Re:Esempio di applicazione web con lazarus
« Risposta #10 il: Ottobre 25, 2018, 04:05:55 pm »
Io ho provato a compilare server e ha giustamente compilato. Fai attenzione solo a mettere nelle Custom Options dei singoli processi la dicitura -dUseCThreads

Altrimenti va in errore per il server su ambiente linux/mac

Se poi vuoi farlo che funzioni anche su mac ricordati che per Mac non basta fare ../ ma devi tenere in considerazione questo

http://wiki.lazarus.freepascal.org/Multiplatform_Programming_Guide#OS_X

Per il resto devo dire che avevo già battuto quella strada, ma non ero riuscito a far funzionare AdminLte. Ne qualsiasi altro template bootstrap. Quindi per me era altamente problematico, se tu riesci a fare una semplice intranet con la grafica di AdminLte io lo prendo per buono e uso il tuo metodo. Questo perchè devo fare una mini applicazione (solo calendario) per un cliente.
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1836
  • Karma: +4/-0
Re:Esempio di applicazione web con lazarus
« Risposta #11 il: Ottobre 25, 2018, 04:52:44 pm »
Sulla mia Fedora 28 ho riscontrato un problema relativo alla versione (3.0.2 e non 3.0.4) del compilatore.Le espressioni regolari non devono essere proprio le stesse tra le due versioni :)
Cmq.Se devi solo fare un calendario, può andare benissimo il tuo approccio.
Il server, come l'ho impostato, è più orientato al "servizio" e non alla "presentazione".
Quello che potevi usare come spunto è il modo in cui vengono registrati gli endpoint di risposta.;)Mi sembra che siano abbastanza intuitivi :P
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

SB

  • Scrittore
  • Full Member
  • *****
  • Post: 140
  • Karma: +0/-0
Re:Esempio di applicazione web con lazarus
« Risposta #12 il: Ottobre 29, 2018, 07:23:58 am »
...
Dipende dall'esperienza che hai maturato nelle RichWebApplication aziendali.
La tendenza adesso è mettere tutte le cose "statiche" (che non hanno bisogno di essere processate dal server) dentro un apache (ad esempio) che serve a tempo zero le risorse statiche.Tramite js si fanno le chiamate al server che eroga servizi o microservizi.
Poi tramite un socket e un url puoi erogare quello che vuoi :)

Intendi tutti quei siti che ci mettono una decina di secondi a caricarsi un po' alla volta e non sai mai se hanno finito?
Apache servirà le risorse statiche a tempo zero, ma la connessione è ancora il collo di bottiglia delle applicazioni web e servire tante piccole richieste è molto più oneroso di servirne una corposa, o almeno questo è quanto risulta dalla mia modesta esperienza.
Per quanto mi riguarda ho visto che impacchettare tutto in una pagina, e intendo css, js, jquery, e costruzione dinamica della pagina, è molto più veloce che decine o centinaia di download. Nemmeno il caching dei contenuti abbatte significativamente i tempi di download perchè tanto una richiesta al server deve comunque essere fatta per ogni risorsa e se i contenuti da verificare sono decine, di verifiche se ne devono fare tante...
Con i server che ci sono, una pagina può essere generata in tempi infinitesimali.
Certo che se poi lato server si usano script interpretati come è di moda, allora i tempi di generazione delle pagine diventano decine/centinaia di volte superiori. Ma noi usiamo FP compilato!



 

Recenti

How To

Trascinare un file nel programma da xinyiman
DB concetti fondamentali e ZeosLib da xinyiman
Recuperare codice HTML da pagina web da xinyiman
Mandare mail con Lazarus da xinyiman
Stabilire il sistema operativo da xinyiman
Esempio lista in pascal da xinyiman
File INI da xinyiman
Codice di attivazione da xinyiman
Realizzare programmi multilingua da xinyiman
Lavorare con le directory da xinyiman
Utilizzare Unità esterne da Loryea
TTreeView da xinyiman
TTreeview e Menu da xinyiman
Generare controlli RUN-TIME da xinyiman
LazReport, PDF ed immagini da xinyiman
Intercettare tasti premuti da xinyiman
Ampliare Lazarus da xinyiman
Lazarus e la crittografia da xinyiman
System Tray con Lazarus da xinyiman
UIB: Unified Interbase da Microges2000
Il file: questo sconosciuto da Microges2000
Conferma di chiusura di un applicazione da xinyiman
Liste e puntatori da Microges2000
Overload di funzioni da Microges2000
Funzioni a parametri variabili da Microges2000
Proprietà da Microges2000
Conversione numerica da Microges2000
TImage su Form e Panel da Maverich
Indy gestiore server FTP lato Client da Maverich
PopUpMenu sotto Pulsante (TSpeedButton) da Maverich
Direttiva $macro da Microges2000
Toolbar da xinyiman
Evidenziare voci TreeView da Maverich
Visualizzare un file Html esterno da Maverich
StatusBar - aggirare l'errore variabile duplicata da Maverich
Da DataSource a Excel da xinyiman
Le permutazioni da xinyiman
Brute force da xinyiman
Indy 10 - Invio email con allegati da Maverich
La gestione degli errori in Lazarus da xinyiman
Pascal Script da xinyiman
Linux + Zeos + Firebird da xinyiman
Dataset virtuale da xinyiman
Overload di operatori da Microges2000
Lavorare con file in formato JSON con Lazarus da nomorelogic
Zeos ... dietro le quinte (prima parte) da Stilgar
Disporre le finestre in un blocco unico (come Delphi) da Maverich
Aspetto retrò (Cmd Line) da xinyiman
Come interfacciare periferica twain da Narciso
Ubuntu - aggiornare free pascal e lazarus da xinyiman
fpcup: installazioni parallele di lazarus e fpc da nomorelogic
Free Pascal e Lazarus sul Raspberry Pi da nomorelogic
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal. da nomorelogic
Creare un server multithread da xinyiman
guida all'installazione di fpc trunk da subversion in linux gentoo da nomorelogic
Indice da nomorelogic
DB concetti fondamentali e connessioni standard da xinyiman
Advanced Record Syntax da nomorelogic
DB concetti fondamentali e DBGrid da xinyiman
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText da xinyiman
Advanced Record Syntax: un esempio pratico da nomorelogic
Superclasse form base per programmi gestionali (e non) da nomorelogic
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox da nomorelogic
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form da nomorelogic
Superclasse form base per programmi gestionali (e non) #4 - wait animation da nomorelogic
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog da nomorelogic
Installare lazarus su mac osx sierra da xinyiman
Utenti
Stats
  • Post in totale: 11790
  • Topic in totale: 1460
  • Online Today: 27
  • Online Ever: 520
  • (Novembre 04, 2018, 12:00:31 pm)
Utenti Online
Users: 0
Guests: 10
Total: 10

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.