string to graphic asset

3 views
Skip to first unread message

Piergiorgio Niero

unread,
Nov 13, 2009, 5:03:49 AM11/13/09
to TheFlashMind - Adobe Flash Platform User Group - Italy
Ciao a tutti :)

recentemente mi sono trovato ad affrontare questo problema: dover
trasmettere un asset grafico (swf) in formato stringa, caricarlo nel
client e fruirne il contenuto.

avendo la possibilità di scegliere in che modo convertire l'asset in
stringa (sul server) ho optato per base64 in quanto in flex ho già
pronta una classe Base64Decoder che macina una stringa e restituisce
un bytearray.
Ho notato però che base64 ha un bel pò di overhead di dato e la
dimensione dei file aumenta di circa un 10\15 % quando li converto in
stringa, per contro il lavoro sul client e sul server è veramente
triviale perchè ci sono gli encoder\decoder già fatti.

a questo punto vi chiedo: sapete di altri tipi di encoding che posso
provare (già disponibili in as3 + java possibilmente) per non avere un
così forte incremento nell'uso della banda?

ciao
pigiuz

luca mezzalira

unread,
Nov 13, 2009, 5:16:49 AM11/13/09
to TheFlashMind - Adobe Flash Platform User Group - Italy
Ciao PG,

ho notato pure io lo stesso problema quando ho lavorato su desktop
applications.
Consiglio spassionato, utilizza:
http://dynamicflash.com/2006/09/actionscript-30-base64-encoderdecoder/comment-page-1/
che è molto ma molto meglio :D

cisp


On Nov 13, 11:03 am, Piergiorgio Niero <piergiorgio.ni...@gmail.com>
wrote:

mas...@massimocorner.com

unread,
Nov 13, 2009, 5:17:10 AM11/13/09
to theflashmind---adobe-flash-...@googlegroups.com
> a questo punto vi chiedo: sapete di altri tipi di encoding che posso
> provare (già disponibili in as3 + java possibilmente) per non avere un
> così forte incremento nell'uso della banda?

Un 10\15% non puoi definirlo "forte" incremento :-)

In Flex puoi scompattare con gzip o simili?
Hai provato a comprimere con gzip, lato Java, la stringa in Base64?
Quantomeno per farsi un'idea se sia una strada che val la pena tentare

Massimo

Piergiorgio Niero

unread,
Nov 13, 2009, 5:31:30 AM11/13/09
to theflashmind---adobe-flash-...@googlegroups.com
si,posso decomprimere gli zip, però ho la necessità di passare i dati
avanti e indietro in formato stringa, quindi non posso usare gli zip
(altrimenti avrei passato direttamente i binari).
quello che sto cercando è un altro encoding di tipo testo che mi
faccia risparmiare in peso più di base64

mas...@massimocorner.com

unread,
Nov 13, 2009, 5:33:24 AM11/13/09
to theflashmind---adobe-flash-...@googlegroups.com
> si,posso decomprimere gli zip, però ho la necessità di passare i dati
> avanti e indietro in formato stringa, quindi non posso usare gli zip
> (altrimenti avrei passato direttamente i binari).

Certo! Hai ragione


> quello che sto cercando è un altro encoding di tipo testo che mi
> faccia risparmiare in peso più di base64

Ho l'impressione che sia una perdita di tempo. Ma tienici aggiornati :-)

Massimo

Piergiorgio Niero

unread,
Nov 13, 2009, 5:34:35 AM11/13/09
to theflashmind---adobe-flash-...@googlegroups.com
visto, è meglio in performances? il peso dei base64 generati dovrebbe
essere lo stesso (altrimenti cambia qualcosa nell'encoding), o sbaglio?

Piergiorgio Niero

unread,
Nov 20, 2009, 9:07:01 AM11/20/09
to theflashmind---adobe-flash-...@googlegroups.com
Ciao lista,
ho un quesito da porvi riguardo al salvataggio dei dati in air, questa è la mia situazione:

la mia applicazione deve scaricare dei dati da dei servizi esposti da blazeDS, salvarli in locale, editare i dati e salvarli in locale e in remoto. (ho qualcosa come una trentina di tipi di vo ed ogni salvataggio prevederebbe circa 5000 istanze di oggetti)
I dati strutturali si portano dietro anche file di asset (immagini, swf, mp3, etc) anch'essi da salvare in locale.

secondo la vostra esperienza come serializzereste i dati in locale?sqlite o file custom? e per gli asset?
quali possono essere i pro e i contro di ognuna di queste vie?

per sqlite ho visto esserci diverse librerie che forniscono capacità di orm però mi chiedo se valga la pena organizzare un db simile a quello organizzato in remoto su mysql, qualcuno di voi ha opinioni\esperienza in merito?

ciauz


Piergiorgio Niero 
TheFlashMind AUG - Italy 





luca mezzalira

unread,
Nov 20, 2009, 9:15:43 AM11/20/09
to theflashmind---adobe-flash-...@googlegroups.com
Ciao PG,

per scaricamento dati da web e relativo salvataggio, io ti consiglio di crearti una cartella nell'applicationstorage della tua applicazione AIR e iniziare a scaricare il tutto.
Sicuramente SQLite è interessante se per esempio ti crei delle funzionalità di debugging successive del tipo:
1. L'applicazione crasha, all'interno di sqlite ti fai una tabella di logger oltre che quella degli assets che devi scaricare.
2. Crei una routine che ogni volta l'applciazione crasha la volta successiva che si avvia, se connessa in internet, ti
manda il db sqlite

Altra cosa interessante se un futuro decidi di attaccarci LiveCycle dietro, puoi fare il sync tra i dati online e offline al volo
senza avere troppi sbattimenti.

Però dipende anche un po dall'uso dell'applicazione, nel senso che se a te bastano anche solo dei file XML opportunamente
strutturati per storare i dati che poi alla fine nn andrai quasi mai a toccare, puoi sfruttare tranquillamente quello tanto con e4x
vai via che è un piacere.

Ultima cosa, che non è strettamente inerente a questo argomento, ma che può interessare credo tutta la lista, ieri hanno rilasciato la beta pubblica di MDM Inferno 1.0 che è un wrapper C per estendere le funzionalità di AIR, magari ti viene
in mente come usarlo al meglio.

Buon lavoro


luca mezzalira
Flash Platform Developer

phone +39 049.603.349

Mart3 | the Flash Platform company
via Schumann, 16
35132 Padova (Italy)


Piergiorgio Niero

unread,
Nov 20, 2009, 9:37:45 AM11/20/09
to theflashmind---adobe-flash-...@googlegroups.com
quindi sqlite?
non è più comodo crearsi un file contenente il binario dell'oggetto serializzato in qualche modo?
intendo: se ho il mio ciccioVO e lo serializzo in un file, poi quando carico quel file e faccio ByteArray.readObject avrò di nuovo lo stesso oggetto con 1 operazione,
con sqlite non allungo la strada\abbasso le performances?
Reply all
Reply to author
Forward
0 new messages