Tra il codice e la realtà

omnia munda mundis
  • rss
  • Inizio
  • About
  • Andrea Murru

Alcuni modi comuni per rovinarsi la vita con l'XML

Andrea Murru | 12 Marzo 2009

In un ottimo articolo Kyle Brown, elenca tre “comuni” problemi che affliggono i Web Services basati su XML (SOAP o meno). Merita una lettura attenta perché non mette in evidenza  le meravigliose capacità di un qualche tool, libreria o linguaggio, ma collega a errori di principio nel design i disastri che si riesce a produrre anche in contesti abbastanza semplici e con strumenti tutto sommato ben conosciuti.

Il primo errore è davvero banale e non mette in evidenza nulla di “profondo”: gestire messaggi da parecchi megabyte, magari con dati binari (senza forse neppure accorgersene) è semplicemente una scelta da incapaci; non è certo un problema dell’XML.

Il secondo è invece molto più interessante, perché è davvero una forza che guida spesso il design: definire i servizi ad un livello esremamente basso (ad esempio a livello di ogni singola operazione SQL). Perché (come dice Brown) “[…]such low-level data services often fail.” ? A mio parere il discorso è molto generale: Un Web Service dovrebbe rappresentare un’interfaccia che maschera la complessità che si trova a monte, semplificandone l’utilizzo in base alle esigenze di chi si trova a valle. Purtroppo invece scrivere un XML o richiamare un servizio non è più facile che accedere direttamente ad un DB e scrivere l’SQL relativo, né maschera alcuna complessità o dettaglio implementativo se il contenuto informativo necessario a richiamarlo è in relazione biunivoca con l’SQL utilizzato. Introdurre un layer (o un’interfaccia per l’accesso di una qualche risorsa/servizio) deve essere motivato da concreti vantaggi nel contesto specifico e non è certo buono in astratto e in generale.

Il terzo problema è paradossale e viene fuori soprattutto con SOAP: siccome non è comodo né banale definire gli schema in modo completo e soprattutto non è facile modificarli, spesso alcuni servizi sono solo semi-definiti con una parte (spesso predominate) magari ancora in XML, ma non parte dello schema della richiesta. Questa situazione è spesso solo la spia del fatto che si è sbagliato nel definire le interfacce, che risultano complesse ed devono essere cambiate molto spesso, perché sono poste al livello sbagliato.

Ultima nota a livello generale: in programmazione qualcosa di inutile è quasi sempre dannoso, specie un’astrazione.

Comments
Nessun Commento »
Categorie
Programmazione
Tags
SOA, SOAP, XML
Commenti RSS Commenti RSS
Trackback Trackback

Cosa pensate del caso Eluana Englaro ?

Andrea Murru | 8 Febbraio 2009

Indipentemente dai miei convincimenti e dai vostri, vi propongo 3 sondaggi sul caso Eluana Englaro.

Condividete il vostro parere: è un modo eccellente per iniziare un confronto, su temi concreti.

Un giudizio specifico sulla sospensione dell’alimentazione e dell’idratazione forzate,

Un giudizio sull’azione del governo Berlusconi,

Considerazioni più generali sul testamento biologico (scelta multipla)

Comments
25 Commenti »
Categorie
Attualità
Tags
Berlusconi, Eluana Englaro, testamento biologico
Commenti RSS Commenti RSS
Trackback Trackback

Un decreto piccolo piccolo

Andrea Murru | 7 Febbraio 2009

Sono davvero rassicurato del fatto che il governo all’unanimità, agisca con tanta risoluzione e urgenza per impedire a qualcuno di danneggiare il proprio bene più alto (la vita).

Sono ancora più rassicurato dal fatto che le leggi in discussione, semplicemente espropriano ogni cittadino del proprio diritto a scegliere della propria vita.

Ed è come sempre una garanzia ulteriore la forza delle argomentazioni che si concentra adesso sul fatto che non è certa la posisizione di Eluana a riguardo, quando poi, in futuro sarà un dettaglio irrilevante.

Ma la cosa davvero decisiva è che la Legge sia chiamata ad imporsi con la forza in questo conteso, quando invece per “piccole cose”, come la pedofilia …. è molto meglio non chiamarla in causa, come dice addirittura S.Paolo.

Guardatevi questo esilarante servizio delle Iene e capirete a cosa mi riferisco.

http://www.video.mediaset.it/mplayer.html?sito=iene&data=2009/02/06&id=5064&from=email

Comments
Nessun Commento »
Categorie
Attualità, Religione
Tags
Eluana Englaro, Le Iene, pedofilia, Penitenzieri, S. Paolo
Commenti RSS Commenti RSS
Trackback Trackback

