Gambas-it
Gambas3 => Programmazione => Topic aperto da: allegfede - 21 Maggio 2013, 11:57:16
-
Per il mio progetto OTVA sto' creando un modulo che permetta l'inserimento di materiale multimediale in un sistema organizzato ed indicizzato.
L'idea e' di fare come youtube, ovvero l'utente carica un filmato dal suo PC e mentre il browser effettua l'upload sui server di google (youtube e' google), l'utente puo' preoccuparsi dell'immissione dei metadati relativi al filmato (tag, nome, descrizione etc.)
Il mio dubbio e' su COME far fare l'upload dal PC dell'utente di OTVA al NAS centrale del sistema OTVA in background rispetto al processo principale.
Ancora meglio sarebbe se l'utente si occupasse solo di indicare quali video (per esempio) caricare, immettere i metadati e premere "salva" e poi fosse un processo in background che analizza la lista dei nuovi inserimenti e procede a caricare le risorse locali nella giusta PATH sul NAS di OTVA (la struttura del filesystem e' prestabilita relativamente ad un parametro "OTVA_ROOT".
Ho letto qualcosa di GB.task, ma niente di risolutivo o codice chiaro.
Qualcuno ha sperimentato? Posso magari lanciare un comand shell in background? .....
Inoltre ..... secondo voi e' indispensabile?
Con connessioni Gigabit i tempi non sono enormi, ma se e' possibile ottimizzare perche' lasciare l'utente a girarsi i pollici? :D
grazias :D
-
Non so se può esserti utile la proprietà: Application.Daemon
-
e' confermato.....
trasferire 16 giga da pc a nas e' lento anche su rete gigabit ......
urge necessita' di lanciare tread di copia separato :D
Lanciare un'altro programmino gambas con parametri path locale e path destinazione che restituisce il progress e al termine un valore di uscita (1=successo 0=fallimento) e poi si termini?
-
Lanciare un'altro programmino gambas con parametri path locale e path destinazione che restituisce il progress e al termine un valore di uscita (1=successo 0=fallimento) e poi si termini?
...e... quindi ?
-
niente cercavo suggeriementi .... possibili soluzioi ... qualcuno che avesse approcciato un problema analogo ........ vabbe' faccio io e vi faro' sapere :D
-
niente cercavo suggeriementi .... possibili soluzioi ... qualcuno che avesse approcciato un problema analogo ........
Vuoi lanciare un altro programma Gambas da un programma Gambas principale ? Puoi spiegarti meglio ? :coder:
-
si nel momento che l'utente riempie i form del mio programma di ingesting (il primario) e preme il tasto SALVA, vengono aggiornati i dati del DB e LANCIATO un programma gambas "figlio" che fa' da server di trasferimento (avete mai provato teracopy?).
Questi inizia a copiare il file locale nell'opportuna destinazione (se applicazione non e' gia' in esecuzione) oppure l'accoda ai trasferimenti in lista.
Il demone comunica lo stato del processo di copia all'applicazione primaria e aggiorna le path nel DB man mano che le copie vengono eseguite.
-
si nel momento che l'utente riempie i form del mio programma di ingesting (il primario) e preme il tasto SALVA, vengono aggiornati i dati del DB e LANCIATO un programma gambas "figlio" che fa' da server di trasferimento (avete mai provato teracopy?).
Questi inizia a copiare il file locale nell'opportuna destinazione (se applicazione non e' gia' in esecuzione) oppure l'accoda ai trasferimenti in lista.
Il demone comunica lo stato del processo di copia all'applicazione primaria e aggiorna le path nel DB man mano che le copie vengono eseguite.
qualcuno ha esperienza con dbus?
-
qualcuno ha esperienza con dbus?
Milio o fsurfing !
Nel frattempo... hai dato un'occhiata alla WIKI ?
* Usare due programmi Gambas contemporaneamente mediante Process, lo standard Output e lo standard Input (http://www.gambas-it.org/wiki/index.php?title=Usare_due_programmi_Gambas_contemporaneamente_mediante_Process,_lo_standard_Output_e_lo_standard_Input)
* Gestione dei processi mediante "Process" (http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Gestione_dei_processi_mediante_.22Process.22)
* Leggere e scrivere nello standard Output, nello standard Input e nello standard Error (http://www.gambas-it.org/wiki/index.php?title=Leggere_e_scrivere_nello_standard_Output,_nello_standard_Input_e_nello_standard_Error)
-
qualcuno ha esperienza con dbus?
Milio o fsurfing !
direi solo milio :)
cmq, per il tuo problema credo che puoi benissimo realizzare un programma gambas che si occupa del caricamento e che utilizzi come output il terminale che andrai a leggere tramite un processo, come indicato nei link di vuott
-
@fsurfing&vuott
Avevo fatto qualche esperimento, non sono di certo un esperto :)
@allegfede
Ti allego due progetti, schiavo e padrone :), che utilizzano dbus per comunicare tra di loro.
devi avviarli tutti e due, non importa la sequenza...
-
@fsurfing&vuott
Avevo fatto qualche esperimento, non sono di certo un esperto
Eh, ti pare niente !
Ti allego due progetti, schiavo e padrone :), che utilizzano dbus per comunicare tra di loro.
Li ho scaricati e fatti "faticare: "molto interessante ! :coder:
-
grrrraaaaazzzziiieeee
lunedi' li analizzo con calma.
sta settimana ho smantellato (letteralmente) la sala server .... mattone su mattone :D
-
ok, dopo molta fatica (ovvero mi hanno rotto la cosiddette per miliardi di altri motivi ... lavorativi e no ...) ho dato un occhio al codice servo/padrone del buon Milio.
E' esattamente quello che mi serve :D
Se non ho capito male, un programma con l'istruzione:
DBus.Session.Register(NomeClasse, "/PuntatoreNomeClasse")
espone sul sistema (linux) che il DBUS ha una "procedura" chiamata NomeClasse, raggiungibile al percorso dbus / PuntatoreNomeClasse
mentre:
Object.Attach(NomeClasse, Me, "c")
segnala chi si debba occupare della gestione degli eventi.
cosi' con:
DBus["org.gambas.dbus." & nome dell'eseguibile a cui interfacciarsi & "]["/" & PuntatoreNomeClasse & "].eventi che puo' gestire
possiamo passare a lui la "patata bollente" .......
esperimenti in corso :D
-
Se non ho capito male, un programma con l'istruzione:
DBus.Session.Register(NomeClasse, "/PuntatoreNomeClasse")
espone sul sistema (linux) che il DBUS ha una "procedura" chiamata NomeClasse, raggiungibile al percorso dbus / PuntatoreNomeClasse
mentre:
Object.Attach(NomeClasse, Me, "c")
segnala chi si debba occupare della gestione degli eventi.
cosi' con:
DBus["org.gambas.dbus." & nome dell'eseguibile a cui interfacciarsi & "]["/" & PuntatoreNomeClasse & "].eventi che puo' gestire
possiamo passare a lui la "patata bollente" .......
esperimenti in corso :D
Ovviamente è tempo perso se ti/vi chiedo anche di scrivere qualcosa al riguardo nella nostra WIKI ?! :evil:
-
Io mi prenoto per degli esempi pratici.... :P
-
Io mi prenoto per degli esempi pratici....
...scansafatiche ! ;D
-
appena c'ho qualcosa funzionante provo a spiegare in wiki :D
-
appena c'ho qualcosa funzionante provo a spiegare in wiki :D
Muy bien ! Mi permetto, per accelerare le cose, di crearti semplicemente il capitolo specifico su DBus nella parte Guide della Comunità:
http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#DBus
Il titolo della pagina specifica sul programma server e quello client che comunicano fra loro ovviamente glielo sceglierai tu.
-
appena c'ho qualcosa funzionante provo a spiegare in wiki :D
Muy bien ! Mi permetto, per accelerare le cose, di crearti semplicemente il capitolo specifico su DBus nella parte Guide della Comunità:
http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#DBus
Il titolo della pagina specifica sul programma server e quello client che comunicano fra loro ovviamente glielo sceglierai tu.
ok thanks
-
ok ci sono riuscito, ma ho avuto diversi problemi a capire un paio di "sottigliezze" :D
in primis i programmi che si vogliono parlare devono registrarsi sul DBUS con il parametro "me", ma il "me" in pratica e' cio' che scrivete in "project->properties->title" .... mentre io pensavo che il nome del programma fosse quello con cui si creava il progetto ;-)
in secundis ho sbattuto un po' per capire che esponendo i metodi e le proprieta' di un programma si puo' accedervi da un programma esterno attraverso la gambas.org/nome_programma/metodo .....
domani se ci riesco scrivo due cose, ed ovviamente vorrei ringraziare Milio ... il suo master/slave e' stato decisivo ;-)
-
Ho sccaricato i due prog consiglati da Milio molto interessanti.
C'è la possibilità di provare il dbus su una sola macchina?
grazie
-
si certo .. anzi non penso che funzionino in modo differente se non con pipe di memoria (quindi sulla stessa macchina).
Su macchine differenti bisogna usare i socket TCP o altra tecnologia di rete :D
-
allora ho fatto un paio di modifiche al modulo di ingesting del mio progetto OTVA per fare test con DBUS.
Ho anche "hacckato" il server di milio per farmi da schiavo per la copia.
i miei risultati sono qui':
https://sourceforge.net/projects/otva/files/2013-06-25_dbuscopyserver_quite_complete/
i nomi dei file (per ora 3) da copiare e' hard coded :D e il pulsante calcola (che chiede al server di fare la copia dei 3 file ad un paio di secondi di distanza) e' un po' come un'orecchio sulla fronte.
ma il fatto che ora possa avere una "job list" di trasferimenti in sospeso mi entusiasma parecchio :D
ed ora il programma padrone (il modulo di ingesting) riceve anche un feedback dal servo sullo stato delle cose 8)
-
Completed 80%
-
appena c'ho qualcosa funzionante provo a spiegare in wiki
-
Effetivamente m'ero scordato....
In realtà alla fine ho fatto al contrario. Monto i contenuti sulle varie macchine nel. Filesystem, tutti nella stessa path.
Provo a riguardare il vecchio codice.