PDI^2

Il dilemma del formato dei file di configurazione

php, fun July 30, 2006 10:28 am (Save post)

Ovvero, stavo guardando un simpatico screencast del progetto symfony, framework PHP per lo sviluppo rapido e agile e web2.0 e mvc e dry e kiss e ajax e tutti gli acronimi che sono in voga quest’anno, modelli fantasiosi ma che non per questo perdono la loro eleganza grazie al sottile richiamo a coco chanel.

Comunque, il sito è un sacco carino e pare bello ordinato e pieno di screencast, che è meglio, per cui stavo guardandone uno e vedo questa cartella config, che contiene i seguenti file:

apache.conf
config.php
databases.yml
propel.ini
properties.ini
rsync_esclude.txt
schema.xml

Per la serie: sei nel dubbio su quale sia il formato migliore per le configurazioni? Usali tutti :)

refactoring senza test è un ossimoro

programmazione, personale July 29, 2006 9:51 pm (Save post)

Non c’è bisogno che vi dica che settimanataccia è stata questa. Era partita bene, ma si è conclusa con un dente spezzato ed ora incapsulato in un affascinante guscio di alluminio, e con un portatile di due mesi da buttare per cause ignote.

Però alla fine ho trovato un po’ di tempo per lavorare seriamente sul mio progetto SOC, come potete leggere dall’altra parte.

La maggior parte della difficoltà di lavorare con nitro è la scarsità dei test. Non è che non ci siano, ma non sono strutturati molto bene, e non sono esaustivi.
Io nel mio piccolo, qualche danno l’ho fatto, e ancora non ho dei test “buoni” per quello che ho fatto, dovuta in parte a una mia colpa, ed in parte al fatto che vado a modificare delle cose che sono state strutturate in modo intricato e che è difficile districare.

È il classico problema uovo/gallina: non puoi andare a fare un refactoring senza test, ma non puoi mettere insieme buoni test senza refactoring.

A tal proposito, letturina interessante da brian marick, che tira fuori una bellissima definizione di refactoring.
Il refactoring è una trasformazione che mantiene i test validi.

Da qui il titolo del post, che in verità è una velata critica a certe persone che si imbarcano in enormi riorganizzazioni del codice e lasciano andare a p****** i pochi test che hanno. Autocritica, se vogliamo.
Il refactoring è possibile solo grazie ai test, rifattorizzare senza test, o lasciando che questi falliscano senza speranza di recupero, è come andare in barca senza acqua, o ubriacarsi senza ridere. Si, sarà pure fattibile, ma non è così che dovrebbe essere.

Safari, buoni libri e Mind Performance Hacks

lettura July 24, 2006 11:21 pm (Save post)

Tempo libero! Ovvero ho finito gli esami (per ora).
Ora as much nitro as possible e un po di nevow se ce la faccio.

Ma nei tempi morti sto leggiucchiando. Non mi piace comprare libri tecnici, ma O’Reilly mi ha regalato un account safari limitato (ultimo della serie infiniti vantaggi derivanti dalla summer of code) ergo sto abusando del catalogo.
Diciamocela tutta, safari ha una serie di cose al limite dell’insopportabilità ad esempio è possibile vedere solo una sezione (non capitolo, sezione) per volta, non si possono scaricare i pdf senza un account più fico ed altre cosette che avranno pure senso ma rompono.

Purtroppo qualcuno ha notato che safari è una miniera di libri usa e getta, “come le applet cambieranno gli anni ‘90″ ed in generale “impara la tecnologia X che sarà obsoleta/completamente differente tra un anno”. Non dico non siano utili, ben scritti o interessanti, ma preferisco internet liscia per certe cose.

Al contrario “buoni libri”, roba che rimane valida per decenni, come SICP, l’Oz Book, OOSC e quasi tutta la branca della sana vecchia computer science sono quasi completamente assenti.
Grande amarezza dell’Autore per non aver potuto procurarsi a costo zero Object-oriented programming: a unified foundation, bibbia su oggetti con multiple dispatch dal prezzo gargantuesco (mi piace l’aggettivo gargantuesco, capita raramente di poterlo usare in una frase).

