Caching

Come promesso in precedenza eccomi a parlare di codice e di come ho implementato il sistema di cache in blogoo. È diventato necessario quando il numero di commenti per post ha cominciato a superare una certa soglia: il mio ISP è molto generoso ma prevenire resta sempre meglio che curare. Senza la cache la pagina viene renderizzata ad-hoc ogni volta che viene invocata. Questo è un peccato perché buona parte dell’output restituito al browser è ‘facilmente’ sistemabile in una cache. Facilmente è tra virgolette perché gli elementi della sfida sono tanti:

  1. è interessante fare tenere nella cache sia le pagine che puntano ad un singolo post, sia le pagine che contengono più di un post (la home-page, gli archivi, le pagine per tag, ecc.), sia dei “pezzi di pagina” (gli ultimi commenti, tag-cloud, archivio, ecc.) 
  2. la cache deve gestire correttamente sia le pagine visibili solo dall’editor del blog, sia quelle visibili dagli utenti cercando di non fare confusione
  3. la cache deve essere invalidata solo quando necessario; nel dubbio se sia necessario o meno è meglio invalidare che servire contenuto “scaduto”.
  4. Se possibile è meglio invalidare solo lo stretto necessario: ad esempio la tag-cloud dovrebbe essere invalidata solo in caso di modifica/aggiunta di post o di categorie
  5. la cache deve essere invalidata quando del contenuto “post-datato” diventa automaticamente visibile

Analizzando la questione a tavolino sono emerse un paio di cose. Gli eventi invalidanti sono in generale 2: l’aggiunta/modifica di un commento, l’aggiunta/modifica di un post. Tutto il resto, ad esempio il punto 5., può essere ricondotto ad uno dei due casi. L’aggiunta/modifica di un post poi può a sua volta generare due tipi diversi di eventi: un evento che invalida la “collezione dei post” ed un evento che invalida il singolo post. Ad esempio un commento sul post X invaliderà la collezione dei post (in quanto tale collezione potrebbe mostrare il numero di commenti per quel post), invaliderà il post X ma non il post Y. Per cui se un utente clicca sul post Y dopo che è stato scritto un commento su un altro post, si ritroverà il post servito dalla cache.

L’invalidazione poi tiene conto di diversi fattori. Ad esempio cancellare un commento moderato non deve avere effetti sulla cache in quanto non visibile a priori. Stessa cosa per la pubblicazione di un draft e così via.

Fatto questo, il resto diventa un gioco da ragazzi: ogni elemento inserito nella cache porta in dote la sua lista di dipendenze. Un componente separato da me battezzato CacheManager si mette in ascolto dei vari eventi (creazione/modifica/cancellazione dei post/commenti) e in base allo stato della cache, al tipo di evento e le condizioni a contorno (era un draft? è diventato un draft? c’è qualche articolo postdatato in coda?) invalida zero, una o più dipendenze causando la rimozione a cascata di tutti gli elementi da esso dipendenti. L’unica accortezza è gestire correttamente la “scadenza” della cache: nel momento in cui del contenuto viene prelevato dalla cache va confrontata la data di “prelievo” con la data di "scadenza" e se la cache è scaduta la data di scadenza viene ricalcolata, ciò che va invalidato viene invalidato, e tutto il resto prosegue come prima.

Infine un’ultima nota: avrei potuto tenere una cache separata per gli editor, però mi è sembrato più saggio fare in modo che il contenuto fosse manipolato a posteriori.

I risultati sono sorprendenti: il post da quattro mucche caroline e 428 (!) commenti viene renderizzato in 5 secondi senza cache, appena 192 millisecondi se il post è già presente in cache. Considerato il tempo sprecato (mezza giornata circa) ed i risultati ottenuti, direi che ne è valsa davvero la pena.

Nota aneddotica: il baco più antipatico, l’Heisenbug che faceva sparire i commenti di Daniele B. dalla cache, era dovuto al fatto che il mio ISP usa un sistema arcano di load-balancing per cui le richieste al sito www finivano solo alcune volte per essere eseguite dallo stesso server che gestisce il sito senza www. Che poi non ho ancora capito perché a livello di hosting, visto che i due siti puntano allo stessissimo contenuto, sono configurati come due siti separati: individuato il problema, la soluzione è stata semplice e immediata. Redirect 301 di tutte le richieste www al sito principale. La cache è sempre sincronizzata e tutti i paperi (?) vissero felici e contenti.

-quack

Pubblicato sabato 29 novembre 2008 alle 6:28 AM - 4 commenti so far
Archiviato in: Blog-Tech

Il paese dei cachi

