Archive for the ‘Projects’ Category

A Postgres deadlock bug case study

This is the third post in a small series dedicated to analysing and dealing with deadlocks in PostgreSQL, and provides a real bugfixing case study. Check the first article for an introduction and the second one for guidelines and techniques.

This post describes how I attempted fixing a real deadlock bug in SUSE Manager, which is also affecting the Spacewalk project it’s based upon. Hopefully it will shed light to someone fixing a similar issue!

Read On…

Postgres deadlocks debugging guidelines, tips and tricks

This is the second post in a small series dedicated to analysing and dealing with deadlocks in PostgreSQL, and provides a general workflow to handle deadlock bugs and details on how to get information from PostgresSQL.

If you need a gentler introduction, take a look at the first article in this series.

Debugging a deadlock – a workflow

If you have to deal with a deadlock in a complex application, usually you’ll have a defect that appears in time-dependent, load-dependent and user-dependent way. It’s all too easy to get lost in hypotheses! To avoid that try to work in a scientific way and follow a strategy.

Read On…

Deadlocks in Postgres 101

This is the first post in a small series dedicated to analysing and dealing with deadlocks in PostgreSQL, and provides a rather gentle introduction to the topic.

What is a deadlock?

A deadlock is a situation in which a DBMS cannot execute all concurrent transactions running in a specific point in time. It must, and it will, automatically kill some of them in order to complete others.

Read On…

Aggirare un CAPTCHA per divertimento e divulgazione – Parte 5

Questo è il quinto articolo della serie sui CAPTCHA – meglio tornare al primo se non l’hai già letto.

Riassunto delle puntate precedenti

Ecco la ricetta per “leggere” il CAPTCHA di Vodafone!

  • rimuovere il rumore dal fondo dell’immagine, per sottrazione con un’immagine di solo rumore ottenuta comparando molti CAPTCHA;
  • applicare un filtro a soglia per rendere netti i contorni dei caratteri;
  • opzionalmente, correggere le aree bianche o nere troppo piccole e (semi)isolate dal resto;
  • segmentare l’immagine nei vari caratteri, ad esempio con un algoritmo flood fill;
  • ridimensionare ogni lettera individuata a 15×15 pixel;
  • dare in pasto ogni carattere a una rete neurale a percettrone propriamente allenata.

Ciò detto, quale è l’accuratezza del sistema?
Read On…

Aggirare un CAPTCHA per divertimento e divulgazione – Parte 4

Questo è il quarto articolo della serie sui CAPTCHA – meglio tornare al primo se non l’hai già letto.

Normalizzazione delle dimensioni delle lettere

Come si nota dall’immagine seguente, nel CAPTCHA di Vodafone solitamente le lettere  sono di dimensioni diverse.

Un CAPTCHA preso dal sito Vodafone, così com'è.

Questo è chiaramente un meccanismo per rendere più difficile l’individuazione delle lettere – peccato che è anche particolarmente semplice da aggirare. Vediamo come.

Read On…

Aggirare un CAPTCHA per divertimento e divulgazione – Parte 3

Questo è il terzo articolo della serie sui CAPTCHA – meglio tornare al primo se non l’hai già letto.

Filtraggio e rimozione delle imperfezioni

Sistemato il rumore, il compito successivo è quello di separare i caratteri uno dall’altro. In effetti è abbastanza ovvio: riconoscere una lettera è essenzialmente indipendente dalla sua posizione in un dato testo.

Questo passaggio, che all’uomo risulta naturale, è un po’ più ostico per le macchine: bisogna pensare a un modo per distinguere i contorni delle lettere, che però non sempre sono ben definiti.

Read On…

Aggirare un CAPTCHA per divertimento e divulgazione – Parte 2

Questo è il secondo articolo della serie sui CAPTCHA – meglio tornare al primo se non l’hai già letto.

Anatomia di un CAPTCHA: osservare per capire

Nell’immagine seguente trovate un insieme di esempi di sei CAPTCHA presi dal sito vodafone.it.

Tanto per iniziare, osserviamo che:

  • il CAPTCHA è sempre formato da cinque caratteri, numeri o lettere. Per evitare ambiguità, alcuni caratteri come lo zero o la “O” non compaiono mai;
  • le lettere sono distorte, in particolare sono “stirate” verticalmente o orizzontalmente;
  • c’è del rumore di fondo dietro ogni immagine (apparentemente casuale).

Proprio l’ultimo punto rappresenta il punto di partenza ideale per il riconoscimento del CAPTCHA: se fosse possibile rimuovere il rumore, almeno in buona parte, si semplificherebbe parecchio il  riconoscimento. Come si può fare?

Read On…

Aggirare un CAPTCHA per divertimento e divulgazione – Parte 1

Cos’è un CAPTCHA e perchè si usa?

Qualunque utente Internet di questi tempi si imbatte di tanto in tanto in un CAPTCHA, ossia in un controllo dell'”umanità” di chi sta alla tastiera, come il seguente:

Esempio di CAPTCHA

Spesso mi viene chiesto: a cosa servono?
La ragione per cui moltissimi siti si dotano di CAPTCHA è la possibilità discriminare gli utenti veri da programmi automatici che potrebbero usare il sito in maniera non consona (ad esempio aprendo le sue pagine a ripetizione per danneggiarlo).

L’idea di questo fastidioso dispositivo è che si possa distinguere un umano da una macchina tramite un compito che sia:

  • facile per un uomo ma
  • difficile, o meglio impossibile per un computer

…proprio come leggere lettere distorte e senza senso! Si può infatti immaginare che un computer, non essendo intelligente, non sia in grado di leggere qualcosa di imperfetto. Ma è proprio vero?

Read On…