sabato 17 maggio 2008

Magicrescue per linux

Speravo tanto di non doverlo mai fare. Oggi ho combinato un pasticcio degno del più principiante degli informatici. Accidentalmente, nell'usare incautamente un file manager appena installato, ho cancellato il 90% dei sorgenti di un progetto che sto sviluppando da quasi un mese. Me ne sono accorto solo alla ri-accensione del sistema. Persi i sorgenti, le impostazioni del progetto, le form... una piccola catastrofe. Com'è noto, gli informatici sono i primi a bacchettare i clienti che non salvano i dati con i backup giornalieri, salvo poi non farli mai per se stessi. Ho dovuto quindi procedere con un tentativo di recupero utilizzando magicrescue per linux. Dopo aver ri-montato la partizione da ext3 a ext2 (non journaled), ho proceduto con la programmazione dei "recipes" (le configurazioni). Fortunatamente, fresco di sviluppo, ricordo a memoria i nomi dei files e delle form create. Credo di aver recuperato tutto il minimo per tentare una ri-compilazione. Al massimo avrò perso solo le ultime righe di codice sviluppato. Al limite, proverò con sleuthkit sul dd effettuato sulla partizione interessata, oppure con Autopsy.
Ora è troppo tardi per un tentativo. è dalle 7 di stamattina che programmo e sono un pò stanchino. Vado a riposare e sabato, invece di dedicarmi ai miei hobbies preferiti, proverò a sistemare gli ultimi dettagli. Notte.

Aggiornamento 17.5.2008 - Tutto ok. Files recuperati al 98%. Tre ore di lavoro per lo sviluppo dei sorgenti mancanti e il software è tornato operativo. Utilizzato Magicrescue per linux.

P.S. il ragno non esce dal buco. Ripeto: il ragno non esce dal buco.

martedì 13 maggio 2008

Lazarus per linux - Reports


Lazarus è un IDE (ambiente di sviluppo) del linguaggio di programmazione Free Pascal. E' compatibile con il linguaggio Delphi di Borland. Lo sto utilizzando per sviluppare alcune procedure software in ambiente linux. Il progetto Lazarus è in fase embrionale (versione 0.9.x Beta) e la documentazione davvero scarsa. Per chi ha sviluppato in Delphi per anni come me, la cosa non rappresenta un grosso problema, ma in alcuni casi serve sempre ancora un pò di supporto, specie per quei componenti "nuovi" che in Delphi non ci sono o sono diversi. Allora, per contribuire, visto che non ho trovato indicazioni in rete, voglio pubblicare qui alcuni "tutorial" che possano essere utili a chi inizia o non ha troppo tempo da perdere nel cercare fra i forum in inglese e le varie wiki perennemente under development...
Iniziamo con i componenti per creare i report (le stampe) con un esempio minimale. Vogliamo creare dei report da un database MySQL su un server remoto (host) utilizzando i componenti ZeosDBO per l'accesso alle tabelle.
Passo 1 - Creare un nuovo progetto con la classica form1. Ci mettiamo un Bottone per lanciare l'esecuzione dei componenti
Passo 2 - depositare nella form i seguenti componenti:
  • ZConnection1
  • ZTable1
  • frDBDataset1
  • frReport1
  • Opendialog1
