Autore Topic: Aiuto su progettazione app  (Letto 2035 volte)

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Aiuto su progettazione app
« il: 11 Settembre 2010, 12:52:53 CEST »
0
Ciao a tutti,

vorrei creare una app per il fantacalcio in cui inserisco la mia rosa e questa app va nei vari siti (sportmediaset, gazzetta, corriere) a cercare informazioni sulle probabili formazionie  mi dice se il mio giocatore giocherà o no quella partita.

Avevo già fatto una app che andava a cercare informazini sul web. Questa pp interrogava più pagine, ognuna in un thread, però era lentissima.

Potreste consigliarmi un approccio adeguato a questo genere di situazione?

grazie mille

p.s. spero di essere nella sezione giusta...

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #1 il: 13 Settembre 2010, 17:26:48 CEST »
0
nessuno può aiutarmi?

grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aiuto su progettazione app
« Risposta #2 il: 13 Settembre 2010, 17:39:19 CEST »
0
Gestire una chiamata alla volta in un thread solo?
Comunque anche se fossero 3 thread non credo che ci siano problemi di perfomances.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Aiuto su progettazione app
« Risposta #3 il: 13 Settembre 2010, 17:57:15 CEST »
0
Gestire le connessioni ai siti in thread separate, mi sembra la scelta migliore e più comoda (gestione timeout, sito offline, errori)
Sicuramente il fatto di far partire 5 thread al posto di una ha un certo impatto sulle performances, ma non dovrebbe esser causa di rallentamenti visibili.
Le cause dei rallentamenti potrebbero essere diverse.
Parsare l'html di un sito mediaset ad esempio, non penso che sia un operazione leggerissima. l'ideale sarebbe avere degli xml o stringhe json
dipende molto anche da come hai implementato il parsing.

vincenzodicicco

  • Visitatore
