Le parti finora esaminate costituiscono il corpo delle interfacce con i vari servizi astrologici sviluppati negli anni passati ed ottimizzati con i supporti più recenti. Questa scheda contiene il motore vero e proprio delle routines di costruzione di AstroTime, ultimo nato come ho già esposto, per certi versi più avanzato e flessibile di ogni altro. Esso richiede perciò tutta una serie di attenzioni particolari, che mi sono sforzato di ridurre al minimo autonomizzando fin dove possibile le manovre necessarie. Questa premessa chiarirà il motivo per cui la scheda di AstroTime contiene una vera e propria console, autosufficiente e separabile dalla finestra che la ospita, al punto da abbandonarla al momento critico, cioè quando scatta il suo compito, autoriducendosi e spostandosi nell'angolo alto destro dello schermo al fine di liberare tutto lo spazio non più utilizzato, per facilitare il prelievo delle immagini. Al termine, la console primaria verrà ripristinata, a seconda delle modalità di avvio, per poter procedere ad altre mansioni. La procedura che la dirige si chiama AstroTime.exe e può essere lanciata singolarmente per elaborare eventuali files PDF già presenti, accumulati o rimasti in attesa per qualche motivo. Ogni Soggetto trattato viene infatti aggiunto ad una lista di nominativi nella cartella operativa, di nome: ATimeJob.lst, caricata nella prima finestra di testo in alto, che è scorrevole e consente la scelta dell'oggetto da trattare; quello in vista è comunque l'ultimo prodotto. Tale lista non viene ripulita automaticamente, (1) poiché il programma non può conoscere l'esito definitivo dell'operazione; (2) perché è data la possibilità di far eseguire manovre cumulative con il comando sigolo auto , che tratterà tutti i nominativi della lista a partire da quello indicizzato, cioè visibile fino all'ultimo elencato (in fondo alla combo aperta). Dovrà quindi essere aggiornata a mano di quando in quando, eliminando con un tool tipo Notepad le righe non più utili; si può invece variare tramite ATime.INI il numero di nominativi ospitati nell'elenco.
|
È uno dei due processi più delicati, in quanto, per poter prelevare una porzione di schermo, occorre conoscere con esattezza la sua posizione e che questa resti fissa. Inizialmente ciò ha richiesto la programmazione di tools specifici piuttosto sofisticati, che possono servire anche ad altri scopi similari, perciò li ho mantenuti e ne dò descrizione. Il pulsante con foto, in basso, attiva questa funzione offrendo una schermata in trasparenza, sulla quale è possibile, intravvedendo la figura sottostante che ci interessa, contrassegnarne le 2 coordinate rettangolari: con un click si stabilisce il vertice alto-sinistro, con un Ctrl+click il vertice basso-destro; non occorre trascinare il rettangolo, che di solito non aiuta affatto nel cercare un punto esatto (e tali debbono essere entrambi), mentre contemporaneamente nella console appaiono aggiornati i punti indicati ed il relativo dimensionamento dell'area. Per facilitare maggiormente è stato fatto in modo che ad ogni [ctrl+]click la misurazione sia riferita al vertice alternativo già fissato, in modo da rendere agevole ogni tipo di rettifica senza dover ricominciare daccapo. Ottenuta l'area di posizione e dimensione confacente, basta cliccare di nuovo il pulsante per uscire dalla trasparenza e veder comparire una finestra di dialogo che presenta a conferma le dimensioni già calcolate, chiedendo di sostituirle con un nome (oppure quit, per abbandonare). Se non vuoi veder chiudere l'impianto in prova, per continuare con altre messe a punto, clicca fixCh e potrai salvare l'area attuale senza perderne la vista.
Ottenuta la definizione dell'area, questa verrà a far parte della lista che appare nella finestra di testo in basso e sarà selezionabile per rilevare immagini dalla zona testè definita. Da notare che sarà sempre l'ultima in lista a venir proposta all'ingresso del programma; se quella immessa è provvisoria andrà poi spostata d'ordine manualmente, sempre con un editor elementare; data l'occasionalità di tali manovre, non ho potuto preventivare routines per automatizzare queste operazioni. In compenso, per prelievi occasionali, esiste l'opzione manual shot a sua volta interessante, che consente di catturare una singola immagine, chiendone il nome per salvarla (nella cartella myTempDisk&"\\TEMP\\"&file e mostrandola immediatamente tramite un comando di default del SO, lasciando l'opzione di abbandonare l'area così definita se poi non interessa; (myTempDisk è il disco dichiarato nel file ATime.INI e file è il nome dato, in formato PNG o GIF, come vedremo).
Nonostante l'efficacia di tali strumenti, restava difficile anche solo sperare che ogni utente potesse sistemare in modo definitivo la posizione finale delle immagini in lettura all'interno di un programma separato pieno di opzioni, in un desktop variabile, con uno schermo sconosciuto, e non è tutto. Data la strategia di minore ingombro affinata sull'uso permanente di una griglia trasparente, contennte icone, fascia oraria ed etichette che appesantirebbero ogni singola pagina .GIF, va sottolineata l'importanza della precisione del taglio immagine; inoltre la mappatura stessa di ogni pagina, contenente i rinvii ipertestuali HTML risentirebbe di uno slittamento dei simboli più piccoli, rendendo impraticabile la ricerca automatica delle spiegazioni e non solo. Ecco come la pagina deve apparire nel browser:
Il solo modo per venirne a capo è stato tentare l'intercettazione automatica delle pagine e pare che funzioni abbastanza bene. 325, 283, 965, 763 :Acrobat x Aspectsc 640 x 480
tracciano il proprio profilo entrando nella modalità grafico-selettiva descritta (questa ottenuta a piena finestra con display di 1280 × 1024, barra dei comandi di Acrobat non in vista), introduce detta modalità automatica il record:
x1, y1, x2, y2 :Automatic detectioncioè quello predisposto per l'intercettazione del riquadro da parte della routine interna; pertanto non comporta la diretta definizione di aree, stante la mancanza di valori fissi, sostituiti da x#. Ma anche così si possono incontrare difficoltà impreviste: dopo aver verificato che i colori dei singoli pixels utilizzati come mire risultavano codificati sullo schermo in modo diverso da un metodo all'altro, rendendoli irriconoscibili, mi sono risolto ad affidarmi a bianchi e neri, per poi scoprire finalmente che anch'essi venivano virati quando usavo il PDFCreator, quanto basta ad accontentare gli occhi, cosa ripetuta anche con dei grigi; in tal caso non rimaneva che l'alternativa con la finestra predefinita. Ne riproduco per maggiore accuratezza la schermata dell'ingrandimento di entrambi, ottenuto direttamente sul display con lo zoom di uno speciale mouse.
È giocoforza quindi di mettere in programma anche il caso specifico per PDFCreator, fermo restando che in presenza di un applicativo diverso anche questo non basterebbe a garantire l'individuazione automatica della finestra; a meno che, come ho supposto, l'applicativo ricorra allo stesso driver di output. Per operare in questa modalità è comunque buona norma chiudere ogni finestra in vista ed usare uno sfondo adatto, poiché è sempre possibile che qualunque combinazione di punti-schermo risulti identica alla stringa di riconoscimento, dirottando i programma. Ma non basta ancora: dopo aver trovato le due bande in rosso (spesse due pixels, proprio per prevenire l'aliasing) divise orizzontalmente in due striscie di rosso e rosa anche se provenienti dal Distiller, ho progettato l'uso di una sola pagina campione con i colori definiti una volta per tutte e per tutti. Il problema di rimettere in discussione tutta la programmazione fino a quel punto non è indifferente, ma quando si è in ballo conviene… ballare (si?); tutto per scoprire che neppure questa è la soluzione. Sto verificando che in condizioni di stress del SO (e uso Windows2k Server, tra i più seri della famiglia, con 1.5 GigaBytes di RAM) le modalità di riproduzione del colore PDF subiscono alterazioni all'interno di Acrobat, qualunque sia la fonte, tali da renderli di nuovo irriconoscibili. Non occorrono commenti tranne che, dopo aver ripassato molti dei files archiviati come “puliti” ed averli trovati “sporchi”, ho spento e riacceso il sistema ed il rosso vivo e pieno è riapparso! sfortunatamente non ho prelevato i campioni esatti prima di spegnere ed ora non ci sono più; ce n'è davvero per tutti i gusti e debbo mantenere traccia di queste esperienze, per evitare ad altri di incappare nelle stesse trappole. Finalmente! si pensa… e invece no!! La finestra non si trova ancora poiché queste belle bande di rosso vivo riveleranno l'aggiunta di un 16% di Verde e probabilmente non saprò mai da parte di chi. Beh, mi sono detto (non così sottovoce), non mi resta che svuotare la pagina, che c'è di meglio di un'area vuota? niente da alterare = niente che possa venir alterato, da qualunque parte lo si guardi. Rinuncia a qualunque codifica di controllo, con la speranza che nessuno collochi una finestra bianca di 640 × 480 bordata in nero sullo stesso schermo. Funziona. Se non si adotta Automatic detection, la procedura per AstroTime cercherà un record contenente al 24º byte la stringa ":Acrobat" (oppure ":Ghost" sec. configurazione), o anche ":Internal" in presenza dell'uso preferenziale del browser interno; ho aggregata quest'ultima poiché è probabile che corrisponda allo standard in questo caso specifico, in cui la finestra viene avviata sempre nella stessa posizione, tranne assestare le coordinate di qualche punto per versioni di Acrobat o schermi differenti; dei quali usare le coordinate prefissate per il rilevamento di immagine. Per adottarle, come descritto, assicurarsi di poter riaprire la finestra di Acrobat con la barra dei comandi disposta sempre allo stesso modo (lo stesso per la barra di Windows), meglio se massimizzata, talché la nostra pagina PDF sia traguardabile al centro dello schermo rispettando le coordinate con la precisione del pixel; prima di approntare tutte queste alternative l'ho fatto per mesi. Il processo AstroTime fa aprire il documento al Reader, sfoglia alcune pagine e ritorna alla prima pagina (vuota, per questo ed altri scopi), ne accerta la posizione quindi inizia a [far] sfogliare le pagine catturandone le immagini una dopo l'altra. In questa fase di ping-pong da un processo all'altro, nessuna manovra deve essere effettuata da tastiera e mouse, poiché interferirebbe con il normale andamento in modo più o meno drastico, ma comunque tale da compromettere i risultati; raccomando anzi di chiudere tutte le applicazioni estranee, soprattutto nel caso di un programma residente, generalmente caricato all'avvio del SO, che intervenga sul buffer di tastiera tramite macro di supporto alla scrittura - ad es. completando parole o linee di codice con la sola pressione di uno o più tasti - poiché intercetta le stringhe inviate da PDPA trasformando i comandi in veri petardi all'interno del ricevente; spero solo che qualche antivirus non si intrometta a sua volta. Data la ripetitività di tale situazione, trattandosi di programmi quasi sempre autocaricati all'avvio del SO, ho provveduto ad inserire un'opzione di intercettazione automatica da parte del Bindshot, che ti assiste proponendo di chiuderlo senza dover uscire dal programma [[Applications]/KeybMacro=] e, se avrai indicato il percorso dell'applicativo [[Applications]/KeybMacropath=] di riaprirlo a fine seduta; il nome che definisce KeybMacro deve corrispondere a quello assunto in memoria, lo puoi vedere tramite il Task Monitor; l'indirizzo di riferimento corretto può essere direttamente copia-incollato dalle Proprietà/Generali di un'icona del programma, sul display o da un menu. Puoi iscriverlo e rispondere di ignorarlo per verificare se crea disturbi; in caso contrario anche non inserirlo. Problemi in tal senso vennero evidenziati nella gestione di Photoshop, al quale era inizialmente inviato il compito complesso di aprire, convertire e salvare l'Aspectoscope in una singola immagine PNG (il formato GIF non è consigliato per i molti passaggi cromatici) immagine che, con i suoi 1700-1800 pixels di sviluppo in altezza fuoriesce da qualsiasi normale display e quindi - in dimensione naturale - anche da Acrobat Reader (il che vanifica ogni tentativo di ricavare una bitmap fruibile dal PDF, a meno di disporre di un video superwide e ruotare l'immagine di 90°!) Quanto alla qualità, vengono proposti svariati sw. che pretendono di convertire file EPS o PDF in immagini bitmap ma, a parte i problemi di interfacciamento con il nostro e di continuità nel tempo, non ne ho trovato alcuno che renda le sfumature ed i tratti con la debita precisione ed eleganza. Fortunatamente mi sono poi risolto ad integrare l'Aspectoscope alle pagine giornaliere, ritagliandolo in riquadri della stessa dimensione, per ricomporli all'interno del browser in modo trasparente e scavalcando così anche queste limitazioni. La procedura che genera la pagina singola è rimasta comunque operativa.
Tutto ciò richiede evidentemente un sincronismo perfetto, per garantire il quale vengono effettuate pause di proporzione adeguata al passaggio dei comandi attraverso il sistema ed alle varie modalità di esecuzione. Data la diversità imprevedibile da un computer all'altro etc. etc., tali pause sono rese globalmente variabili tramite il parametro ATime.INI [Check]/pauseMul. Esso può essere portato a qualunque valore che rallenti l'esecuzione del nostro, nel caso in cui le risposte dall'esterno fossero tardive, ma anche troppo rapide. Deve essere ben chiaro che la procedura non può quasi mai esser posta a conoscenza di quanto succede all'esterno; solo di alcune esecuzioni riceve codici di ritorno, ma si tratta di semplici valori che non dicono gran che di quanto si è effettivamente verificato, mentre hanno il difetto di bloccare il ricevente in caso di ritardo e simili con conseguenze di tutta scomodità; ma, per essere ancora all'età della pietra, non ci si può lamentare troppo. nextPage_mode=goto nextPage_mode=downanteponendo il comando che invita il Reader alla pagina numerata, anziché alla successiva: ciò dovrebbe appianare ogni problema di corrispondenza, se necessario ottimizzando le pause. Non occorre cancellare il secondo dei due, che verrà ignorato. Su due o tre sistemi che ho testato, una volta trovato il ritmo giusto le pagine si alternano a meraviglia e non ho dovuto ricorrere a questa modalità che ho sperimentato, ma che rallenta il processo per 370 volte; dipende anche dal volume di dati da produrre. Altre opzioni sono descritte nell' Introduzione generale. Mentre le immagini in formato GIF hanno vinto la gara in quanto a compattezza, pur con ottima qualità, rivelandosi le più praticabili nei casi di upload e download, non ho potuto rinunciare al fascino della più avanzata tecnologia PNG, che rende 16 milioni di sfumature cromatiche in una pur contenuta dimensione finale, ma assai meno adatta alla spedizione. Un maggior piacere per gli occhi e per la lettura dell'Aspectoscope con tutte le nuances dei suoi Transiti. La selezione tra l'una e l'altra avviene sul pulsante centrale, che reca la categoria da attivare: se leggi ">GIF" significa che è attiva la .PNG e viceversa. |
Come accennato nell'Introduzione, ho integrato in ultima istanza e per quanto possibile le funzionalità di Acrobat Reader™ nella procedura PDPA con la mediazione del browser di sistema, incorporato inizialmente per una più diretta funzionalità della sezione Help (cioè quella che stai vedendo).
Dal punto di vista dell'operatore non cambia quasi niente, tranne prender atto di alcune diversità esecutive, o di comportamento del processo: un vantaggio non indifferente per chi opera con continuità consisteva nella possibilità di ripetere la stessa prova, saggiando varie soluzioni per lo stesso nominativo, senza doversi preoccupare di aver lasciato un PDF aperto in Acrobat, con tutte le scomodità che ne venivano. Sfortunatamente quella che è parsa una soluzione “più vantaggiosa” con le versioni da me utilizzate per anni, ha rivelato poi dei contro inaspettati con le più recenti di Acrobat, che bloccano la creazione del PDF anche se caricato da IExplorer ed aumentano considerevolmente i difetti di refresh, l'intervento sui quali richiederebbe un anacronistico investimento di risorse;
è efficiente per certi versi, per altri meno: è più immediato a livello procedurale, ma all'interno è lento nella sostituzione dei fonts e aumenta i problemi nel refresh. Ho anche dovuto constatare che a differenza del Reader autonomo, quando è ospite del browser sfoglia le pagine con rapidità, ma si arresta ad ogni certo numero per un ricambio della memoria, recuperando poi due pagine quasi in contemporanea; spero di non tediare chi legge, ma di offrirgli strumenti per non lasciarsi confondere, poiché dal momento che il lavoro è fatto e si può ancora scegliere, restando aperta la possibilità di risolvere alcune limitazioni dell'una o l'altra parte e dato che tutto questo status diventa sempre più imprevedibile passando da una generazione di programmi e sistemi all'altra, ho mantenuto la procedura orientata ad entrambi i fronti, in parte separati ed indipendenti, cercando di mantenere attiva una marcia in più. All'interno di IE6 inoltre i thumbnalis di Acrobat 5.0 non funzionano; saranno tutte versioni superate, ma per quanto mi riguarda non sono per niente portato a sostituirle e per + di una ragione, che non è qua il caso di enumerare. Non essendo affatto raccomandabile passare alternativamente da un metodo all'altro nella stessa seduta, per i motivi addotti a seguito, la scelta Utente dovrà essere effettuata a livello di configurazione. In sintesi:
È sempre meglio che vederlo accumulare sessioni in proprio senza più rispondere o aprire alcun documento né dare segni di presenza, cosa che segue spesso qualche conflitto (visibili queste nel Task Manager, o “Gestione Attività” di Windows). È accaduto però che una sessione indipendente di Acrobat, aperta in contemporanea ad una di PDPA, permanesse residente in memoria dopo la chiusura, ostinandosi a mantenere impegnata al massimo la CPU; in tal caso insistendo, PDPA impossibilitato a chiuderla ne ha riaperta un'altra propria (che rimane costante), ma non essendo salutare procedere in tali condizioni, converrà uscire e rimuovere la prima tramite il pannello del Task Manager. Anche QB può farlo d'abitudine; gli basta che la finestra di DOS viene chiusa con il pulsante × anziché da menu: in particolare errori di runtime del Quick Basic ristagnano sotto il nome generico di "ntvdm.exe" presso il Task Manager, identificato come "ConsoleWindowClass | etichetta (del programma o dell'icona di avviamento)" presso il nostro Task Monitor, cosa che può tradursi in un vero incubo, se non te ne accorgi prima di avviare manovre correttive. Per questo ed altri motivi connessi, se PDPA dovesse restare trattenuto in RAM, al successivo tentativo di avvio la duplice presenza verrebbe autodenunciata: normalmente ciò equivale ad una proposta di sostituzione, ma in caso di anomalia può dover essere necessario rimuoverlo manualmente. Per i citati problemi di refresh (pagina o aree grige, che non sempre è possibile risolvere, poiché temo che i troppi livelli in causa mettano con le spalle al muro, oltre al sottoscritto, anche il SO specie se concorre una sessione di Acrobat esterna); se la finestra viene parzialmente coperta da un'altra, rientra con un click dentro la finestra di Acrobat, piuttosto che sulla barra superiore; un modo sbrigativo per rigenerare la pagina è Freccia-destra / Freccia-sinistra, o con la ruota del mouse; con singola pagina o ridimensionare leggermente o ricaricarla; un Doppio Click sulla barra superiore espande la finestra, ed un altro la riporta a misura; con Ctrl+Doppio Click si ridimensiona al formato di Help per le sole tabelle. Se poi non ne vuoi sapere di tutte queste noie, il menu dell'icona della finestra di Help sulla barra dei comandi di windows contiene il comando per portare la finestra del browser-help Sempre in Primo piano: "Help always to Front", o da lì Lasciarla Sovrapporre da altre "Let Help go to Back". Le due condizioni sono caratterizzate da una diversa cornice, con rilievo interno o senza; la preferenza è salvata nella sez. INI [Help] / helpOnTop=1, insieme al formato massimo prestabilito: maxWinSize={1280, 1024}; del resto i PDF di PDPA non sono finalizzati alla lettura (che può avvenire comunque) quanto all'ottenimento di prodotti finiti e poi, come si suol dire, “per i miracoli occorre un po' più di tempo”; ma intanto abbiamo AstroTime.
Poiché questo accumulo di sedute parassite non figura nella lista del Task Manager di sistema, ho riportato una serie di routines per estrarre dalla memoria l'elenco [più e meno] dettagliato, incluse le sub-funzioni di ogni programma, integrandole nella cartella 7 riservata ai servizi accessori. È questo il compito del pulsante taskMon , che apre presso detta cartella una propria finestra, lasciando all'utente di ridimensionarla, spostarla, chiuderla e riaprirla all'occorrenza. Ridimensionando il programma principale con uno dei tre piccoli pulsanti, questa finestra verrà riposizionata al suo interno nella dimensione di accoglienza. Il tasto di attivazione e di chiusura o il cambio cartella possono rimuoverla dalla vista, ma una volta aperta rimarrà operativa fino al termine del programma principale, per cui non è consigliabile attivarla senza motivo.
|
Puoi rilassarti; ormai è tutta discesa. I files .HTM vengono generati automaticamente in base ai parametri personali predisposti dalla procedura in QuickBasic, aggiornata allo scopo, disposti nella cartella del Soggetto; integrati quindi ai sorgenti proprietari dell'AstroTime. Giochiamo in casa ed è tutto sotto controllo (se qualcosa va storto per cause di cui sopra, riprova daccapo; ma se si ripete, l'errore può essere mio :( Ad evitare problemi derivanti dalla scomparsa di un semplice file (e sono tanti!) ho impaccato tutto in un DBase di nome resources\resources.dta, da cui ogni componente viene estratto e riciclato. Se l'archivio si guasta per qualche errore esterno basta ricopiarlo da un originale.
Quando tutto è pronto e finito, lo troverai sotto la cartella AstroTime\Cognome.Nom del disco da te indicato: l'Index.htm aprirà il panorama frutto di tanti sforzi, sul futuro del soggetto. Se questi è lontano e gli va spedito il tutto, basta zipparlo. Il comando zip tramite l'ottimo applicativo 7-zip di pubblica utilità, proporrà la finestra per la scelta della cartella, a cui indicherai: Cognome.Nom, per veder produrre un archivio estremamente compresso e reso autoestraente: minimo ingombro e massima facilità d'utilizzo. Il ricevente dovrà solo rispondere C:\AstroTime (il disco C:\ è opzionale) e tutto verrà da sé. Non vi sono parti che ingombrino il Registro di configurazione o altre parti vitali del sistema, né routines che scambino dati o prendano iniziative di sorta per comunicare con l'esterno anche durante eventuali sessioni di consultazione della rete, sia nel prodotto di AstroTime che nella procedura PDPA. Non ho certo lavorato per questo. |
SI è reso utile fin dalle prime prove ed è rimasto operativo, anche perché può servire a ricostruire eventuali immagini non risolte correttamente. È attivato da Single step , che sostituisce al grande pulsante inferiore per la definizione delle aree una linea composta da pochi comandi autoesplicativi, per scorrere il documento nei vari modi possibili, gestendo le pagine del PDF in riferimento a quella in vista. La sua pressione ripetuta riapre il documento; i comandi sono: Inizio: Home , riporta alla prima pagina; Indietro: Back , va alla pagina prednente; Esegui: Do it , estrae la pagina in vista, generando i relativi files HTML ed avanza automaticamente; Salta: Skip , passa subito alla pag. seguente; Esci: Exit dalla modalità a pagina singola, chiudendo la linea dei comandi; Abbandona [il programma]: Quit . Con il browser intergrato il cursore del mouse verrà coinvolto nella sua finestra ad ogni passaggio, quindi si dovrà aver cura di ricondurlo sui pulsanti ad ogni mossa successiva. |
In definitiva, le opzioni sono numerose e potranno non andare tutte d'accordo tra loro o con qualche area di processo ancor oggi non attraversata, ma… fanno del loro meglio! Qualunque programma di tale ampiezza equivale ad un individuo, con la sua personalità, le sue regole, se non preferenze ed un rigido protocollo, quel che noi chiamiamo “un brutto carattere”: una volta costruito va allevato e coltivato secondo norme da lui stesso imposte in modo sempre più serrato e non ci si può scapricciare più di tanto. Passano anni, migliaia di ore di lavoro contribuiscono a questo suo rafforzamento, inclusivo di errori che vanno a braccetto con le immancabili aggiunte ed i cambiamenti; e qua scatta il concetto di karma, ove gli errori da correggere spesso si infiltrano nei meandri di eventi già codificati e resi autonomi per la loro stessa consistenza, eppure vanno individuati e corretti non solo salvaguardando ogni minimo equilibrio limitrofo, ma prevenendo anche gli effetti più remoti.
|