Certe volte essere italiani è davvero umiliante. Un esempio eclatante è andare alle poste e trovare il commesso simpatico che ti dice: «Lo manda in Italia? Sa che l’Italia è il paese con il più alto numero di pacchi mai arrivati a destinazione?». Verissimo anche se devo ritenermi fortunato con 2 pacchi “scomparsi” ed uno semplicemente “manomesso” in dieci anni. Senza poi contare il servizio doganale che applica dazi e tasse in maniera totalmente casuale.

Oggi stavo cercando un carica-batterie da tavolo per il mio G1: la batteria si scarica molto velocemente e leggevo in vari forum che alcuni telefonini sono stati venduti con batterie difettose e T-Mobile prontamente mi ha mandato una batteria di rimpiazzo. Il mio fornitore preferito per accessori per cellulare rimane ebay, con prezzi assurdamente bassi e consegna a domicilio per pochi soldi davvero. Nella mia ricerca oggi mi sono imbattuto in un venditore in Hong Kong che spedisce in tutto il mondo, Italia compresa. Ma con un avvertimento molto chiaro per chi acquista da e solo dal Belpaese:

ATTENTION! To all Italian Buyers

THIS IS A SERIOUS MATTER AND IT IS FOR MUTUAL BENEFIT. PLEASE READ IT CAREFULLY.
We DO NOT ship to Italy UNLESS all buyers from Italy agree to receive their ordered items LATE. As far as we are selling, it takes over one month to Italy. Please kindly do not bid any items from us unless you are patience enough. If you are not and open a dispute for complaining non-receipt, I have no other ways to do except leaving negative feedback to you. PLEASE THINK TWICE BEFORE YOU ARE GOING TO BUY. Thank you very much for your attention.

Il venditore ha una reputazione con il 99.2% di feedback positivi. Sono pronto a scommettere che buona parte del 0.8% dei compratori che ha avuto da ridire provenga dal natìo suolo.

Perché il paese dei cachi è il paese dei cachi.

-quack

Pubblicato venerdì 28 novembre 2008 alle 7:38 PM - 7 commenti so far
Archiviato in: Cazzate

I want to believe

believeChe ci crediate o no, ieri sera a mezzanotte scoccava l’ora X di un malefico e pianificato attacco alieno massiccio alla terra. Come ne sia venuto a conoscenza è davvero irrilevante per il resto della storia che si è conclusa con un bellissimo lieto fine: ho terrorizzato gli alieni dopo essere salito sul tetto e mentre coi loro fari si avvicinavano alla mia abitazione ho spernacchiazzato con tutte le mie forze. Impauriti sono fuggiti a chele levate.

So che è una storia difficilmente credibile e proprio per questo mi son creato un alibi di ferro, l’ultimate proof che quello che ho scritto è vero come il sole: come ben visibile sotto gli occhi di tutti la terra è salva; se gli alieni fossero riusciti nel loro intento nessuno sarebbe qui a scrivere e meno che mai nessuno sarebbe qui a leggere.

Storia buffa, vero? Certo solo perché si parla di alieni. Però la sindrome di “I want to believe” è molto più comune di quanto si immagini, solo che è una tanticchia più difficile da riconoscere.

Delle idiozie di Randall ne ha parlato in precedenza Enrico, in un post intitolato fenomenologia di un fabbricante di FUD. Ma che oggi tornasse alla cara con un’idiozia ancora più grossa del mio incontro di terzo tipo non me lo sarei mai aspettato:

Microsoft is so concerned by the overwhelming response to our groundbreaking expose, "Windows 7 unmasked," that it's pulling back on the delivery reins so that it can retool the product to address the myriad performance and compatibility issues we identified. (fonte)

Secondo Randall la sua recensione (de’ recensori) di Win7 avrebbe spaventato Microsoft a tal punto da ritardare la beta agli inizi del 2009. Peccato che la beta sia in linea con le tabelle di marcia che prevedevano il rilascio pubblico per i primi del 2009:

I'm here today to tell you we're going to deliver the beta early next year as well ... We're going to open up the beta broadly, and stay-tuned on Microsoft.com/Windows for how you'll be able to download the beta just if you're interested in it. (fonte)

Stando a Paul Thurrott, tramite il cui post son venuto a sapere di tale idiozia, l’atteggiamento acido di Randall nei confronti di Win7 è dovuto al fatto che abbia provato ad intrufolarsi senza successo al Reviewer Workshop durante il PDC e che non sia neanche riuscito a mettere le mani su un laptop con Win7.

Qualcosa di simile è avvenuto durante il lancio di Vista. Qualcuno, da no1984 se ben ricordo, predicava la fine del computing come lo conosciamo oggi. Di fronte alle prime smentite furono introdotte voci che il DRM sarebbe scattato con il rilascio del SP1; e di fronte all’innocuo rilascio del SP1 fu tirata fuori la storia che la forte propaganda di no1984 avrebbe salvato il mondo come lo conosciamo.