Il numero esprime la realtà

Andrea Murru | 27 Gennaio 2009

Mi sforzo sempre di quantificare le mie stime. E’ il modo migliore (l’unico in effetti) per poterle valutare e quindi migliorare. Spesso è un modo eccellente per tenersi aggiornati sulla realtà. Quanti sono gli abitanti della Turchia ? Quante automobili circolano a Il Cairo ? Quanti dipendenti ha la regione sardegna ? Che fatturato ha il gruppo Fiat o la Microsoft o la Toyota ? Mi faccio spesso domande di questo tipo e provo a rispondermi con dei numeri…

Oggi mi chiedevo quanti blog ci fossero al mondo. Credo che all’incirca 1 persona su 50 che usa abitualmente (almeno 1 volata alla settimana), internet finisca con l’aprire un blog. Quanti hanno un accesso ad internet ? Direi 1.500.000.000 di persone e di queste circa 750.000.000 hanno un accesso abituale. Il numero di blog dovrebbe essere quindi dell’ordine dei 15.000.000.

Vi sembra ragionevole ?

Sicuri ?

Sicuri Sicuri ?

Bene: ho sbagliato la stima di più di 1 ordine di grandezza !! I blogs sono circa 133.000.000 !!!

Date un’occhiata a questo interessante post su pingdom e vi renderete conto.

La cosa più interessante è che, visto che la mia stima sul numero di utenti era sostanzialmente corretta, era sbagliata la mia percezione del grado di “attività” degli utenti. Quasi un utente “attivo” su 5 ha un blog! Salvo che non ci siano utenti (in numero significativo) con più blog… Comunque sia è davvero un aspetto rivoluzionario per il modo di fare informazione dei consumatori dell’informazione stessa.

Comments
2 Commenti »
Categorie
Informatica
Tags
blog, informazione, numeri
Commenti RSS Commenti RSS
Trackback Trackback

Beati gli ultimi perché saranno i primi

Andrea Murru | 26 Gennaio 2009

Ho avuto modo di leggere per caso la strana storia dell’allenatore della squadra di una scuola “cristo-centrica” che non si scusa per aver vinto troppo nettamente e viene perciò licenziato.

Non mi stupisce affatto la reazione dei “religiosi” (che l’hanno licenziato), ma quella dell’allenatore che sostiene che vincere dominando (e in sostanza umiliando) gli avversari sia onorevole e cristiano.

Lo so che le affermazioni di carattere religioso non possono essere prese alla lettera, ma mi sembra davvero che vincere, dominare ed essere primo, non possa certo essere preso come un valore (in questa vita) da un cristiano.

In effetti, riflettendo con calma, non so bene perché ho una simile idea: “Beati gli utimi perché saranno i primi”, sembra chiarissimo, ma (come sempre) non lo è.

In effetti non dice che i primi saranno ultimi e quindi potrebbero (ad esempio) stare in una posizione mezzana. Comunque non è presente un ordinamento per  valori intermedi (ad esempio i penultimi diventeranno secondi).

Ma la cosa più difficile da comprendere è il fatto che i crisitiani non si sforzano affatto di diventare ultimi in qualcosa nella quale vorrebebro essere primi. Ad esempio ultimi nella gioia (ovvero primi nella sofferenza e nel dolore), per essere primi nel regno dei cieli… Sarà perché non è un loro interesse, ma non mi sembra neanche che la maggioranza dei cristiani (e delle gerarchie ecclesiastice) s’impegni molto per essere all’ultimo posto nella classifica dei più ricchi. Eppure i credenti, dovrebbero crederci davvero e dovrebbero anche aver capito bene il messaggio di Dio che non è affatto in contraddizione con la ragione.

Sicuramente sono io che non capisco qualcosa…. forse ho capito:

Il loro agire è un atto di altruismo! Certo, evitano di raggiungere l’ultimo posto per favorire gli altri (non credenti in testa).

Grazie. Adesso sono molto più tranquillo… però per certe cose, io personalmente scambierei il primo posto nel regno dei cieli, anche con una piazza mediana qui sulla Terra.

Comments
Nessun Commento »
Categorie
Attualità, Filosofia, Religione
Tags
gioia, ragione
Commenti RSS Commenti RSS
Trackback Trackback

Perdita di pacchetti ad alti bitrate

Andrea Murru | 19 Gennaio 2009

