Topic: Consiglio prima di iniziare il mio progetto.  (Letto 53 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline PyPeppe

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Consiglio prima di iniziare il mio progetto.
« il: Febbraio 07, 2020, 20:28 »
Buonasera a Tutti.....
scrivo in questa sezione del forum perché credo sia quella più appropriata rispetto alla sezione dedicata alle interfacce grafiche e a seguire capirete anche il perché.
Per chi ha letto la mia presentazione sa che non sono un programmatore professionista, ho comunque buone esperienze con Flash, Java, php, html, ho usato e sto usando per imparare Python, Eclipse con PyDev.
Ho necessità di studiare Python perché vorrei realizzare un software, "inizialmente" desktop, che dovrebbe interagire, direi quasi come un plug-in puro, con QGis (scritto in Python).
Ho cominciato ad interessarmi, mentre studio e scrivo codice in Python, all'interfaccia grafica, puntando su wxPython e ho anche installato wxFormBuilder, ma mentre cercavo sul forum notizie sulla gerarchia dei "contenitori" di wx (frame, sizer, panel, etc etc) mi sono imbattuto su una discussione dove veniva sconsigliato l'uso di wxPython per la creazione di un software per la gestione di un magazzino, poiché la prospettiva futura di rendere fruibile tale software ad altri e più utenti, tramite altri dispositivi piuttosto che tramite server, veniva e non di poco, limitata da una progettazione basata su questa GUI come altre.
Quindi mi sono un po', come dire, rivisto in questa situazione, poiché il mio software e me lo auguro, potrebbe avere la stessa sorte e, quindi, ho sottolineato il suggerimento di utilizzare Django, di cui, leggendo di Python, ne ho già incrociato almeno il nome!!  :embarrassed:
Ora vi chiedo..... è possibile progettare il mio software con Djando in modo che, inizialmente, funzioni su un singolo pc come fosse un'applicazione desktop, cosicché, se si aprissero "orizzonti lato sever" il passaggio sarebbe indolore!?
Mi scuso per la prolissità, grazie a Tutti per l'attenzione che vorrete prestarmi.

Offline barbezuan

  • python habilis
  • **
  • Post: 56
  • Punti reputazione: 0
    • Mostra profilo
Re:Consiglio prima di iniziare il mio progetto.
« Risposta #1 il: Febbraio 08, 2020, 14:33 »
Django è un web framework, quindi puoi creare un'applicazione server-client che puoi benissimo usare dalla macchina che ospita il server.
Al di là di questo, usare Django implica una buona conoscienza di Ptyhon.
Buon lavoro

Offline PyPeppe

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Re:Consiglio prima di iniziare il mio progetto.
« Risposta #2 il: Febbraio 08, 2020, 14:57 »
Django è un web framework, quindi puoi creare un'applicazione server-client che puoi benissimo usare dalla macchina che ospita il server.
Al di là di questo, usare Django implica una buona conoscienza di Ptyhon.
Buon lavoro

Grazie mille dell'attenzione.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.946
  • Punti reputazione: 9
    • Mostra profilo
Re:Consiglio prima di iniziare il mio progetto.
« Risposta #3 il: Febbraio 08, 2020, 15:57 »
Mah... mi sembra una discreta insalata mista di concetti eterogenei. Il mio dubbio è che, se hai studiato un po' di programmazione (in java!, nientemeno), dovresti ben avere qualche nozione generale di architettura del software, quindi non capisco di preciso che cosa non ti è chiaro.
In ogni caso...
Primo: non c'è assolutamente nessun ostacolo a scrivere un gestionale di magazzino "accessibile" in rete con wxPython. Le assurdità che la gente riesce a scrivere sui forum... vabbè. Ora, wxPython è un gui framework desktop, ma non è certamente un application server. Puoi usarlo come front-end e gestire il back-end un po' con quello che ti pare. Diamine, al limite potresti perfino fare richieste http con una api REST e scambiare json avanti e indietro. E a questo punto avresti niente meno che una web-app, ma con il frontend in wxPython. E sul lato server dovresti metterci... vediamo un po'... ti ci vorrebbe un web-app framework... tipo... Django!!, proprio così, perché no (o Flask, naturalmente).
Dal lato opposto, non c'è nessun ostacolo a scrivere un gestionale di magazzino "mono-utente" con Django. Certo, questo sarebbe stupido, ma tant'è. Django è un web framework, ma niente ti vieta di installare Django, un web server e la tua applicazione web, tutto quanto sulla tua macchina, e fare richieste avanti e indietro tra te stesso e te stesso. In ogni caso, Django non è un gui framework, quindi il front-end della tua applicazione resta (in teoria) "scoperto". Certo, poi in pratica Django è un framework complesso ed estendibile, ed esiste Django-form e ci sono estensioni per i comuni frontend js.

Il punto è, in generale, se tu intendi che la tua applicazione debba essere distribuita "come un software" oppure "come un servizio". Se vuoi distribuire un software che si installa sulle macchine dell'utente, allora puoi usare per esempio una gui in wxPython... quello che c'è dietro la gui comunque te lo devi scrivere tu, compresa l'eventuale connessoine a un server che fornisce le risposte alle varie richieste (che tipo di server, per esempio un web server, è ancora un altro discorso). Se vuoi distribuire il tuo software come un servizio, allora ovviamente la cosa più comune è che sia un servizio web: quindi ti installi un web server sul tuo server, ti installi un web framework sul tuo server, ti installi la tua web app sul tuo server, e agli utenti non resta che connettersi col loro browser e stare a vedere quel che succede. Ovviamente in questo caso sei limitato a ciò che può girare dentro un browser, ovvero javascript. Per dire, tu potresti amare moltissimo una certa feature di wxPython, ma non è che wxPython puoi farlo girare nel browser. Quindi, se la tua applicazione deve funzionare come un servizio, il frontend non può essere in wxPython.

Questo in generale. Nel tuo caso specifico... secondo me stai facendo ancora una certa quantità di insalata. Io non sono un esperto di sofware GIS, ma a me risulta che Qgis non sia un gis framework, ma una vera e propria applicazione gis bell'e pronta. Un classico programma desktop. Una cosa che la avvi e quella ha la sua finestra con i suoi menu, i suoi pulsanti, tutto... Se tu vuoi scrivere un plugin per Qgis, bene, fantastico, vai avanti. Ma allora non c'entra nulla né Django né wxPython. Devi scrivere un plugin di Qgis, e i tuoi utenti devono installare Qgis e il tuo plugin.
Ma tu forse volevi dire invece PyQgis, che è il framework che sta dietro Qgis. Ora, qui non so bene aiutarti... in generale tu dovresti essere in grado di pubblicare un canvas di PyQgis dentro una gui fatta con wxPython. Ma non saprei come... conosco piuttosto bene wxPython ma non ho mai toccato PyQgis.
Viceversa, Django ha già un suo sotto-framework gis, che si chiama GeoDjango (e che è distribuito con Django stesso). Non è PyQgis, ma è comunque un framework gis che dovrebbe renderizzare dati gis che Django ti aiuta a prelevare da un server gis. Potresti dargli un'occhiata, di sicuro è codice molto meglio documentato e moderno di qualsiasi cosa che puoi trovare su wxPython (a parte il mio libro, che però non tratta (ancora) di queste cose).

Offline PyPeppe

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Re:Consiglio prima di iniziare il mio progetto.
« Risposta #4 il: Febbraio 08, 2020, 19:08 »
Grazie anche a te RicPol, molto esaustivo.