* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

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

Inserisci il nome utente, la password e la durata della sessione.

109 Visitatori, 0 Utenti

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

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-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: 3273
  • Karma: +12/-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: 2389
  • Karma: +10/-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: 3273
  • Karma: +12/-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: 3273
  • Karma: +12/-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: 2389
  • Karma: +10/-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: 3273
  • Karma: +12/-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: 3273
  • Karma: +12/-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: 2389
  • Karma: +10/-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: 3273
  • Karma: +12/-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: 3273
  • Karma: +12/-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: 2389
  • Karma: +10/-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
  • Sr. Member
  • *****
  • Post: 283
  • Karma: +1/-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

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 97
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 109
Total: 109

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.