<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
>

<channel rdf:about="http://developer.it">
<title>Developer.it</title>
<link>http://developer.it</link>
<description>Riflessioni e risorse sullo sviluppo software</description>
<dc:language>it-it</dc:language>
<dc:rights>Copyright 2008-2012, Developer.it</dc:rights>
<dc:date>2026-04-29T11:29+01:00</dc:date>
<dc:subject>Ultimi post</dc:subject>
<syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
<syn:updateFrequency>1</syn:updateFrequency>
<syn:updatePeriod>hourly</syn:updatePeriod>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://www.developer.it/post/decadimento-radioattivo-backup-e-argomenti-caldi" />
  <rdf:li rdf:resource="http://www.developer.it/post/proprieta-triangolare-sottilette-e-come-arrivare-a-fiumicino-risparmiando-5-euro" />
  <rdf:li rdf:resource="http://www.developer.it/post/solving-a-pycon-puzzle-in-haskell" />
  <rdf:li rdf:resource="http://www.developer.it/post/caccia-ai-prezzi-con-shell-e-xmlstarlet" />
  <rdf:li rdf:resource="http://www.developer.it/post/minimi-locali-e-touch-typing" />
  <rdf:li rdf:resource="http://www.developer.it/post/gravatars-why-publishing-your-email-s-hash-is-not-a-good-idea" />
  <rdf:li rdf:resource="http://www.developer.it/post/modelli-di-controllo-di-accessi-come-tipi-haskell" />
  <rdf:li rdf:resource="http://www.developer.it/post/debugging-croce-e-delizia" />
  <rdf:li rdf:resource="http://www.developer.it/post/pillole-di-haskell-ricerca-di-duplicati" />
  <rdf:li rdf:resource="http://www.developer.it/post/il-paradosso-di-php" />
 </rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.developer.it/post/decadimento-radioattivo-backup-e-argomenti-caldi">
<title>Decadimento radioattivo, backup e argomenti caldi</title>
<link>http://www.developer.it/post/decadimento-radioattivo-backup-e-argomenti-caldi</link>
<description>&#x3C;p&#x3E;Le sostanze radioattive sono instabili e hanno la tendenza a trasformarsi in altri elementi. Nella trasformazione emettono radiazioni ionizzanti, capaci di interferire con l&#x27;ambiente circostante in vario modo. Tra l&#x27;altro, possono introdurre errori nella fase di riproduzione cellulare, aumentando la probabilit&#xE0; di tumori, quindi la prossima volta che vi offrono una barretta di uranio caramellata pensateci due volte prima di accettare. E se viene paventata la costruzione di una centrale nucleare dietro casa vostra, con Scajola che gestisce gli appalti e la Camorra che si occupa dello smaltimento delle scorie, cominciate a informarvi sulle opportunit&#xE0; di lavoro in un altro paese.&#x3C;/p&#x3E;

&#x3C;p&#x3E;La tendenza alla trasformazione degli atomi instabili segue regole quantitative semplici, che si possono esemplificare cos&#xEC;:

&#x3C;ul&#x3E;
&#x3C;li&#x3E;si parte da un chilo di sostanza radioattiva (chiamiamola Developio), che per decadimento si trasforma in altro (diciamo Consultonio). Facciamo partire il cronometro;&#x3C;/li&#x3E;

&#x3C;li&#x3E;quando mezzo chilo si &#xE8; trasformato, annotate il parziale T, tenete il mezzo chilo di Developio e buttate il Consultonio (che &#xE8; inerte e servirebbe al pi&#xF9; come fermacarte);&#x3C;/li&#x3E;

&#x3C;li&#x3E;dopo che sar&#xE0; passato un altro intervallo T, saranno rimasti solo 250g di Developio;&#x3C;/li&#x3E;

&#x3C;li&#x3E;dopo altro T, ne avrete solo 125g&#x3C;/li&#x3E;

&#x3C;/ul&#x3E;