In sincerità qualcosa c’è: “The Pragmatic Programmer” (se non l’avete letto vi manca qualcosa), Database in Depth, Code Reading e XP explained , ma insomma, non abbastanza.

Fruga che ti frugo, è venuto fuori questo interessante libello basato fondamentalmente sul Mentat Wiki (e se non avete letto Dune vi manca qualcosa). Ovvero: migliorare la propria mente.

Materia ovviamente sconfinata, ma la collana hacks non cerca di dare manuali dettagliati, bensì di fonire tante piccole chicche. Quindi troviamo metodi per fare calcoli complessi a mente, aumentare la creatività, gestire i problemi e le decisioni, tenersi organizzati ed ovviamente tecniche di memorizzazione.
E su questo punto vorrei riflettere. Il succo delle 4 tecniche esplorate finora è semplice: tira fuori una lista organizzata in qualche modo di cose note. Punti della stanza, numeri, etc. Poi associa a queste cose altre cose che ti ricordi (i.e. ai numeri lettere e alle lettere persone).

Poi, cerca di traumatizzarti in qualche modo il cervello collegando questa roba. Esempio vuoi ricordati che il titolo originale de la “moglie del soldato” è “The Crying Game“.
Immagina: svegliarti con una gnocca a fianco e il fidanzato (soldato alto due metri) irrompe e preso dalla gelosia ti costringe a giocare a monopoli (mentre piangi) minacciando che se perdi ti spara.

Ovviamente per fare le cose bene dovresti comprimere questa cosa in un’immagine nel tuo cervello, e magari anche in una frasetta breve (tagliando congiunzioni articoli et al, occupano spazio).
Meglio che non vi riporti l’esempio con gesù e le cronache di narnia.

Ma il tutto ha una sua logica, e si fonda sul principio che l’abitudine può essere usata costruttivamente, e che ciò che emoziona si ricorda meglio . Ovvero, tutti sappiamo chi è il protagonista di Jenna loves Rocco mentre appunto, quello dell’altro film suddetto no.
Adesso esperimento veloce: ricordate qual’era l’altro film di cui si è parlato? Il titolo in inglese? E la citazione di Kill Bill fatta prima? Fatemi sapere ;)

Dimostrazioni del cavolo

fun 10:21 pm (Save post)

progetti per l’estate: tradurre questo

traslucenza, traslucore

personale July 22, 2006 9:22 am (Save post)

Volevo giusto condividere questo piccolo pensiero: mi piace quando una cosa si capisce come è fatta, anche se poi non si ha a che fare con i dettagli. Odio l’idea che questo dannato mac faccia cose assurde quando io copio (quello che sembra a me) un semplice file da una parte all’altra.
La ragione per cui mi piace il ciclo for in ruby è che quando scrivo for i in enumerable in realtà riesco a vedere in controluce quello che succede. I decoratori in python sono di una tale semplicità eppure così pratici, perché capisci bene che cosa succeda. Lo zucchero sintattico è a velo.

A me è sempre piaciuto capirle le cose, anche se a un livello naive (”la terra gira intorno al sole”, mi spiegò mio padre con un arancia ed una torcia, senza parlare di eclittiche e precessione degli equinozi), devo avere una vaga idea di come funziona uno strumento per usarlo con soddisfazione e riuscire a trarne il massimo vantaggio.
Google calendar mi fa mettere una stringa “dottore 10pm” interpretandola correttamente ed aggiungendo l’appuntamento, ma posso farlo solo se ho idea di come funziona, perché dobbiamo parlare lo stesso linguaggio, e se il sistema si limita a mostrarmi ermeticamente le sue oscure arti di comprensione non ce la possiamo fare.
Pensavate che la OOP fosse la scienza del nascondere le informazioni? Ma suvvia, non è così, è la scienza del farvele vedere tramite una superficie traslucida, potete pure ignorare che un Punto abbia dentro due interi, ma ne vedete i riflessi in getX/getY e in quegli altri, getRadius/getAngle (tra l’altro mirabile effetto ottico).
Non starò neanche a dirvi quanto sia utile capire come funziona l’algoritmo di risoluzione per programmare in prolog. Si, certo, sarà lui a fare magie dietro la tenda (e poi Oz è un diretto discendente di Prolog) però se magari gli dite di tagliare una cosetta qua ed una là potete dargli una mano a fare prima.