Passo 3 - Colleghiamo i vari componenti e settiamo le proprietà minime per farle funzionare (alcune proprietà le mettiamo "hardcoded" a design time, anche se è semplice farlo a run-time
Proprietà ZConnection1
  • Hostname = 192.168.2.x (dipende dalla tua rete locale) è l'indirizzo del server ove è installato il database. indica "localhost" se apache risponde sulla macchina su cui stai lavorando.
  • User = il nome dell'utente abilitato ad accedere
  • Password = la password di autenticazione abbinata all'utente (senon ce l'aqhi chiedi all'amministratore della rete o al provider se ti sati collegando ad un server su internet)
  • Protocol = mysql-5 in questo esempio. dipende dal tipo di archivio che stai usando.
  • Catalog = nome del database (compare in un menu drop-down dopo aver settato host, user e password)
  • Database = scrivilo a mano uguale al nome del Catalog se si tratta come in questo esempio di un database remoto
  • Active=True

Proprietà ZTable1
  • Connection = Zonnection1
  • Active=True
Al termine con un doppio click sul componente sulla form sei in grado di aggiungere i campi che desideri gestire.

Proprietà frDBDataset1
Va collegato a Table1

Proprietà frReport1
Va collegato a frDBDataset1

Passo 4 - Ora passiamo alla scrittura del codice per attivare il disegnatore dei report, con salvataggio e stampa.
Per lanciare il designer basta chiamare la procedura DesignReport come segue, in concomitanza all'evento OnClick del Bottone:

frReport1.DesignReport;

Una volta creato e salvato il report, per aprirlo ed eseguirlo basta la seguente procedura:
if Opendialog.execute then
begin
frReport.LoadFromfile(Opendialog1.filename);
frReport.Showreport;
end;

Nei prossimi giorni prometto, forse, di ampliare le indicazioni e completarle. Adesso, dopo 15 ore di lavoro, mi prendo una pausa per andare a dormire. Buona notte

P.S. Il pollo è cotto. Ripeto: il pollo è cotto.

Il pitale del nonno

Fra le "cianfrusaglie" che mi ostino a non buttare, sia per spirito ecologico che per combattere il consumismo dilagante che imperversa in questi tempi, ho trovato un vecchio mobile dall'aspetto strano. Era un pò che campeggiava sugli scaffali della falegnameria di casa. Mi sono sempre chiesto da dove venisse e cosa fosse. Dopo essermi informato presso i parenti, scopro che è il "cesso" che utilizzava mio nonno.
A quei tempi, quando i bisogni si andava a farli all'esterno, avere i servizi in casa era un lusso per pochi ricchi. Quello di cui parlo è il modello che usava prima di installare la tazza con lo sciacquone che utilizzava l'acqua piovana raccolta in una cisterna in granaio (soluzione davvero ecologica). Anche quest'ultima soluzione era una novità all'avanguardia per quei tempi ed un lusso per pochi.
"La tazza" è un cubo di legno, con all'interno un supporto che porta il vaso di porcellana, chiuso da un coperchio esterno incernierato e con all'interno due coperchi rotondi. Nell'indagare, scopro inoltre che quel pirla di mio cognato ha bruciato in un falò delle vecchie imposte di legno della casa di mio nonno, di quelle con cerniere e maniglie in ferro battuto a mano. Deficiente! Ora che in una vecchia casa "ristrutturata" hai le persiane di plastica ed i mobili dell'ikea dovresti sentirti contento ed orgoglioso no? (cretino di un giometra!).
Purtroppo, per il pitale miracolosamente salvato dal piromane, qualcuno ha in precedenza tentato di recuperarlo, passandoci la carta vetrata e togliendo così la patina originale che gli conferiva un aspetto "antico". Il restauratore "faidate" mi ha detto che l'odore "di piscio" era troppo forte ed ha preferito abbandonare (per fortuna) il massacro. Francamente, dopo più di cinquant'anni, non si sente nessun odore. Il pitale è stato per lungo tempo il ristorante dei tarli più grossi del mondo. Un paio di piedini sono corrosi dall'umidità e richiedono una ricostruzione. Le cerniere del coperchio esterno sono in ferro arrugginito, fissate con dei chiodi fatti a mano. Decido di conservare il più possibile, senza eliminare i buchi dei tarli (ho sentito che danno valore al pezzo). Ci passo però delle abbondanti pennellate di "tarlistop" per porre fine al banchetto a sbafo. Per i piedini, non ho attrezzature e legni da restauro. Decido di stuccare e ricostruire.
Il legno e la struttura sono comunque solidi e ben fissati da non richiedere incollature extra o fissaggi particolari. Lascio tutto com'è e ci passo un paio di mani di vernice impregnante all'acqua. Poi due mani di vernice satinata e dovrei riuscire a conferirci un aspetto decente per arricchire l'arredo della casa della mia compagna (tat). Nelle prossime puntate alcune foto e i passi di come procede il lavoro. In attesa..un abbraccio.

P.S. La mensa è imbandita. Ripeto: La mensa è imbandita.