Re:Aiuto su progettazione app
« Risposta #4 il: 13 Settembre 2010, 18:32:47 CEST »
0
Gestire le connessioni ai siti in thread separate, mi sembra la scelta migliore e più comoda (gestione timeout, sito offline, errori)
Sicuramente il fatto di far partire 5 thread al posto di una ha un certo impatto sulle performances, ma non dovrebbe esser causa di rallentamenti visibili.
Le cause dei rallentamenti potrebbero essere diverse.
Parsare l'html di un sito mediaset ad esempio, non penso che sia un operazione leggerissima. l'ideale sarebbe avere degli xml o stringhe json
dipende molto anche da come hai implementato il parsing.
Quoto Qlimax, per esperienza personale, e grazie anche a Ricky`posso dirti con sicurezza che la cosa che ti rallenta di più è il parsing di una pagina html, visto che non è sempre facile effettuare un parsing come potrebbe essere per file xml, o Json.Cerca ti ottimizzare il più possibile il parsing e vedrai che la velocità subirà un notevole aumento.

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #5 il: 13 Settembre 2010, 18:34:24 CEST »
0
Ok!
vi ringrazio

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #6 il: 29 Settembre 2010, 01:42:59 CEST »
0
Sono partito con la mia app
e per il parsing mi sono appoggiato a questa guida:
  Java: parsing di una pagina HTML |  BigThink
Ho creato un progetto di prova (solo Java) ed effettua il parsing in pochi secondi!
La app android però è lentissima impiega circa 2 minuti e mezzo per effettuare il parsing di 5 pagine web
questa prestazioni rendono la app inutilizzabile
in aggiunta la classe XPathFactory e XPath che mi servono per trasformare l'html in xml sono disponibili solo dalle API 8 perciò solo per android 2.2 ed il mio wildfire ancora è 2.1

datemi consigli sto miagolando nel buio

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aiuto su progettazione app
« Risposta #7 il: 29 Settembre 2010, 09:25:39 CEST »
0
Beh ovviamente le performances che ottieni su pc non sono comparabili con quelle che ottieni su Android. Hai provato a sostituire l'approcio xpath con una gestione manuale del tutto? Magari riesci ad ottimizzare le performances... Dai un occhio qui semmai: Working with XML on Android

Comunque per quanto riguarda xpath sulle versioni precedenti alla 2.2 dai un occhio qui:
The Force Unleashed: XML+XPath on Android using dom4j and Jaxen « Brain Flush

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aiuto su progettazione app
« Risposta #8 il: 29 Settembre 2010, 09:45:37 CEST »
0
Vado un poco contro corrente... 2,5 minuti per un parsing sono troppi, anche su android (e persino su un 486). Per me il problema è un altro!  >:(

Condivido che l'operazione di parsing non è immediata, ma se fatta bene (uso adeguato della classe Pattern ad esempio) non dura più di un secondo (e sto anche esagerando).

Io sposto il problema a rallentamenti di connessione o altro. Per scoprirlo crea un insieme di Log in punti fondamentali del progetto (prima e dopo aver effettuato la connessione, prima e dopo aver recuperato la pagina, prima e dopo aver effettuato il parsing) per capire cosa effettivamente rallenta e dopo ne parliamo.

Se il problema dovesse essere veramente il parsing (ripeto, cosa che non credo) facci sapere come lo effettui e su che pagina lo effettui per creare dovute ottimizzazioni, ad esempio il recupero di parte della pagina da affidare al parser (solo quello all'interno di certi tag html come div o di body), l'eliminazione dei tag html dalla stringa da controllare, ecc...

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #9 il: 29 Settembre 2010, 13:53:30 CEST »
0
Grazie per le risposte

Per prima cosa mi incuriosisce la proposta di MarcoDuff, vorrei effettuare il log per indagare sulle cause del rallentamento.
Però non so come fare, mi daresti qualche dritta?
confesso di essere alle prime armi con la programmazione android ma sono un (quasi) ing inf perciò di programmazione un pochino ci capisco. (ti dico questo per farti capire che tipo di risposte riesco a comprendere più o meno).

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aiuto su progettazione app
« Risposta #10 il: 29 Settembre 2010, 14:01:52 CEST »
0
Non esistono i quasi ing! O lo sei dentro o non lo sei affatto!!! 8-)

Scherzi a parte, tutto quello che ti serve lo trovi in questa pagina: Log | Android Developers

I log li ritroverai con il comando "adb logcat" o semplicemente sulla consolle del DDMS in eclipse!

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #11 il: 29 Settembre 2010, 22:40:46 CEST »
0
Ho loggato!
Allora la mia app legge 5 URL
URL 1:
tempo lettura: 3 sec
tempo parsing: 28 sec
URL 2:
tempo lettura: 1 sec
tempo parsing: 10 sec
URL 3:
tempo lettura: 1 sec
tempo parsing: 33 sec
URL 4:
tempo lettura: 1 sec
tempo parsing: 39  sec
URL 5:
tempo lettura: 1 sec
tempo parsing: 21 sec

tempo tatale di esecuzione 2 minuti e 18 secondi

Ricky 1 MarcoDuff 0  :D

come posso fare per effettuare il parsing senza utilizzare le classi xpath?
« Ultima modifica: 29 Settembre 2010, 23:31:12 CEST da dessorry »

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aiuto su progettazione app
« Risposta #12 il: 30 Settembre 2010, 00:22:26 CEST »
0
39 secondi per un parsing??? Ma cerchi tutte le occorrenze del carattere "a" nella Bibbia???

Posta il metodo che usi per parsare la pagina che vediamo che problemi ha!

(per parsare usa la classe Pattern e Matcher!!!)

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Aiuto su progettazione app
« Risposta #13 il: 30 Settembre 2010, 00:23:44 CEST »
0
Codice (Java): [Seleziona]
Tidy tidy = new Tidy();
tidy.setQuiet(true);
tidy.setShowWarnings(false);
Document response = tidy.parseDOM(page, null);
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
String pattern = "//div[@class='sx']/text()";
try {
        casa = (NodeList) xPath.evaluate(pattern, response,XPathConstants.NODESET);
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
        e.printStackTrace();
}
pattern = "//div[@class='dx']/text()";
try {
        fuori = (NodeList) xPath.evaluate(pattern, response,XPathConstants.NODESET);
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
        e.printStackTrace();
}
pattern = "//div[@class='intestazione']/text()";
try {
        partite = (NodeList) xPath.evaluate(pattern, response, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
        e.printStackTrace();
}
partita casa e fuori sono dei NodeList

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aiuto su progettazione app
« Risposta #14 il: 30 Settembre 2010, 00:31:01 CEST »
0
Dovresti postare anche la pagina che ottieni...  8-)