Non so neanche perché cavolo mi sono imbarcato in questo pippone, ma il succo è: quando scrivete un’applicazione, un linguaggio, una libreria fate si che in controluce si veda com’è fatto, io ve ne sarò molto grato :)

PS
il messaggio che doveva passare in controluce è che ho finito gli esami per questa sessione e che sto rileggendo il pendolo di foucalt ;)

campione del mondo badge

personale July 13, 2006 12:07 pm (Save post)

Dillo anche tu che sei campione del mondo. Si quelli mad4milk mi piacciono un sacco anche se hanno un che di fighettoso.

9 luglio 2006

personale, italia July 10, 2006 6:11 pm (Save post)

  • rigori battuti: 9
  • campionati del mondo vinti: 1
  • chilometri percorsi: 350
  • punti allo zigomo: 5
  • fidanzate traumatizzate: 1
  • bagni in monumenti nazionali: 2
  • abrasioni a petto e addome: varie
  • lividi di raggio superiore ai cinque centimetri: 1
  • caviglie contuse: 1
  • foto con sconosciuti: 3
  • battiti al minuto: centomila

nel complesso, direi che è andata bene :)
Forza Italia!

1′m4 1337 H4><0r Ph33R m3 7H0u L4M4z01D

personale July 9, 2006 10:18 am (Save post)

E tutto ciò per dirvi che ho scoperto questa trasmissione. Scusate sempre straimpegnato ma sull’altro blog qualcosa scrivo, quindi se avete il doppio feed potrete notare che sopravvivo.

Ovviamente stasera forza italia. Si lo so che è un partito, ma sinceramente me ne strasbatto. Ed ovviamente domani un esame. Ah che culo.

Vorrei anche far notare che Alberto fa una cena interessante ogni volta che io ho un esame di pomeriggio, il che mi rende sistematicamente impossibile partecipare. E vorrei anche ricordare che martedì c’è un altro incontro ruby+roma. E concludo con la Citazione del Mese, [del mio (google) mentore bryan soto], sentita parlando della gestione della concorrenza all’interno di linux, tra semafori, spinlock, wait queue, run queue, completion, tasklet, kernel thread, spinlock read write non upgradabili, semafori read_write non interrompibili etc etc.

È una delle cose più divertenti, penso, dei computer. Chi ne sa poco si infastidisce per le piccole cose che non vanno. Poi più ne sai, più diventi grato che qualcosa funzioni

(Liberamente riadattato)

I aint’nt dead

personale July 3, 2006 11:46 am (Save post)

