Vademecum al testing automatico/1

Che differenza c’è tra unit test e acceptance test? In quali occasioni è opportuno scrivere uno unit test e quando invece è meglio scrivere un acceptance test?

Queste sono domande tipiche e più che legittime quando un team inizia a muovere i primi passi nel mondo del testing automatico. Personalmente scrivo il mio codice attraverso il TDD ormai da parecchio tempo, ma mi è capitato di lavorare con team che scrivono test automatici solo dopo aver scritto il codice applicativo corrispondente. Non solo: uno sviluppatore o un team che si interessano al TDD tipicamente passano qualche tempo praticando test-after, prima di iniziare a muoversi test-driven. È un’evoluzione naturale quindi ed è un po’ come imparare a camminare prima di iniziare a correre. Spero che sia evidente che la mia netta preferenza va verso un approccio test-driven.

Detto ciò, le informazioni che seguono costituiscono un approccio al testing pragmatico e volutamente non formalizzato: hanno l’obiettivo di aiutarvi nelle vostre attività quotidiane. Di conseguenza, le definizioni e i suggerimenti qui riportati non vogliono essere necessariamente a prova di bomba da un punto di vista formale, ma spero che possano essere efficaci nel vostro contesto professionale.

Questa prima parte è concentrata sugli unit test.

 

[Read more…]

ThinkCode.TV, screencast di programmazione in italiano

Dopo alcuni mesi di preparativi e qualche banner più o meno enigmatico apparso nel sito, sono pronto a parlarvi di un progetto importante che interesserà senza dubbio molti dei nostri lettori.

Ieri è nato ThinkCode.TV, un sito dedicato alla creazione e vendita di screencast di programmazione in italiano (e in futuro in altre lingue). L’obiettivo principale del sito è di fornire degli strumenti didattici eccellenti per studenti e professionisti che intendono migliorare le proprie abilità e mantenersi aggiornati nel campo della programmazione.

[Read more…]

La baguette dell’LHC

Vignetta ispirata da una storia vera 🙂

 

Contratti

Il mio primo progetto fu un programma per la gestione della biblioteca di un paesino vicino al mio. Scritto nel 1985 prima con il mitico Dbase III e poi con l’ancor più mitico Clipper 86/87 è ancora in uso dopo la bellezza di 24 anni. L’applicativo gestiva, anzi gestisce ancora!, libri, periodici, soci e prestiti. A suo modo, fin da allora faceva già il mail-merge, visto che la bibliotecaria scriveva in un form “Caro @NOME, ci deve restituire i @LIBRI il cui prestito è scaduto…” e a quel punto il programma stampava le lettere, con tanto di etichette per le buste, per tutti i soci ritardatari. Allora chiesi un compenso di ben 2.800.000 lire (la solita stima fatta prima e la solita fattura unica fatta alla fine).

Posso dire con orgoglio che, oltre che il mio primo lavoro informatico, fu anche il mio primo bagno di sangue! 🙂

Bagno di sangue

[Read more…]

Italian Perl Workshop 2009

Il 22 e 23 Ottobre si terrà a Pisa la quinta edizione dell’Italian Perl Workshop, organizzato da Perl.it e Pisa.pm in collaborazione con l’IIT-CNR (Istituto di Informatica e Telematica del Consiglio Nazionale delle Ricerche). L’evento è non-profit e rappresenta la conferenza nazionale sul linguaggio Perl e tecnologie correlate.

Alcuni importanti ospiti internazionali, non solo legati al mondo Perl, sono già confermati:

  • Tim Bunce: autore di moduli CPAN quali DBI, DBD::Oracle, Devel::NYTProf, autore O’Reilly Media, relatore a OSCON e a numerose conferenze e workshop.
  • Jonathan Worhington: core developer del compilatore Perl 6 Rakudo e della virtual machine Parrot.
  • Mike Whitaker: membro della comunità Moose, ha tenuto vari talk in altri workshop su Moose e su Perl. Mike lavora nel team di sviluppo di iPlayer della BBC ed è uno dei fondatori della Enlightened Perl Organisation.
  • Thomas Fuchs: JavaScript guru, autore di script.aculo.us, membro del core team di Prototype e di Ruby on Rails.
  • Amy Hoy: esperta di user interaction and product design, relatrice a OSCON.

20 speaker da tutto il mondo, quasi 40 interventi: più di 24 ore totali di conferenza, se li mettessimo l’uno in fila all’altro. La lista dei talk previsti è disponibile qui:

http://conferences.yapceurope.org/ipw2009/talks

Appena avremo le conferme di tutti gli interventi pubblicheremo il programma dettagliato.

Il Workshop vuole essere un’occasione d’incontro rivolta a tutti gli utilizzatori di Perl, professionisti o amatoriali che siano, ma anche a chi si avvicina per la prima volta a questo linguaggio e ne vuole conoscere le particolarità, la cultura e la comunità che lo circonda.

L’evento è gratuito: è sufficiente registrati sul sito web. La partecipazione darà diritto a:

  • accesso a tutti gli interventi
  • gadget degli sponsor
  • 2 coffee break giornalieri
  • attestato di partecipazione (su richiesta)
  • accesso all’asta finale (ove verranno battuti interessanti e validi prodotti donati dagli sponsor)