In un progetto sul quale ho lavorato di recente, mi è capitato di avere a che fare con flussi (streaming multimediali) a bitrate relativamente alto, per l’hw in questione. Scrivo questo post perché siamo stati vittime di un nostro (banale) bug che ci è costato qualche giorno di test e qualche mal di testa: magari qualcuno potrà evitarseli leggendo questo post… non si trova molta documentazione in giro.

Intanto qualche altro dettaglio sul sistema: un client che riceve flussi multimediali in UDP (fino a 10 mbs) su windows embedded ce 6.0, realizzato in c++ con il visual studio 2005, utilizzando direttamente winsock2. Un thread si occupa della ricezione utilizzando semplicemente una socket in modalità bloccante in un ciclo di lettura che ha anche il compito di effetture alcune operazioni sui dati (poco onerose in termini di CPU) e di copiarli in un buffer dal quale un thread consumatore le preleva. Viene utilizzata la funzione recv(), visto che la modalità bloccante non è affatto un problema (e quindi l’ overlapped I/O è inutile) e le completion routine non sono ben supportate da windows embedded ce 6.0.

Tutto sembra funzionare bene, fino a bitrare inferiori a 2 mbs, ma superando tale valore… si manifestano degli strani problemi. Dopo molta fatica (visto che ovviamente non era possibile andare in debug, ma neppure scrivere su file se non pochi kbytes e quidi il debug stesso non poteva che avvenire anch’esso via rete), sembrava inequivocabile che si trattasse di perdite di pacchetti dallo 0.3% al 3% circa. A ridurre la nostra lucità di analisi si metteva anche il fatto che ad avere problema era solo uno streamer che utilizzavamo per la prima volta, mentre quello che avevamo utilizzato fino ad allora funzionava alla grande (ora sappiamo che dipendeva solo dal bitrate).

Il passo successivo (e molto poco divertente) è stato quello di usare wireshark per verificare se una tale perdita di pacchetti era in qualche modo imputabile alla nostra lettura… provate a cercare in un dump 1 paccheto perso, verificando che non ci siano buchi in un continuity counter a 4 bit e con il parser di wireshark bacato. Davvero poco divertente. Comunque le perdite non c’erano!

Il problema è semplicemente legato al fatto che il sistema operativo allocca un buffer interno, settato di defaut a pochi kbytes, che può facilmente venire saturato se il thread che effettua la lettura non è sufficientemente veloce o se viene sospeso (anche solo per pochi ms).

Fortunatamnte la soluzione esiste: basta settare un buffer di ricezione più grande.

unsigned bufferSize = 1024 * 1024;
::setsockopt(s_, SOL_SOCKET, SO_RCVBUF, (const char FAR*)&bufferSize, sizeof(bufferSize));

con 1 mbyte di buffer, a 10 mbs, si possono gestire circa 800 ms di flusso: si tratta di un valore congruo che ci ha permesso di eliminare del tutto le perdite.

Comments
Nessun Commento »
Categorie
Programmazione
Tags
C++, completion routine, overlapped I/O, SO_RCVBUF, socket, windows embedded ce 6.0, wireshark
Commenti RSS Commenti RSS
Trackback Trackback

Godersi la propria vita

Andrea Murru | 13 Gennaio 2009

Tra i diversi slogan delle campagne di “orgoglio ateo” che in questi giorni sponsorizzano i bus di numerose città del mondo, quello che preferisco è sicuramente l’originale:

There’s probably no God. Now stop worrying and enjoy your life.

Meraviglioso quel “probably” ad attenuare l’importanza di quel “God” (pur in maiuscolo) e della sua ipotetica e ingombrante esistenza.

Fantastico soprattutto l’invito a godersi la propria vita.

Proprio questo è in fin dei conti lo spirito più profondo del (mio) ateismo: gioia di vivere e libertà. Tutto il contrario di quelle religioni che parlano di vita, ma sono basate sulla (paura della) morte e magari hanno un uomo crocifisso come simbolo. Che parlano di libertà ma che proibiscono e vincolano quasi tutto. Che parlano di gioia ma la mortificano con il peccato ed esaltano la sofferenza.

Comments
7 Commenti »
Categorie
Attualità, Filosofia, Religione
Tags
gioia, libertà, peccato
Commenti RSS Commenti RSS
Trackback Trackback

Non sono morto

Andrea Murru | 26 Novembre 2008

Ieri qualcuno è finito su questo blog cercando “andrea murru morto“.

Non sto male (che io sappia), né credo di avere dei nemici disposti ad uccidermi, ma evidentemente a qualcuno è venuto il dubbio… a scanso di equivoci ecco una mia foto con un giornale di oggi a testimoniare della mia esistenza in vita.

Sono vivo!