e cos&#xEC; via.&#x3C;/p&#x3E;

&#x3C;p&#x3E;La quantit&#xE0; di Developio rimasto segue una legge esponenziale (1/2, 1/4, 1/8, 1/16 etc.) e il tempo T si chiama tempo di dimezzamento. Pi&#xF9; instabile &#xE8; l&#x27;elemento, minore &#xE8; il tempo di dimezzamento e pi&#xF9; veloce sar&#xE0; la sua trasformazione.&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/proprieta-triangolare-sottilette-e-come-arrivare-a-fiumicino-risparmiando-5-euro">
<title>Propriet&#xE0; triangolare, sottilette e come arrivare a Fiumicino risparmiando 5 euro</title>
<link>http://www.developer.it/post/proprieta-triangolare-sottilette-e-come-arrivare-a-fiumicino-risparmiando-5-euro</link>
<description>&#x3C;p&#x3E;Siamo nel punto A e dobbiamo arrivare al punto C, consumando un certo numero di risorse (tempo, soldi, benzina o altro).
Se sappiamo come arrivare da A a un altro punto B e da B a C, sappiamo anche che, tra tutte le strategie possibili per arrivare a C possiamo scegliere quella di passare per B. Se abbiamo informazione sulle varie alternative, difficilmente ci convinceranno a seguire un percorso che sia pi&#xF9; lungo di quello che passa per B.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Possiamo esprimere questo concetto con la disuguaglianza:&#x3C;/p&#x3E;

&#x3C;div class=&#x22;code&#x22;&#x3E;AC &#x3C;= AB + BC&#x3C;/div&#x3E;

&#x3C;p&#x3E;ovvero: il percorso pi&#xF9; breve da A a C non pu&#xF2; essere pi&#xF9; lungo del percorso da A a B pi&#xF9; quello da B a C. Pu&#xF2; essere pi&#xF9; breve, se B non &#xE8; di strada, ma non pi&#xF9; lungo. In mancanza di alternative migliori, infatti, possiamo scegliere di passare per B.&#x3C;/p&#x3E;

&#x3C;p&#x3E;In geometria, questa relazione sussiste per i tre lati di un triangolo, ma la stessa cosa si verifica in molti altri ambiti in cui la distanza non &#xE8; puramente geometrica.&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/solving-a-pycon-puzzle-in-haskell">
<title>Solving a Pycon puzzle... in Haskell</title>
<link>http://www.developer.it/post/solving-a-pycon-puzzle-in-haskell</link>
<description>&#x3C;p&#x3E;I was at &#x3C;a href=&#x22;http://www.python.ie/pyconireland&#x22;&#x3E;Pycon Ireland&#x3C;/a&#x3E; last week-end. The event was quite successful and amazingly so considering it was a first for Dublin.&#x3C;/p&#x3E;

&#x3C;p&#x3E;One of the highlights was one of those puzzles made of 13 plastic pieces to reassemble into a 4x4x4 cube (all pieces composed by 5 or 4 basic 1x1x1 cubes), brought by the guy at the Google stand. On Sunday, during the sprint session, the most successful one in terms of attendance and enthusiasm was an effort to solve the puzzle in python, cut short by the end of Pycon. The project &#x3C;a href=&#x22;http://github.com/dublindan/pycon_cube&#x22;&#x3E;seems to be ongoing&#x3C;/a&#x3E; at this time.&#x3C;/p&#x3E;

&#x3C;p&#x3E;As the problem is very combinatorial in flavour, I thought the best tool for the job would be Haskell, which lends itself to concise expression of mathematical ideas. So I made an attempt at the implementation. Running it all night long gave me a few tens of solutions.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Some Haskell constructs are particularly interesting in the solution.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The monadic &#x26;gt;&#x26;gt;= operation for lists was used for the generation of all possible roto-translations of the pieces. If a function&#x3C;/p&#x3E;

