zdl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [zdl-devel] bilanci: manuale, versione in perl, novità...


From: claudio
Subject: Re: [zdl-devel] bilanci: manuale, versione in perl, novità...
Date: Fri, 30 Jan 2015 02:13:35 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

Mi sembra un'ottima idea, riprogettarlo e renderlo più efficiente e semplice da mantenere. Credo che il fatto che Perl non è installato di default su Cygwin sia assolutamente trascurabile.

Il 29/01/2015 16:47, Gianluca Zoni ha scritto:
Ciao,
all'inizio del 2014, zdl era pronto per fare un balzo in avanti
nel suo sviluppo:
- il software era stato riorganizzato in file diversi
- il sistema di controllo versione (da cvs a git) e tutto (o
   quasi) l'apparato per la gestione del codice e la presentazione
   del progetto era stato spostato su savannah-gnu e reso più
   "pubblico"
- di conseguenza, era stato sviluppato un nuovo sistema di
   installazione e aggiornamento del programma
- Claudio è diventato ufficialmente parte del gruppo di sviluppo
- abbiamo integrato zdl in Cygwin, Flashgot e Conkeror (sia per
   gnu/linux che per windows) e risolti vari problemi, anche in
   estensioni importanti

e per questo, proprio all'inizio del 2014, ho espresso due
propositi:
1) costruire un sistema serio per la documentazione (un sorgente
   unico in formato texinfo da cui estrarre -con una serie di
   script- documentazioni diversificate: la pagina per 'man', la
   documentazione ipertestuale per 'info' e, in HTML, per il web,
   la versione PS e PDF...)
2) ripensare ZDL in un linguaggio più serio ed efficiente (da una
   prima analisi, sembrava che il Perl avrebbe risolto molti
   problemi): riscrivere il programma sarebbe stata anche
   l'occasione ideale per fornirlo di un sistema "multilingua"
   (almeno per l'inglese, oltre all'italiano)

Per quanto riguarda il punto 1:
dato il proliferare di nuove estensioni e funzionalità,
ho aggiornato e migliorato l'HELP del programma e sto cercando di
riprendere in mano, gradualmente, l'intero
"progetto-documentazione".
attualmente, il manuale web -non aggiornato- è stato spostato
all'indirizzo http://zoninoz.hostoi.com -solo temporaneamente-
per "coprire" un servizio utile per ZDL: la pagina di manuale, se
caricata inviando con metodo POST il dato "cmd=pr0xylist", si
sostituisce  con l'elenco aggiornato dei proxy (il servizio
"hostoi.com" mi permetteva di usare gratuitamente le librerie
curl di php, l'unico strumento con cui sono riuscito ad estrarre
i proxy da http://ip-adress.com ...è una storia un po'
complicata e anche un po' demenziale/comica). Entro qualche
settimana dovrei aver concluso il sistema per la documentazione,
spero...

Per il punto 2:
già da diversi mesi mi sono accorto che il problema di
inefficienza di zdl (quello umanamente percepibile, soprattutto
su Cygwin e per tanti download alla volta) probabilmente
non dipende dal linguaggio, ma piuttosto dal fondamento del
progetto stesso: zdl scarica i file usando downloader esterni,
poi deve controllare ripetutamente l'andamento dei download
analizzando i file temporanei che contengono l'output dagli
stessi downloader. Questi file subiscono continue e rapide
modifiche e diventano sempre più grandi. L'analisi di questi file
avviene con l'impiego ripetuto di programmi come: cat, awk, sed,
grep... Credo che l'inefficienza derivi proprio da questa
sovrapposizione di processi (fra input e output) e dall'impiego
di quei programmi (mi chiedo, inoltre, se l'impiego sempre
maggiore di regex non implichi ulteriori inefficienze o se le
risolva).
Quindi, la riscrittura del programma in Perl potrebbe risolvere
questi problemi solo in parte.
Inoltre, nel corso del 2014, riesaminando il programma, ho
avvertito la necessità di riprogettarlo: non ha senso "tradurre"
da bash a perl, è necessario "ripensarlo" (non solo per il
perl). Gradualmente ho iniziato a riscrivere diverse funzioni non
secondarie per dargli una struttura più chiara (qua e là con
paradigma funzionale o imitando, con qualche espediente, quello
ad oggetti...), anche perché la prima stesura del codice (poi
distribuita in file diversi) era stata "esplosiva" in pochi
giorni, cioè rapidissima e troppo caotica (non avevo grosse
pretese): alla lunga, la chiarezza, l'eleganza, la compattezza e
-soprattutto- la consistenza (!) diventano fondamentali.
(Per non dire di un altro fatto: alcune parti "in disuso" si
sono scoperte non più funzionanti e ho dovuto fare un'imponente
opera di manutenzione. A scoprire questi problemi sono stati
almeno un paio di utenti di ZDL, che mi hanno scritto per email
ed hanno collaborato un po'. Ne sono emerse nuove funzionalità,
come l'opzione '--reconnect' ed il potenziamento del sistema dei
proxy)
Quindi, in definitiva, l'idea di rifare ZDL in Perl è ancora
valida, ma serve una preventiva riorganizzazione del codice e,
soprattutto, un progetto nuovo, che preveda almeno una graduale
sostituzione dei downloader esterni con nuovi strumenti "interni"
(il Perl è ricchissimo di librerie... Wget verrebbe sostituito
subito, mentre per Axel e per i servizi RTMP è un casino. Col
Perl si potrebbe distinguere con più efficacia il server dai
client: si potrebbe sviluppare anche un client grafico. Inoltre,
il server potrebbe diventare un po' più "parallelo").
C'è poi una limitazione del Perl: è installato di default su
gnu/linux ma non su cygwin.

(C'è sicuramente molto altro da dire...)

Mi è sembrato utile fare il punto della situazione, per non
lasciare tutto quanto al caso e per discuterne insieme.


--
c l a u d i o
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]