<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Jolly Char</title>
	
	<link>http://www.jollychar.freehostingcloud.com</link>
	<description>Stressati e depressi? È normale fate parte del mondo informatico.</description>
	<lastBuildDate>Tue, 08 Feb 2011 21:27:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/freehostingcloud/krRc" /><feedburner:info uri="freehostingcloud/krrc" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>How-to: Creiamo una gem in ruby!</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/02/08/how-to-creiamo-una-gem-in-ruby/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/02/08/how-to-creiamo-una-gem-in-ruby/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 21:27:06 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Guide & Tutorial]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyGems]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=844</guid>
		<description><![CDATA[Innanzi tutto spieghiamo prima un pò di cose: 1. Cos&#8217;è una gem? Avete presente gli eBuild di mamma Gentoo? Le gem non sono nient&#8217;altro che libreria scritte in ruby che contengono al loro interno file con informazioni specifiche quali la [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img style="border: 1px solid black;"  src="http://t1.gstatic.com/images?q=tbn:ANd9GcQtjZmGEigj6ckzlKlthgpTr1c6Cm-wHyBwx73byxs6cVIV8VBStg&#038;t=1" alt="Ruby is so sexy!" /></p>
<p>Innanzi tutto spieghiamo prima un pò di cose:</p>
<p><strong>1</strong>. <em>Cos&#8217;è una <strong>gem?</strong></em></p>
<p style="padding-left: 30px;">Avete presente gli <a href="http://it.wikipedia.org/wiki/Ebuild">eBuild</a> di mamma <a href="http://it.wikipedia.org/wiki/Gentoo_Linux">Gentoo</a>? Le gem non sono nient&#8217;altro che libreria scritte in ruby che contengono al loro interno file con informazioni specifiche quali la versione della libreria, l&#8217;autore, la mamma dell&#8217;autore ecc ecc.</p>
<p><strong>2</strong>. <em>Come si installano le gemme? </em></p>
<p style="padding-left: 30px;">Da terminale basta dare il comandino magico:</p>
<pre style="padding-left: 60px;" lang="bash">gem install &lt;nome-della-gemma&gt;</pre>
<p><strong>3.</strong> <em>Devo essere un super hacker robot per sviluppare la mia gemma?</em></p>
<p style="padding-left: 30px;">Assolutamente no! Sviluppare e poi rilasciare la propria libreria in ruby con l&#8217;ausilio di gem è un processo davvero semplice, tanto che io ci sto scrivendo su un articolo, e siccome sono formalmente contrario ad ogni attività &#8220;difficile&#8221; direi che potete stare tranquilli.</p>
<p>Bene ora che sappiamo tutte queste cose possiamo darci allo sviluppo della nostra libreria!<br />
<span id="more-844"></span></p>
<h2>~ Ambiente &#038; Pre-requisiti</h2>
<p>Naturalmente questo paragrafo è <em>&#8220;la banalità fatta paragrafo&#8221;</em> ma meglio essere chiari. Per poter creare una gemma dovrete avere installato ruby e quindi il suo interprete.<br />
Potete trovare <a href="http://www.ruby-lang.org/it/downloads/">qui</a> tutte le informazioni necessarie.<br />
Qualsiasi sia il vostro sistema operativo ruby non vi darà problemi essendo multi-piattaforma (come python e perl ed altri linguaggi interpretati).<br />
Inoltre si presuppone che mastichiate un pò del linguaggio prima di avventurarvi nella creazione di librerie, se non fosse così questo è un ottimo <a href="http://ruby-it.org/pages/Guide+in+Italiano"><strong>link</strong></a> di partenza!</p>
<h2>~ Il progetto</h2>
<p>Definiamo ore le basi per il nostro progetto.<br />
Visto che stiamo parlando della nostra prima gemma e visto che alla fine siamo tutti un pò <em>nerd</em>, non possiamo esimerci dal creare la nostra libreria <em>&#8220;Ciao mondo&#8221;</em> in ruby!<br />
Per cui prima di tutto con un paio di comandi da terminale creiamo la struttura della nostra gemma:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> CiaoMondo<span style="color: #000000; font-weight: bold;">/</span>lib <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> CiaoMondo <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">touch</span> lib<span style="color: #000000; font-weight: bold;">/</span>CiaoMondo.rb</pre></div></div>

<p>Naturalmente la struttura della vostra gemma potete gestirla come meglio credete ma per convenzione si usa utilizzare la cartella <em>&#8220;lib&#8221;</em> per contenere i file del progetto e quindi noi a scopo didattico seguiremo le convenzioni della comunità <em>&#8220;Rubystica&#8221;</em>.<br />
Adesso non ci resta che inserire il codice della nostra libreria nel file <em>CiaoMondo.rb</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> CiaoMondo
   <span style="color:#9966CC; font-weight:bold;">class</span> Parla
      <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>s<span style="color:#006600; font-weight:bold;">&#41;</span>
         <span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#996600;">&quot;Ciao #{s}, io sono la tua prima gemma!&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Benissimo adesso che abbiamo sviluppato il nostro codice *<em>superipermegaperformanteedaffascinante</em>* passiamo alla creazione della nostra gemma!</p>
<h2>~ Rake &#038; Rakefile</h2>
<p>Per chi ha dimestichezza con linux <em>Rakefile</em> può sembrare abbastanza familiare come nome, ed infatti il Rakefile non è altro che un <a href="http://en.wikipedia.org/wiki/Make_(software)">Makefile</a> scritto in ruby, con il quale possiamo dare le direttive a <a href="http://en.wikipedia.org/wiki/Rake_(software)">rake</a> (make vi dice niente?) per la generazione del progetto.<br />
Per la creazione del nostro Rakefile ci affideremo ad una gemma che ci faciliterà non poco la vita, e cioè <a href="https://github.com/fauna/echoe">echoe</a>. Con questa gemma infatti si automatizzano e semplificano la gestione e la creazione dei nostri Rakefile. Installiamo la libreria quindi con l&#8217;ausilio di gem:</p>
<pre style="padding-left: 60px;" lang="bash">gem install echoe</pre>
<p>Una volta installata andiamo a creare il nostro Rakefile come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rake'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'echoe'</span>
&nbsp;
Echoe.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'CiaoMondo'</span>, <span style="color:#996600;">'1.0'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>p<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">description</span>    = <span style="color:#996600;">&quot;Questa gemma è la migliore del mondo!&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">url</span>            = <span style="color:#996600;">&quot;http://www.ciaomondo.org&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">author</span>         = <span style="color:#996600;">&quot;Tizio Caio&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">email</span>          = <span style="color:#996600;">&quot;lamiamail@ciaomondo.org&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">ignore_pattern</span> = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;tmp/*&quot;</span>, <span style="color:#996600;">&quot;script/*&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
  <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">development_dependencies</span> = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Non credo ci sia bisogno di analizzarla anche perché sinceramente penso che sia abbastanza chiaro il significato del codice, e tutto questo lo dobbiamo alla gem <em>echoe</em>.<br />
Bene adesso che abbiamo il nostro bel Rakefile non ci resta che dare un altro paio di comandi da shell ed avremo terminato. Iniziamo subito digitando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rake manifest
Cleaning
Building Manifest
+ Manifest
+ Rakefile
+ lib<span style="color: #000000; font-weight: bold;">/</span>CiaoMondo.rb</pre></div></div>

<p>In questo modo verrà generato il nostro file <em>Manifest</em> che contiene e tiene traccia di tutti i file all&#8217;interno della nostra gem.<br />
Adesso non ci resta che creare il file <a href="http://docs.rubygems.org/read/chapter/20"><em>Gemspec</em></a>. Dal nome possiamo intuire che questo file conterrà tutte le specifiche della nostra gemma (<em>gemspec => Gem specification</em>) e per crearlo ci basterà digitare da terminale come al solito il comando rake:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rake CiaoMondo.gemspec
Gemspec generated</pre></div></div>

<p>Benissimo, possiamo dire di aver concluso, non ci resta infine che generare i task con il comando seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rake <span style="color: #660033;">-T</span>
rake announce             <span style="color: #666666; font-style: italic;"># Generate a release announcement, edit it, and post it to Rubyforge.</span>
rake build                <span style="color: #666666; font-style: italic;"># Generates manifest &amp; gemspec in one go</span>
rake build_gemspec        <span style="color: #666666; font-style: italic;"># Builds the .gemspec</span>
rake clean                <span style="color: #666666; font-style: italic;"># Remove any temporary products.</span>
rake clobber              <span style="color: #666666; font-style: italic;"># Remove any generated file.</span>
rake clobber_docs         <span style="color: #666666; font-style: italic;"># Remove rdoc products</span>
rake clobber_package      <span style="color: #666666; font-style: italic;"># Remove package products</span>
rake details              <span style="color: #666666; font-style: italic;"># Display Echoe's knowledge of your system</span>
rake docs                 <span style="color: #666666; font-style: italic;"># Build the RDOC HTML Files</span>
rake gem                  <span style="color: #666666; font-style: italic;"># Build the gem file CiaoMondo-1.0.gem</span>
rake <span style="color: #c20cb9; font-weight: bold;">install</span>              <span style="color: #666666; font-style: italic;"># Install the gem</span>
rake <span style="color: #c20cb9; font-weight: bold;">install</span>:development  <span style="color: #666666; font-style: italic;"># Install the gem including development dependencies</span>
rake manifest             <span style="color: #666666; font-style: italic;"># Build a Manifest list</span>
rake package              <span style="color: #666666; font-style: italic;"># Build all the packages</span>
rake publish_docs         <span style="color: #666666; font-style: italic;"># Publish documentation to rubyforge</span>
rake redocs               <span style="color: #666666; font-style: italic;"># Force a rebuild of the RDOC files</span>
rake release              <span style="color: #666666; font-style: italic;"># Package and upload the release to Gemcutter</span>
rake repackage            <span style="color: #666666; font-style: italic;"># Force a rebuild of the package files</span>
rake uninstall            <span style="color: #666666; font-style: italic;"># Uninstall the gem</span></pre></div></div>

<p>Se tutto è andato a buon fine quello di sopra è l&#8217;output che riceverete.<br />
Seguendo i comandi consigliati da rake possiamo finalmente generare la nostra libreria in forma <strong><em>.gem</em></strong> semplicemente dando il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rake gem
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> pkg
Gemspec generated
  Successfully built RubyGem
  Name: CiaoMondo
  Version: <span style="color: #000000;">1.0</span>
  File: CiaoMondo-<span style="color: #000000;">1.0</span>.gem
<span style="color: #c20cb9; font-weight: bold;">mv</span> CiaoMondo-<span style="color: #000000;">1.0</span>.gem pkg<span style="color: #000000; font-weight: bold;">/</span>CiaoMondo-<span style="color: #000000;">1.0</span>.gem</pre></div></div>

<p>Come avrete notato è stato creato il file CiaoMondo-1.0.gem ed è stato inserito nella directory pkg come da convenzione, infatti in quella directory man mano che avanzerete con la versione della vostra gem veranno inseriti i vari file .gem.</p>
<p>Benissimo adesso potrete dare il comando tanto atteso:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> pkg <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> CiaoMondo-<span style="color: #000000;">1.0</span>.gem
Successfully installed CiaoMondo-<span style="color: #000000;">1.0</span>
<span style="color: #000000;">1</span> gem installed
Installing ri documentation <span style="color: #000000; font-weight: bold;">for</span> CiaoMondo-<span style="color: #000000;">1.0</span>...
Installing RDoc documentation <span style="color: #000000; font-weight: bold;">for</span> CiaoMondo-<span style="color: #000000;">1.0</span>...</pre></div></div>

<p>Complimenti! Avete creato la vostra gemma prima gem in ruby!<br />
Ora vi tocca testarla però, quindi eseguite irb e provate subito il vostro codice:</p>
<pre lang="bash" escaped=true>$ irb
>> require 'CiaoMondo'
=> true
>> CiaoMondo::Parla.new("Tizio Caio")
"Ciao dalla tua libreria in ruby, Tizio Caio!"
=> #<CiaoMondo::Parla:0x101247208></pre>
<p>Tutto è funzionante al 100%!<br />
Adesso non vi resta che sviluppare qualcosa di un pò più utile del solito Hello World =)</p>
<h2>~ RubyGems</h2>
<p><a href="https://rubygems.org"><strong>RubyGems</strong></a> è il noto portale (nel mondo ruby) con il quale è possibile smistare al mondo intero le vostre librerie, vi basterà creare un account sul sito ed installare <a href="https://rubygems.org/gems/gemcutter">gemcutter</a> (la libreria che vi permetterà di pushare le vostre gemme su ruby gems) con la solita riga di comando:</p>
<pre style="padding-left: 60px;" lang="bash">gem install gemcutter</pre>
<p>Una volta installato gemcutter vi basterà digitare:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ gem push CiaoMondo-<span style="color: #000000;">1.0</span>.gem
Pushing gem to https:<span style="color: #000000; font-weight: bold;">//</span>rubygems.org...
Successfully registered gem: CiaoMondo <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1.0</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
$ gem <span style="color: #c20cb9; font-weight: bold;">install</span> CiaoMondo</pre></div></div>

<p>Et voilà. Abbiamo sviluppato/creato e distribuito la nostra libreria in meno di 5 minuti, davvero notevole non trovate?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/02/08/how-to-creiamo-una-gem-in-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Doodle!</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/02/08/google-doodle/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/02/08/google-doodle/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 00:13:11 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Off Topic]]></category>
		<category><![CDATA[Doodle]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=878</guid>
		<description><![CDATA[Non centra molto con il blog ma non potevo non menzionare questo ultimo Doodle di casa Google, dedicato allo scrittore avveniristico Jules Verne! Per l&#8217;occasione ho anche creato questo breve screen-capture, godetevelo =)]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://google.com"><img class="aligncenter" style="border: 1px solid black;" title="Google Doodle" src="http://www.google.com/logos/2011/werich11-hp.jpg" alt="Google Doodle for Jules Verne" width="384" height="161" /></a></p>
<p>Non centra molto con il blog ma non potevo non menzionare questo ultimo <a href="http://www.google.com/logos/">Doodle</a> di casa Google, dedicato allo scrittore avveniristico <a href="http://it.wikipedia.org/wiki/Jules_Verne">Jules Verne</a>!<br />
Per l&#8217;occasione ho anche creato questo breve <em>screen-capture</em>, godetevelo =)</p>
<p><iframe title="YouTube video player" width="560" height="345" src="http://www.youtube.com/embed/TkU_cWa4f74?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/02/08/google-doodle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tra ruby ed ssl meglio non mettere il dito!</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/02/06/tra-ruby-ed-ssl-meglio-non-mettere-il-dito/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/02/06/tra-ruby-ed-ssl-meglio-non-mettere-il-dito/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 22:18:24 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=821</guid>
		<description><![CDATA[Negli utlimi giorni ho avuto dei problemini con SSL è ruby. In pratica non riuscivo ad effettuare il POST di determinati valori in un URL generato in modo automatico se quest&#8217;ultimo era sotto protocollo sicuro (https). Da quanto mi pare [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="ruby snippet" src="http://t2.gstatic.com/images?q=tbn:ANd9GcR30tbeRenxadbB9KKn7ixsI1ZABGE9uc7LxYAyVrbmjYhCvr6V&amp;t=1" alt="" width="264" height="191" /></p>
<p>Negli utlimi giorni ho avuto dei problemini con <a href="http://en.wikipedia.org/wiki/Secure_Sockets_Layer">SSL</a> è ruby.<br />
In pratica non riuscivo ad effettuare il <a href="http://en.wikipedia.org/wiki/POST_%28HTTP%29">POST</a> di determinati valori in un URL generato in modo automatico se quest&#8217;ultimo era sotto protocollo sicuro (<a href="http://en.wikipedia.org/wiki/HTTP_Secure">https</a>).<br />
Da quanto mi pare di aver letto (<em>e di aver capito</em>) si tratta proprio di un problema di ruby che non vede di buon occhi il post sotto SSL.<span id="more-821"></span></p>
<p>Dopo un pò sono riuscito a venirne a capo grazzie a questo piccolo snippet che incollo qui sotto (con relativi commenti. Spero che possa esservi utile e farvi risparmiare tempo e bestemmie =)</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'uri'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/http'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># parso il mio url con URI</span>
uri = <span style="color:#CC00FF; font-weight:bold;">URI</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># Istanzio Net::HTTP ...</span>
http = <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>uri.<span style="color:#9900CC;">host</span>, uri.<span style="color:#9900CC;">port</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># ... e gli dico di voler utilizzare ssl</span>
http.<span style="color:#9900CC;">use_ssl</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
<span style="color:#008000; font-style:italic;"># Infine gli dico di bypassare la verifica del protocollo SSL</span>
http.<span style="color:#9900CC;">verify_mode</span> = <span style="color:#6666ff; font-weight:bold;">OpenSSL::SSL::VERIFY_NONE</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/02/06/tra-ruby-ed-ssl-meglio-non-mettere-il-dito/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gem install GoogleURL</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/02/05/gem-install-googleurl/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/02/05/gem-install-googleurl/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 23:42:27 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Develop]]></category>
		<category><![CDATA[Informatica libera]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Progetti]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[gitHub]]></category>
		<category><![CDATA[goo.gl]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyGems]]></category>
		<category><![CDATA[short link]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=824</guid>
		<description><![CDATA[Goo.gl per chi non lo sapesse è un servizio che permette il cosidetto URL shortening. Il servizio lanciato da Google anche se stato lanciato da poco sta già spopolando, infatti goo.gl offre si possibilità di creare i nostri &#8220;link brevi&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-medium wp-image-827" style="border: 1px solid black;" title="Goo.gl" src="http://www.jollychar.freehostingcloud.com/wp-content/uploads/2011/02/goo.gl_-300x249.jpg" alt="GoogleURL una libreria in ruby per utilizzare il servizio di google &quot;goog.gl&quot;" width="300" height="222" /></p>
<p><a href="http://goo.gl/">Goo.gl</a> per chi non lo sapesse è un servizio che permette il cosidetto <a href="http://en.wikipedia.org/wiki/URL_shortening">URL shortening</a>.<br />
Il servizio lanciato da Google anche se stato lanciato da poco sta già spopolando, infatti goo.gl offre si possibilità di creare i nostri <em>&#8220;link brevi&#8221;</em> da utilizzare come meglio crediamo (<em>chi ha detto twitter?</em>) ma il valore aggiuntivo alla concorrenza (<a href="http://bit.ly/">bit.ly</a>, <a href="http://is.gd/">is.gd</a>, <a href="http://tinyurl.com/">tinyurl</a> ecc) sta nel fatto che con goo.gl è possibile tenere traccia di tutti i nostri link e di avere un resoconto dettagliato (chi usa <a href="http://en.wikipedia.org/wiki/Google_Analytics">analytics</a> sa di che sto parlando) sulle statistiche <em>&#8220;di chi/di cosa/di quando&#8221; </em>lo ha visitato.<br />
Un ottimo servizio quindi, e siccome ho deciso di (ri)prendere a masticare un pò di <a href="http://www.ruby-lang.org">ruby</a> ho preso la palla in balzo ed ho sviluppato una piccola <a href="https://rubygems.org/">gemma</a> con la quale quale è possibile gestire gli url creati con Goo.gl.<span id="more-824"></span></p>
<p>Per ora con GoogleURL (questo il nome scelto per la libreria) è possibile creare uno short link ed inoltre è possibile l&#8217;operazione inversa, e cioè quella di passare da uno short link, creato con goo.gl, alla sua forma originaria ed estesa.</p>
<p>Potete scaricare e visionare i sorgenti di GoogleURL da <strong><a href="https://github.com/Dad-89/GoogleURL">gitHub</a></strong>, inoltre sempre su gitHub è presente anche un semplice <em>README</em> che spiega come utilizzare la gemma.<br />
Oltre alla normale repo è disponibile anche il link sul noto portale di smistamento <strong><a href="https://rubygems.org/gems/GoogleURL">RubyGems</a></strong>.<br />
Per quanto riguarda la versione succesiva di GoogleURL credo che darò la possibilità di tenere traccia degli url inviati e delle varie statistiche relative ai link di ogni singolo utente, magari restituire i dati sotto forma di collezione <a href="http://en.wikipedia.org/wiki/JSON">json</a> sarebbe l&#8217;ideale, in questo modo riutilizzare i dati ottenuti sarebbe davvero una sciochezza.<br />
Per ora è tutto, buon coding a tutti!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/02/05/gem-install-googleurl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scegliere un linguaggio!</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/26/scegliere-un-linguaggio/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/26/scegliere-un-linguaggio/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 21:55:22 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Informatica libera]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[linguaggi]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=812</guid>
		<description><![CDATA[Frequentando vari forum e comunità riguardanti il mondo developer mi trovo spesso a leggere di persone che avvicinandosi alla programmazione cercano consigli su quale linguaggio sia bene scegliere per poter iniziare i loro corsi di studi. In questo post cercherò [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Linguaggio del diavolo." src="http://t0.gstatic.com/images?q=tbn:ANd9GcQrdPE3akDcBHz_buWyAC_MmaaYQ6my4MMHDvU6dsoGxKRRs3vNUg&amp;t=1" alt="" width="177" height="285" /></p>
<p>Frequentando vari forum e comunità riguardanti il mondo developer mi trovo spesso a leggere di persone che avvicinandosi alla programmazione cercano consigli su quale linguaggio sia bene scegliere per poter iniziare i loro corsi di studi.<br />
In questo post cercherò di dare la risposta esattamente opposta, ovvero, con quali linguaggi <strong>sicuramente non è bene iniziare</strong> un corso di studi.</p>
<p>Iniziamo con il mio preferito il <a href="http://en.wikipedia.org/wiki/Brainfuck"> Brainfuck</a>.<br />
Già il nome è tutto un programma insomma, oltre al nome l&#8217;autore non ispira molta fiducia o almeno in <a href="http://intercrosse.net/pils/poty/2007/clumsy2007.jpg">questa foto</a> non trasmette un messaggio di sobrietà tale da potersi permettere di sviluppare un linguaggio di programmazione.<br />
Visitando il <a href="http://www.muppetlabs.com/~breadbox/bf/">sito ufficiale</a> del progetto potrete notare quanto questo linguaggio sia un qualcosa che definire epico mi sembra poco, in realtà il linguaggio in se avrebbe anche uno scopo, legato ad un certo <a href="http://it.wikipedia.org/wiki/Alan_Turing">Turing</a> e a delle <a href="http://it.wikipedia.org/wiki/Macchina_di_Turing">macchine che ha inventato</a> questo tizio,  ma sinceramente mi sembra davvero inappropriato dare uno scopo così banale ad un linguaggio che è tutt&#8217;altro!<br />
Per dimostrarvi la sua semplicità di stesura e la sua immensa leggibilità inserisco qui un piccolo codice d&#8217;esempio con oggetto il famoso algoritmo di ordinamento <a href="http://it.wikipedia.org/wiki/Bubble_sort">Bubbel Sort</a>.<span id="more-812"></span></p>
<pre>&gt;&gt;&gt;&gt;&gt;,+[&gt;&gt;&gt;,+]&lt;&lt;&lt;[&lt;&lt;&lt; [&gt;&gt;&gt;[-&lt;&lt;&lt;-&lt;+&gt;[&gt;]&gt;&gt;]&lt;&lt;&lt;[&lt;]&gt;&gt;
[&gt;&gt;&gt;+&lt;&lt;&lt;-]&lt;[&gt;+&gt;&gt;&gt;+&lt;&lt;&lt;&lt;-]
&lt;&lt;]&gt;&gt;&gt;[-.[-]]&gt;&gt;&gt;[&gt;&gt;&gt;]&lt;&lt;&lt;</pre>
<p>È quasi poetico non trovate?<br />
Continuiamo la nostra carrelate di linguaggi non proprio adatti a tutti con <a href="http://lolcode.com/">LoLCode</a>. Anche qui vi lascio con un breve snippet di codice (che trovate anche sul sito ufficiale) e vi invito a visitare il sito che contiene una documentazione ufficiale davvero ben fornita con cui potrete farvi quattro grasse risate.<br />
Solo per precisione, il codice in questione conta e stampa da 1 a 10.</p>
<pre>HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
	UP VAR!!1
	VISIBLE VAR
	IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE</pre>
<p>Io direi che abbiamo trovato un degno avversario per python e ruby, non trovate?</p>
<p>Dulcis in fundo l&#8217;ultimo linguaggio da evitare che volevo segnalare è <a href="http://shakespearelang.sourceforge.net/">Shakespeare Programming Language</a>.<br />
Qui di segutio non posso esimermi da incollare un piccolo (o forse no?) snippet per il classico è più che mai in questo caso <span style="text-decoration: underline;">non scontanto</span> <em>&#8220;Hello World&#8221;</em>.</p>
<pre>The Infamous Hello, world! Program.
Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave
hero and thyself! Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!

You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.

Speak your mind!

[Exit Romeo]

Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!

[Exit Juliet]

Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!

Thou art as loving as the product of the bluest clearest sweetest sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]

Act II: Behind Hamlet's back.

Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!

Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!

[Exit Romeo]

Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!

Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!

[Exeunt]</pre>
<p>Sinceramente sto prendendo in seria considerazione l&#8217;idea di abbandonare ogni mia attività e dedicarmi solo ed esclusivamente a questo linguaggio, magari sviluppando in completa solitudine su di una montagna isolata dell&#8217;<a href="http://en.wikipedia.org/wiki/Uzbekistan">Uzbekistan</a>, cibandomi soltanto di scoiattoli.</p>
<p>infine dopo questo breve elenco vi sarete di sicuro accorti di quanto gli informatici siano davvero tutti depressi e bisognosi d&#8217;affetto.<br />
<span style="color: #ff0000;"><em>Se potete non lasciate mai solo un informatico questo perché se in preda ad un attacco di panico potrebbe creare il prossimo erede di Brainfuck o Shakespeare Language, quindi se avete a cuore il mondo intero&#8230; <strong>Aiutatelo</strong>.</em></span></p>
<p>Infine per tutti coloro che vogliono ancora un consiglio su quale linguaggio scegliere per iniziare <a href="http://en.wikibooks.org/wiki/List_of_hello_world_programs">qui c&#8217;è un bel link</a> dove potrete trovare un bel pò di esempi (<em>Hello World</em>) in svariati linguaggi.<br />
Insomma ora che sapete cosa evitare in ogni caso, scegliere dovrebbe essere più facile&#8230; oppure no?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/26/scegliere-un-linguaggio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installiamo rails!</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/23/installiamo-rails/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/23/installiamo-rails/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 00:11:22 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Tips & tricks]]></category>
		<category><![CDATA[Web Develop]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=804</guid>
		<description><![CDATA[Ultimamente mi sono soffermato su questo fantastico framework di una semplicità e funzionalità unica, anche perché il linguaggio su cui si basa (ruby) è uno delle migliori new entry di questi ultimi tempi a parer mio. L&#8217;installazione su ambienti *nix [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Ruby on Rails" src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Ruby_logo.svg/150px-Ruby_logo.svg.png" alt="Ruby on Rails" width="150" height="150" /></p>
<p>Ultimamente mi sono soffermato su questo fantastico framework di una semplicità e funzionalità unica, anche perché il linguaggio su cui si basa (<a href="http://it.wikipedia.org/wiki/Ruby">ruby</a>) è uno delle migliori new entry di questi ultimi tempi a parer mio.<br />
L&#8217;installazione su ambienti *nix è molto semplice, non ho approfondito il discorso su windows ma penso che esistano dei surrogati simili ai progetti <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> e <a href="http://www.mamp.info/en/index.html">MAMP</a> (per OSX).<br />
Detto questo procediamo con l&#8217;installazione dando un paio di comandi da terminale!<span id="more-804"></span></p>
<h2>~ Requisiti</h2>
<p>Innanzitutto se siete su Mac assicuratevi di aver installato <a href="http://developer.apple.com/technologies/tools/xcode.html">XCode</a> e di averlo aggiornato alla versione ultima (non si sa mai), questo perché con il tool apple avrete tutti gli strumenti utili per poter terminare con sucesso l&#8217;installazione di <a href="http://it.wikipedia.org/wiki/Ruby_On_Rails">RoR</a>.<br />
Se siete su altri tipi di piattaforme, allora dovrete per prima cosa installare <a href="http://www.ruby-lang.org/en/">Ruby</a>, dopodiché procedere con l&#8217;installazione di <a href="http://rubygems.org">RubyGem</a> ed infine potrete procedere all&#8217;installazione di <a href="http://rubyonrails.org/">Rails</a>.</p>
<h2>~ Installazione</h2>
<p>Una volta che ci siamo accertati di sopperire a tutti i prerequisiti necessari all&#8217;installazione di Rails, potete eseguire questi 2 semplici comandi per l&#8217;installazione:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem update <span style="color: #660033;">--system</span>; <span style="color: #666666; font-style: italic;"># Update di RubyGems</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <span style="color: #666666; font-style: italic;"># Installiamo Rails</span></pre></div></div>

<p>Abbiamo finito!<br />
Come vedete abbiamo perso quanto? 5 minuti? Forse meno se siamo su Mac. Sono queste le cose belle dell&#8217;informatica, la semplicità e la funzionalità!<br />
In linea di massima comunque per problemi di installazione oppure per approfondire l&#8217;argomento (vi serve mysql per caso?) vi consiglio di documentarvi sul <a href="http://wiki.rubyonrails.org/getting-started/installation">wiki del progetto</a>, che è di facile consultazione ed è ricco di contenuti utili.</p>
<h2>~ Perché usare RoR?</h2>
<p>Sinceramente da quando ho scoperto che con ruby è possibile fare questo:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">s = <span style="color:#996600;">&quot;Hello World!&quot;</span>
s<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;World&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">&quot;Dad&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> s <span style="color:#008000; font-style:italic;"># Hello Dad!</span></pre></div></div>

<p>Mi sono deciso a provare questo framework =D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/23/installiamo-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object-C? No grazie.</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/17/object-c-no-grazie/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/17/object-c-no-grazie/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 15:12:26 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Informatica libera]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[c-obj]]></category>
		<category><![CDATA[Mac Os X]]></category>
		<category><![CDATA[Object C]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=794</guid>
		<description><![CDATA[Rieccomi dopo una breve (mica tanto) pausa (causa influenza), si riparte subito con un breve post (ma intenso) sul perché effettivamente la programmazione in C object (da adesso sarà c-obj) non mi sembra una scelta ottimale. Ci sono vari motivi [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_799" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-799" title="Object C? No Grazie." src="http://www.jollychar.freehostingcloud.com/wp-content/uploads/2011/01/png-300x260." alt="" width="300" height="260" /><p class="wp-caption-text">Object C? No Grazie.</p></div>
<p>Rieccomi dopo una breve (mica tanto) pausa (causa influenza), si riparte subito con un breve post (ma intenso) sul perché effettivamente la programmazione in <a href="http://it.wikipedia.org/wiki/Objective_C">C object</a> (da adesso sarà c-obj) non mi sembra una scelta ottimale.<br />
Ci sono vari motivi per cui credo non si debba programmare in c-obj ma in linea di massima penso che a rendere le cose insopportabili siano principalmente:<span id="more-794"></span></p>
<ol>
<li>La mancanza di <a href="http://en.wikipedia.org/wiki/Namespace_%28computer_science%29">namespacing</a>;</li>
<li> L&#8217;immutabilità di oggetti come NSString e NSArray (Non posso modificare un array? Ma perché?);</li>
<li>La sintassi fin troppo verbosa (Vedere esempio poco sotto);</li>
<li>La mancanza effettiva (se conosco quel metodo, anche se privato, posso richiamarlo è mandare a donnine allegre tutto e tutti) di metodi privati;</li>
</ol>
<p>Inoltre mi fa storcere non poco il naso il mancato overload di operatori (Che è una delle peculiarità di Smalltalk  dal quale alla fine c-obj si ispira).</p>
<p>La sintassi come dicevo sopra, per quanto mi riguarda è davvero troppo prolissa.<br />
Ve lo dimostro con un semplice esempio di rounding:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSDecimalNumberHandler</span> <span style="color: #002200;">*</span> round;
NSRoundingMode mode <span style="color: #002200;">=</span> NSRoundPlain;
round <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSDecimalNumberHandler</span> decimalNumberHandlerWithRoundingMode<span style="color: #002200;">:</span> mode
                                                               scale<span style="color: #002200;">:</span> <span style="color: #2400d9;">0</span>
                                                    raiseOnExactness<span style="color: #002200;">:</span> <span style="color: #a61390;">NO</span>
                                                     raiseOnOverflow<span style="color: #002200;">:</span> <span style="color: #a61390;">NO</span>
                                                    raiseOnUnderflow<span style="color: #002200;">:</span> <span style="color: #a61390;">NO</span>
                                               raiseOnDivideByZero<span style="color: #002200;">:</span> <span style="color: #a61390;">NO</span><span style="color: #002200;">&#93;</span>;
<span style="color: #400080;">NSDecimalNumber</span><span style="color: #002200;">*</span> total;
total <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>number decimalNumberByRoundingAccordingToBehavior<span style="color: #002200;">:</span>round<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Mi sembra davvero eccesivo.<br />
Detto questo se dovessi consigliare un linguaggio con cui poter sviluppare, a meno che non vi sia un obbligo (come sulle piattaforme apple) non mi sentirei affatto in grado di consigliare c-obj ad un futuro programmatore a meno che non odi davvero tanto quest&#8217;ultimo.</p>
<p>Ultima chicca dell&#8217;articolo:<br />
Vi consiglio la lettura di questa perla &#8220;<a href="http://wiki.theory.org/YourLanguageSucks">YourLanguageSucks</a>&#8221; che ho trovato davvero interessante sotto certi aspetti, anche se non è da prendere come oro colato eh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/17/object-c-no-grazie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appunti su Symfony – Parte 2</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/08/appunti-su-symfony-parte-2/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/08/appunti-su-symfony-parte-2/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 19:28:32 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Appunti]]></category>
		<category><![CDATA[Informatica libera]]></category>
		<category><![CDATA[Risorse Utili]]></category>
		<category><![CDATA[Web Develop]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=761</guid>
		<description><![CDATA[In questa seconda parte parleremo di cose serie e non di sporca teoria, vedremo come creare effettivamente un progetto, quindi la configurazione iniziale ed i comandi principali (per iniziare lo sviluppo) del framework symfony. Parlo di comandi principali poiché symfony [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-medium wp-image-701" title="symfony" src="http://sfd.ph/wp-content/uploads/2010/09/symfony.gif" alt="Symfony Framework" /></p>
<p>In questa seconda parte parleremo di cose serie e non di sporca teoria, vedremo come creare effettivamente un progetto, quindi la configurazione iniziale ed i comandi principali (per iniziare lo sviluppo) del framework symfony.</p>
<p>Parlo di <em>comandi principali</em> poiché symfony viene gestito tramite un&#8217;interfaccia <a href="http://it.wikipedia.org/wiki/Interfaccia_a_riga_di_comando">CLI</a>, quindi se non venite da sistemi <em>*nix</em> potreste trovarvi a disagio, quanto meno all&#8217;inizio.<br />
Per poter gestire la cosa comunque, sarebbe meglio studiarvi almeno i comandi della sopravvivenza (<a href="http://linux.collectiontricks.it/wiki/Guida_ai_comandi_base_della_shell_in_GNU/Linux">cd, ls, rm, mkdir, chmod, pwd ecc</a>) e non preoccupatevi, rimanere disorientati alla fine è normale, sopratutto se non avete mai utilizzato framework di questo tipo.</p>
<h2>~ Strumenti del mestiere</h2>
<p><em>Innanzi tutto l&#8217;ambiente di sviluppo</em>. Per poter lavorare in pace e senza problemi vi servirà <a href="http://www.apache.org/">apache</a> (anche <a href="http://www.lighttpd.net/">lightpd</a> può andare), una versione di <a href="http://php.net/downloads.php">php aggiornata</a> (preferibilmente 5.3).<br />
Un&#8217;acceleratore di cache per php (<a href="http://pecl.php.net/package/APC">ACP</a> è quello raccomandano da symfony) un <a href="http://it.wikipedia.org/wiki/Database_management_system">dbms</a> aggiornato.<br />
Insomma se avete un ambiente <a href="http://it.wikipedia.org/wiki/LAMP_%28piattaforma%29">lamp</a> tipico potete stare tranquilli. Per quando riguarda me, siccome sviluppo su mac ho usato <a href="http://www.mamp.info/en/index.html">mamp</a>, se invece sviluppate su windows potete usare <a href="http://www.apachefriends.org/en/xampp.html">xampp</a>, oppure se avete voglia e tempo da perdere potete installare tutto manualmente.</p>
<p>Ok se avete tutto il necessario (<em>compreso la colla vilinica</em>, che non ho menzionato ma mi sembrava banale che servisse&#8230;) potete scaricare il file di check che fornisce symfony per verificare se la vostra configurazione è ottimale.<span id="more-761"></span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>sf-to.org<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.4</span><span style="color: #000000; font-weight: bold;">/</span>check.php
$ php check_configuration.php</pre></div></div>

<p>Se nell&#8217;output non ci sono errori critici potete iniziare a sviluppare, in tutta tranquillità.</p>
<h2>~ Iniziamo! Ma con calma però&#8230;</h2>
<p>In questo esempio creeremo un piccolo progetto di nome <strong>photoBlog</strong>, dal nome si può intuire facilmente che svilupperemo un foto blog.<br />
Diamo per ben inteso che la directory d&#8217;esempio dove verrà inserito il progetto si trova in <strong>/htodcs</strong>. Ora che sappiamo tutte queste cose andiamo a scrivere un paio di comandi a caso nella shell.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>htdocs; <span style="color: #c20cb9; font-weight: bold;">mkdir</span> photo_blog
$ <span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.symfony-project.org<span style="color: #000000; font-weight: bold;">/</span>get<span style="color: #000000; font-weight: bold;">/</span>symfony-1.4.8.zip
$ <span style="color: #c20cb9; font-weight: bold;">unzip</span> symfony-1.4.8.zip; <span style="color: #c20cb9; font-weight: bold;">mv</span> symfony-1.4.8 symfony; <span style="color: #c20cb9; font-weight: bold;">rm</span> symfony-1.4.8.zip
$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> lib; <span style="color: #c20cb9; font-weight: bold;">mkdir</span> lib; <span style="color: #c20cb9; font-weight: bold;">mkdir</span> vendor; <span style="color: #c20cb9; font-weight: bold;">mv</span> symfony lib<span style="color: #000000; font-weight: bold;">/</span>vendor</pre></div></div>

<p>Ok spieghiamo in poche righe quello che abbiamo fatto.</p>
<ol>
<li> Abbiamo creato la cartelle del progetto, che abbiamo chiamato <em>photo_blog</em>;</li>
<li> Abbiamo scaricato symfony e l&#8217;abbiamo unzippata (istruzioni 2 e 3).</li>
<li> Infine abbiamo creato la cartella <em>lib/vendor</em> dove abbiamo inserito symfony unzippato.</li>
</ol>
<p><span style="color: #ff0000;"><em>Domanda lecita:</em></span></p>
<p style="padding-left: 30px;"><em>Perché symfony si trova in lib/vendor?</em><br />
Semplicemente per convenzione. Symfony potete sbatterlo dove vi pare in realtà.</p>
<p>Ok dopo aver &#8220;installato&#8221; correttamente tutto potete dare il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php lib<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>symfony<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>symfony <span style="color: #660033;">-V</span></pre></div></div>

<p>Se tutto è andato bene riceverete la versione di symfony ed il path d&#8217;installazione.<br />
Se invece di passare l&#8217;argomento <em>-V</em> lanciate soltanto <em>symfony</em> riceverete un help molto ben fornito e dettagliato che illustra grosso modo tutti i comandi di symfony.<br />
<em>Da notare che subito dopo il lancio di symfony non ci sarà più bisogno di inserire il path completo (lib/vendor/symfony&#8230; ecc) per richiamarlo di nuovo infatti, </em><em>basterà </em><em>soltanto scrivere &#8220;symfony&#8221; poiché viene creato un link al file originale all&#8217;interno della nostra root di progetto. Utile, una bestemmia in meno.</em></p>
<p>Dopo aver impostato per bene il luogo di lavoro sarebbe ora di aggiustare apache.<br />
Cercate il file httpd.conf (di solito dovrebbe essere in <em>/etc/httpd/</em>) e alla fine del file dove si trovano le configurazioni per i <a href="http://en.w ikipedia.org/wiki/Virtual_hosting">virtual host</a>, aggiungete questo:</p>
<pre># Assicurarsi di avere solo questa linea nella propria configurazione
NameVirtualHost 127.0.0.1:80

&lt;VirtualHost 127.0.0.1:80 &gt;
  ServerName photoblog.localhost
  DocumentRoot "/Applications/MAMP/htdocs/photo_blog/web"
  DirectoryIndex index.php
  &lt;Directory "/Applications/MAMP/htdocs/photo_blog/web"&gt;
    AllowOverride All
    Allow from All
  &lt;/Directory&gt;

  Alias /sf /Applications/MAMP/htdocs/photo_blog/lib/vendor/symfony/data/web/sf
  &lt;Directory "/Applications/MAMP/htdocs/photo_blog/lib/vendor/symfony/data/web/sf"&gt;
    AllowOverride All
    Allow from All
  &lt;/Directory&gt;
&lt;/VirtualHost&gt;</pre>
<p>Nella prima parte non abbiamo fatto altro che dire dove <em>ascoltare</em> per trovare il nostro alias al progetto (localhost in pratica), dopodiché abbiamo impostato tramite &lt;VirtualHost /&gt; la root del progetto e l&#8217;alias per raggiungerlo da browser (photoblog.localhost), infine abbiamo aggiunto come alias anche la cartella <em>sf</em> di symfony, che contiene le immagini standard per la visualizzazione dell&#8217;avvenuta installazione del framework.</p>
<p>La clausola <strong>ServerName</strong> per poter funzionare deve essere presente un riferimento anche nel file <strong><em>/etc/hosts</em></strong> (su windows non ricordo dove si trovi sinceramente), per cui vi basterà aggiungere all&#8217;interno di quel file:</p>
<pre>127.0.0.1 photoblog.localhost</pre>
<p>E tutto filerà liscio come l&#8217;olio.</p>
<p><strong>Nota:</strong> <em>Symfony diciamo che non è il massimo su dei server condivisi. Questo si denota anche dal fatto che per poterlo utilizzare dobbiamo poter smanettare su dei file di configurazioni critici come httpd.conf, per cui se vogliamo sfruttarlo a dovere dovremmo avere quanto meno un piano di hosting semidedicato.</em></p>
<h2>~ Iniziamo 2! Veramente stavolta.</h2>
<p>Ok, creariamo la struttura del nostro photoblog, quindi diamo un altro paio di comandi a caso sulla nostra cara shell:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ php symfony generate:project photo_blog
$ php symfony configure:database <span style="color: #ff0000;">&quot;mysql:host=127.0.0.1;dbname=photo_blog&quot;</span> root password
$ php symfony project:permissions
$ php symfony generate:app frontend
$ php symfony generate:module frontend home</pre></div></div>

<p>Benissimo, vediamo cosa è stato fatto passo, passo.</p>
<p>1. <strong>generate:project photo_blog</strong>: Molto intuitivo direi. Sbbiamo creato il nostro progetto. È con questo comando che viene creata la struttura gerarchica delle directory nella nostra root.<br />
2. <strong>configure:database</strong>: Anche questo intuitivo. Diamo i dati per accedere al nostro database.<br />
3. <strong>project:permissions</strong>: Mette a posto i permessi dei file, senza bisogno di farlo a mano. Utile anche questo, altra bestemmia in meno.<br />
4. <strong>generate:app frontend</strong>: Generiamo l&#8217;applicazione (se non vi ricordate cosa sono le applicazioni vedete gli <a href="http://www.jollychar.freehostingcloud.com/2011/01/03/appunti-su-symfony-parte-1/">appunti precedenti</a>) frontend (Di norma in un progetto symfony quest&#8217;applicazione viene creata per convenzione, come anche quella di backend, che vedremo più avanti).<br />
5. <strong>generate:module frontend home</strong>: Generiamo il modulo <em>home</em> che gestirà per l&#8217;appunto la nostra home, non preoccupiamoci dei nomi che diamo alle applicazioni, tutti gli URL potranno essere customizzati con il facile meccanismo di routing che fornisce symfony.</p>
<p>Bene, come potete vedere sono stati creati alcuni file a caso nelle vostre directory, ma vedremo nella prossima serie di appunti cosa sono e come gestirli. Nello specifico vi anticipo che vedremo come strutturare il nostro schema (schema.yml) concettuale (e quindi la creazione del nostro database) e come creare finalmente un maledetto hello world.</p>
<p>Alla prossima <img src='http://www.jollychar.freehostingcloud.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/08/appunti-su-symfony-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cheat sheet wordpress</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/06/cheat-sheet-wordpress/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/06/cheat-sheet-wordpress/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 22:09:25 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Risorse Utili]]></category>
		<category><![CDATA[Web Develop]]></category>
		<category><![CDATA[cheat sheet]]></category>
		<category><![CDATA[risorse]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=755</guid>
		<description><![CDATA[Per chi ha problemi di memoria, ecco un buon cheatsheet per wordpress. Ci sono più meno le cose che vengono utilizzate maggiormente nella programmazione su wp. Spero possa essere utile a molti! Il link lo trovate cliccando sull&#8217;immagine dell&#8217;articolo.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://f.cl.ly/items/0N2A2F1J0i0S2G1y0s1X/wordpress_cheatsheet.png"><img class="aligncenter" title="Cheat Sheet WordPress" src="http://f.cl.ly/items/0N2A2F1J0i0S2G1y0s1X/wordpress_cheatsheet.png" alt="Cheat Sheet WordPress" width="500" height="500" /></a></p>
<p>Per chi ha problemi di memoria, ecco un buon cheatsheet per wordpress. Ci sono più meno le cose che vengono utilizzate maggiormente nella programmazione su wp.<br />
Spero possa essere utile a molti!<br />
Il link lo trovate cliccando sull&#8217;immagine dell&#8217;articolo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/06/cheat-sheet-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snippet: Elenco file di un path specifico.</title>
		<link>http://www.jollychar.freehostingcloud.com/2011/01/05/snippet-elenco-file-di-un-path-specifico/</link>
		<comments>http://www.jollychar.freehostingcloud.com/2011/01/05/snippet-elenco-file-di-un-path-specifico/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 22:33:16 +0000</pubDate>
		<dc:creator>Dad</dc:creator>
				<category><![CDATA[Snippet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.jollychar.freehostingcloud.com/?p=745</guid>
		<description><![CDATA[Piccolo pezzo di codice che può aiutare in situazioni caotiche (quando non si sa più dove si è e cosa si fa). Non è uno script classico che si trova di solito nelle directory di script gratis, infatti in questo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="php5 snippet" src="http://www.webdesignmag.ca/wp-content/uploads/2009/07/php-snippet.jpg" alt="php5 codice snippet" width="200" height="200" /></p>
<p>Piccolo pezzo di codice che può aiutare in situazioni caotiche (quando non si sa più dove si è e cosa si fa).<br />
Non è uno script classico che si trova di solito nelle directory di script gratis, infatti in questo snippet si fa uso degli iteratori, new entry di php 5.<br />
Nello specifico utilizziamo <a href="http://php.net/manual/pt_BR/class.recursiveiteratoriterator.php">RecursiveIteratorIterator</a> e di <a href="http://www.php.net/manual/pt_BR/class.recursivedirectoryiterator.php">RecursiveDirectoryIterator</a>. Consiglio di consultare sempre la documentazione online di qualsiasi linguaggio, il più delle volte vi leverà dei dubbi e vi aiuterà nello sviluppo. Mai affidarsi al completamento automatico!<span id="more-745"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> RecursiveIteratorIterator<span style="color: #009900;">&#40;</span>
            <span style="color: #000000; font-weight: bold;">new</span> RecursiveDirectoryIterator<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PATH'</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$file</span> <span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jollychar.freehostingcloud.com/2011/01/05/snippet-elenco-file-di-un-path-specifico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