&#x3C;pre class=&#x22;code&#x22;&#x3E;
f :: Bitmap -&#x3E; [ Bitmap ]
f bm = ... a certain list of Bimaps derived from bm ...
&#x3C;/pre&#x3E;

yields a family of variations of a piece representation (for instance all translations, or all rotations around an axis), and &#x3C;span class=&#x22;code&#x22;&#x3E;g&#x3C;/span&#x3E; is another such function, then the expression

&#x3C;pre class=&#x22;code&#x22;&#x3E;
f bm &#x26;gt;&#x26;gt;= g
&#x3C;/pre&#x3E;

returns all variations generated by g of all variations generated by f of the initial piece &#x3C;span class=&#x22;code&#x22;&#x3E;bm&#x3C;/span&#x3E;.

&#x3C;p&#x3E;In the solution this is used in&#x3C;/p&#x3E;

&#x3C;pre class=&#x22;code&#x22;&#x3E;
-- All 24 rotations
rotations bm = rotationsx bm &#x3E;&#x3E;= axischangex
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;which generates all the

</description>
</item>
<item rdf:about="http://www.developer.it/post/caccia-ai-prezzi-con-shell-e-xmlstarlet">
<title>Caccia ai prezzi con shell e xmlstarlet</title>
<link>http://www.developer.it/post/caccia-ai-prezzi-con-shell-e-xmlstarlet</link>
<description>Mettiamo che abbiate trovato un&#x27;offerta imperdibile in rete e che mentre state pagando vi venga mostrato un messaggio d&#x27;errore:

&#x3C;blockquote&#x3E;&#x3C;strong&#x3E;Il sistema non pu&#xF2; elaborare il vostro ordine. Vi preghiamo di riprovare&#x3C;/strong&#x3E;&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;Ripetete diligentemente i passi. Stesso risultato. Finch&#xE9; tornate all&#x27;elenco prodotti e scoprite che l&#x27;ultima frullocentrifuga 18 velocit&#xE0; con 4 braccia orbitali controrotanti ora &#xE8; in vendita a 8000 euro. Evidentemente l&#x27;ultima in offerta &#xE8; stata comprata da qualcuno prima che portaste a termine l&#x27;ordine.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Niente da dire: non sarebbe furbo da parte del sito di e-commerce riservarvi il prodotto solo perch&#xE9; l&#x27;avete nel carrello e vi viene assegnato solo quando portate a termine il pagamento. E&#x27; come per l&#x27;ultima bomba alla crema che avete adocchiato al bar: se un altro riesce a raggiungerla per prima &#xE8; sua e rimanete a bocca asciutta. Al pi&#xF9; potete ripiegare su un cornetto integrale (nota: episodio capitato di recente all&#x27;autore).&#x3C;/p&#x3E;

&#x3C;p&#x3E;Ci sar&#xE0; un&#x27;offerta del genere nel prossimo futuro? E se ci sar&#xE0;, riusciremo a scoprirlo in tempo e non all&#x27;ultimo momento? Ah, se avessimo un assistente personale che controllasse i prezzi ogni 10 minuti e ci avvertisse se i prezzi si abbassano...&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/minimi-locali-e-touch-typing">
<title>Minimi locali e touch-typing</title>
<link>http://www.developer.it/post/minimi-locali-e-touch-typing</link>
<description>C&#x27;&#xE8; una situazione ricorrente nell&#x27;esperienza umana, che si presenta in varie forme nella vita dei singoli e in quella collettiva.

&#x3C;p&#x3E;Un laureando in ingegneria vuole guadagnare un po&#x27; di soldi e passa il pomeriggio a lavorare in una copisteria. Cos&#xEC; facendo, rallenta gli studi e comincia a lavorare sei mesi pi&#xF9; tardi, perdendo nel complesso molti pi&#xF9; soldi di quanti ne abbia guadagnati nel suo lavoretto part-time&#x3C;/p&#x3E;

