Newsgroup: it.comp.lang.delphi
Titolo: Web app in Delphi con Delphi

"React is the library created by Facebook to manage user interfaces 
inside the famous social network. In this talk we'll se how you can 
develop Web applications with a highly dynamic and performing UI 
connected to a Web API provided by a Delphi backend"
 
Leggendo questa nota, mi sono incuriosto; anche perche' dovrei 
aggiungere la parte Web ad un applicativo gia' in essere, e non posso
certo mettermi a rifare tutto in C# (Xamarin) o altro.
 
Cercando non ho trovato (ancora) come utilizzare React in Delphi.
 
Avete notizie su dove reperire documentazione.

 certo mettermi a rifare tutto in C# (Xamarin) o altro.
 
Se hai seguito il ng recentemente sai già perchè delphi -IMHO- non è 
adatto per questo tipo di sviluppo (vedi tiobe index story e Gartner 
analysis).
 
Il mio consiglio è di sviluppare la parte web con strumenti più adatti e 
di integrare dentro il tuo gestionale tale parte tramite un componente 
wrapper di un web browser.
 
-- 
Morde

 Cercando non ho trovato (ancora) come utilizzare React in Delphi.
 
Cosa vuol dire "usare React in Delphi"? 
Il talk che hai citato credo illustri come creare un'applicazione web in cui per l'UI viene impiegato React, ma Delphi per il backend, quindi non e` su come "usare React in Delphi". Specifica meglio quello che vuoi fare. Il front end web di qualunque sistema, ormai, prescinde dal backend. Di solito usi una tecnologia basata su HTML5/JavaScript (il framework, se Angular o React, per esempio) lo decidi tu. Se si interfaccia al server mediante una REST API, il server sei libero di implementarlo come vuoi.


prova con cobolscript è fantastico!
 
-- 
Ripristinare il trattato di Vienna è imperativo!
W IL LOMBARDO-VENETO.
W LA LIBERTA'.
ONORE E GLORIA A S.M. CARLO D'ASBURGO-LORENA!!!

>
un paio di c.............
 

 certo mettermi a rifare tutto in C# (Xamarin) o altro.
 
Quindi, non potendo usare delphi, l'alternativa è il "non fare"?
 
 
A.

 Cercando non ho trovato (ancora) come utilizzare React in Delphi.
 
React devi utilizzarlo come frontend, ovvero crei un backend in Delphi che
risponde tramite e.g. REST API e poi, mediante PHP, Python, Ruby, Java, Go,
crei una webapp che sfrutta React per servire i contenuti (personalmente ti
consiglio di usare, nell'ordine, Go, Java o Python per scrivere la webapp)
 
Enrico

 consiglio di usare, nell'ordine, Go, Java o Python per scrivere la webapp)
 
 
...addirittura GO prima di java...
 
Posso chiederti perchè?
 
A.

 ...addirittura GO prima di java...
 
Go e` un ottimo linguaggio, che ha la meta` degli anni di Java e che sta crescendo bene. Molti validi progetti (Docker e Kubernetes in primo luogo) sono scritti in Go. Benche` Java sia ancora il linguaggio piu` usato, e` abbastanza vecchiotto. Val la pena esplorare nuovi linguaggi per cose nuove. Non necessariamente per necessita`, ma per arricchimento personale.

 Posso chiederti perchè?
 
Perché, a fronte di una sintassi semplice ed immediata, e a fronte di una
velocità esecuzione pari a quella di Delphi (il codice viene compilato in un
binario PE/Elf), non hai i problemi di Python (deploy, ram) né i problemi di
Java (ram), con il vantaggio di avere un linguaggio pensato anche e soprattutto
per la programmazione concorrente
 
Enrico


 
Appunto, sono interessato anche io alle motivazioni.
Essere un early adopter può portarti in vantaggio sulla concorrenza, ma 
può anche portarti a questo: 
http://oi64.tinypic.com/6oexe8.jpg
 
 
 
 
-- 
Morde

 abbastanza vecchiotto.
 
Più che altro Go lo vedo bene proprio per chi proviene da Delphi, in quanto si
trova un linguaggio molto simile a quello che ha lasciato ed ha comunque un
linguaggio che, come dici, sta crescendo bene (in particolare, lato web ha
abbastanza librerie, e benché sia consigliabile più per creare REST API, va
bene anche per webapp complete). Inoltre, le goroutines e i channel sono
qualcosa di ben fatto che permettono una scalabilità abbastanza semplice e
veloce
 
Enrico

Enrico Bianchi ha scritto:

ho dato un occhio a Go ( prima volta che lo vedo ) andando sul sito 
"golang", non mi piace la storia delle dichiarazioni di variabili per 
assegnazione, anche se da quanto ho capito si salva in calcio d'angolo.
Se ho capito bene la prima assegnazione deve essere fatta con ':=' 
altrimenti ti dice variabile non esistente.
 
Ma questi sono solo gusti personali, preferisco quella del c/pascal.
 
 
 
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
 
to reply remove "1975nosp"
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 può anche portarti a questo: 
http://oi64.tinypic.com/6oexe8.jpg
 
 
Il rischio di spararsi nei piedi e` mitigato dalle garanzie che arrivano da fuori e dall'aria che si respira. Il fatto che molti progetti di successo (vedi Docker e Kubernetes) siano stati scritti con quel linguaggio e` un'ottima garanzia. Il fatto che dietro ci siano persone del calibro di Pike e Thompson sono un'altra ottima garanzia.

