zdl-devel
[Top][All Lists]
Advanced

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

[zdl-devel] grosse novità


From: Gianluca Zoni
Subject: [zdl-devel] grosse novità
Date: Thu, 19 Feb 2015 22:54:47 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

ciao,
mi apprestavo a scrivere il manuale di ZDL, quando ho iniziato a
chiedermi se non fosse il caso, prima, di renderlo migliore e più
completo...
Così, mi sono messo d'impegno e ho rivoluzionato tutto quanto, a
cominciare dall'interfaccia interattiva (zdl -i). Ora, puoi
avviare e controllare, tutto quanto, proprio a partire dal comando
zdl -i, senza ancora immetere link, url, file...

per esempio:
1- avvio zdl -i
2- pigio il tasto "d" che avvia il demone
3- pigio il tasto "e" che apre l'editor della lista dei link
   (l'editor predefinito dal sistema oppure quello predefinito per
   zdl con 'zdl -c') [ebbene sì: ho incorporato un editor!]
   [ ora puoi avviare zdl direttamente dal tuo editor preferito:
   --editor (quello predefinito), --nano, --vi, --vim, --emacs,
   --emacs-nw, --mcedit (possiamo inserirne a volontà e senza
   sforzo. Per ora ci sono "solo" queste opzioni aggiuntive)]

4- posso pigiare "m" per scaricare contemporaneamente un numero
   illimitato di link (quelli che sono in coda, che puoi consultare
   e modificare quando vuoi pigiando "e"), oppure un numero da 1 a 9
   per limitarne la quantità (predefinito è 1, ma si può modificare
   con zdl -c)

5- posso killare tutti i processi, controllare il demone, uscire
   senza fermare i downloader (eventualmente per riavviare zdl in
   seguito o in altro modo...)

Fra le grosse novità c'è anche l'input interno di zdl: dopo vari
esperimenti sono riuscito a combinare "read -e" con "bind" e ad
ottenere:
- un input che non stampa più cose strane se usi tasti speciali
  come frecce e altro, anzi li usa. Inoltre accetta tutte le
  combinazioni di readline (C-k per cancellare a destra fino alla
  fine della riga, C-y per incollare, C-w per cancellare a
  sinistra... ho solo disabilitato C-l perché, altrimenti,
  cancella tutta l'interfaccia e, comunque, il 'read -e' invia
  ugualmente a zdl i link delle righe precendenti cancellate) e
  la history: in pratica, l'editor interno di zdl è quello in
  linea della stessa bash, che viene incorporato, e non è più
  il "read -d" raw. In ogni caso, puoi anche incollarci dentro col
  mouse una lista di link, in modo pulito e facile da manipolare 

- ho reso più coerenti i comandi da tastiera, dividendoli fra le
  due diverse modalità: interattiva (cliente), standard ("core")
  [quella propriamente "server"/servente è la demonizzazione di
  quella standard e ci si può interagire con zdl -i]
  * core: le combinazioni di tasti funzionano tutte fin
          dall'inizio, dopo aver avviato "zdl". I comandi sono
          tutti dati da M-... ('M'=Alt/Meta, '...'=lettera). C'è
          un problema non risolto (con M-i per accedere
          all'interfaccia interattiva -da risolvere- che, almeno
          per ora, è ancora 'i')
  * interattiva: sono indicati con colori diversi (verde per
                 l'avvio, rosso per l'arresto, giallo per
                 selezione e richiesta/domande) e le lettere
                 maiuscole per le azioni che richiedono più
                 attenzione: serve pigiare lo <shift>. 

- ho cercato di rendere più coerente il comportamento di zdl in
  relazione ai downloader: un'uscita senza interrompere i
  downloader (axel, wget...) -che rimangono senza altra gestione
  di zdl, a meno che non si riavvii il programma in un modo "core"
  oppure "daemon"- e un'uscita in cui viene fermato tutto. C'è un
  problema di cui mi sfugge il senso e che avevo già notato da
  anni: con C-c si fermano ZDL e Axel, ma non Wget (e forse
  neppure RTMPDump/cURL). D'altra parte, i downloader sono
  avviati in background. Ho provato a usare nohup su Axel o ad
  avviarlo in vari modi con subshell... ma ogni volta si
  interrompe quando fermo zdl con C-c (SIGINT). Questo succede
  solo per l'istanza di zdl che "avvia" axel. Infatti, se -dopo
  aver avviato Axel- zdl esce con "exit", Axel continua a
  funzionare. E se riavvii zdl e lo interrompi con C-c, Axel
  -ovviamente- continua per il suo conto.
  QUINDI: ho optato per altri due segnali (metterò SIGINT/INT
  nella sezione "comportamenti predefiniti" e nella sottosezione
  "eccezioni" di "man zdl"), uno <M-k> (kill -9) per l'uccisione
  definitiva dei processi (ma i download sono uccisi anche uno ad uno
  attraverso una funzione apposita), l'altro per la "chiusura"
  <M-q> (kill -1) uguale per tutti (compreso Axel che continua a
  funzionare), che non agisce in alcun modo sui download.

I tentativi di dare coerenza ai segnali, al comportamento del
programma, al modo di usarlo... semplificheranno anche la stesura
del manuale e potrebbero anche facilitare la stessa diffusione
del programma. 

Sto dimenticando sicuramente un sacco di cose, ma c'è un altro
punto interessante: laddove, attraverso il sistema di
configurazione interattivo, c'è l'inserimento di un'applicazione
predefinita, zdl accetta anche opzioni e altri argomenti nella
stessa configurazione, riconoscendoli come tali (il primo nome è
il programma, gli altri sono argomenti). È una cretinata, a prima
vista, ma permette un sacco di cose in più (da 'emacs -nw' a
'mplayer -fs -af scaletempo' -mia impostazione- a...)

Fra le altre cose: come sempre, ne ho approfittato per migliorare
un po' tutto il funzionamento del programma e ora mi sembra più
scattante. Bisognerà rodarlo un po'. E poi vorrei risolvere la
faccenda strana di 'M-i' (che non ho ancora disabilitato, anche
se l'ho sostituito con 'i' fra le istruzioni) per rendere
possibile l'avvio dell'interfaccia interattiva anche nel momento
di inserimento dei link ("editor" interno di zdl, quello avviato
all'inizio dopo il comando "zdl") e per uniformarla con gli altri
comandi "core"/standard, cioè con la combinazione Meta-[lettera]

intanto, nei prossimi giorni, inizierò a scrivere il manuale

PS: sto ancora aspettando che sia approvata la pubblicazione di
texi2man su savannah-gnu. Non appena riceverò l'approvazione,
pubblicherò il programma con un sistema di
installazione/aggiornamento automatico e sbloccherò la situazione
relativa all'aggiornamento della documentazione e alla
possibilità di agire collettivamente sul sito web (ci sono
problemi con i copyright, su cui dovremo discutere anche per zdl:
un amministratore di savannah mi ha spiegato che l'header di
texi2man, come quello di zdl, non era corretto per quanto
riguardava il copyright. Ho modificato anche tutti gli header di
zdl. Poi ne discuteremo, anche perché -secondo me- sono
incompleti, almeno qualcuno. Questa, come tutte le cose
legalistiche, è una faccenda noiosa che mi fa venire l'orticaria
e faccio sempre pasticci a caso in preda a caos impazzito)



-- 
Z O N I N O Z
Gianluca Zoni

address@hidden
http://inventati.org/zoninoz
http://savannah.gnu.org/users/zoninoz



reply via email to

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