&#x3C;p&#x3E;Nel salto in alto, nel tempo ci sono stati piccoli miglioramenti tecnici e nelle prestazioni finch&#xE9; nel 1968 Dick Fosbury vinse i mondiali con il suo salto dorsale (volgendo la schiena all&#x27;asticella). La nuova tecnica si impose ed &#xE8; ora universalmente adottata.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Un contadino vive in una vallata. Nel tempo e con sacrifici riesce a comprare il terreno pi&#xF9; produttivo della valle. Poco al di l&#xE0; delle montagne ci sono pianure fertilissime di cui non conosce l&#x27;esistenza.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Queste situazioni hanno molto in comune con l&#x27;idea matematica dei &#x3C;strong&#x3E;minimi locali&#x3C;/strong&#x3E;.

</description>
</item>
<item rdf:about="http://www.developer.it/post/gravatars-why-publishing-your-email-s-hash-is-not-a-good-idea">
<title>Gravatars: why publishing your email&#x27;s hash is not a good idea</title>
<link>http://www.developer.it/post/gravatars-why-publishing-your-email-s-hash-is-not-a-good-idea</link>
<description>&#x3C;p&#x3E;The guys at &#x3C;a href=&#x22;http://gravatar.com&#x22;&#x3E;gravatar.com&#x3C;/a&#x3E; offer a nice service: for website owners, they let you automatically associate an avatar to your users, through the user&#x27;s email address. The users who register to gravatars.com are able to change their gravatar and the change will be visible on all gravatar-enabled websites where they registered with the same email.&#x3C;/p&#x3E;

&#x3C;p&#x3E;The association email -&#x3E; avatar is done through a &#x3C;strong&#x3E;MD5 hash function&#x3C;/strong&#x3E;.
If you register to a website with username@mailprovider.com, the website will compute the hash of your email address (in this case 476c8a979eed603fb855dca149c7af6b) and associate the avatar url
&#x3C;pre class=&#x22;code&#x22;&#x3E;http://www.gravatar.com/avatar/476c8a979eed603fb855dca149c7af6b?d=identicon&#x3C;/pre&#x3E;

to your profile.
All other websites using gravatars will associate the same url to your profile, because the computation of

&#x3C;pre class=&#x22;code&#x22;&#x3E;md5sum ( username@mailprovider.com )&#x3C;/pre&#x3E;

will always yield the same result.&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/modelli-di-controllo-di-accessi-come-tipi-haskell">
<title>Modelli di controllo di accessi come tipi Haskell</title>
<link>http://www.developer.it/post/modelli-di-controllo-di-accessi-come-tipi-haskell</link>
<description>&#x3C;p&#x3E;Prendendo spunto dalla lettura di &#x3C;a href=&#x22;http://geekinfosecurity.blogspot.com/2009/09/suvery-su-access-control-modes.html&#x22;&#x3E;uno dei miei blog preferiti&#x3C;/a&#x3E;, mi &#xE8; capitato di dare una scorsa al documento intitolato &#x3C;a href=&#x22;http://csrc.nist.gov/news_events/privilege-management-workshop/PvM-Model-Survey-Aug26-2009.pdf&#x22;&#x3E;A Survey of Access Control Models&#x3C;/a&#x3E;, che descrive modelli di controllo di accessi di complessit&#xE0; crescente. Questa complessit&#xE0; crescente si manifesta nella dipendenza da fattori intermedi sempre pi&#xF9; ricchi e mi &#xE8; venuta la tentazione di esprimere queste dipendenze come signature di funzioni in Haskell. Ecco cosa ne &#xE8; uscito fuori.&#x3C;/p&#x3E;
</description>
</item>
<item rdf:about="http://www.developer.it/post/debugging-croce-e-delizia">
<title>Debugging: croce e delizia</title>
<link>http://www.developer.it/post/debugging-croce-e-delizia</link>
<description>&#x3C;p&#x3E;Lo sviluppatore divide il suo tempo tra programmazione e debugging. O meglio, tra analisi, programmazione e debugging.&#x3C;/p&#x3E;