Usando le mirabili parole di Granny Weatherwax, non sono morto.
Purtroppo sembra che l’università abbia deciso di rifarsi su di me per quel tempo libero che mi aveva lasciato, e così ho passato due settimane a smanettare con linux per l’esame di sistemi Operativi 3, oltretutto dovendo trascurare la summer of code :( ( .
Trafficare col kernel è stata una cosa divertente, lo ammetto, e mi ha fatto fare strani pensieri.. avevate mai realizzato che gli oggetti in /dev sono singleton in senso rubyesco? Che /proc e rootfs sono invece singleton in senso GOF-oso ? Che in linux inode, directory, superblocchi e file sono oggetti con tanto di chiamate a “super” ?
Devo ringraziare il mio prof per questa cosa, è stata fica, peccato che tanto mi metterà un voto scandaloso allo scritto (non è che sia cattivo, solo che non azzecco mai uno scritto con lui, ed è il quarto esame che devo darci ).

Tra l’altro ovviamente devo presentare il progetto portandomi un computer (almeno credo), ed ovviamente io mi sono saggiamente comprato un mac, il che significa che dovrei installarci linux.. ma come fare?
La soluzione astuta che ho trovato consiste nell’uso di parallels, che va detto, è na figata. Ovviamente però non mi sono comprato una licenza e non cracko software per cui devo sbrigarmi a finire tutto per restare nei 30 giorni di trial. Porco diavolo, perché VMWare non ha ancora fatto una beta free per osx :(

(Poi ovviamente installerò linux pure sul portatile, approfittando di bootcamp però.)

A proposito di mac, devo dire che avrei un bel po’ di rant, ma li sto mettendo da parte, e poi questo non è diveintomark, quindi non starò a dirvi quanto è figo linux e l’open source.
Che poi diciamoci la verità, quello che viene detto in
questo articolo è semplicemente: uso dei software aperti che mi piacciono. Cavolo anche io su windows uso firefox, e pure su linux. Tra l’altro uso anche vim su tutti e due, e ruby, e python e java. E Azureus. E poi c’è gaim, e VLC che gira ovunque, anche se su win32 mpc è molto meglio imo.

Insomma il software libero e portabile sta appiattendo le differenze tra i sistemi.
Poi vabbè, c’è un sacco di gente che ancora ha dei pregiuidizi clamorosi su win32, i.e. tassoman ha dieci cose che può dimenticare grazie a linux. Però, imo:

  • Riavviare: quando una applicazione è buggata, di solito si chiude da sola, si anche su win32, pensa un po. Poi ovviamente entrambi hanno kill
  • Chiudere tutte le applicazioni prima di… Non c’è alcun motivo di chiudere applicazioni. Linux è un kernel multitasking per davvero. Si può tranquillamente aggiornare il sistema ascoltando la musica preferita. (CPU permettendo), si anche windows, ovviamente, ma non è questione di multitasking, ma di accesso agli stessi file. Mai notato il piccolo affarino che in background scarica gli aggiornamenti?
  • Aggiornare l’antivirus: non serve, amen fratello mai avuto un antivirus, su win32, basta che non usi ie/autluc e non clicchi a casaccio e nel 90% dei casi sei a posto, per il resto c’è il firewall builtin, che io non uso, perché ho un modem ethernet che già lo fa
  • Acquistare non c’è un software comprato sul mio windos, grazie al cielo i programmi aperti ci sono anche per quello, abiword, putty, inkscape e paint.net, eclipse o quantaltro.
  • Registrarsi per… cosa? L’ultima volta che mi sono registrato credo fosse per la mia entry nel linux counter ;)
  • Scaricare drivers aggiornati: non importa. E’ sufficiente avere una versione recente del kernel, ed i drivers son tutti lì bell’idea, aspetta: ah, si anche con una versione recente di windows non devi scaricare driver aggiornati, il fatto è che dopo averli scritti magari… beh.. li aggiornano.
  • Utility di manutenzione/anti spyware: dimenticate la necessità di installare qualsiasi tipo di PC doctor, o di anti spyware, magari costoso diglielo fratello diglielo! dimenticatevene, basta non essere idioti nell’installare software, e non eseguire i simpatici .exe che vi arrivano per posta. Poi se proprio sentiamo un bisogno morboso di andare a verificare esistono antispyware e antivirus gratuiti e/o aperti, a sfascio.
  • .

  • Defrag e scandisk: non esistono forse ce ne siamo scordati ma NTFS è journaled da un decennio. Defrag.. mh.. chissà cos’è quel repacker che c’è in Reiser4..

e così via. Vabè, basta fare il troll, tornando all’altra sponda, Gimmie mi sembra una figata pazzesca, (grazie a zefram per avermelo fatto scoprire).

Get free blog up and running in minutes with Blogsome
Theme designed by Janis Joseph