Personal tools

You are reading the articles stored in Tutorial

Jul 15, 2015

Google api authentication: connettersi tramite un service account

keep in touch with your API

Google api authentication: connettersi tramite un service account

Filed Under:

Connettersi ai servizi di google esposti tramite API me lo ricordavo veramente semplice. In effetti era da un bel po' che non avevo bisogno di farlo

Mi è già capitato altre volte di dovermi connettere alle API di google per leggere dati relativi ai suoi servizi. È sempre stato tutto molto semplice: autenticazione tramite un account gmail e accesso ai dati! Solamente una mail e relativa password.

Ora, ripetere questo processo è stato leggermente più complesso poiché l'autenticazione è cambiata, passando ad OAuth 2.0, e purtroppo la documentazione presente su developers.google.com l'ho trovata non sempre precisa, probabilmente a causa delle continue modifiche che vengono apportate alle librerie.

read more

Jan 15, 2015

plone.api e documentazione: le linee guida del buon plonista

Scegliere la strada giusta può essere difficile a volte

plone.api e documentazione: le linee guida del buon plonista

Filed Under:

Per non perdersi nel mare di possibilità implementative e scegliere sempre la strada giusta, basta seguire le linee guida che la comunità (finalmente) ci offre.

Si sa, il mondo è bello perché è vario, soprattutto nella programmazione: esistono mille modi diversi per risolvere un problema.

Un giorno Alice arrivò ad un bivio sulla strada e vide lo Stregatto sull'albero.
- "Che strada devo prendere?" chiese.
La risposta fu una domanda:
- "Dove vuoi andare?"
- "Non lo so", rispose Alice.
- "Allora, - disse lo Stregatto - non ha importanza".

Il lato positivo di questa libertà è che ognuno può implementare la soluzione come meglio crede.
Può capitare quindi che a seconda dell'umore, delle preferenze personali, o anche solo del tempo a disposizione (quante volte sarà capitato di avere tempi di sviluppo troppo serrati e scrivere del gran spaghetti code solo per poter concludere il lavoro) il risultato prodotto sia estremamente vario, ma funzioni comunque correttamente.

Il risvolto della medaglia, però, è che se si lavora in gruppo o in una comunità dove tutti possono leggere e attingere dal codice scritto da altri, ci si può trovare di fronte a codice incomprensibile: in questi casi il focus sul risultato finale non basta!
Se non si segue una certa linea di condotta, quello che si produce potrebbe risultare poco chiaro o troppo complicato e quindi generare confusione in chi non ha scritto direttamente quel codice. Soprattutto se chi legge non è un esperto e ha bisogno di capire qual'è la strada migliore da seguire.

read more

Nov 12, 2014

Scraping cheap airline tickets

Filed Under:

It all started with a bet long time ago. One of my friends couldn't believe that it is actually possible nowadays to travel around the world with low-cost airlines.

Because the term low-cost airline is difficult to define we have agreed that we should bet on something easy to check - like the ticket price per kilometer. After some rough checks the bet was on: travel around the world, flying always in one direction (west or east) for less than €0.03 (3 euro cents) per kilometer (imagine Bologna-New York trip for less than €180).

TL;DR

I think I won. With some python help and many hours of coding I was able to find all the necessary tickets and stay below the price criterion. I have learnt a lot about airlines sales strategy... and something about ant colony optimization algorithm. The trip starts on November 15th, maybe you will meet me in the following months ;-)

Problem

Now the long story. Searching for cheap plane ticket is relatively easy task if you have strict dates and simple route (one or two stops). It starts to be more complicated if you want to stop in 3 places. But what if you have 6 stops or more? None of the existing online tools allows you to make such a query (if you know one - let me know). Things get more fuzzy if you don't have specific dates and just want to travel cheap. Searching manually is not an option: ticket price is likely to change daily and number of possible queries is quite big, I mean really big. Imagine you want to take 5 stops and search with margin of ± 10 days. It gives you 9765625 queries (5^10). Grabbing that data directly from airline database is also not doable. There is no standard approach, most of the small companies have their own system - others use providers that are much too expensive for a single user.

Sooner or later you will start to write a script.

read more

Oct 08, 2014

Zeal: documentazione sempre disponibile per il tuo lavoro

be zealous

Zeal: documentazione sempre disponibile per il tuo lavoro

Filed Under:

Come fare se nel bel mezzo di un problema, con la necessità di trovare la documentazione per risolverlo, non c'è rete e non possiamo rivolgerci a San Google?

Spesso la documentazione ufficiale di un prodotto non è la prima cosa che si va a vedere quando si cerca una soluzione a un problema specifico.

Una ricerca fatta con buone parole chiave di solito ci porta a navigare siti come stackoverflow.com molto più di quello che navighiamo altri siti come docs.python.org o www.sqlalchemy.org o altri ancora.

La possibilità di cercare documentazione in effetti è la cosa che mi manca di più quando non ho a disposizione una connessione a internet, evento raro ma non impossibile.

read more

Sep 10, 2014

Play these (Python) strings until my fingers are raw

What Do You Want from Me

Play these (Python) strings until my fingers are raw

Filed Under:

This blog post is about the tricky task of subclassing immutable types in Python. Once you get it right, you will end up with superpowered objects

In one project I had to subclass the Python string type (namely str) in order to get some additional features.

Why I decided to do that?

Because I needed something:

  • supporting almost all the methods of the standard strings
  • with some custom attributes, additional methods
  • that could be compared and mixed with strings.

I had almost no choice. But subclassing str is a task that should be handled with special care because it is a so called immutable type.

read more