<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Claudio&#039;s Hideout &#187; claudio</title>
	<atom:link href="http://claudio.cicali.name/post/author/claudio/feed/" rel="self" type="application/rss+xml" />
	<link>http://claudio.cicali.name</link>
	<description>Claudio Cicali web hub</description>
	<lastBuildDate>Sun, 25 Sep 2011 11:29:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Video della mia presentazione a Better Software</title>
		<link>http://claudio.cicali.name/post/2011/07/video-della-mia-presentazione-a-better-software/</link>
		<comments>http://claudio.cicali.name/post/2011/07/video-della-mia-presentazione-a-better-software/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 08:59:19 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Annunci]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1103</guid>
		<description><![CDATA[I ragazzi di Develer hanno reso disponibile sul sito della conferenza il video della mia presentazione su Node.js. Il download del filmato si può fare direttamente da qui. Grazie :)]]></description>
			<content:encoded><![CDATA[<p>I ragazzi di <a href="http://www.develer.com">Develer</a> hanno reso disponibile sul sito della conferenza il <a href="http://www.bettersoftware.it/conference/talks/nodejs-convincing-the-boss">video della mia presentazione su Node.js</a>. Il download del filmato si può fare direttamente <a href="http://www.bettersoftware.it/media/conference/videos/nodejs-convincing-the-boss.mp4">da qui</a>.</p>
<p>Grazie :)</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/07/video-della-mia-presentazione-a-better-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.bettersoftware.it/media/conference/videos/nodejs-convincing-the-boss.mp4" length="162910479" type="video/mp4" />
		</item>
		<item>
		<title>Flash Player 11 beta 64bit for Linux</title>
		<link>http://claudio.cicali.name/post/2011/07/flash-player-11-beta-64bit-for-linux/</link>
		<comments>http://claudio.cicali.name/post/2011/07/flash-player-11-beta-64bit-for-linux/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 08:45:22 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1100</guid>
		<description><![CDATA[A couple of days ago, Adobe has released the 64bit version of their Flash Player 11 (beta). There is also a Linux version. Here is how I installed it in Firefox: First, check your current player version: open about:plugins with your browser and search for Shockwave Flash Download the package and extract libflashplayer.so (this is [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago, Adobe <a href="http://blogs.adobe.com/flashplayer/2011/07/adobe-air-3-and-flash-player-11-desktop-beta-for-developers-now-available.html">has released</a> the 64bit version of their Flash Player 11 (beta). There is also a Linux version. Here is how I installed it in Firefox:</p>
<ul>
<li>First, check your current player version: open <code>about:plugins</code> with your browser and search for <em>Shockwave Flash</em></li>
<li><a href="http://labs.adobe.com/downloads/flashplayer11.html">Download the package</a> and extract <code>libflashplayer.so</code> (this is the only file you really need)</li>
<li>Close your browser(s)</li>
<li>Open a terminal and go to <code>~/.mozilla/plugins</code>. There should already be a <code>libflashplayer.so</code> file in there. As a backup, rename it to something like <code>libflashplayer.so.theversionyougotpreviously</code></li>
<li>Copy here the <code>libflashplayer.so</code> extracted from the downloaded package</li>
</ul>
<p>You are now good to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/07/flash-player-11-beta-64bit-for-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Software e Node.js</title>
		<link>http://claudio.cicali.name/post/2011/07/better-software-e-node-js/</link>
		<comments>http://claudio.cicali.name/post/2011/07/better-software-e-node-js/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 07:15:56 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Annunci]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Eventi]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1044</guid>
		<description><![CDATA[Quest&#8217;anno sono stato invitato a parlare di Node.js alla conferenza Better Software, a Firenze. Ecco le slide. Node.js – Convincing the boss View more presentations from claudio.cicali]]></description>
			<content:encoded><![CDATA[<p>Quest&#8217;anno sono stato invitato a <a href="http://www.bettersoftware.it/conference/talks/nodejs-convincing-the-boss">parlare di Node.js</a> alla conferenza <a href="http://www.bettersoftware.it/">Better Software</a>, a Firenze. Ecco le slide.</p>
<div style="width:425px" id="__ss_8435904"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/claudio.cicali/nodejs-convincing-the-boss" title="Node.js – Convincing the boss" target="_blank">Node.js – Convincing the boss</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8435904" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/claudio.cicali" target="_blank">claudio.cicali</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/07/better-software-e-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modialog, a jQuery plugin for modal dialogs</title>
		<link>http://claudio.cicali.name/post/2011/06/modialog-a-jquery-plugin-for-modal-dialogs/</link>
		<comments>http://claudio.cicali.name/post/2011/06/modialog-a-jquery-plugin-for-modal-dialogs/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 17:15:40 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Annunci]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1023</guid>
		<description><![CDATA[I&#8217;ve just released a very small plugin for jQuery. It&#8217;s called Modialog and it aims to be the smallest &#8220;modal dialog boxes&#8221; plugin (there are already a lot of them out there). It weights only 2KB and works with every recent browser. You can take a look at its bare bone demo page.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released a very small plugin for jQuery. It&#8217;s called <a href="https://github.com/claudioc/modialog">Modialog</a> and it aims to be the smallest &#8220;modal dialog boxes&#8221; plugin (there are already a lot of them <a href="https://itswadesh.wordpress.com/2011/04/13/15-jquery-popup-modal-dialog-plugins-and-tutorials/">out there</a>). It weights only 2KB and works with every recent browser. You can take a look at its bare bone <a href="http://claudioc.github.com/modialog/demo.html">demo page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/06/modialog-a-jquery-plugin-for-modal-dialogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Selenium with Firefox 4</title>
		<link>http://claudio.cicali.name/post/2011/03/using-selenium-ide-with-firefox/</link>
		<comments>http://claudio.cicali.name/post/2011/03/using-selenium-ide-with-firefox/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 16:28:08 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Articoli]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1026</guid>
		<description><![CDATA[Warning: this post will soon be deprecated, once the Selenium IDE &#8220;stable&#8221; version will be upgraded to work with Firefox 4. In the meanwhile, if you need to use/try Selenium IDE with the latest and greatest version of Firefox (just released) you should make these steps: Go to the Selenium IDE tests integration page If [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Warning</strong>: this post will soon be deprecated, once the <a href="http://seleniumhq.org/">Selenium IDE</a> &#8220;stable&#8221; version will be upgraded to work with Firefox 4.<br />
In the meanwhile, if you need to use/try Selenium IDE with the latest and greatest version of Firefox (<strong>just</strong> released) you should make these steps:</p>
<ul>
<li>Go to the Selenium IDE <a href="http://xserve.openqa.org:8085/browse/IDE-IDE-77">tests integration page</a></li>
<li>If the build is GREEN you can safely &#8211; I suppose &#8211; install the xpi, else you should stop here</li>
<li>Click on the &#8220;Artifacts&#8221; tab</li>
<li>Just download the &#8220;<strong>Selenium IDE Official XPI</strong>&#8220;</li>
<li>Uncompress the package somewhere</li>
<li>See the &#8220;selenium-ide.xpi&#8221; file? Good! Then open it (like in File =&gt; Open file) from Firefox4</li>
<li>In the <strong>Tools</strong> menu you now should have the &#8220;Selenium IDE&#8221; entry</li>
</ul>
<p>You should be gold now. Happy testing :)</p>
<p>HTH</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/03/using-selenium-ide-with-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Back from San Francisco</title>
		<link>http://claudio.cicali.name/post/2011/03/back-from-san-francisco/</link>
		<comments>http://claudio.cicali.name/post/2011/03/back-from-san-francisco/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 17:42:46 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=1012</guid>
		<description><![CDATA[Tornato da San Francisco (e Mountain View), diverse cose mi sono rimaste in mente e nei ricordi. Per esempio, a San Francisco (e a Mountain View) se fossi una marca di vestiario, sarei The North Face se fossi una parola sarei ORGANIC se fossi un mezzo di trasporto sarei una bici a scatto fisso. O [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-1020" href="http://claudio.cicali.name/post/2011/03/back-from-san-francisco/snc10305/"><img class="alignright size-medium wp-image-1020" title="SNC10305" src="http://claudio.cicali.name/wp-content/uploads/2011/03/SNC10305-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>Tornato da San Francisco (e Mountain View), diverse cose mi sono rimaste in mente e nei ricordi. Per esempio, a San Francisco (e a Mountain View)</p>
<ul>
<li>se fossi una marca di vestiario, sarei <strong>The North Face</strong></li>
<li>se fossi una parola sarei <strong>ORGANIC</strong></li>
<li>se fossi un mezzo di trasporto sarei una <strong>bici a scatto fisso</strong>. O un <strong>tram</strong>.</li>
<li>se fossi un accessorio per auto sarei un <strong>cerchione enorme e cromato</strong></li>
<li>se fossi un&#8217;auto sarei una <strong>Prius</strong></li>
<li>se fossi un gelato sarei al gusto di <strong>olio di oliva</strong></li>
<li>se fossi una ragazza avrei gli <strong>occhi a mandorla</strong></li>
<li>se fossi una strada sarei <strong>in salita</strong></li>
<li>se fossi un commerciante di roba strana sarei <strong>cinese</strong></li>
<li>se fossi un albero&#8230; sarebbe impossibile capire di che specie sono!</li>
<li>se fossi un uccello sarei una <strong>cornacchia</strong></li>
<li>se fossi un treno sarei il <strong>Caltrain</strong></li>
<li>se fossi un museo sarei il <strong>SFMOMA</strong> (escluso l&#8217;ultimo piano)</li>
<li>se fossi un&#8217;azienda avrei degli uffici spettacolari</li>
<li>se fossi un bar sarei il <strong>Red Rock</strong></li>
<li>se fossi un cibo sarei il <strong>sushi</strong></li>
<li>se fossi un letto sarei un <strong>futon</strong></li>
</ul>
<p>Ringrazio veramente di cuore <a href="http://twitter.com/verbosus">Antonio</a> e <a href="http://twitter.com/micampe">Michele</a> per l&#8217;ospitata e spero davvero tanto di poterli rivedere presto. Lì o qui ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/03/back-from-san-francisco/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to export your friendfeed stream (posts and comments)</title>
		<link>http://claudio.cicali.name/post/2011/01/how-to-export-your-friendfeed-stream-posts-and-comments/</link>
		<comments>http://claudio.cicali.name/post/2011/01/how-to-export-your-friendfeed-stream-posts-and-comments/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 10:29:51 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Annunci]]></category>
		<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=976</guid>
		<description><![CDATA[I just wrote a script to easily download your FULL friendfeed stream. I mean: every post with comments, likes and even images and/or files. Enough for the good news: the bad news is that this a PHP command line script and you have to know how to run it. On a recent  OSX or Linux [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-980" href="http://claudio.cicali.name/post/2011/01/how-to-export-your-friendfeed-stream-posts-and-comments/ff-2/"><img class="alignleft size-full wp-image-980" title="ff" src="http://claudio.cicali.name/wp-content/uploads/2011/01/ff1.png" alt="" width="227" height="50" /></a></p>
<p>I just wrote a script to easily download your FULL <a href="http://friendfeed.com">friendfeed</a> stream. I mean: every post with comments, likes and even images and/or files. Enough for the good news: the bad news is that this a PHP command line script and you have to know how to run it. On a recent  OSX or Linux environment you should be ready to go. For Windows-ers it could be a little more difficult. Sorry.</p>
<p>Anyway, here is the features list:</p>
<ul>
<li>can fetch a private stream, giving your <a href="http://friendfeed.com/remotekey">remote key</a></li>
<li>locally downloads images and files (detects already downloaded things)</li>
<li>upon subsequent runs, it tries to get only the newly added posts</li>
<li>the output file is <a href="http://www.json.org/">JSON</a></li>
<li>it scales well!</li>
<li>it&#8217;s free software (MIT license)</li>
</ul>
<p>
Download the scripts <a href="https://github.com/claudioc/ffexp">from Github</a> (the link points to the project page, where you can read the README too. In this case you&#8217;re interested to the <a href="https://github.com/claudioc/ffexp/blob/master/ffexp.php">ffexp.php</a> script).
</p>
<p>You then may run it like:</p>
<pre>php ffexp.php somefilename.json</pre>
<p>As you may infer from the output file extension, the output is plain good JSON. This format is <strong>very</strong> handy for whatever thing you may need to do with the export file. But this is up to you (or your programmer friend).
</p>
<p>As an example of <em>JSON postprocessor</em> I also wrote <strong>a converter</strong> that given your export file will render a fully functional HTML file, looking just like a Friendfeed page. It also automatically embeds the necessary JavaScript, CSS and even icon images. <a href="https://github.com/claudioc/ffexp/blob/master/ffexp2html.php">Download the ffexp2html from Github</a>, open it, read the fine documentation and run it like:</p>
<pre>php ffexp2html.php somefilename.json &gt; somefilename.html</pre>
<p>Now you can open the somefile.html file with your browser (no internet connection needed). You may find a generated <a href="http://web20.it/stuff/caludio.html">output here</a>.</p>
<p>Limits? Yes there are:</p>
<ul>
<li>No download of your DMs (don&#8217;t know exactly why, maybe a limit of the API. But I don&#8217;t care)</li>
<li>You can download even entire rooms (just use the room name as the username), but it seems that there is a limit of how back you can go. Very high, but it exists.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2011/01/how-to-export-your-friendfeed-stream-posts-and-comments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Convert Delicious bookmarks to CSV</title>
		<link>http://claudio.cicali.name/post/2010/12/convert-delicious-bookmarks-to-csv/</link>
		<comments>http://claudio.cicali.name/post/2010/12/convert-delicious-bookmarks-to-csv/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 15:54:46 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Annunci]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=964</guid>
		<description><![CDATA[Following the news that the Delicious social bookmarking service will soon be dismissed by Yahoo!, people started wondering which other service could they use in its place and how to better export their delicious bookmarks. This post is not yet another list of sites, but I&#8217;d try to help to better manage the exodus and even gain [...]]]></description>
			<content:encoded><![CDATA[<p>Following the news that the <a href="http://delicious.com">Delicious</a> social bookmarking service will soon be dismissed by Yahoo!, people started wondering which other service could they use in its place and how to better export their delicious bookmarks. This post is not yet another list of sites, but I&#8217;d try to help to better manage the exodus and even gain something from this deliciousastrous.</p>
<p>I wrote a little script in PHP that converts your bookmarks file <a href="https://secure.delicious.com/settings/bookmarks/export">exported from Delicious</a> in some other formats. The script, if you&#8217;re in the mood, is even easily extensibile if you provide it another &#8220;driver&#8221; to convert in another format (you write it and then plug it into the script. Pretty straightforward).</p>
<p>The script is ready to be used if you need to <strong>convert the file in CSV</strong>.</p>
<p>Run it like this:</p>
<pre>php deliconv.php delicious_export.html &gt; delicious_export.csv</pre>
<p>Another idea on how to use the script would be to check every URL for its existance. It&#8217;s a pretty easy task if you know how to use the curl extension. I&#8217;ll leave it as an exercise for the reader :)</p>
<p>So, if know how to run PHP from the command line, <a href="http://lab.web20.it/uploads/deliconv.php.txt">grab the script here</a> (remove the .txt extension).</p>
<p>There is also a Delicious XML exporter, <a href="http://deliciousxml.com/">out there</a>.</p>
<p>Update: my friend <a href="http://www.nicoladagostino.net/">Nicola D&#8217;Agostino</a> has collected some other <a href="http://www.nicoladagostino.net/2010-fuga-da-delicious-come-copiare-i-dati.html">useful informations and tricks</a> on the matter.</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2010/12/convert-delicious-bookmarks-to-csv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using «Federated Login for Google Account Users» in your application</title>
		<link>http://claudio.cicali.name/post/2010/11/using-%c2%abfederated-login-for-google-account-users%c2%bb-in-your-application/</link>
		<comments>http://claudio.cicali.name/post/2010/11/using-%c2%abfederated-login-for-google-account-users%c2%bb-in-your-application/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 09:31:14 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=949</guid>
		<description><![CDATA[I recently had to add an authentication system to an application of mine. Another login, another password checking, another&#8230; Boooring. Given the nature of the application I decided that this time I could cut the mess down and go only with the «Use your Google account» &#8220;one click&#8221; login. Why not? Lot of people have an [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to add an authentication system to an application of mine.</p>
<p>Another login, another password checking, another&#8230; Boooring. Given the nature of the application I decided that this time I could cut the mess down and go only with the «Use your Google account» &#8220;one click&#8221; login. Why not? Lot of people have an google account already and <strong>it&#8217;s OpenID</strong>!</p>
<p>The usual Google documentation page <a href="http://code.google.com/apis/accounts/docs/OpenID.html">is this one</a>. The good news is that if you follow this guide you probably will not need to read that whole page :) Later on you should integrate this very document with the Google one.</p>
<p>The first thing to know is that you are going to write an <a href="http://openid.net/">OpenID</a> client/consumer. OpenID 2 protocol is indeed the system behind the whole client/server scenario from your application (the client) and the Google accounting system (the server). I have to assume that you know what that means (at an high level, at least). The examples here are in <strong>PHP</strong> and below I will provide some sample code for you to play with.</p>
<p>OK; so here are the relevant points:</p>
<ul>
<li>This one is theoretical, but it&#8217;s how Google deployed the OpenID protocol on top of his already existing authentication system. Normally, in a &#8220;pure&#8221; OpenID environment, during the login process the user will give you his/her openid identifier (an URL); using that identifier your program will discover (via the Yadis protocol) which is the corresponding server party to talk to for the authentication process. In the Google scenario you don&#8217;t know which is the user&#8217;s OpenID identifier (the user, of course, is not even aware that there&#8217;s something like &#8220;openid&#8221; involved in the way s/he logs in). You have NOT to ask her for her &#8220;google account&#8221;; you have to make him press a button or follow a link to &#8220;Login with your Google account&#8221;. But you DO know who you have to ask for protocol informations and not have to infer it from the user&#8217;s OpenID (technically, a discovery process is needed anyway). Upon a succesfull login you WILL have the user&#8217;s OpenID identifier; it&#8217;s something like a generated string, not choosen by the user and crafted by Google itself.</li>
<li>You need a recent OpenID library that supports OpenID 2.0 XRI and Yadis discovery. This <strong>excludes</strong> (as for now) the Zend Framework OpenID component (it does support OpenID 2.0, but not the discovery part in the version Google uses). Too bad. You then need to go straight to the <a href="http://www.janrain.com/openid-enabled">JanRain library</a></li>
<li>Don&#8217;t bother thinking about Simple Registration (SREG): Google does support the more advanced (and useful) Attribute Exchange (AX) extension only</li>
<li>Speaking of profile data, there is nothing much you can get: email, name and surname. I noticed that unless you specify each one as <em>mandatory</em> (within the AX request), the user is not even asked &#8211; by Google &#8211; to give them to you. There&#8217;s probably somethng I misunderstood, but this is it.</li>
</ul>
<p>On your side, the login process will consist of two distint phases: one that <strong>initiates</strong> the login process the and one that <strong>finalizes</strong> it.</p>
<p>Normally you point your &#8220;Login with Google&#8230;&#8221; link to the script that implements the initiation phase (let&#8217;s say &#8220;login.php&#8221;). The finalize script (let&#8217;s say &#8220;finalize.php&#8221;) will be called by the Google server as per protocol. There is a lot more to know about the OpenID process, of course, but the library should hide the gory details for you.</p>
<p>The login script will immediately and trasparently forward the user to the real Google account login page. The finalize script will have the logic that checks if the authentication has been succesfull or not and act consequently.</p>
<p>I&#8217;m about to show you some code, but keep in mind that <strong>this is NOT </strong>valid PHP code; I want you to understand what&#8217;s going on rather than being able to just copy/paste. To further limit clutter I did not even add basic error checking. Please check the JanRain library examples for full fledged (and working) code.</p>
<p>So, for the login process:</p>
<pre class="brush: php; title: ; wrap-lines: false; notranslate">
# Requires the needed JanRain scripts
require_once &quot;Auth/OpenID/Consumer.php&quot;;
require_once &quot;Auth/OpenID/FileStore.php&quot;;
require_once &quot;Auth/OpenID/AX.php&quot;;

# Setup the library (leaved blank on purpose).
# Will also create the $store variable used below
...

$consumer = new Auth_OpenID_Consumer($store);

$auth_request = $consumer-&gt;begin(&quot;https://www.google.com/accounts/o8/id&quot;);

# Create attribute request object (this is where you prepare the Attribute Exchange request)
$attribute = array();
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/contact/email', 2, true, 'email');
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/first', 1, false, 'firstname');
$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/last', 1, false, 'lastname');

# Create AX fetch request
$ax = new Auth_OpenID_AX_FetchRequest();

# Add attributes to AX fetch request
foreach($attribute as $attr){
  $ax-&gt;add($attr);
}

$auth_request-&gt;addExtension($ax);

$return_to = sprintf(&quot;http://%s:%s%s/finalize.php&quot;, $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], dirname($_SERVER['PHP_SELF']));
$trust_root = sprintf(&quot;http://%s:%s%s/&quot;, $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], dirname($_SERVER['PHP_SELF']));

$form_html = $auth_request-&gt;htmlMarkup($trust_root, $return_to, false, array('id' =&gt; 'openid_message'));

# This will actually redirect to Google
print $form_html;
</pre>
<p>This is what I have in my finalize.php script:</p>
<pre class="brush: php; title: ; wrap-lines: false; notranslate">
# Requires the needed JanRain scripts
require_once &quot;Auth/OpenID/Consumer.php&quot;;
require_once &quot;Auth/OpenID/FileStore.php&quot;;
require_once &quot;Auth/OpenID/AX.php&quot;;

# Setup the library (leaved blank on purpose).
# Will also create the $store variable used below
...

$consumer = new Auth_OpenID_Consumer($store);

$return_to = sprintf(&quot;http://%s:%s%s/finalize.php&quot;, $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], dirname($_SERVER['PHP_SELF']));
$response = $consumer-&gt;complete($return_to);

$msg = '';

switch($response-&gt;status) {

  case Auth_OpenID_CANCEL:
    # This means the authentication was cancelled by the user
    $msg = 'Verification cancelled.';
    break;

  case Auth_OpenID_FAILURE:
    $msg = &quot;OpenID authentication failed: &quot; . $response-&gt;message;
    break;

  case Auth_OpenID_SUCCESS:
    # &quot;$openid&quot; is the user openid given by Google
    $openid = $response-&gt;getDisplayIdentifier();
    $ax_resp = Auth_OpenID_AX_FetchResponse::fromSuccessResponse($response);
    # Here you could save the user data in session for further references...
    ...

    # Redirect the user to her dashboard
    header('Location: /account');
    exit();

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2010/11/using-%c2%abfederated-login-for-google-account-users%c2%bb-in-your-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La festa del tartufo a San Miniato</title>
		<link>http://claudio.cicali.name/post/2010/11/san-miniato-festa-del-tartufo/</link>
		<comments>http://claudio.cicali.name/post/2010/11/san-miniato-festa-del-tartufo/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 08:47:51 +0000</pubDate>
		<dc:creator>claudio</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[festa del tartufo]]></category>
		<category><![CDATA[sagra del tartufo]]></category>
		<category><![CDATA[san miniato]]></category>
		<category><![CDATA[tartufo]]></category>
		<category><![CDATA[toscana]]></category>

		<guid isPermaLink="false">http://claudio.cicali.name/?p=929</guid>
		<description><![CDATA[Questo post vuol essere contemporaneamente tre cose: un documento di denuncia, un atto d&#8217;amore e uno spot pubblicitario. Il prossimo fine settimana (quello del 13/14 novembre 2010) e per i due fine settimana successivi, si terrà a San Miniato (Pisa) la quarantesima edizione della Mostra Mercato del Tartufo (no WP link, sorry). San Miniato è [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://it.wikipedia.org/wiki/San_Miniato"><img class="alignleft size-medium wp-image-931" title="Sagra_del_tartufo_2009_II" src="http://claudio.cicali.name/wp-content/uploads/2010/11/Sagra_del_tartufo_2009_II1-200x300.jpg" alt="" width="200" height="300" /></a>Questo post vuol essere contemporaneamente tre cose: un <strong>documento di denuncia</strong>, un <strong>atto d&#8217;amore</strong> e uno <strong>spot pubblicitario</strong>. Il prossimo fine settimana (quello del 13/14 novembre 2010) e per i due fine settimana successivi, si terrà a <a href="http://it.wikipedia.org/wiki/San_Miniato">San Miniato</a> (Pisa) la quarantesima edizione della <strong>Mostra Mercato del Tartufo</strong> (no WP link, sorry). <a href="http://www.comune.san-miniato.pi.it/">San Miniato</a> è la città dove sono cresciuto e, inutile dirlo, mi sta a cuore e la amo &#8211; come sa bene chi mi frequenta. San Miniato (<a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=san+miniato&amp;sll=37.0625,-95.677068&amp;sspn=53.167773,93.955078&amp;ie=UTF8&amp;hq=&amp;hnear=San+Miniato+Pisa,+Tuscany,+Italy&amp;z=12">mappa Google</a>) &#8211; detta anche la città delle <em>venti miglia</em> per la sua quasi equidistanza, nel centro della Toscana, da Pisa, Firenze, Lucca, Pistoia e il senese &#8211; è un territorio ricco di colline e di campagne fiorenti ma come se non bastasse la natura ne ha fatto anche il ricettacolo per uno dei suoi frutti più preziosi: il tartufo bianco. Questa ricchezza ha sempre messo la città in antagonismo con <strong>Alba</strong> per il primato italiano sulla produzione del mitico fungo e da molti anni si tiene questa mostra/mercato/sagra per celebrarlo.</p>
<p>La sagra non è solo un&#8217;occasione rara per vedere da vicino, assaggiare e magari (beati voi) comprare il tartufo, ma ci dà anche l&#8217;occasione per incontrare le cose più preziose (e gustose) offerte dalla toscana in autunno: parlo dell&#8217;<strong>olio nuovo</strong>, dei <strong>formaggi</strong>, dei <strong>salumi</strong> e del <strong>vino</strong> giovane. Da pochi anni, poi, nel periodo della festa si uniscono nel paese anche altre realtà gastronomiche da altre regioni italiane, fenomeno che trasforma per qualche settimana San Miniato in una vera e propria cittadella del gusto. Inutile dire che i buoni ristoranti della zona fanno poi a gara per vendere l&#8217;offerta migliore in fatto di prelibatezze locali.</p>
<p>San Miniato si trova in cima ad una collina e durante la festa il traffico è ovviamente bloccato in valle. Il comune offre un servizio di navetta gratuita.</p>
<p><strong>Quello che mi brucia e mi fa arrabbiare</strong> è che di tutto questo in rete non si trova niente. Nulla. Un articoletto come questo non lo troverete&#8230; troverete magari, conoscendo già la festa e la città, qualcosa di vecchio o stantio (i primi hit sui motori di ricerca rigurdano la festa dell&#8217;anno scorso) e, se vi va veramente bene, riuscirete persino a sapere quali siano le date esatte. Una <strong>vergogna assoluta</strong>, non scusabile.  Certo questo post non cambierà niente, ma se soltanto riuscisse a scavalcare anche di una sola posizione una di quelle odiose e terribile paginazze fatte con Word con dentro soltanto il link &#8220;Entra&#8221; e nessuna informazione (né tantomeno un indirizzo email), beh, allora potrò capire di aver fatto una cosa per la mia adorata città.</p>
<p>Se volete sapere qualcosa di più, ovviamente, non esitate a scrivermi: inutile cercare altrove altri indirizzi di posta elettronica :(</p>
<p>Esiste il <a href="http://www.facebook.com/event.php?eid=155986847776404">gruppo Facebook</a> della manifestazione.</p>
<p>Altra segnalazione su <a href="http://www.gonews.it/articolo_67714_Quarantesima-Mostra-Mercato-Nazionale-Tartufo-Bianco-delle-Colline-Sanminiatesi.html">GoNews</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://claudio.cicali.name/post/2010/11/san-miniato-festa-del-tartufo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