>
Certo che no , ma ho dato uno sguardo a Visual Studio Community, sezione 
C#; l'Ide e' di una lentezza spaventosa paragonato a RAD Studio.
 
Quasi faccio prima a usare C# con notepad per creare Asp.Net
 
 
 

 Book, RestFul da pag.174
 
Teti parla dell'implementazione di un sistema RESTful. Delphi puo` essere usato (come e` stato gia` detto in questo thread) per sviluppare il back-end. React lo usi a prescindere da Delphi.

 altrimenti ti dice variabile non esistente.
 
Hai capito a metà ;)
In Go puoi assegnare le variabili dinamicamente (pippo := 1) o staticamente
(var pippo int; pippo = 1), quello che cambia è il contesto e la riassegnazione
(ovvero, se assegni con pippo := 1, successivamente devi usare pippo = 2).
Inoltre, in caso si definiscono delle strutture, devi necessariamente definire
il tipo di ogni campo della struttura
 
Enrico 

 Book, RestFul da pag.174
 
Occhio, un conto è fare una webapp che espone un'API REST con cui ti
restituisce dei dati (solitamente in formato JSON), un altro è fare una
webapp che mostra quei dati all'utente. La prima la fai tranquillamente con
Delphi, per la seconda non solo devi integrarla con Javascript (che è una
merda), ma non conviene nemmeno usare Delphi per il backend
 
Enrico

 Hai capito a metà ;)
 
Prima volta che lo vedo e arrivo a metà :)
 
comunque grazie per la spiegazione.


 Prima volta che lo vedo e arrivo a metà :)
 
