zdl-devel
[Top][All Lists]
Advanced

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

[zdl-devel] rivoluzionato il funzionamento del ciclo principale


From: Gianluca Zoni
Subject: [zdl-devel] rivoluzionato il funzionamento del ciclo principale
Date: Fri, 27 Feb 2015 14:47:15 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

ciao,
dopo aver modificato interamente i comandi della modalità che
finora chiamavo "standard" (dopo vari salti mortali carpiati son
riuscito finalmente a far funzionare anche M-i per entrare nella
modalità interattiva in qualsiasi momento, anche nella fase
iniziale per l'immissione dei link, quindi ora il sistema dei
comandi è omogeneo e consistente) (modalità che sto cercando di
chiamare in altro modo, anche se ciò che la caratterizza è
proprio la persistenza dello standard-output dei processi e la
possibilità di saltare alla modalità interattiva o di fare
interazioni di chiusura...) e dopo essere uscito dalle parentesi
di questa email, posso annunciare una svolta nel funzionamento di
zdl, reso possibile dal nuovo sistema di comando: anche la
modalità "stdout", da ora, tratta in background i 
processi per il controllo automatico dei download (la modalità
"demonizzata" è interamente in background e segue un altro
percorso, mentre quella "stdout" è in foreground ma il suo cuore
pulsante è in bg). Con due importanti conseguenze:
1) le interazioni con la tastiera non possono più interferire in
   alcun modo con lo stdout del "cuore pulsante", che è in bg
   (prima, il 'read -n 1' -che ha bisogno di stare in fg-
   aggiornava la stampata dei box dei download, producendo anche
   effetti spiacevoli...). Ora le interazioni da tastiera
   avvengono tramite 'bind' combinato con un ciclo vuoto di
   'read -e -n1 -t...' oppure 'trap', mentre l'output sgorga
   imperturbabile come un geyser dalle profondità del background

2) i processi di controllo automatici non vengono mai interrotti,
   anche quando da modalità stdout vengono avviati l'editor o la
   modalità interattiva, in qualsiasi momento

È stata un'impresa riuscire a far convivere l'output dei processi
in background con l'editor e l'interfaccia interattiva
(rispettivamente avviati con M-e ed M-i nello stesso terminale,
quindi si sovrascrivevavo l'un l'altro):
per inibirlo avevo creato una funzione che andava a controllare i
processi in /proc/, ma richiedeva troppe risorse per la bash su
gnu/linux e... figuriamoci su cygwin! Così ho dovuto sacrificare
l'eleganza e la raffinatezza e usare un espediente più
terra-terra, che agisce in modo poco sistematico, generando 
l'ennesimo file temporaneo (bisognerà valutarne nel lungo periodo
eventuali effetti collaterali). E ho dovuto distinguere le funzioni
per l'output delle modalità interattiva e stdout. Non è stato
facile districare le interferenze e sono certo di non aver ancora
terminato: ci vorrà ancora un po' di rodaggio per adeguare tutto
il codice alla nuova situazione, soprattutto nei file delle
'estensioni'

PS: Questa esperienza (anche quella del sistema dei comandi e
altre modifiche) è servita per la riprogettazione del programma
in perl. Sto cercando di "vedere" che in che modo potrebbero
essere sistemati le interfacce e i comandi. Inoltre, ho pensato
che, in perl, zdl dovrebbe diventare anche il downloader del
programma, dividendo in parti lo scaricamento dei file, come fa
Axel (ho già iniziato a dare un'occhiata agli strumenti
disponibili del perl, per lo scaricamento e la
gestione di processi in parallelo). In pratica, zdl dovrebbe
sbarazzarsi di uno dei suoi motivi di esistenza: la gestione dei
download avviati da altri programmi (la versione bash -1.0-, che
continuerebbe ad essere manutenuta, conserverebbe comunque questa
funzione). Inoltre, dovrebbe avviare in parallelo anche i singoli
processi di avvio/controllo dei download, che -per ora- in zdl
sono in sequenza, allineati in un ciclo (quello che ho messo in
background) 

-- 
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]