Detto fra me e me la storia degli alieni a confronto sembra molto più credibile. Nevvero?

-quack

Pubblicato martedì 25 novembre 2008 alle 9:45 PM - 37 commenti so far
Archiviato in: Cazzate

Exchange on the G1

Da diversi giorni stavo testando una Alpha di TouchDown apparso da pochissimo anche sulle pagine di GizModo:

TouchDown

Devo dire che l’applicazione fa il suo dovere molto egregiamente. Il developer mi ha assicurato che sta lavorando ad un paio di bachi ma la sincronizzazione OTA, merito più del piano dati che della piattaforma, ha per me il feeling di un grosso upgrade. Touchdown per funzionare ha bisogno di Exchange 2007 con gli EWS attivati, quindi è per molti ma non per tutti. Però visto che si può provare gratuitamente per 5 giorni tentar non nuoce.

Nel frattempo sono venuto a conoscenza di altri prodotti che verranno lanciati il primo trimestre del 2009 tra cui Aardvark. Nessuno di questi supporta ActiveSync ma considerando le lamentele di alcuni colleghi dotati di iPhone non è detto che un’implementazione basata su ActiveSync sia automagicamente migliore di altre. TouchDown è per ora scaricabile solamente dal sito di Nitrodesk, quindi tocca abilitare l’installazione di prodotti non presenti sul Market.

Giudizio finale: ancora non perfettamente rifinito, ma per quel che mi serve funziona alla grande!!

-quack

Technorati Tags: ,

Pubblicato martedì 25 novembre 2008 alle 6:52 PM - 4 commenti so far
Archiviato in: Google

Space upgrade

Giorni fa ero preoccupato che nel momento in cui avessi attivato il backup di tutti i PC di casa sull’HOME Server lo spazio a disposizione sarebbe diventato troppo stretto. L’avevo configurato con due HD per sfruttare il meccanismo di RAID “software” per un totale di 820GB divisi in 320-500. Ho deciso di approfittare dell’offerta del giorno su NewEgg per comprare un TB intero al prezzo di 10c/GB: in tutto 99$ spese di spedizione incluse.

La complicazione più grossa era relativa al fatto che il drive da sostituire è quello di sistema. Dato il fatto che WHS implementa una estensione del FS proprietaria (?) ho pensato di non rischiare con l’uso di tool di imaging come Ghost/CloneZilla/ecc. Ho seguito la procedura “standard” che è quella di reinstallare l’OS in modalità di “recover”. Ovviamente ho fatto il backup di tutto il backuppabile su una pila di microHD ma l’installazione ha funzionato in maniera egregia. Il fatto che WHS tiene la copia primaria dei dati sul Drive Secondario comunque aiuta di molto il processo: l’unico step aggiuntivo rispetto ad una installazione normale è la ricreazione delle pietre tombali (tombstones) necessaria per i meccanismi di duplicazione dei folder. In giro avevo letto che durava davvero parecchio ma a quanto pare con il power pack 1 anche questa operazione è stata migliorata sotto tutti i profili: in pochissimi minuti tutti i file erano di nuovo accessibili. Per sfizio farò un confronto tra il contenuto dei backup e le share, giusto per essere sicuro che tutto fosse come descritto.

Unica cappellata che ho fatto è stato accidentalmente zappare il backup storico del laptop: l’avevo messo in conto e non ci ho dato molto peso. La cappella è nata da una cattiva interpretazione delle specifiche tecniche del WHS (o magari sono semplicemente “outdated”). Al momento della ricostruzione dei tombstones mi sono infatti accorto che anche i PC backup sembravano intatti. ServerStorageDalla documentazione però mi sembrava chiaro che i PC backup fossero sempre tenuti sul drive primario: ho collegato il vecchio drive primario alla USB e il folder era lì ma non riuscivo a copiarne i file. Pensando che fosse dovuto a problemi con i permessi sul nuovo drive, ho zappato ciò che mi sembrava un falso database di backup per poi accorgermi che sul vecchio primario non si trattava di file ma di tombstones. Poco male perché l’archivio “storico” tanto storico non era visto che conteneva solo pochi giorni di backup in seguito all’ultima riformattazione del laptop. La situazione ora mi pare mooolto allegra dal punto di vista dello spazio libero su server come si può vedere nell’immagine a destra.

In quasi contemporanea ad un certo punto sul laptop si è riverificato il problema del risveglio immediato: poi ho scoperto che la cosa si manifesta in presenza di Update critici come quello per Office che avevo da poco installato e lanciato.

Tutto è bene quel che finisce (quasi) bene: oggi è lunedì ma la settimana è cortissima; il thanksgiving è alle porte.

%quack

Pubblicato lunedì 24 novembre 2008 alle 6:47 PM - 34 commenti so far
Archiviato in: Cazzate, Hardware