Diciamo che hai capito a meta` l'argomento basilare di ogni linguaggio di programmazione: l'assegnazione di variabili. 
 
Questo dovrebbe farti riflettere.

4ndre4 ha scritto:

Mi riferivo alla sintassi di come si crea una variabile.


 Quasi faccio prima a usare C# con notepad per creare Asp.Net
 
Adesso non esageriamo...! :-)
 
 
Non esiste solo delphi o c# o 
asp.net
.
Non esiste solo windows.
Non esiste solo SqlServer....
etc etc etc
 
A.
 

 E poi, scusami, ma chiedere a Daniele e/o altre persone Embarcadero se delphi va bene per fare una tal cosa non lo trovi molto simile a chiedere all'oste se il vino è buono?
 
Precisiamo ancora una volta che in quel libro Daniele Teti non sta 
parlando di Delphi quale tecnologia di sviluppo front-end. Sta parlando 
di un sistema RESTful e del *backend* in Delphi. Cito testualmente:
 
"This recipe uses the Delphi MVC Framework, a Delphi open source 
framework based on WebBroker that allows you to create powerful RESTful 
web services." (pag. 175)
 
-- 
4ndre4

 scrivere la webapp)
 
scusate l'ignoranza, ma sono curioso, per quanto riguarda la parte di 
front-end, volendo utilizzare un IDE "RAD" (non so se è il termine 
corretto) ossia che permetta di realizzare interfacce utente in maniera 
visuale, su cosa vi orientereste?
Cercando sul web si apre un mondo...qualcuno ha esperienza diretta con 
qualche prodotto?
Grazie
 
-- 
Emanuele Desideri

È un'esigenza poco sentita lato web, soprattutto se usi tool come bootstrap. Oggi poi c'è il responsive programming.

>
gia' e' un mondo vario e vasto, dove esiste tutto ed il contrario di tutto.
 

 gia' e' un mondo vario e vasto, dove esiste tutto ed il contrario di tutto.
 
Già. A volte anche troppo... :-P
 
A.
 

>
ho visto delle griglie dinamiche , stile desktop fatte in JavaScript; 
queste avrebbero un senso, non certo le Table Html statiche
Ma VS ti permette di mescolare codice Html e javascript ?
 
 

>
per mescolare le carte aggiungiamo PHP, ora OOP sicuramente idoneo per 
creare pagine web dinamiche.
almeno nei casi dove qualcuno si trovi a dover consultare dati tramite 
web, si tratta di pagine dinamiche.
 
cosi' l'ipotetico uso comune
- db unico
- azienda con applicativo desktop
- manager o altro consulta i dati tramite pagine web
oppure
- utente consulta la sua area (turni, note di servizio, programmazione 
servizi) via web
 
visti i casi sopra vale la pena fare un WCF ? , quello che serve non e' 
piu' simile ad un WebForm ? PHP puo' ottenere risultati equivalenti ad 
Asp.Net forse in modo piu' pulito (manutenzione codice)
 
e per completare "tutto ed il contrario di tutto", ci sono sostenitori 
che indicano Asp.Net non la migliore tecnologia per pagine web, che MS 
per 
ASP.NET
 abbia copiato PHP, stessa cosa con C# e Java.
 

 Ma VS ti permette di mescolare codice Html e javascript ?
Certo che si. 
Per quel (poco) che so, oramai javascript, declinato sotto forma delle varie librerie disponibili, è diventato un pezzo importante dello sviluppo web.
 
 
A.

 per 
ASP.NET
 abbia copiato PHP, stessa cosa con C# e Java.
 
1) ..quindi...?? 
2) MA CHI SE NE FOTTE?? :-d
 
A.

>
nessuno; se uno ha copiato l'altro o viceversa, dimostra solo che 
nessuno reinventa niente (anche se vogliono fare credere il contrario)
 

 non-scelta-migliore-per-realizzare-applicazione-web
 
Leggerò valuterò rifletterò.
 
A.

>
mi ricordo anni fa, con ASP (standard) javascript permetteva effetti 
vari tipo rotazione immagini, presentazioni.
 
riaggangio PHP dell'altro post; come linguaggio non e' male, molti 
PlugIn di Wordpress sono un misto di Javascript e PHP, ma personalmente 
non me ne piace nessuno (troppo lenti nel fare slideshow), sono convinto 
che creare una pagina per slideshow a mano, sia molto piu' veloce e 
flessibile che non usare un PlugIn (free o a pagamento che sia).
 
Javascript e' nato per prestazioni e flessibilita', quindi mescolato a 
PHP potrebbe perdere parte delle sue potenzialita' (prestazioni).
 

 PHP potrebbe perdere parte delle sue potenzialita' (prestazioni).
 
Onestamente, non so.
Non conosco PHP, e solo ora sto muovendo i primi passi su javascript.
Da un lato viene da pensare "maro' che palle..altre cose nuove!", per contro, trovo meraviglioso imparare qualcosa di nuovo, anche se sono prossimo ai 50 anni.
 
A.

>
ho lo stesso impulso, ma la dura realta' e' che bisogna produrre 
qualcosa per viverci; sogno sempre di non avere problemi economici e 
dedicarmi all'hobby di sperimentare le nuove tecnologie che arriveranno, 
per contro i 50 li ho superati, li accetto non e' un problema, il lato 
positivo di questa attivita' e' che aiuta a mantenere la mente allenata.

 giocoforza lo devono dimaostra con il codice
 
REST e` un modello architetturale che prescinde da Delphi e che "con 
REST si possa fare qualcosa" non e` dato da dimostrare ne` a Cantu`, ne 
a Teti. Che REST sia valido e` dimostrato dalla miriade di sistemi 
RESTful in giro. Semmai loro possono mostrarti come costruire un sistema 
RESTful con backend in Delphi (che e` quel che Teti fa nel suo libro). 
Detto questo, il fatto che in Delphi si possa fare qualcosa e` un conto; 
il fatto che valga la pena realizzare quel qualcosa in Delphi e` un 
altro. Diciamo che persone come Cantu` hanno fatto dell'evangelizzazione 
su Delphi il proprio mestiere, per cui il paragone con l'oste e` 
abbastanza calzante.
 