&#x3C;p&#x3E;In realt&#xE0; tra analisi, programmazione, debugging e studio di nuove tecnologie e linguaggi.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Per dirla tutta, a dire il vero si divide tra analisi, programmazione, debugging, studio di nuove tecnologie e linguaggi e cazzeggio su internet. Comunque sia, il debugging gli prende una buona fetta del tempo lavorativo.&#x3C;/p&#x3E;

&#x3C;p&#x3E;Ricordo con raccapriccio i vari giorni passati a capire perch&#xE9; la mia libreria di array dinamici in C++ non funzionasse come doveva. Stavo imparando il linguaggio e quando liberavo la memoria non chiamavo il distruttore per ogni singolo oggetto. Persi giornate a scervellarmi, a fare prove su prove, rompendo quello che funzionava, guardando il codice con l&#x27;intensit&#xE0; con cui guarderei dalla finestra se avessi la Cucinotta come dirimpettaia, finch&#xE9;...&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/pillole-di-haskell-ricerca-di-duplicati">
<title>Pillole di Haskell - ricerca di duplicati</title>
<link>http://www.developer.it/post/pillole-di-haskell-ricerca-di-duplicati</link>
<description>&#x3C;p&#x3E;Di recente ho dovuto scrivere una funzioncina in Haskell per trovare elementi duplicati in una lista. Anche se non necessariamente il pi&#xF9; furbo, trovo che il metodo che ho usato fornisca un esempio interessante di programmazione funzionale in questo linguaggio.&#x3C;/p&#x3E;
&#x3C;p&#x3E;L&#x27;idea (semplice) &#xE8; la seguente: ordiniamo la lista (il che richiede che gli elementi siano confrontabili, cio&#xE8; che appartengano alla classe Ord) e poi cerchiamo due elementi consecutivi uguali. Mostro come implementare quest&#x27;idea, procedendo per applicazioni consecutive di funzioni.&#x3C;/p&#x3E;

</description>
</item>
<item rdf:about="http://www.developer.it/post/il-paradosso-di-php">
<title>Il paradosso di PHP</title>
<link>http://www.developer.it/post/il-paradosso-di-php</link>
<description>&#x3C;p&#x3E;Negli ultimi giorni ho installato e personalizzato un sito basato su &#x3C;a href=&#x22;http://www.drupal.org&#x22;&#x3E;Drupal&#x3C;/a&#x3E;. Dopo un po&#x27; di anni in cui ho tenuto pi&#xF9; o meno d&#x27;occhio questo CMS, per la prima volta l&#x27;ho utilizzato per un progetto abbastanza complesso, studiando la documentazione, installando moduli, provando temi, dando un&#x27;occhiata al DB (per la cronaca, ho scelto &#x3C;a href=&#x22;/post/storie-di-database-l-elefante-il-delfino-e-la-piuma&#x22;&#x3E;PostgreSQL&#x3C;/a&#x3E;).
Niente da dire: un prodotto complesso, configurabile, con una miriade di moduli che si installano in maniera semplice e pulita (ognuno vive nella sua directory) e arricchiscono l&#x27;interfaccia di nuove funzionalit&#xE0;, sia per l&#x27;utente che per l&#x27;amministratore. In un fine settimana ho messo in piedi un sito di una certa complessit&#xE0;, arrivando ad un risultato che soddisfa appieno le mie esigenze ed &#xE8; aperto a nuovi sviluppi.&#x3C;/p&#x3E;
&#x3C;p&#x3E;E per l&#x27;ennesima volta, come mi &#xE8; capitato anche facendo esperimenti con &#x3C;a href=&#x22;http://www.piwik.org&#x22;&#x3E;Piwik&#x3C;/a&#x3E;, sono rimasto un po&#x27; perplesso.&#x3C;/p&#x3E;
&#x3C;p&#x3E;&#x3C;strong&#x3E;PHP come linguaggio di programmazione fa schifo.&#x3C;/strong&#x3E;

</description>
</item>
</rdf:RDF>