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…

30 Aprile: presentazione su idee e tecnologie Apple

Lunedì prossimo 30 Aprile tengo una presentazione presso il gruppo CodeLovers sulle idee “fuori dal coro” dietro alcune delle tecnologie Apple. Sarà un incontro molto tecnico, rivolto essenzialmente ai programmatori (della Mela e non).

L’incontro è aperto a tutti e gratuito, alle 21:00 allo Spazio Polaresco di Longuelo.

Per maggiori informazioni rimando al blog dei CodeLovers.

A presto!

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…