Italian Help for my first app - forum italiano, lo so ^_^

LucaMs

Expert
Licensed User
Longtime User
Ho preso una decisione, finalmente (spero di non cambiare idea di concentrarmi!).

Ero indeciso se proseguire (quasi ricominciare) a sviluppare il mio giochetto multiplayer online o riprendere in mano la prima app che ho sviluppato quasi un anno fa ormai e pubblicare questa.

Dato che si avvicina il nuovo anno e che questa app consente di tenere ANCHE una sorta di contabilità (non è lo scopo principale dell'app) e dato che l'altra è molto più complessa, oltre ad essere appena accenata (benché teoricamente molto più redditizia), ho deciso per questa.

Avendola preparata quando ancora non conoscevo affatto b4a, essa :D fa alquanto schifo, hehehe.

Ma, come diceva un tizio che poi hanno appeso, "me ne frego" e la pubblico com'è.

L'unica cosa è che vorrei aggiungere una funziona importante: la possibilità di sincronizzare i db locali di due o più dispositivi.

Il buon maxware mi ha giustamente consigliato FTP come metodo più sbrigativo.

Non è che mi dareste una zampetta pubblicando un semplice esempio?

Considerate che tra modifiche, correzioni e soprattutto iscrizione a Google Play che ancora non ho (e prepagata PayPal che ancora non ho), il 31 dicembre mi sembra già troppo vicino :(


Vi ringrazio in anticipo.


[P.S. semplice esempio FTP di trasferimento di un file di testo client/server, non per la sinc. tra i db]
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Antonio
ecco l'esempio di upload
sub invia_file
dim Ftp1 as ftp
FTP1.Initialize("FTP", "ftp.mamosoftware.it", 21, "utente", "password")
FTP1.UploadFile(percorso origine, "nome file", True, "percorso destinazione e nome file")
end sub


Sub FTP_UploadCompleted (ServerPath As String, Success As Boolean)

If Success = False Then Log("errore") else log("OK)

End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Grazie, Mamo.

Sto leggendo il thread di Erel e in effetti la parte client è semplice ed è come tu l'hai gentilmente pubblicata.

Manca però la parte server. Immagino di dover trovare qualche host, meglio se free :D, ma anche questa non è un'operazione che io abbia mai compiuto.

Comunque, immagino che mi ritroverei con una pagina Web per la gestione di FTP ed altro. A quel punto?


Antonio non è esatto, ma il mio nome di battesimo mi piace quasi meno di quello :p
 

LucaMs

Expert
Licensed User
Longtime User
Grazie, Ugo.

In che senso "come vuoi crearlo"? Il sito? Per il momento non mi serve, vorrei solo sfruttare l'FTP come ti ho detto.

Es. la mia app su due dispositivi di due componenti familiari. Il file di testo, inviato appunto tramite FTP sul server, dovrebbe servire per sincronizzare i rispettivi db locali.

Sto guardando questo:

upload_2014-10-29_18-52-6.png



Sono alcune delle caratteristiche di un hosting gratuito (a sinistra i valori del gratuito, a destra quelli a pagamento.

Quel: "Account FTP = 1" e "Accesso FTP anonimo = non consentito" mi preoccupa un po'.

A parte che appunto non so come funzioni la faccenda, ovvero come gestire sul server la ricezione del file, mi sorge il dubbio che io non possa raggiungere il mio scopo.

Se ho due componenti della famiglia Bianchi che hanno la mia app sui loro dispositivi e tre componenti della famiglia Rossi con altrettanti etc.
...

ah, beh, sto pensando mentre scrivo, quindi ho interrotto la frase sopra... forse posso sfruttare una coda su quell'account FTP?


Certo mi da l'idea di un server monoutente, con conseguente eccessiva lentezza del tutto, benché il file da inviare sia un file di testo zippato e quindi di pochi kb.



Mah, HELP!


Grazie ancora, Gerardo
 

LucaMs

Expert
Licensed User
Longtime User
Immagino che dovrei fare in questo modo, ma ho almeno due problemi.

Quando il server riceve un file tramite FTP, lo legge; all'interno troverà un ID per la "famiglia" (diciamo IDGruppo) e lavoricchia sul db MySQL dello stesso server.

I due problemi sono:

1) tutto questo non può essere fatto in altro modo che in PHP, suppongo (e per me è quasi arabo)
2) come dicevo, la cosa sembra piuttosto seriale e, di conseguenza, lenta.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Forse mi conviene creare un server in b4j (che in confronto a PHP conosco molto di più, anche se sempre poco) ma a quel punto starei peggio nel trovare un hosting.

Porca paletta, sta cosa è complicata.

Non riuscirò ad uscirne prima della fine dell'anno; mi conviene pubblicare una versione nella quale al massimo i due dispositivi si scambino i dati quando siano a distanza BlueTooth/wifi-direct e più in là nel tempo una versione online...

a meno che qualche illuminato non mi dia una zampa molto grande!
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Filippo ( prima o poi lo becco quello giusto hihha )
Con altervista sono sicuro che arrivi a fare quello che ti serve... le prove le avevo fatte inizialmente con quello per la parte cloud di alfadesk
come ti scrissi in privato io farei cosi
cellulare moglie : id phone 999999
cellualre marito : id phone 888888
nell'app della moglie metti : Id cellualre collegato : 88888
nell'app della marito metti : Id cellualre collegato : 99999
ora la moglie compera i preservativi per la sera : invio ftp file es_ :99999-data e ora
il marito con un widget dopo un po cerca in ftp se esiste un file con nome 99999--ecc
Se esiste lo processa ( secondo me non serve nemmeno zipaprlo se crei la giusta struttura interna ...magari un csv ??? e manda una notifica nello stesso cellualre del marito ( che dira SIIIIIIIIIIIIIII questa sera si ciulla hihihhaha )
file processatto correttamente Si: cancello il file 99999---- altrimenti lo lascio ( e penso al da farsi )
ecc.ecc.
 

LucaMs

Expert
Licensed User
Longtime User
Hehehe carino l'esempio (marito tirchio e nemmeno previdente).

Ma, ripeto, non so come funzioni la faccenda lato server.

La moglie (che magari i preservativi li buca) invia il suo file e io sul server non devo fare alcunché? Come credo che funzionino le nuvolette tipo DropBox?


Per il nome abbiamo due possibilità:

Se vi interessa (già mi sembra di sentire un coro di "chissenefrega" :D) dovreste fare una petizione da mandare ad Erel in modo che lui cambi il mio "nick".
Oppure un thread / sondaggio.


[P.S. ecco, se non sbaglio, con DropBox puoi "costruire" anche cartelle, e quindi potrei creare una cartella per ogni gruppo]
 

maxware

Well-Known Member
Licensed User
Longtime User
in che senso non so come funziona lato serve??
come ti ho detto non devi usare nessun database sul server..usi file di testo csv per lo scambio dati
Es. la moglie compera i preservativi....fa upload via ftp...l'upload non funziona ...avvisa la moglie che la comunicazione non ha avuto esito e poi gestisci la cosa...1° riporva + tardi...mettila 2° mettila in coda ( nel widget intendo )
ti serve solo un are ftp dopo postare i file
dropbox ???? e se poi la moglie o il marito non hanno dropbox ??
 

LucaMs

Expert
Licensed User
Longtime User
dropbox ???? e se poi la moglie o il marito non hanno dropbox ??

No, non intendevo usarlo (ho chiesto ad Erel e a quanto ho capito, non potrei raggiungere il mio scopo, in quel modo).

Devo quindi considerare la faccenda come se fosse una specie di casella postale?

Nel senso che il percorsoserver sia una cartella nella quale depositare/prelevare files (che quindi potrei distinguere per nome a seconda del Gruppo) senza alcun mio intervento lato server?

Ma si, cavolo (sono passati almeno 10 anni da quando lavoravo seriamente e mi sono rimasti 2k ram in capo). E' da considerare come una cartella condivisa in una rete locale!
 

udg

Expert
Licensed User
Longtime User
Ciao Luca,

ho utilizzato diverse volte i servizi gratuiti di 000webhost e ne sono sempre rimasto pienamente soddisfatto.
Prevalentemente ho costruito dei siti di test serviti da Drupal e la risposta è sempre stata più che decente; non so come scali su numeri alti di utenti o in funzione di un gran traffico dati.

Umberto
 

LucaMs

Expert
Licensed User
Longtime User
Grazie, Umberto.

Beh, in questo caso non penso proprio che il numero di utenti sarà elevato, esistono già molte app dello stesso tipo e la mia ha ben poche particolarità, la maggiore delle quali è che... è più brutta :D.

Comunque, pare che L'ALTRO mio neurone si sia svegliato e mi ha fatto ricordare vagamente qualcosa; ad esempio che ho XAMPP installato (o, meglio, non lo consideravo dal punto di vista FTP) e quindi potrò eseguire dei test in locale. Dopodiché penso proprio che seguirò il tuo consiglio.

Grazie ancora.
 

LucaMs

Expert
Licensed User
Longtime User
Dunque, come detto, per il momento faccio prove locali poi sceglierò un host (quel 000webhost sembra promettere bene, malgrado il nome :D).

Ieri ho fatto mooolti tentativi e ce ne fosse stato uno che abbia funzionato!

Adesso, per chiedervi aiuto, dovrei ricapitolare tutti i tentavi effettuati, ma non è semplicissimo.


Ho seguito alla lettera gli esempi di Erel nel thread Android FTP tutorial.

Per prima cosa ho tentato un upload sul server.

Ho provato sia su un emulatore, in quanto, stando sullo stesso pc del server, ho pensato che inizialmente avrei avuto minori problemi, benché venga sempre sconsigliato di usare 'sti emulatori, sia sul mio smartphone.

Gli errori ricevuti sono stati di diverso tipo e per il momento non li "posto" perché dovrei ricrearli con un ordine decente per poterli pubblicare.

L'impressione (!) era che in alcuni casi non fosse corretto il path (uso FileZilla di XAMPP e, a quanto ho capito, la home di default è la stessa che si usa per i siti, C:\xampp\htdocs nel mio caso. Ho aggiunto un utente al quale ho assegnato C:\xampp\htdocs\AppTestUserDir come directory.
Quindi per l'upload ho tentato vari modi, partendo dall'esempio:
FTP.UploadFile(File.DirRootExternal, "1.txt", True, "/somefolder/files/1.txt")
sostituendo il path "/somefolder/files/1.txt" in molti modi:
"/"
"/AppTestUserDir/"
etc.

A volte mi dava come errore l'impossibilità di creare una connessione dati (errore che mi sembrava dovuto al path errato), altre volte "Filename invalid", e questo è incomprensibile perché il nome del file non aveva niente di speciale, un file .txt.

Peggio ancora tentando con lo smartphone. Per quanto mi sembra di capire, una porta dall'esterno risulta aperta solo se un server è in ascolto su quella porta, se è attivo; se la porta è impostata sul router ma il server non è in funzione, la porta risulta chiusa.
Nel mio caso, la porta 21 risulta sempre chiusa, anche col server FTP attivo.

Molto prolisso, vi sarete addormentati :D

Beh, farò altri tentativi, SEGNANDOMELI, stavolta.

Se qualcuno ci ha capito qualcosa e riesce a vedere l'errore...

Grazie 999 (c'è crisi, fatemi uno sconto dell' 1/1000 :D)


Ah, dimenticavo (!): dato quell'errore sul "nome del file", ho deviato tentando invece il comando List: nada!
 

LucaMs

Expert
Licensed User
Longtime User
Ciao LucaMs..
Personalmente io farei cosi ..niente xamp o cose del genere ma bensi mi creo subito l'host..

Grazie ma sarebbe peggio, avrei minor controllo.

Sto facendo altre prove, se non riesco, proverò anche come dici tu.


User "home": C:\xampp\htdocs\AppTestUserDir
mFTPServerUserFolder = "/AppTestUserDir/"

Comando provato: FTP.List(mFTPServerUserFolder)

Emulatore (stessa cosa se uso backslash \)
___________________________________________________________________________
con: mFTPServerUserFolder = "/"
(000001)30/10/2014 16:55:55 - (not logged in) (192.192.1.2)> 331 Password required for apptestuser
(000001)30/10/2014 16:55:55 - (not logged in) (192.192.1.2)> PASS **************
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> 230 Logged on
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> SYST
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> 215 UNIX emulated by FileZilla
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> PORT 10,0,2,2,252,192
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> 200 Port command successful
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> LIST /
(000001)30/10/2014 16:55:55 - apptestuser (192.192.1.2)> 150 Opening data channel for directory list.
(000001)30/10/2014 16:55:56 - apptestuser (192.192.1.2)> 425 Can't open data connection.
____________________________________________________________________________
con: mFTPServerUserFolder = "/AppTestUserDir/"
(000004)30/10/2014 17:05:23 - apptestuser (192.192.1.2)> LIST /AppTestUserDir/
(000004)30/10/2014 17:05:23 - apptestuser (192.192.1.2)> 550 Directory not found.
____________________________________________________________________________


Usando lo smartphone le cose vanno anche peggio.

(RuntimeException) java.lang.RuntimeException: 530 User AppTestUser cannot log in.

Sembra che la porta 21 sia chiusa (ho provato tramite un sito perché dalla console del router non mi è possibile verificarlo, pare che non ci sia questa funzionalità).


Sto pensando che probabilmente dovrei aprire una porta come faccio quando uso un web server! (prova ancora da effettuare).
Resta il fatto che anche riuscendo a loggarmi (bleah) potrei ottenere gli stessi errori che ricevo usando l'emulatore.
 
Last edited:
Top