-- 
4ndre4

 semplice creare qualcosa di serio che vada sulla maggior parte dei device.
 
Si puo` fare benissimo. Lo stesso Android Studio ti indica la 
percentuale di device raggiungibili con una determinata versione delle API.
 
-- 
4ndre4

 e ho creato un file .aspx per visualizzare due caselle di testo ed un Button
 
Occhio, scrivere il codice di controllo assieme a quello di presentazione è
considerata una pratica obsoleta, ma è comunque un punto di partenza. Ti vorrei
comunque far notare quanta riusabilità di codice hai con .NET, ovvero librerie
scritte in C# possono essere utilizzate in 
ASP.NET
, in Delphi, proprio perché
l'unico sistema per usarlo via web è come backend, una cosa del genere non è
possibile
 
Enrico

 PHP potrebbe perdere parte delle sue potenzialita' (prestazioni).
 
Va beh, qua non sai di cosa stai parlando
 
Enrico

>
il problema che ho di fare convivere Delphi e Web, lo risolvero' con 
ASP.NET
 (non vedo altra strada) , in azienda usano il gestionale Win32, 
chi ha necessita' di consultare via Web si connettera' allo stesso Db 
per le operazioni necessarie.

>
non sono esperto ma :
PHP = Lato server, JS = Lato client
se Lato server trovo all'interno di PHP istruzioni JS da interpretare, 
devono essere inviate al Browser; non sono una perdita ?
 

 devono essere inviate al Browser; non sono una perdita ?
 
A parte che, con NodeJS, JS non e` piu` solo relegato al lato client, ma poi che significa "all'interno di PHP istruzioni JS da interpretare"? Fammi un esempio.
 

 per le operazioni necessarie.
 
Esatto.
 
A.


qualcosa di simile, il codice PHP viene eseguito dal Server, quando 
trova la funzione elimina non la deve passare al client ?
 
//codice php
<?php
//Controlla i parametri in ingresso
   if(isset($_POST['comando']) && $_POST['comando']=="ELIMINA"){
     if(isset($_POST['id']))
       //CANCELLA IL RECORD. elimina con un certo id.
   }
?>
... // javascript
... //
<script language="JavaScript">
function elimina(id){
   if(confirm("Vuoi eliminare")){
 
document.form1.id
=id;
     document.form1.operazione="ELIMINA";
     document.form1.submit();
   }else return false;
}
</script>
... // html
<form name="form1" method="POST">
   <input type="hidden" name="id"/>
   <input type="hidden" name="operazione"/>
</form>

Io credo che tu sia molto confuso su come funzioni un'applicazione web. Che significa "quando trova la funzione elimina"? Quella funzione è in JavaScript è disponibile già al client. Che vuol dire "passargliela al client"? Il codice PHP viene eseguito sul server. Il codice JS sul client. Non interagiscono tra loro.

>
il codice PHP (la pagina che lo contiene e' su un Server) mentre il 
browser che la chiama non e' sulla stessa macchina.
secondo la mia idea sbagliata: JS viene eseguito sul client (che quindi 
deve essere inviato ed interpretato).
 
tu scrivi che JS è gia' disponibile su Client, intendi che quando il 
browser legge la pagina (dal Server), ha gia' interpretato il codice JS, 
cosi' ogni parte di codice PHP/JS fa la propria azione senza un continuo 
scambio.
 

Il browser chiede al server una pagina, il server delega all'interprete php l'elaborazione del codice php nella pagina ed incorpora l'output nella risposta. Il codice JS nella pagina non viene toccato dal server, ma spedito al browser, che lo interpreta ed esegue al momento opportuno.

>delphi hai le DLL di windows (che espongono FUNZIONI E PROCEDURE, cioè non object oriented) oppure i packages (un po scomodi). 
In c# le dll sono l'equivalente dei packages di delphi
 
Guarda che i package di Delphi *SONO* DLL.

 devono essere inviate al Browser; non sono una perdita ?
 
Allora, PHP è un linguaggio di programmazione web server side, ovvero viene
interpretato lato server e al client viene inviato il risultato. Javascript
è un linguaggio di scripting client side, ovvero viene inviato al client e ci
pensa lui ad interpretarlo. Posto che fa veramente schifo, mischiare codice PHP
e codice JS nella stessa pagina web non influisce sulle prestazioni, perché
comunque il codice Javascript verrà interpretato *dopo* che la pagina sarà
stata interpretata dal motore PHP. Detto questo, sono d'accordo con Andrea,
studia come funziona il web perché se vuoi cimentarti nella programmazione di
webapp non hai la minima idea di cosa stai facendo
 
Enrico

 visuale, su cosa vi orientereste?
 
Qt Creator + Go/Python/C#/$altro.
Oppure Scene Builder + Java
Oppure Visual Studio + C#/VB.Net/$altro su .Net
 
Enrico

 Oppure Scene Builder ...
 
Che pero` e` orripilante. Non capisco come si possa seriamente pensare di usare JavaFX per l'UI...
 

 usare JavaFX per l'UI...
 
Non  ti do torto, ma non è che tu abbia alternative, Swing rimane solo per
retrocompatibilità e SWT non mi ha mai entusiasmato parecchio...
 
Enrico

 >>Il 18/02/2017 21:32, Stefano ha scritto:
mi avete scritto che Delphi e' preistorico mentre C# il futuro, niente 
da dire su C#, ma sul modo di collegare un dataGrid ad una Tabella si.
 
In Delphi esiste il dataSource che punta a FDQuery e un DbGrid che punta 
a dataSource, quindi comodo e univoco (o cosi' o niente).
 
in C# WPF
 
trovo vari modi di popolare un datGrid (nessuno ha fuzionato), questo 
uno dei piu' semplici.
 
dichiarazioni
  MySql.Data.MySqlClient.MySqlConnection conn;
  MySqlDataAdapter da;
  DataSet ds;
 
public MainWindow()
         {
            InitializeComponent();
            conn = new MySql.Data.MySqlClient.MySqlConnection();
         }
 
conn.ConnectionString = myConnectionString;
conn.Open();
MessageBox.Show("Locale connesso" + conn.ServerVersion);
 
da = new MySqlDataAdapter("SELECT * FROM tb_lingue", conn);
ds = new DataSet();
da.Fill(ds);  //errore (*)
dataGrid.ItemsSource = ds.Tables[0].DefaultView;
 
(*) System.NotImplementedException non è stata gestita
     HResult=-
2147467263
 
     Message=Operazione o metodo non implementato.
 
se invece dichiaro  MySqlDataSet ds;
ottengo su dataGrid.ItemsSource = ds.Tables[0]
MySqlDataSet non contiene una definizone di Tables
 
Voi che conoscete C# e VS e' un problema di WPF o e' proprio macchinoso 
di suo ?
 
che vuol dire metodo non implemetato ? Fill e' un metodo di SqlDataAdapter.

E' da alcuni post che ho la sensazione che:
 
1) confusione
 
2) parti troppo in quarta senza prima aver studiato qualcosa.
Vedi WebForm (praticamente obsoleta) e i dataset (praticamente obsoleti).
Su questo punto ti suggerisco, prima di leggere un qualsiasi post/thread/articolo etc, di vedere A CHE ANNO RISALGONO.
 
 
3) questo è un NG delphi, non un NG c#/.net
 
Quindi, per 'sta volta rispondo.
Se hai altre rogne su .net, gia sai dove andare a postare le tue domande.
 
Ovviamente (ma non per tutti), google rulez:
 
 
1) qua c'è un esempio di come collegare un "qualcosa" ad una grid:
http://stackoverflow.com/questions/5809816/datagrid-binding-in-wpf
 
 
Notare che puoi usare come fonte dati per una griglia non solo un "qualcosa" che fa riferimento ad un database: può anche essere una collection.
Tanto per fare un esempio, prova in delphi a popolare una griglia VCL, senza usare livebindings, con una collection SENZA PASSARE DA UNO STRATO INTERMEDIO!
 
Una eccezione che conosco IO è la griGlia dei developer express che tramite una classse datacontroller permette di popolare la griglia con quello che ti pare (con un po di lavoro..), ma i devex non solo non sono agratis ma sono pure belli costosi:
 
https://www.devexpress.com/Products/VCL/pricing.xml
 
 
 
 
2) 
https://wpftutorial.net/DataGrid.html
 
A qusto link c'è una piccola raccolta di comuni task sulle grid.
 
 
Ovviamente (ma non per tutti)  questi link sono UN INIZIO e non LA SOLUZIONE PRONTA!
 
..mo basta però.. :-)
 
A.