Per chi lo desiderasse, è anche possibile acquistare un supporter pack, che darà diritto alla maglietta e ad altri plus.

Per ulteriori dettagli in merito all’evento si prega di visitare il sito web di IPW 2009.

Tutorial gratuito di Django

In anteprima esclusiva per Stacktrace.it, Apogeo ha deciso di rilasciare gratuitamente una cospicua parte del testo di Sviluppare applicazioni WEB con Django a cura del “nostro” Marco Beri.

La parte rilasciata comprende il tutorial iniziale di sette capitoli più tre capitoli finali.

Grazie alla disponibilità di Apogeo sarà quindi possibile scaricare il PDF di 115 pagine dai nostri server ed usarlo come un tutorial gratuito di Django.

La scelta oculata dei capitoli permette infatti di leggerlo come un tutorial utile di per sé anche senza l’acquisto del resto del libro (che è comunque consigliato).

La copia visione contiene i seguenti capitoli:

  • Introduzione
  • 1. Installazione, a.k.a. “Hello World”
  • 2. Il database
  • 3. L’Admin
  • 4. Gli URL
  • 5. I template
  • 6. I form
  • 7. Django e Apache
  • 18. Navighiamo tra i dati (databrowse)
  • 19. Uscire dal seminato (generare file non HTML)
  • 20. Pulito sì, fatica no (Ajax)

Scaricatelo, commentate liberamente sul suo contenuto, e se potete fate passaparola.

Yes, I am a data geek /1

Riprendo a parlare di programmazione, dopo i deragliamenti di questi giorni, con il primo di una serie aperiodica di post sulla manipolazione dei dati. È un argomento che mi ha sempre affascinato, e in questa serie descriverò per ogni post un piccolo problema che mi è capitato di dover risolvere lavorando, e una delle sue possibili soluzioni.

In questo primo post vi racconto un problemino che mi è capitato sottomano giusto ieri in ufficio: come calcolare degli aggregati periodici (ad esempio ogni 5 minuti) da un elenco di rilevazioni del traffico di un servizio. I dati che ho ricevuto erano in formato Excel, ma per semplificarci la vita senza inciampare in tabelle pivot e soprattutto dato che siamo geek, per trattarli utilizzeremo un database relazionale (nel mio caso MySQL).

[Read more…]

Linux kernel hacking: real-time backup con i kernel tracepoints

I tracepoint (Documentation/trace/tracepoints.txt) sono degli hook “lightweight” che possono essere piazzati in determinati punti nel codice del kernel per registrare l’occorrenza di determinati eventi.

Un tracepoint definisce automaticamente la “probe function” che potrà essere piazzata in punti desiderati all’interno del codice del kernel (instrumentation).

Ogni volta che l’esecuzione passa da tali punti la “probe function” viene invocata e l’infrastruttura di tracing provvede a salvare il contesto dell’evento e le informazioni desiderate all’interno di un tracing buffer. Il tracing buffer sarà poi accessibile dallo userspace tramite il debugfs (/sys/kernel/debug/tracing/trace).

I kernel tracepoint sono utilizzati tipicamente come strumento di debug per tracciare in tempo reale l’occorrenza di particolari eventi, raccogliere statistiche, ecc.

In questo articolo vedremo un utilizzo dei tracepoint un po’ diverso dal solito e sfrutteremo la capacità di tracking in tempo reale e la leggerezza dell’infrastruttura dei tracepoint per realizzare un sistema di notifiche efficace e soprattutto a basso overhead.

[Read more…]

BlogBabel va all’asta su eBay

Al ritorno dalle vacanze d’agosto siamo stati accolti da una notizia che farà senz’altro discutere. BlogBabel, il termometro della blogosfera italiana, va all’asta su eBay e lo fa con un prezzo iniziale davvero inaspettato.

[Read more…]

GitHub lancia un concorso alla NetFlix

Pappy Van WinkleIspirati forse dal successo del concorso indetto da NetFlix e recentemente conclusosi, il team di GitHub ha deciso di creare un proprio concorso, anch’esso basato sulla creazione di un algoritmo di raccomandazione efficiente. Questa volta, non si tratta di gusti cinematografici, bensì di respository software.

Lo scopo del concorso è di creare un programma open source in grado di raccomandare repository ospitate presso GitHub agli utenti del sito.

I programmi saranno accettati fino alle 9 di sera del 30 di agosto (ora italiana). In palio c’è una bottiglia di whiskey (un Pappy Van Winkle dell’89) per celebrare la vittoria e un account “large” presso GitHub, vita natural durante. I premi sono certamente più contenuti rispetto a quelli del milionario NetFlix Prize, ma possono comunque incentivare la partecipazione.

Chi volesse partecipare può leggere le regole e scaricare il dataset di esempio dal sito del concorso. Agli altri non rimane che tenere d’occhio la leaderboard contenente i risultati delle candidature pervenute sinora, fino all’annuncio dei vincitori tra un mese esatto.