Comments
4 Commenti »
Categorie
Attualità
Tags
Andrea Murru
Commenti RSS Commenti RSS
Trackback Trackback

Il dialogo tra le religioni non è possibile

Andrea Murru | 23 Novembre 2008

Lo ammetto, questa volta Benedetto XVI mi ha davvero sorpreso. In una sua lettera al senatore Marcello Pera, il Papa dice con assoluta “disinvoltura” che

[…] un dialogo interreligioso nel senso stretto della parola non è possibile, mentre urge tanto più il dialogo interculturale che approfondisce le conseguenze culturali della decisione religiosa di fondo.

A me è sempre sembrato evidentissimo che avere un “dialogo” con chi reputa fondante una serie di dogmi e la fede da riporre in essi, sia molto difficile (e poco sensato)…. ma averne avuto una tale autorevole conferma, è stato davvero stupefacente.

Comments
Nessun Commento »
Categorie
Attualità, Religione
Tags
Benedetto XVI, Marcello Pera
Commenti RSS Commenti RSS
Trackback Trackback

Eccesso di successo

Andrea Murru | 21 Novembre 2008

E’ stato lanciato nei giorni scorsi Europeana, quella che sarà la più grande libreria europea con ben due milioni di opere in 23 lingue, fra testi, spartiti, registrazioni audio, video e immagini: tutto pubblicato gratuitamente sul Web per la consultazione degli utenti.

Peccato che il servizio sia già stato sospeso:

The Europeana site is temporarily not accessible due to overwhelming interest after its launch (10 million hits per hour).

We are doing our utmost to reopen Europeana in a more robust version as soon as possible.

La domanda che mi faccio è questa: non sviluppare il sistema perché sopportasse un simile carico è stato un errore completo ed inqualificabile o ha una sua ratio ?

Nel mondo reale, è infatti necessario fare delle scelte che limitino il consumo di alcune risorse (ad esempio il tempo) nella fase di realizzazione di un progetto, con delle conseguenze (non sempre completamente prevedibili) su alcune caratteristiche finali quali ad esempio l’efficienza, scalabilità e affidabilità.

In quasi tutti i progetti sui quali mi è capitato di lavorare, (valutando a posteriori la cosa) abbiamo dedicato troppe risorse all’efficienza (specie locale), meno (ma comunque troppa) alla scalabilità (visti i carichi effettivi che abbiamo dovuto sopportare) e troppa anche all’affidabilità, nel senso soprattutto che abbiamo utilizzato architetture eccessivamente complesse, senza reali vantaggi nel contesto operativo e anzi con qualche problematica dovuta proprio al sistema di monitoraggio. Ovviamente ogni considerazione è fortemente relativa al singolo progetto, ma mi sento di fare qualche considerazione in generale:

I più grandi vantaggi in termini di efficienza, scalabilità ed affidabilità si consegueno a livello di architettura di sistema e un’architettura semplice, pur anche con alcuni limiti bene noti, è il miglior investimento possibile sia in termini di risorse utilizzate che di effettivi risultati ottenibili.

Tornando al caso Europeana, credo che non siano giustificabili. Hanno commesso un grave errore di progettazione, visto che in un caso del genere la scalabilità non puo’ non essere considerata un obbiettivo prioritario. Brutta figura.

Comments
1 Commento »
Categorie
Attualità, Informatica, Programmazione
Tags
affidabilità, efficienza, europeana, scalabilità
Commenti RSS Commenti RSS
Trackback Trackback

« Previous Entries Next Entries »

Contatti


Suggeriti

  • CICAP
  • Mercato-Immobiliare.info
  • Ricerca immobili con Caasa
  • Technology Bites
  • UAAR
  • Wall Street Italia

RSS news da leggere

Lavoro

  • Abbeynet
  • Mercato-Immobiliare.info
  • Pane e Dolce
  • Plus Immobiliare
  • Ricerca immobili con Caasa
  • Sitòfono

categorie

  • Attualità (34)
  • Filosofia (9)
  • Finanza (2)
  • Informatica (14)
  • Programmazione (14)
  • Religione (18)
  • Storia (2)

tag

affidabilità Andrea Murru Ateismo Bagnasco Barragan Benedetto XVI Berlusconi bibbia blog C++ caasa Calice d'oro Carlo Pescio cloaking comandamenti completion routine Corte di Cassazione costituzione Droga efficienza Eluana Englaro europeana eutanasia fluido non newtoniano gioia google gSOAP iDoser informazione ip-delivery Java JSON Kant Le Iene libertà mercato immobiliare miracoli peccato Politica ragione scuola SEO Sofia UAAR XML
rss Commenti RSS