Ed eccomi tornato alla mia postazione dopo tre settimane di medicine, brodino caldo e lunghi pomeriggi davanti alla TV: le mie vacanze di Natale sono state pessime, rovinate da una pesante bronchite accompagnata da qualche tacca di febbre che mi ha impedito pressoche' ogni attivita' intellettuale ivi compresa la programmazione. Come ogni anno contavo molto su questa pausa dal lavoro, che insieme a quella estiva rappresenta il periodo di massima produzione sui vari fronti di sviluppo amatoriale, ma quest'anno e' andata cosi'.
Solo nell'ultima settimana, piu' col pretesto di riattivare la corteccia cerebrale dopo il periodo di inattivita', ho avuto modo di tornare sul codice di Lobotomy, correggendo pesantemente l'ultimo componente che manca prima del rilascio di LibHyppo 0.3, ovvero il sistema di observers gia' qui menzionato in passato: la soluzione finale che ho adottato (ma che devo ancora perfezionare) e' forse meno efficiente rispetto a quella inizialmente (e precipitosamente) ponderata, ma certamente implica un netto miglioramento sulla quantita' di memoria primaria impiegata ed e' assai piu' semplice da implementare.
Prima: in Subconscious Daemon si replicavano tutti i result sets aperti dalle varie applicazioni che richiedevano il monitoraggio del filesystem e la notifica automatica dei cambiamenti, e quando qualcosa avveniva su Hyppocampus tutti gli insiemi venivano controllati per vedere se tale evento ne modificava il contenuto. Pro: una sola applicazione che esegue i controlli, notifiche inviate solo quando necessario. Contro: ridondanza, dati da tenere allineati in piu' processi, difficolta' nel tenere sincronizzate le varie copie.
Adesso: Subconscious Daemon funge da ripetitore degli eventi che arrivano dal filesystem (interpretandoli occasionalmente a sua volta per piccole operazioni di manutenzione ed estrazione automatica dei metadati) ed ogni applicazione controlla per conto suo se tale evento influisce sui suoi dati locali, emettendo nel caso i giusti signals interni. Pro: piu' elegante, molto piu' semplice e compatto da realizzare nel codice, mitigati gran parte dei problemi di consistenza dei dati. Contro: quantita' di computazione sprecata per eseguire controlli non necessari nelle singole applicazioni, ma che essendo appunto su piu' processi puo' essere implicitamente parallelizzata.
Al momento mi sto muovendo sulla seconda via e credo (spero!) di rimanerci, ho ancora qualche dubbio sulla granularita' e sull'interfaccia con cui distribuire i diversi eventi ma nulla di impossibile. Chiaramente, oltre che su LibHyppo sto lavorando pure su SCD, componente essenziale del sistema senza il quale il sistema di monitoraggio non ha ragione d'essere: la nuova release di questo pacchetto (che, a causa di un errore di valutazione risalente a molto tempo fa', segue una numerazione tutta sua...) accompagnera' quella di Hyppocampus 0.3.
E poi tocchera' a Kiazma/Synapse... Spero di non ammalarmi di nuovo...
Nessun commento:
Posta un commento