<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ok, panico</title>
	<atom:link href="http://okpanico.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://okpanico.wordpress.com</link>
	<description>Insalate di cibernetica</description>
	<lastBuildDate>Fri, 24 May 2013 13:49:15 +0000</lastBuildDate>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='okpanico.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ok, panico</title>
		<link>http://okpanico.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://okpanico.wordpress.com/osd.xml" title="Ok, panico" />
	<atom:link rel='hub' href='http://okpanico.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Sul FORTRAN di EWD</title>
		<link>http://okpanico.wordpress.com/2013/05/24/sul-fortran-di-ewd/</link>
		<comments>http://okpanico.wordpress.com/2013/05/24/sul-fortran-di-ewd/#comments</comments>
		<pubDate>Fri, 24 May 2013 08:23:52 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[Linguaggi]]></category>
		<category><![CDATA[Storielle]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7206</guid>
		<description><![CDATA[A seguito del post su Dijkstra  e di un paio di telefonate mi è venuta voglia di farvi vedere com&#8217;era il codice quando ho iniziato a lavorarci io. In realtà sto barando: con il Fortran 77 l&#8217;if era ormai multilinea, come if/then/else ma i vecchi (di allora) continuavano a usare il IV e lo imponevano. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7206&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-thumbnail wp-image-7207" alt="f0" src="http://okpanico.files.wordpress.com/2013/05/f0.jpeg?w=150&#038;h=142" width="150" height="142" />A seguito del <a href="http://okpanico.wordpress.com/2013/05/23/ewd1284/" target="_blank">post su Dijkstra</a>  e di un paio di telefonate mi è venuta voglia di farvi vedere com&#8217;era il codice quando ho iniziato a lavorarci io. In realtà sto barando: con il Fortran 77 l&#8217;<strong><code>if</code></strong> era ormai multilinea, come <strong><code>if/then/else</code></strong> ma i vecchi (di allora) continuavano a usare il IV e lo imponevano.</p>
<p><img class="aligncenter size-full wp-image-7208" alt="Sieve_of_Eratosthenes_animation" src="http://okpanico.files.wordpress.com/2013/05/sieve_of_eratosthenes_animation.gif?w=530"   /></p>
<p>L&#8217;immagine che illustra il crivello di Eratostene che in questi giorni circola su G+ (<del>credo sia di</del> <strong><del>John Baez</del> Skopp</strong> (vedi commento, grazie Annarita!)) è l&#8217;ideale per implementare un programmino nel Fortran delle origini. Eccolo<br />
<!-- HTML generated using hilite.me --></p>
<div style="background:#ffffff;overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<table>
<tbody>
<tr>
<td>
<pre style="margin:0;line-height:125%;"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39</pre>
</td>
<td>
<pre style="margin:0;line-height:125%;"><span style="color:#906030;">C</span>     <span style="color:#906030;">ERAHOSTHENES</span>

      <span style="color:#008000;font-weight:bold;">DIMENSION </span><span style="color:#906030;">NUMERI</span>(<span style="color:#0000d0;font-weight:bold;">20</span>), <span style="color:#906030;">LPRIMI</span>(<span style="color:#0000d0;font-weight:bold;">10</span>)

<span style="color:#906030;">C</span>     <span style="color:#906030;">NUMERI</span> <span style="color:#906030;">CONTIENE</span> <span style="color:#906030;">I</span> <span style="color:#906030;">NUMERI</span> <span style="color:#906030;">CHE</span> <span style="color:#906030;">POSSONO</span> <span style="color:#906030;">ESSERE</span> <span style="color:#906030;">PRIMI</span>  
      <span style="color:#008000;font-weight:bold;">DO </span><span style="color:#0000d0;font-weight:bold;">10</span>, <span style="color:#906030;">I</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">1</span>, <span style="color:#0000d0;font-weight:bold;">20</span>
<span style="color:#0000d0;font-weight:bold;">10</span>    <span style="color:#906030;">NUMERI</span>(<span style="color:#906030;">I</span>) <span style="color:#303030;">=</span> <span style="color:#906030;">I</span>
      <span style="color:#906030;">NUMERI</span>(<span style="color:#0000d0;font-weight:bold;">1</span>) <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">0</span>  

<span style="color:#906030;">C</span>     <span style="color:#906030;">NPRIMI</span> <span style="color:#303030;">=</span> <span style="color:#906030;">IL</span> <span style="color:#906030;">NUMERO</span> <span style="color:#906030;">DI</span> <span style="color:#906030;">PRIMI</span> <span style="color:#906030;">TROVATI</span>
      <span style="color:#906030;">NPRIMI</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">0</span>
      <span style="color:#906030;">NTROV</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">2</span>

<span style="color:#906030;">C</span>     <span style="color:#906030;">QUANDO</span> <span style="color:#906030;">NE</span> <span style="color:#906030;">TROVO</span> <span style="color:#906030;">UNO</span> <span style="color:#906030;">LO</span> <span style="color:#906030;">AGGIUNGO</span> <span style="color:#906030;">ALLA</span> <span style="color:#906030;">LISTA</span> <span style="color:#906030;">DEI</span> <span style="color:#906030;">PRIMI</span>
<span style="color:#0000d0;font-weight:bold;">20</span>    <span style="color:#906030;">NPRIMI</span> <span style="color:#303030;">=</span> <span style="color:#906030;">NPRIMI</span> <span style="color:#303030;">+</span> <span style="color:#0000d0;font-weight:bold;">1</span>
      <span style="color:#906030;">LPRIMI</span>(<span style="color:#906030;">NPRIMI</span>) <span style="color:#303030;">=</span> <span style="color:#906030;">NTROV</span>

<span style="color:#906030;">C</span>     <span style="color:#906030;">ELIMINO</span> <span style="color:#906030;">I</span> <span style="color:#906030;">SUOI</span> <span style="color:#906030;">MULTIPLI</span> <span style="color:#906030;">NELLA</span> <span style="color:#906030;">LISTA</span> <span style="color:#906030;">DEI</span> <span style="color:#906030;">NUMERI</span>
      <span style="color:#906030;">J</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">1</span> 
<span style="color:#0000d0;font-weight:bold;">30</span>    <span style="color:#906030;">J</span> <span style="color:#303030;">=</span> <span style="color:#906030;">J</span> <span style="color:#303030;">+</span> <span style="color:#0000d0;font-weight:bold;">1</span>
      <span style="color:#906030;">NT</span> <span style="color:#303030;">=</span> <span style="color:#906030;">NTROV</span> <span style="color:#303030;">*</span> <span style="color:#906030;">J</span>
      <span style="color:#008000;font-weight:bold;">IF</span>(<span style="color:#906030;">NT</span> <span style="color:#000000;font-weight:bold;">.GT.</span> <span style="color:#0000d0;font-weight:bold;">20</span>) <span style="color:#008000;font-weight:bold;">GOTO </span><span style="color:#0000d0;font-weight:bold;">40</span>
      <span style="color:#906030;">NUMERI</span>(<span style="color:#906030;">NT</span>) <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">0</span>
      <span style="color:#008000;font-weight:bold;">GOTO </span><span style="color:#0000d0;font-weight:bold;">30</span>

<span style="color:#906030;">C</span>     <span style="color:#906030;">PASSO</span> <span style="color:#007020;">ALL </span><span style="color:#906030;">ESAME</span> <span style="color:#906030;">DEL</span> <span style="color:#906030;">CANDIDATO</span> <span style="color:#906030;">SUCCESSIVO</span>
<span style="color:#0000d0;font-weight:bold;">40</span>    <span style="color:#906030;">N</span> <span style="color:#303030;">=</span> <span style="color:#906030;">NTROV</span>
<span style="color:#0000d0;font-weight:bold;">41</span>    <span style="color:#906030;">N</span> <span style="color:#303030;">=</span> <span style="color:#906030;">N</span> <span style="color:#303030;">+</span> <span style="color:#0000d0;font-weight:bold;">1</span>
      <span style="color:#008000;font-weight:bold;">IF</span>(<span style="color:#906030;">N</span> <span style="color:#000000;font-weight:bold;">.GT.</span> <span style="color:#0000d0;font-weight:bold;">20</span>) <span style="color:#008000;font-weight:bold;">GOTO </span><span style="color:#0000d0;font-weight:bold;">60</span>
      <span style="color:#008000;font-weight:bold;">IF</span>(<span style="color:#906030;">NUMERI</span>(<span style="color:#906030;">N</span>) <span style="color:#000000;font-weight:bold;">.EQ.</span><span style="color:#0000d0;font-weight:bold;">0</span>) <span style="color:#008000;font-weight:bold;">GOTO </span><span style="color:#0000d0;font-weight:bold;">41</span>
<span style="color:#0000d0;font-weight:bold;">50</span>    <span style="color:#906030;">NTROV</span> <span style="color:#303030;">=</span> <span style="color:#906030;">N</span>
      <span style="color:#008000;font-weight:bold;">GOTO </span><span style="color:#0000d0;font-weight:bold;">20</span>

<span style="color:#906030;">C</span>     <span style="color:#906030;">FINE</span> <span style="color:#906030;">DELL</span> <span style="color:#906030;">ESAME</span> <span style="color:#906030;">DELLA</span> <span style="color:#906030;">LISTA</span>
<span style="color:#0000d0;font-weight:bold;">60</span>    <span style="color:#008000;font-weight:bold;">DO </span><span style="color:#0000d0;font-weight:bold;">65</span> <span style="color:#906030;">I</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">1</span>, <span style="color:#906030;">NPRIMI</span>
<span style="color:#0000d0;font-weight:bold;">65</span>    <span style="color:#008000;font-weight:bold;">WRITE</span>(<span style="color:#303030;">*</span>, <span style="color:#0000d0;font-weight:bold;">90</span>) <span style="color:#906030;">I</span>, <span style="color:#906030;">LPRIMI</span>(<span style="color:#906030;">I</span>)
<span style="color:#0000d0;font-weight:bold;">90</span>    <span style="color:#008000;font-weight:bold;">FORMAT</span>(<span style="color:#0000d0;font-weight:bold;">2</span><span style="color:#906030;">I4</span>)

      <span style="color:#008000;font-weight:bold;">END</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><img class="aligncenter size-full wp-image-7209" alt="ERAT" src="http://okpanico.files.wordpress.com/2013/05/erat.png?w=530"   /></p>
<p>Nello spirito del tempo ho scritto tutto in maiuscolo <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Però non ce l&#8217;ho fatta a non lasciare spazi: allora si sarebbe scritto tutto come <strong><code>J = J + 1</code></strong>. E un&#8217;altra cosa ancora: la riga a cui l&#8217;esecuzine saltava a seguito di un GOTO era tipicamente del tipo:</p>
<p><strong><code>50    CONTINUE</code></strong></p>
<p>essendo quest&#8217;istruzione segnaposto fatta proprio apposta per questo. Ma il mio programma sarebbe diventato troppo lungo, inutilmente.<br />
Un&#8217;altra cosa: è quasi immediata l&#8217;ottimizzazione considerando che 2 è l&#8217;unico primo pari, dimezzando il numero di numeri da testare ma il codice si allunga, lasciato come esercizio.</p>
<p>Ecco, allora si programmava così. Non ho più il libro ma nel testo che si usava al Poli c&#8217;era scritto: &#8220;<em>finito di perforare le schede fai una stampa del listato e controllala attentamente prima di provare l&#8217;esecuzione</em>&#8220;, vero anche perché a me al primo tentativo è successo questo:</p>
<p><img class="aligncenter size-full wp-image-7210" alt="0" src="http://okpanico.files.wordpress.com/2013/05/0.png?w=530&#038;h=201" width="530" height="201" /></p>
<p>Avevo sbagliato il numero di una label.<br />
Bon! <strong><code>Nostalgia OFF</code></strong>! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/fortran/'>Fortran</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/'>Linguaggi</a>, <a href='http://okpanico.wordpress.com/category/storielle/'>Storielle</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7206&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/24/sul-fortran-di-ewd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/f0.jpeg?w=150" medium="image">
			<media:title type="html">f0</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/sieve_of_eratosthenes_animation.gif" medium="image">
			<media:title type="html">Sieve_of_Eratosthenes_animation</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/erat.png" medium="image">
			<media:title type="html">ERAT</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/0.png" medium="image" />
	</item>
		<item>
		<title>A proposito di Fibonacci&#8230;</title>
		<link>http://okpanico.wordpress.com/2013/05/23/a-proposito-di-fibonacci/</link>
		<comments>http://okpanico.wordpress.com/2013/05/23/a-proposito-di-fibonacci/#comments</comments>
		<pubDate>Thu, 23 May 2013 09:11:48 +0000</pubDate>
		<dc:creator>robitex</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[Fibonacci]]></category>
		<category><![CDATA[first class function]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[lang]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7201</guid>
		<description><![CDATA[Sommario La semplice funzione per generare la serie di Fibonacci può essere scritta in Go sfruttando le closure. Fibonacci Ne abbiamo parlato nel post precedente, ma la sequenza di Fibonacci ha ancora qualcosa da farci scoprire, almeno dal punto di vista del linguaggio di programmazione Go. Avevano scritto la funzione che calcola l&#8217;ennesimo numero della [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7201&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>Sommario</h3>
<p>La semplice funzione per generare la serie di Fibonacci può essere scritta in Go sfruttando le closure.</p>
<h3>Fibonacci</h3>
<p>Ne abbiamo parlato nel post precedente, ma la <a href="http://it.wikipedia.org/wiki/Successione_di_Fibonacci">sequenza di Fibonacci</a> ha ancora qualcosa da farci scoprire, almeno dal punto di vista del linguaggio di programmazione <a href="golang.org">Go</a>.</p>
<p>Avevano scritto la funzione che calcola l&#8217;ennesimo numero della serie a partire dalla definizione della serie: il numero successivo è la somma dei due numeri precedenti. Il codice è quindi il seguente:</p>
<pre class="brush: plain; title: ; notranslate">
package main

// ennesimo numero della serie di Fibonacci
func fibonacci(n int) int {
    var a, b int = 0, 1
    for i := 0; i &lt; n-1; i++ {
        a, b = b, a+b
    }
    return a
}

func main() {
    for i := 1; i &lt; 10; i++ {
        print(fibonacci(i), &quot; &quot;)
    }
    println()
}
</pre>
<h3>Funzioni di prima classe</h3>
<p>Quando le funzioni sono tipi di prima classe possono essere trattate come valori, dunque possono essere assegnate a variabili e restituite da una funzione.<br />
Questa prerogativa dei linguaggi funzionali è presente in Lua ed anche in Go (quello che diremo vale indifferentemente per i due linguaggi). Per fare un esempio in Go, assegnamo una funzione ad una variabile per il calcolo della somma degli argomenti interi (ricordo che per provare il codice possiamo utilizzare il comodo servizio web <a href="http://play.golang.org/">Playground</a>:</p>
<pre class="brush: plain; title: ; notranslate">
package main

func main() {
    add := func(a, b int) int {
        return a + b
    }
    println(add(4,5))
}
</pre>
<p>Assegnare una funzione ad una variabile significa creare una funzione anonima (senza nome) ma, rispetto alla definizione diretta, cambia solamente la semantica/sintassi del linguaggio ma non il risultato che è esattamente equivalente.</p>
<p>Un esempio con una funzione <em>factory</em> è il seguente dove rispetto ad un simbolo passato come argomento, una funzione restituisce la funzione dell&#8217;operazione corrispondente:</p>
<pre class="brush: plain; title: ; notranslate">
package main

func operation(op string) func(int, int) int {
    switch op {
    case &quot;+&quot;:
        return func(a, b int) int {
            return a + b
        }
    case &quot;-&quot;:
        return func(a, b int) int {
            return a - b
        }
    case &quot;*&quot;:
        return func(a, b int) int {
            return a * b
        }
    case &quot;/&quot;:
        return func(a, b int) int {
            return a / b
        }
    default:
        return nil
    }
}

func main() {
    add := operation(&quot;+&quot;)
    println(add(4, 5))
    molt := operation(&quot;*&quot;)
    println(molt(4, 5))
}
</pre>
<h3>Closure</h3>
<p>Quando una funzione di prima classe ha accesso alle variabili locali, le variabili che appartengono allo stesso scopo della funzione, viene chiamata <em>closure</em>.</p>
<p>Tornando a Fibonacci, poiché sono necessari due valori iniziali di <em>innesco</em> della serie, possiamo esprimerli con variabili locali di una closure:</p>
<pre class="brush: plain; title: ; notranslate">
package main

// fibonacci is a function that returns
// a function that returns an int
func fibonacci() func() int {
    a, b := 1, 0
    return func() int {
        a, b = b, a + b
        return a
    }
}

func main() {
    f := fibonacci()
    for i := 0; i &lt; 10; i++ {
        println(f())
    }
}
</pre>
<p>Le variabili <em>a</em> e <em>b</em> interne alla funzione <em>fibonacci()</em> sono variabili che possono essere lette e scritte dalla funzione anonima, verificando il concetto di funzione closure.<br />
A questo punto possiamo anche creare funzioni di Fibonacci a piacere definendo di volta in volta i primi due numeri della sequenza:</p>
<pre class="brush: plain; title: ; notranslate">
package main

// fibonacci is a function that returns
// a function that returns an int
func fibonacci(n1, n2 int) func() int {
    return func() int {
        n1, n2 = n2, n1 + n2
        return n1
    }
}

func main() {
    f1 := fibonacci(1, 0)
    for i := 0; i &lt; 10; i++ {
        println(f1())
    }
    println()
    f2 := fibonacci(50, 17)
    for i := 0; i &lt; 10; i++ {
        println(f2())
    }
}
</pre>
<h3>Ed in Lua?</h3>
<pre class="brush: plain; title: ; notranslate">
-- Lua version : - )
 
-- fibonacci is a function that returns
-- a function that returns an int
function fibonacci(n1, n2)
    return function()
        n1, n2 = n2, n1 + n2
        return n1
        end
end
 
f1 = fibonacci(1, 0)
for i=1,10 do
    print(f1())
end

print()
f2 = fibonacci(50, 17)
for i=1,10 do
    print(f2())
end
</pre>
<p>Insomma possiamo dire che i progettisti del Go hanno studiato in modo approfondito anche Lua e Python. O no? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Alla prossima&#8230;<br />
Un saluto.<br />
R.</p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/go/'>Go</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/lua/'>Lua</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7201&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/23/a-proposito-di-fibonacci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bbaa8836bec0db28a94a014c040253e4?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">robitex</media:title>
		</media:content>
	</item>
		<item>
		<title>EWD1284</title>
		<link>http://okpanico.wordpress.com/2013/05/23/ewd1284/</link>
		<comments>http://okpanico.wordpress.com/2013/05/23/ewd1284/#comments</comments>
		<pubDate>Thu, 23 May 2013 07:28:23 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Linguaggi]]></category>
		<category><![CDATA[Storielle]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7194</guid>
		<description><![CDATA[Twitter è meraviglioso! Lì trovi delle dritte, dei suggerimenti che non trovi in nessun altro social-coso. Perché forse lo sapete già che io sono relegato qui in fondo alla West Padagna. Prendi per esempio Robert Smith, un vecchio matematico e lispista noto come Symbo1ics Ideas. L&#8217;altro giorno ha twittato questo: L&#8217;URL è relativa a un [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7194&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>Twitter</strong> è meraviglioso! Lì trovi delle dritte, dei suggerimenti che non trovi in nessun altro social-coso. Perché forse lo sapete già che io sono relegato qui in fondo alla West Padagna. Prendi per esempio Robert Smith, un <em>vecchio</em> matematico e lispista noto come <a href="https://twitter.com/Symbo1ics" target="_blank">Symbo1ics Ideas</a>.</p>
<p>L&#8217;altro giorno ha twittato questo:</p>
<p><img class="aligncenter size-full wp-image-7195" alt="ewd" src="http://okpanico.files.wordpress.com/2013/05/ewd.png?w=530"   />L&#8217;URL è relativa a un pezzo del solito <strong>E.W. Dijkstra</strong>, in particolare <a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/EWD1284.html" target="_blank">Computing Science: Achievements and Challenges</a>  dove ci sono tante idee. Roba che letto alla sera sul Kindle mi ha fornito incubi per tutta la notte.</p>
<p>OK, è vecchio, diciamo sui 15 anni, e racconta di cose ancora più vecchie, più di 60 anni. Parla dei primi linguaggi di programmazione: FORTRAN, LISP e ALGOL 60. E altre cose ancora, leggetelo.</p>
<p>Ora sono pochi i linguaggi attuali che non abbiano tracce di Algol nel loro DNA. Sul Lisp ci sarebbero troppe cose da dire (e di solito scappano tutti quando ne parlo) ma quello che mi ha colpito è il Fortran, io sono|ero un fortrainer.<br />
I giovani danno per scontato che certe cose ci siano sempre state: falso! Anche cose semplici sono state grandi conquiste, per dirne una chi oggi perderebbe tempo per scrivere una funzione per l&#8217;ordinamento di un array?<br />
Ma ci sono di mezzo anche le persone, gli umani con le loro convinzioni.</p>
<p>Tornando al Fortran questo aveva ambizioni molto limitate: velocizzare calcoli che fatti a mano avrebbero richiesto troppo tempo: un sistema di 3 equazioni in 3 incognite si risolve al volo, con 4 diventa impegnativo e poi se il numero aumenta come certe volte è richiesto molto oneroso. La macchina lo fa al volo (quasi, ma allora sembrava così). Ah! sì, le moltiplicazioni e le divisioni si facevano con il regolo (io so ancora usarlo).<br />
Però con il Fortran non potevi fare tutto. E qui EWD racconta:</p>
<blockquote><p>During an oral examination I had a student develop a program which we would now recognize as implementing pointer manipulations using a one-dimensional array. The candidate did very well until at the very end he got mysteriously stuck, neither of us understanding why. It turned out that he should have written down &#8220;a[a[i]]:= &#8230;.&#8221; but that mental block prevented him from conceiving that because FORTRAN (to which he had been exposed extensively) did not allow index expressions as complicated as &#8220;a[i]&#8220;. It was a revealing warning of the devious influence the tools we use may have on our thinking habits.</p></blockquote>
<p>Ecco, anch&#8217;io mi sono bloccato su questo. Tant&#8217;è vero che voglio vedere cosa si può fare con 60 anni di ritardo e, purtroppo, senza il compilatore di allora.</p>
<div style="background:#ffffff;overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<table>
<tbody>
<tr>
<td>
<pre style="margin:0;line-height:125%;"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15</pre>
</td>
<td>
<pre style="margin:0;line-height:125%;"><span style="color:#008000;font-weight:bold;">program </span><span style="color:#906030;">edw0</span>

<span style="color:#008000;font-weight:bold;">implicit none</span>
<span style="color:#303090;font-weight:bold;">integer</span> <span style="color:#008000;font-weight:bold;">::</span> <span style="color:#906030;">i</span>, <span style="color:#906030;">a</span>(<span style="color:#0000d0;font-weight:bold;">10</span>) <span style="color:#303030;">=</span> <span style="color:#f00000;background-color:#f0a0a0;">[</span><span style="color:#0000d0;font-weight:bold;">3</span>, <span style="color:#0000d0;font-weight:bold;">4</span>, <span style="color:#0000d0;font-weight:bold;">5</span>, <span style="color:#0000d0;font-weight:bold;">6</span>, <span style="color:#0000d0;font-weight:bold;">7</span>, <span style="color:#0000d0;font-weight:bold;">8</span>, <span style="color:#0000d0;font-weight:bold;">9</span>, <span style="color:#0000d0;font-weight:bold;">10</span>, <span style="color:#0000d0;font-weight:bold;">1</span>, <span style="color:#0000d0;font-weight:bold;">2</span><span style="color:#f00000;background-color:#f0a0a0;">]</span>

<span style="color:#008000;font-weight:bold;">print</span> <span style="color:#303030;">*</span>, <span style="background-color:#fff0f0;">'inizio'</span>
<span style="color:#008000;font-weight:bold;">print</span> <span style="background-color:#fff0f0;">'(10i3/)'</span>, <span style="color:#906030;">a</span>

<span style="color:#906030;">i</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">5</span>
<span style="color:#906030;">a</span>(<span style="color:#906030;">a</span>(<span style="color:#906030;">i</span>)) <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">42</span>

<span style="color:#008000;font-weight:bold;">print</span> <span style="color:#303030;">*</span>, <span style="background-color:#fff0f0;">'dopo'</span>
<span style="color:#008000;font-weight:bold;">print</span> <span style="background-color:#fff0f0;">'(10i3/)'</span>, <span style="color:#906030;">a</span>

<span style="color:#008000;font-weight:bold;">end</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><img class="aligncenter size-full wp-image-7197" alt="p0" src="http://okpanico.files.wordpress.com/2013/05/p0.png?w=530"   /></p>
<p>OK, funziona, come pensavo. C&#8217;è stata un&#8217;evoluzione anche nei compilatori.<br />
Il problema piuttosto è un altro con questi pseudo-puntatori:</p>
<div style="background:#ffffff;overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<table>
<tbody>
<tr>
<td>
<pre style="margin:0;line-height:125%;"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16</pre>
</td>
<td>
<pre style="margin:0;line-height:125%;"><span style="color:#008000;font-weight:bold;">program </span><span style="color:#906030;">edw1</span>

<span style="color:#008000;font-weight:bold;">implicit none</span>
<span style="color:#303090;font-weight:bold;">integer</span> <span style="color:#008000;font-weight:bold;">::</span> <span style="color:#906030;">i</span>, <span style="color:#906030;">j</span>, <span style="color:#906030;">a</span>(<span style="color:#0000d0;font-weight:bold;">10</span>) <span style="color:#303030;">=</span> <span style="color:#f00000;background-color:#f0a0a0;">[</span><span style="color:#0000d0;font-weight:bold;">3</span>, <span style="color:#0000d0;font-weight:bold;">4</span>, <span style="color:#0000d0;font-weight:bold;">5</span>, <span style="color:#0000d0;font-weight:bold;">6</span>, <span style="color:#0000d0;font-weight:bold;">7</span>, <span style="color:#0000d0;font-weight:bold;">8</span>, <span style="color:#0000d0;font-weight:bold;">9</span>, <span style="color:#0000d0;font-weight:bold;">42</span>, <span style="color:#0000d0;font-weight:bold;">1</span>, <span style="color:#0000d0;font-weight:bold;">2</span><span style="color:#f00000;background-color:#f0a0a0;">]</span>

<span style="color:#008000;font-weight:bold;">print</span> <span style="color:#303030;">*</span>, <span style="background-color:#fff0f0;">'inizio'</span>
<span style="color:#008000;font-weight:bold;">print</span> <span style="background-color:#fff0f0;">'(10i3/)'</span>, <span style="color:#906030;">a</span>

<span style="color:#906030;">i</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">2</span>
<span style="color:#906030;">j</span> <span style="color:#303030;">=</span> <span style="color:#0000d0;font-weight:bold;">8</span>
<span style="color:#906030;">a</span>(<span style="color:#906030;">a</span>(<span style="color:#906030;">i</span>)) <span style="color:#303030;">=</span> <span style="color:#906030;">a</span>(<span style="color:#906030;">a</span>(<span style="color:#906030;">j</span>))

<span style="color:#008000;font-weight:bold;">print</span> <span style="color:#303030;">*</span>, <span style="background-color:#fff0f0;">'dopo'</span>
<span style="color:#008000;font-weight:bold;">print</span> <span style="background-color:#fff0f0;">'(10i3/)'</span>, <span style="color:#906030;">a</span>

<span style="color:#008000;font-weight:bold;">end</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><img class="aligncenter size-full wp-image-7198" alt="p1" src="http://okpanico.files.wordpress.com/2013/05/p1.png?w=530"   /></p>
<p>Notare come il quarto elemento dell&#8217;array sia <strong>0</strong>, se il programma fosse più complesso probabilmente avremmo un valore casuale. Inoltre questo tipo di errori logici non vengono rilevati dal compilatore. Si sa i pointers sono delle brutte bestie, in Fortran non c&#8217;erano ma questo caso era tipico dei COMMON.</p>
<p>I vecchi direbbero subito che questo non è Fortran, non si scriveva così non solo nel IV ma nemmeno nel 77.<br />
Ma intanto oggi quello che si faceva con il Fortran si fa con altre cose, per esempio Python.</p>
<p>OK, posso smettere quando voglio <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/'>Linguaggi</a>, <a href='http://okpanico.wordpress.com/category/storielle/'>Storielle</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7194&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/23/ewd1284/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/ewd.png" medium="image">
			<media:title type="html">ewd</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/p0.png" medium="image">
			<media:title type="html">p0</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/p1.png" medium="image">
			<media:title type="html">p1</media:title>
		</media:content>
	</item>
		<item>
		<title>Go Fibonacci!</title>
		<link>http://okpanico.wordpress.com/2013/05/22/go-fibonacci/</link>
		<comments>http://okpanico.wordpress.com/2013/05/22/go-fibonacci/#comments</comments>
		<pubDate>Wed, 22 May 2013 06:16:50 +0000</pubDate>
		<dc:creator>robitex</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[Programmazione concorrente]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[goroutine]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[robert pike]]></category>
		<category><![CDATA[serie di fibonacci]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7191</guid>
		<description><![CDATA[Sommario Creeremo un programma per la generazione dei numeri di Fibonacci per poi entrare nel campo dell&#8217;esecuzione concorrente in Go. Fibonacci La sequenza di Fibonacci si genera sommando i precendenti due numeri della serie. Questa regola necessita di definire i primi due numeri e questi sono semplicemente assunti pari a 0 ed 1. In Go [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7191&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>Sommario</h3>
<p>Creeremo un programma per la generazione dei numeri di Fibonacci per poi entrare nel campo dell&#8217;esecuzione concorrente in Go.</p>
<h3>Fibonacci</h3>
<p>La <a href="http://it.wikipedia.org/wiki/Successione_di_Fibonacci">sequenza di Fibonacci</a> si genera sommando i precendenti due numeri della serie. Questa regola necessita di definire i primi due numeri e questi sono semplicemente assunti pari a 0 ed 1.<br />
In <a href="golang.org">Go</a> il calcolo dell&#8217;ennesimo numero della sequenza può essere ottenuto con il codice seguente sfruttando direttamente la definizione della serie e l&#8217;assegnazione multipla (linea 8) tra l&#8217;altro disponibile anche nei linguaggi Lua e Python:</p>
<pre class="brush: plain; title: ; notranslate">
package main

// trova l'ennesimo numero della serie
// di Fibonacci
func fibonacci(n int) int {
    var a, b int = 0, 1
    for i := 0; i &lt; n-1; i++ {
        a, b = b, a+b
    }
    return a
}

func main() {
    for i := 1; i &lt; 10; i++ {
        print(fibonacci(i), &quot; &quot;)
    }
    println()
}
</pre>
<h3>Calcoli indipendenti</h3>
<p>Il supporto alla programmazione concorrente del Go è probabilmente &#8212; in un mondo multiprocessore &#8212; la principale caratteristica per la sua diffusione, e pensare che nel linguaggio vi sono pochissimi costrutti sintattici per implementarla (caso mai la semplicità fosse un vantaggio).<br />
Li abbiamo visti già tutti all&#8217;opera su <a href="http://okpanico.wordpress.com/category/linguaggi/go/">Ok, panico!</a>, grazie ai post di Juhan <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>Come forse avrete intuito, proveremo a calcolare molti numeri di Fibonacci in modo <strong>indipendente</strong>. Questa parola è importante perché la programmazione concorrente non è altro che un insieme di esecuzioni che si svolgono indipendentemente una dall&#8217;altra &#8212; <a href="http://blog.golang.org/2013/01/concurrency-is-not-parallelism.html">come sottolinea Robert Pike</a>. La distinzione è dovuta al fatto che ci si può sbagliare usando per questa modalità di esecuzione il termine <strong>parallelismo</strong>, che invece indica un insieme di esecuzioni che avvengono <em>contemporamente</em>. Nei moderni pc multicore, l&#8217;esecuzione concorrente può avvicinarsi al parallelismo.</p>
<h3>Fibonacci independente</h3>
<p>Un semplice schema per l&#8217;esecuzione concorrente di più funzioni di Fibonacci, è quello di avviarne l&#8217;esecuzione in una <em>goroutine</em> ed attenderne in quella principale i risultati provenienti da un canale.</p>
<p>Ecco il codice in cui si deve intendere che la funzione mancante <em>fibonacci()</em> sia quella del listato precedente:</p>
<pre class="brush: plain; title: ; notranslate">
func fibonacci(n int) int64 {
    // as before with int64 return value
}

var num = []int{50, 36, 80, 93, 66}

func main() {
    ans := make(chan int, len(num)) // buffered channel
    for _, f := range num {
        go func(f int) {
            ans &lt;- fibonacci(f)
        }(f)
    }
    
    // stampo i risultati provenienti dal canale
    for i := 0; i &lt; len(num); i++ {
        fib := &lt;-ans
        fmt.Printf(&quot;Fibonacci(%d)=%d\n&quot;, num[i], fib)
    }
}
</pre>
<p>Nella funzione main() dopo aver creato un canale, avviamo tante goroutine quanti sono i numeri della serie da calcolare iterando sugli elementi di uno slice (num). Al termine del ciclo avremo nel nostro caso 5 goroutine in esecuzione indipendente da quella principale.<br />
La prima <em>diversità</em> dalla programmazione classica è che l&#8217;istruzione <em>go</em> avvia una nuova linea di esecuzione senza attendere che questa termini. Quasi immediatamente raggiungiamo quindi il secondo ciclo <em>for</em> che preleva in sequenza i dati dal canale.</p>
<p>Questo schema è piuttosto semplice. Non conosciamo l&#8217;ordine con cui i dati arrivano e dobbiamo ricordarci che l&#8217;istruzione</p>
<pre class="brush: plain; title: ; notranslate">
        fib := &lt;-ans
</pre>
<p>comporta il blocco dell&#8217;esecuzione della goroutine principale (quella in cui gira la funzione main()), che attende fino all&#8217;arrivo di un dato, assicurandoci che vengano attesi cinque valori dal canale altrimenti la funzione main() terminerà prima che le goroutine di calcolo abbiano portato a termine il lavoro.<br />
La goroutine infatti non sanno niente di quello che stanno facendo le altre eventuali goroutine in esecuzione e se main() termina, termineranno forzatamente tutte.<br />
Dal punto di vista della singola goroutine al termine del calcolo l&#8217;invio sul canale del risultato è immediato, essendo questo dotato di capacità pari al numero dei risultati che vi saranno inviati (buffered channel), altrimenti essa avrebbe dovuto attendere che la gorountine main() fosse pronta a ricevere un dato (sincronizzazione del mandante con il ricevente).</p>
<p>Per capire la concorrenza in Go conviene quindi immaginare il funzionamento delle cose in modo dinamico tenendo conto del blocco o meno dell&#8217;invio o della ricezione dei dati dai canali.</p>
<h3>Prestazioni</h3>
<p>Ho fatto alcune prove variando la quantità dei numeri da calcolare. Sulla mia macchina Linux dotata di un processore con un unico core, le prestazioni migliorano solo di alcuni punti percentuali, ed addirittura peggiorano quando crescono i numeri da calcolare in num.<br />
Evidentemente il costo per la creazione delle goroutine &#8212; sia pure piccolo &#8212; non è compensato su una macchina ad un unico core da vantaggi particolari.<br />
Oltre a capire sperimentando il codice, quello che importa adesso non sono le prestazioni ma che occorre considerare con precisione la natura del problema per poter scegliere o meno una soluzione <em>a calcolo indipentente</em>.</p>
<p>Si tratta di un argomento affascinante!</p>
<h3>Difetto</h3>
<p>Il codice precedente ha un difetto: è necessario attendere che tutte le goroutine siano state create e lanciate prima di passare a raccogliere i risultati. Per esempio se per creare una goroutine accorresse 1 millisecondo e ciascuna mediamente richiedesse 50ms di esecuzione concorrente, allora i risultati dovrebbero attendere stipati nel canale se le goroutine fossero circa più di 50.</p>
<p>La soluzione è quella di inserire il ciclo di creazione delle goroutine esso stesso all&#8217;interno di una goroutine:</p>
<pre class="brush: plain; title: ; notranslate">
func main() {
    // Use all the machine's cores
    runtime.GOMAXPROCS(runtime.NumCPU()) 
    res := make(chan int64)
    
    go func() {
        for _, f := range num {
            go func(f int) {
                res &lt;- fibonacci(f)
            }(f)
        }
    }()
    
    for i := 0; i &lt; len(num); i++ {
        &lt;-res
    }
}
</pre>
<h3>Altro simpatico esempio elegante</h3>
<p>Questa volta spediamo sul canale la serie di Fibonacci da una goroutine separata basata su un ciclo for infinito (a terminare il programma sarà brutalmente il termine della funzione main() nella quale chiederemo la stampa dei primi dieci numeri della serie):</p>
<pre class="brush: plain; title: ; notranslate">
package main

import &quot;fmt&quot;

func main() {
    ch := make(chan int)
    go func(a1, a2 int) {
        for {
            ch &lt;- a1
            a1, a2 = a2, a1 + a2
        }
    }(0, 1)
    
    for i := 0; i&lt;10; i++ {
        fmt.Print(&lt;- ch, &quot; &quot;)
    }
    fmt.Println()
}
</pre>
<h3>Sfida&#8230;</h3>
<p>Invito i visitatori del blog a presentare nuovi schemi di calcolo concorrente o semplicemente solo i risultati ottenuti con i vostri megacalcolatori.</p>
<p>Quello che serve è una <a href="http://golang.org/doc/install">installazione di Go</a>, e magari sapere che esistono comode funzioni nel pacchetto <em>time</em> che misurano con precisione il tempo macchina, come nel seguente esempio:</p>
<pre class="brush: plain; title: ; notranslate">
package main

import (
    &quot;fmt&quot;
    &quot;math&quot;
    &quot;time&quot;
)

func main() {
    multiPi := make([]float64, 10000)
    t := time.Now()
    for i := 0; i &lt; 10000; i++ {
        multiPi[i] = math.Pi * float64(i)
    }
    fmt.Printf(&quot;Executin time: %v\n&quot;, time.Since(t))
}
</pre>
<p>Un saluto.<br />
R.</p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/go/'>Go</a>, <a href='http://okpanico.wordpress.com/category/programmazione-concorrente/'>Programmazione concorrente</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7191&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/22/go-fibonacci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bbaa8836bec0db28a94a014c040253e4?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">robitex</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby &#8211; operatori logici</title>
		<link>http://okpanico.wordpress.com/2013/05/21/ruby-operatori-logici/</link>
		<comments>http://okpanico.wordpress.com/2013/05/21/ruby-operatori-logici/#comments</comments>
		<pubDate>Tue, 21 May 2013 08:18:01 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Linguaggi]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7180</guid>
		<description><![CDATA[Gli operatori logici (o booleani) consentono di stabilire se una cosa è vera o no. &#8220;Uno vale uno&#8221; (cit.), verifichiamo: OK! Notare il doppio segno di uguale; siccome il segno di uguale lo usiamo per l&#8217;assegnazione, p.es. a = 5 per valutare l&#8217;uguaglianza lo raddoppiamo. Vediamo un altro caso: vero, cioè falso, cioè 1 è [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7180&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-thumbnail wp-image-7181" alt="r6" src="http://okpanico.files.wordpress.com/2013/05/r6.jpeg?w=150&#038;h=150" width="150" height="150" /></p>
<p>Gli operatori logici (o booleani) consentono di stabilire se una cosa è vera o no. <em>&#8220;Uno vale uno&#8221; (cit.)</em>, verifichiamo:</p>
<p><img class="aligncenter size-full wp-image-7182" alt="l0" src="http://okpanico.files.wordpress.com/2013/05/l0.png?w=530"   /></p>
<p>OK! Notare il doppio segno di uguale; siccome il segno di uguale lo usiamo per l&#8217;assegnazione, p.es. <strong><code>a = 5</code></strong> per valutare l&#8217;uguaglianza lo raddoppiamo. Vediamo un altro caso:</p>
<p><img class="aligncenter size-full wp-image-7183" alt="l1" src="http://okpanico.files.wordpress.com/2013/05/l1.png?w=530"   /></p>
<p>vero, cioè falso, cioè 1 è diverso da 2 <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>C&#8217;è poi l&#8217;operatore <strong><code>!=</code></strong> (diverso), verifichiamo:</p>
<p><img class="aligncenter size-full wp-image-7184" alt="l2" src="http://okpanico.files.wordpress.com/2013/05/l2.png?w=530"   /></p>
<p>che, ovviamente restituisce l&#8217;opposto di <strong><code>==</code></strong> (uguale).</p>
<p>Adesso l&#8217;operatore <strong><code>&gt;</code></strong> (maggiore):</p>
<p><img class="aligncenter size-full wp-image-7185" alt="l3" src="http://okpanico.files.wordpress.com/2013/05/l3.png?w=530"   /></p>
<p>e <strong><code>&lt;</code></strong> (minore):</p>
<p><img class="aligncenter size-full wp-image-7186" alt="l4" src="http://okpanico.files.wordpress.com/2013/05/l4.png?w=530"   /></p>
<p>Ci sono poi <strong><code>&gt;=</code></strong> (maggiore o uguale) e <strong><code>&lt;=</code></strong> (minore o uguale):</p>
<p><img class="aligncenter size-full wp-image-7187" alt="l5" src="http://okpanico.files.wordpress.com/2013/05/l5.png?w=530"   /></p>
<p>Secondo Karthikeyan, <a href="https://www.dropbox.com/s/y3q4vw9u3daj15r/ilr2012.pdf" target="_blank">I Love Ruby</a>, ci sono altri due operatori logici che di solito non si trovano nei linguaggi di programmazione <strong><code>!&lt;</code></strong> (non minore) e <strong><code>!&gt;</code></strong> (non maggiore):</p>
<p><img class="aligncenter size-full wp-image-7188" alt="l6" src="http://okpanico.files.wordpress.com/2013/05/l6.png?w=530"   /></p>
<p><strong>no!</strong> pare di no. Ma se ci pensate <strong><code>!&lt;</code></strong> è un doppione di <strong><code>&gt;=</code></strong>. E se usassimo un linguaggio serio questo operatore mancante, se proprio volessimo, lo potremmo implemtare al volo, prima di subito! (Sì, sto parlando di quello, il Lisp).</p>
<p>Un&#8217;ultima cosa: <strong><code>true</code></strong> e <strong><code>false</code></strong> sono costanti logiche (o booleane) predefinite. Per cui capita che:</p>
<p><img class="aligncenter size-full wp-image-7189" alt="l7" src="http://okpanico.files.wordpress.com/2013/05/l7.png?w=530"   /></p>
<p>Chiaro vero? L&#8217;ho capito anch&#8217;io: &#8220;true&#8221; e &#8220;false&#8221; sono stringhe; come lo sarebbero &#8216;true&#8217; e &#8216;false&#8217;.</p>
<p>Siamo pronti per gli operatori di scelta, <strong><code>if</code></strong>, <strong><code>unless</code></strong>, <strong><code>case</code></strong> e simili, il prossimo post <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/'>Linguaggi</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/ruby/'>Ruby</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7180&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/21/ruby-operatori-logici/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/r6.jpeg?w=150" medium="image">
			<media:title type="html">r6</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l0.png" medium="image">
			<media:title type="html">l0</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l1.png" medium="image">
			<media:title type="html">l1</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l2.png" medium="image">
			<media:title type="html">l2</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l3.png" medium="image">
			<media:title type="html">l3</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l4.png" medium="image">
			<media:title type="html">l4</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l5.png" medium="image">
			<media:title type="html">l5</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l6.png" medium="image">
			<media:title type="html">l6</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/l7.png" medium="image">
			<media:title type="html">l7</media:title>
		</media:content>
	</item>
		<item>
		<title>Visto nel Web &#8211; 79</title>
		<link>http://okpanico.wordpress.com/2013/05/19/visto-nel-web-79/</link>
		<comments>http://okpanico.wordpress.com/2013/05/19/visto-nel-web-79/#comments</comments>
		<pubDate>Sun, 19 May 2013 07:44:22 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Visto nel Web]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7156</guid>
		<description><![CDATA[Parecchie news, prossimamente, forse&#8230; Per intanto ecco cosa ho visto nel Web. I vip, gli insulti su Twitter, i troll e la gente comune che non è anonima mitica Galatea! ::: IL nuovo mondo di Galatea Twitter: servono nuove regole. No, abbiamo bisogno di cultura digitale ::: Valigia Blu Samsung is hurting Android ::: Trusted [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7156&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Parecchie news, prossimamente, forse&#8230;<br />
Per intanto ecco cosa ho <strong>visto nel Web</strong>.</p>
<p><strong><img class="aligncenter size-full wp-image-7158" alt="laser-safety-page" src="http://okpanico.files.wordpress.com/2013/05/laser-safety-page.jpg?w=530"   /><br />
I vip, gli insulti su Twitter, i troll e la gente comune che non è anonima</strong><br />
mitica Galatea!<br />
::: <a href="http://ilnuovomondodigalatea.wordpress.com/2013/05/12/i-vip-gli-insulti-su-twitter-i-troll-e-la-gente-comune-che-non-e-anonima/" target="_blank">IL nuovo mondo di Galatea</a></p>
<p><strong>Twitter: servono nuove regole. No, abbiamo bisogno di cultura digitale</strong><br />
::: <a href="http://www.valigiablu.it/twitter-servono-nuove-regole-no-abbiamo-bisogno-di-cultura-digitale/" target="_blank">Valigia Blu</a></p>
<p><strong>Samsung is hurting Android</strong><br />
::: <a href="http://www.trustedreviews.com/opinions/samsung-is-hurting-android" target="_blank">Trusted Reviews</a></p>
<p><img class="aligncenter size-full wp-image-7159" alt="dentro" src="http://okpanico.files.wordpress.com/2013/05/dentro.jpg?w=530"   /></p>
<p><strong>Mettiamo il turbo sburlo al nostro androide da 99 euri</strong><br />
::: <a href="http://picchiopc.wordpress.com/2013/05/12/mettiamo-il-turbo-sburlo-al-nostro-androide-da-99-euri/" target="_blank">il nido del Picchio</a></p>
<p><strong>Android e i cambiamenti apportati al kernel Linux</strong><br />
avevo linkato l&#8217;originale poi ho visto il lavoro del Bl@ster<br />
::: <a href="http://dottorblaster.it/2013/05/android-cambiamenti-apportati-al-kernel-linux/" target="_blank">Bl@ster&#8217;s</a></p>
<p><strong>Con una semplice modifica la Casa Bianca accelera sugli open data. E in Italia?</strong><br />
::: <a href="http://www.ilsole24ore.com/art/tecnologie/2013-05-10/semplice-modifica-casa-bianca-141239.shtml" target="_blank">il Sole 24 Ore</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7161" alt="BJtMEPRCEAIFMwI" src="http://okpanico.files.wordpress.com/2013/05/bjtmeprceaifmwi.jpg?w=318&#038;h=424" width="318" height="424" /></p>
<p><strong>Se SQLite vi sembra lento&#8230;</strong><br />
::: <a href="http://robitex.wordpress.com/2013/05/13/se-sqlite-vi-sembra-lento/" target="_blank">Robitex</a></p>
<p><strong>Chiudere o non chiudere, questo è il problema!</strong><br />
::: <a href="http://www.mysocialweb.it/2013/05/13/chiudere/" target="_blank">My Social Web</a></p>
<p><strong>Il Piccolo Libro di MongoDB</strong><br />
::: <a href="http://nicolaiarocci.com/il-piccolo-libro-di-mongodb-edizione-italiana/" target="_blank">Nicola Iarocci</a></p>
<div id="attachment_7162" class="wp-caption aligncenter" style="width: 328px"><img class=" wp-image-7162 " alt="Archimede Smipper" src="http://okpanico.files.wordpress.com/2013/05/archimede-smipper.jpg?w=318&#038;h=424" width="318" height="424" /><p class="wp-caption-text">Archimede Smipper</p></div>
<p><strong>Plotly automatically makes a beautiful graph</strong><br />
::: <a href="https://plot.ly/" target="_blank">plotly</a></p>
<p><strong>Go 1.1 is released</strong><br />
::: <a href="http://blog.golang.org/2013/05/go-11-is-released.html" target="_blank">The Go Programming Language</a></p>
<p><strong>tl;drLegal, le licenze Open Source spiegate semplicemente</strong><br />
::: <a href="http://www.linuxbird.org/?p=1046" target="_blank">LinuxBird</a></p>
<p><img class="aligncenter size-full wp-image-7163" alt="bonifici" src="http://okpanico.files.wordpress.com/2013/05/bonifici.png?w=530"   /></p>
<p><strong>Terra</strong><br />
Terra is a new low-level system programming language that is designed to interoperate seamlessly with the Lua programming language<br />
::: <a href="http://terralang.org/" target="_blank">Terra</a> ::: <a href="http://lambda-the-ultimate.org/node/4739" target="_blank">Lambda the Ultimate</a></p>
<p><strong>Add Clippy or his friends to any website for instant nostalgia</strong><br />
::: <a href="https://www.smore.com/clippy-js" target="_blank">Smore</a></p>
<p><strong>Windows Kernel Developer Vents Out Against Microsoft; Says It Shuns Innovation</strong><br />
::: <a href="http://www.efytimes.com/e1/fullnews.asp?edid=105959" target="_blank">EFYTimes</a></p>
<p><img class="aligncenter size-full wp-image-7164" alt="windows95" src="http://okpanico.files.wordpress.com/2013/05/windows95.jpg?w=530"   /></p>
<p><strong>How Mighty Mint became one of the most popular Linux distros</strong><br />
::: <a href="http://www.techradar.com/news/software/operating-systems/how-mighty-mint-became-one-of-the-most-popular-linux-distros-1146584" target="_blank">TechRadar</a></p>
<p><strong>Why Go?</strong><br />
::: <a href="http://nathany.com/why-go" target="_blank">Nathan Youngman</a> ::: <a href="http://arstechnica.com/information-technology/2013/05/googles-programming-language-go-gets-a-big-speed-boost/" target="_blank">Ars Technica</a></p>
<p><strong>9 mesi di carcere per una pagina Facebook: abbiate paura</strong><br />
fondamentale il .mau.<br />
::: <a href="http://www.tomshw.it/cont/news/9-mesi-di-carcere-per-una-pagina-facebook-abbiate-paura/45675/1.html" target="_blank">tom&#8217;s</a> ::: <a href="http://www.ilfattoquotidiano.it/2013/05/15/caso-boldrini-leggi-sul-web-ci-sono-ma-sono-uguali-per-tutti/594181/" target="_blank">Il Fatto Quotidiano</a> ::: <a href="http://voices.telecomitaliahub.it/2013/05/minacce-diffamazione-oblio-web-come-trovare-una-quadra/" target="_blank">voices</a></p>
<p><img class="aligncenter size-full wp-image-7165" alt="029" src="http://okpanico.files.wordpress.com/2013/05/029.jpg?w=530"   /></p>
<p><strong>OpenGL 101: Drawing primitives &#8211; points, lines and triangles</strong><br />
::: <a href="http://solarianprogrammer.com/2013/04/13/opengl-101-drawing-primitives/" target="_blank">Solarian Programmer</a></p>
<p><strong>With Lucky Sort creators on board, Twitter is officially a data company</strong><br />
::: <a href="http://gigaom.com/2013/05/13/with-lucky-sort-creators-on-board-twitter-is-officially-a-data-company/" target="_blank">GigaOM</a></p>
<p><strong>The $12 Gongkai Phone</strong><br />
::: <a href="http://www.bunniestudios.com/blog/?p=3040" target="_blank">bunnie:studios</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7166" alt="formigoni" src="http://okpanico.files.wordpress.com/2013/05/formigoni.jpg?w=350&#038;h=525" width="350" height="525" /></p>
<p><strong>Has Supercomputing Hit a Brick Wall?</strong><br />
::: <a href="http://tech.slashdot.org/story/13/05/14/1534248/has-supercomputing-hit-a-brick-wall" target="_blank">Slashdot</a></p>
<p><strong>Il futuro di Android e di Chrome OS</strong><br />
::: <a href="http://www.linuxbird.org/?p=1076" target="_blank">LinuxBird</a></p>
<p><strong>Wikeleaks e il decreto Romani</strong><br />
::: <a href="http://www.nicoladangelo.net/2013/05/wikeleaks-il-decreto-romani/" target="_blank">Nicola D&#8217;Angelo</a></p>
<p><img class="aligncenter size-full wp-image-7167" alt="IMG_1551" src="http://okpanico.files.wordpress.com/2013/05/img_1551.jpg?w=530"   /></p>
<p><strong>UNESCO to make its publications available free of charge as part of a new Open Access policy</strong><br />
::: <a href="http://www.unesco.org/new/en/media-services/single-view/news/unesco_to_make_its_publications_available_free_of_charge_as_part_of_a_new_open_access_policy/back/9597/" target="_blank">UNESCO</a></p>
<p><strong>Enseignement de l&#8217;informatique &#8211; rapport de l&#8217;académie des sciences</strong><br />
::: <a href="http://abiteboul.blogspot.it/2013/05/enseignement-de-linformatique-rapport.html" target="_blank">Le slow blog de Serge</a></p>
<p><strong>So Long, Cinnamon: Cinnarch Linux is reborn as Antergos</strong><br />
::: <a href="http://www.pcworld.com/article/2038739/so-long-cinnamon-cinnarch-linux-is-reborn-as-antergos.html" target="_blank">PCWorld</a></p>
<p><img class="aligncenter size-full wp-image-7168" alt="8c08b3e19980bb3628fe8dff16f02bb8" src="http://okpanico.files.wordpress.com/2013/05/8c08b3e19980bb3628fe8dff16f02bb8.jpg?w=530"   /></p>
<p><strong>Larry Page&#8217;s Vocal Cords Are Partially Paralyzed</strong><br />
::: <a href="http://tech.slashdot.org/story/13/05/15/0313206/larry-pages-vocal-cords-are-partially-paralyzed" target="_blank">Slashdot</a></p>
<p><strong>Netactview: tenere sotto controllo la nostra connessioni di rete in Ubuntu Linux</strong><br />
::: <a href="http://www.lffl.org/2013/05/netactview-tenere-sotto-controllo-la.html" target="_blank">lffl</a></p>
<p><strong>Interpol filter scope creep: ASIC ordering unilateral website blocks</strong><br />
::: <a href="http://delimiter.com.au/2013/05/15/interpol-filter-scope-creep-asic-ordering-unilateral-website-blocks/" target="_blank">Delimiter</a></p>
<p><img class="aligncenter size-full wp-image-7169" alt="lupi" src="http://okpanico.files.wordpress.com/2013/05/lupi.jpg?w=530"   /></p>
<p><strong>Georgia Tech and Udacity Partner for Online M.S. in Computer Science</strong><br />
dubbi: funziona?<br />
::: <a href="http://news.slashdot.org/story/13/05/15/023234/georgia-tech-and-udacity-partner-for-online-ms-in-computer-science" target="_blank">Slashdot</a></p>
<p><strong>Canadian Anti-Piracy Outfit Pirates Photos for its Website</strong><br />
::: <a href="http://torrentfreak.com/canadian-anti-piracy-outfit-pirates-photos-for-its-website-130515/" target="_blank">TorrentFreak</a></p>
<p><strong>Apple’s new Objective-C to Javascript Bridge</strong><br />
::: <a href="http://www.steamclock.com/blog/2013/05/apple-objective-c-javascript-bridge/" target="_blank">steamclock</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7170" alt="weird" src="http://okpanico.files.wordpress.com/2013/05/weird.jpg?w=294&#038;h=224" width="294" height="224" /></p>
<p><strong>8 Reasons Why Ubuntu Users Should Try Out Linux Mint</strong><br />
::: <a href="http://www.junauza.com/2013/05/8-reasons-why-ubuntu-users-should-try-linux-mint.html" target="_blank">TechSource</a></p>
<p><strong>Collusion, un add-on per scoprire chi ti traccia online</strong><br />
::: <a href="http://www.linuxbird.org/?p=1108" target="_blank">LinuxBird</a></p>
<p><strong>Mappa del Made in Italy digitale</strong><br />
::: <a href="http://www.linuxbird.org/?p=1123" target="_blank">LinuxBird</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7171" alt="monads" src="http://okpanico.files.wordpress.com/2013/05/monads.jpg?w=371&#038;h=463" width="371" height="463" /></p>
<p><strong>[OS X] Creare USB live di qualsiasi distribuzione linux</strong><br />
::: <a href="http://reefbits.net/blog/os-x-creare-usb-live-di-qualsiasi-distribuzione-linux/" target="_blank">ReefBits</a></p>
<p><strong>Extreme syntax</strong><br />
leggere anche i commenti; tentato di farci un post noioso<br />
::: <a href="http://www.johndcook.com/blog/2013/05/16/extreme-syntax/" target="_blank">The Endeavour</a></p>
<p><strong>thread profiling in Python</strong><br />
::: <a href="http://rjpower.org/wordpress/thread-profiling-in-python/" target="_blank">idle thoughts</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7172" alt="493_475494699170650_848025430_n" src="http://okpanico.files.wordpress.com/2013/05/493_475494699170650_848025430_n.jpg?w=300&#038;h=388" width="300" height="388" /></p>
<p><strong>Patenting Open Source Software</strong><br />
::: <a href="http://news.slashdot.org/story/13/05/17/1248221/patenting-open-source-software" target="_blank">Slashdot</a></p>
<p><strong>Comunicazione e condivisione in tempo reale attraverso il web</strong><br />
::: <a href="http://www.linuxbird.org/?p=1174" target="_blank">LinuxBird</a></p>
<p><strong>CommaFeed il nuovo aggregatore di feed open source</strong><br />
io adesso uso TheOldReader ma chissà&#8230;<br />
::: <a href="http://www.lffl.org/2013/05/commafeed-il-nuovo-aggregatore-di-feed.html" target="_blank">lffl</a></p>
<p><img class="aligncenter size-full wp-image-7173" alt="217369_553189708055484_408712827_n" src="http://okpanico.files.wordpress.com/2013/05/217369_553189708055484_408712827_n.jpg?w=530"   /></p>
<p><strong>Sorry, Larry Page: Tech-Industry Viciousness Is Here To Stay</strong><br />
::: <a href="http://tech.slashdot.org/story/13/05/17/1639255/sorry-larry-page-tech-industry-viciousness-is-here-to-stay" target="_blank">Slashdot</a></p>
<p><strong>Australian Government Backdoor Internet Filter Shuts Down 1,000 Websites</strong><br />
::: <a href="http://yro.slashdot.org/story/13/05/17/2025227/australian-government-backdoor-internet-filter-shuts-down-1000-websites" target="_blank">Slashdot</a></p>
<p><strong>unixkcd</strong><br />
::: <a href="http://uni.xkcd.com/" target="_blank">xkcd</a></p>
<p><img class="aligncenter size-full wp-image-7174" alt="childhood" src="http://okpanico.files.wordpress.com/2013/05/childhood.png?w=530"   /></p>
<p><strong>How to Learn Emacs: A Hand-drawn One-pager for Beginners</strong><br />
::: <a href="http://sachachua.com/blog/2013/05/how-to-learn-emacs-a-hand-drawn-one-pager-for-beginners/" target="_blank">Sacha Chua</a></p>
<p><strong>[Editoriale] Skype è il nostro “Grande Fratello”?</strong><br />
::: <a href="http://www.lffl.org/2013/05/editoriale-skype-e-il-nostro-grande.html" target="_blank">lffl</a></p>
<p><strong>perl 5.18.0 is now available!</strong><br />
::: <a href="http://www.nntp.perl.org/group/perl.perl5.porters/2013/05/msg201940.html" target="_blank">perl.org</a></p>
<p><img class="aligncenter size-full wp-image-7175" alt="scratch" src="http://okpanico.files.wordpress.com/2013/05/scratch.png?w=530"   /></p>
<p><strong>A Guide to Python&#8217;s Magic Methods</strong><br />
::: <a href="http://www.rafekettler.com/magicmethods.html" target="_blank">rafekettler</a></p>
<p><strong>Electronics-Loving &#8216;Crazy Ants&#8217; Invading Southern US</strong><br />
::: <a href="http://news.slashdot.org/story/13/05/18/1630228/electronics-loving-crazy-ants-invading-southern-us" target="_blank">Slashdot</a></p>
<p><strong>Using Definite Clause Grammars in SWI-Prolog</strong><br />
in un modo diverso?<br />
::: <a href="http://www.pathwayslms.com/swipltuts/dcg/index.html" target="_blank">Pathways</a></p>
<p><img class="aligncenter size-full wp-image-7176" alt="fb" src="http://okpanico.files.wordpress.com/2013/05/fb.png?w=530&#038;h=452" width="530" height="452" /></p>
<p><strong>Arduino Branches Out, With a Plug-and-Program Robot</strong><br />
::: <a href="http://hardware.slashdot.org/story/13/05/18/1954223/arduino-branches-out-with-a-plug-and-program-robot" target="_blank">Slashdot</a></p>
<p><strong>The Evolution Of Hacker News</strong><br />
::: <a href="http://techcrunch.com/2013/05/18/the-evolution-of-hacker-news/" target="_blank">TechCrunch</a></p>
<p><img class="aligncenter size-full wp-image-7160" alt="vim" src="http://okpanico.files.wordpress.com/2013/05/vim.png?w=530"   /></p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/visto-nel-web/'>Visto nel Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7156&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/19/visto-nel-web-79/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/laser-safety-page.jpg" medium="image">
			<media:title type="html">laser-safety-page</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/dentro.jpg" medium="image">
			<media:title type="html">dentro</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/bjtmeprceaifmwi.jpg" medium="image">
			<media:title type="html">BJtMEPRCEAIFMwI</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/archimede-smipper.jpg" medium="image">
			<media:title type="html">Archimede Smipper</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/bonifici.png" medium="image">
			<media:title type="html">bonifici</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/windows95.jpg" medium="image">
			<media:title type="html">windows95</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/029.jpg" medium="image">
			<media:title type="html">029</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/formigoni.jpg" medium="image">
			<media:title type="html">formigoni</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/img_1551.jpg" medium="image">
			<media:title type="html">IMG_1551</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/8c08b3e19980bb3628fe8dff16f02bb8.jpg" medium="image">
			<media:title type="html">8c08b3e19980bb3628fe8dff16f02bb8</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/lupi.jpg" medium="image">
			<media:title type="html">lupi</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/weird.jpg" medium="image">
			<media:title type="html">weird</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/monads.jpg" medium="image">
			<media:title type="html">monads</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/493_475494699170650_848025430_n.jpg" medium="image">
			<media:title type="html">493_475494699170650_848025430_n</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/217369_553189708055484_408712827_n.jpg" medium="image">
			<media:title type="html">217369_553189708055484_408712827_n</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/childhood.png" medium="image">
			<media:title type="html">childhood</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/scratch.png" medium="image">
			<media:title type="html">scratch</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/fb.png" medium="image">
			<media:title type="html">fb</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/vim.png" medium="image">
			<media:title type="html">vim</media:title>
		</media:content>
	</item>
		<item>
		<title>Maiuscolo&#124;minuscolo &#8211; ultima puntata</title>
		<link>http://okpanico.wordpress.com/2013/05/16/maiuscolominuscolo-ultima-puntata/</link>
		<comments>http://okpanico.wordpress.com/2013/05/16/maiuscolominuscolo-ultima-puntata/#comments</comments>
		<pubDate>Thu, 16 May 2013 08:02:58 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Linguaggi]]></category>
		<category><![CDATA[newLISP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7148</guid>
		<description><![CDATA[Oggi concludo la telenovela serie sulla conversione maiuscolo&#124;minuscolo all&#8217;interno della clipboard. Le puntate precedenti sono qui e qui. Avevo pensato di poter utilizzare il comando echo con l&#8217;opzione dell&#8217;here document ma non ci sono riuscito. Non so se è una mia carenza o il metodo non è praticabile. Sono ricorso a cat, soluzione meno bella [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7148&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-7149" alt="tmm-fin" src="http://okpanico.files.wordpress.com/2013/05/tmm-fin.png?w=530"   />Oggi concludo la <del>telenovela</del> serie sulla conversione maiuscolo|minuscolo all&#8217;interno della clipboard. Le puntate precedenti sono <a href="http://okpanico.wordpress.com/2013/05/07/convertire-testo-in-maiuscolominuscolo/" target="_blank"><strong>qui</strong></a> e <a href="http://okpanico.wordpress.com/2013/05/09/ancora-su-maiuscolominuscolo/" target="_blank"><strong>qui</strong></a>.<br />
Avevo pensato di poter utilizzare il comando echo con l&#8217;opzione dell&#8217;<a href="http://stackoverflow.com/questions/2953081/how-can-i-write-a-here-doc-to-a-file-in-bash-script" target="_blank">here document</a> ma non ci sono riuscito. Non so se è una mia carenza o il metodo non è praticabile. Sono ricorso a <strong>cat</strong>, soluzione meno bella perché ho dovuto creare un file temporaneo in <strong>/tmp</strong>.</p>
<p>Il codice è commentato e semplicissimo (non cambia granché dalla puntata precedente) per cui eccolo, senza preamboli:</p>
<div style="background:#ffffff;overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<table>
<tbody>
<tr>
<td>
<pre style="margin:0;line-height:125%;"> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23</pre>
</td>
<td>
<pre style="margin:0;line-height:125%;"><span style="color:#507090;">#!/usr/bin/newlisp</span>

<span style="color:#808080;">;; get state of CapsLock</span>
(<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">clON</span> (<span style="color:#906030;">%</span> (<span style="color:#008000;font-weight:bold;">int</span> (<span style="color:#008000;font-weight:bold;">slice</span> (<span style="color:#008000;font-weight:bold;">string</span> 
        (<span style="color:#008000;font-weight:bold;">exec</span> <span style="background-color:#fff0f0;">"xset q | grep LED"</span>)) <span style="color:#008000;font-weight:bold;">-</span><span style="color:#a06000;">4</span> <span style="color:#a06000;">2</span>)) <span style="color:#a06000;">2</span>))

<span style="color:#808080;">;; get clipboard content</span>
(<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">txt</span> (<span style="color:#008000;font-weight:bold;">join</span> (<span style="color:#008000;font-weight:bold;">exec</span> <span style="background-color:#fff0f0;">"xsel -ob"</span>) <span style="background-color:#fff0f0;">"\n"</span>))
<span style="color:#808080;">;;  case translate</span>
(<span style="color:#008000;font-weight:bold;">if</span> (<span style="color:#906030;">=</span> <span style="color:#a06000;">clON</span> <span style="color:#a06000;">1</span>) 
    (<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">txt</span> (<span style="color:#008000;font-weight:bold;">upper-case</span> <span style="color:#a06000;">txt</span>))
    (<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">txt</span> (<span style="color:#008000;font-weight:bold;">lower-case</span> <span style="color:#a06000;">txt</span>)))

<span style="color:#808080;">;; park in a temp file</span>
(<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">tmpf</span> <span style="background-color:#fff0f0;">"/tmp/Mm"</span>)
(<span style="color:#008000;font-weight:bold;">write-</span><span style="color:#a06000;">file</span> <span style="color:#a06000;">tmpf</span> <span style="color:#a06000;">txt</span>)

<span style="color:#808080;">;; put the temp file it in the clipboard</span>
(<span style="color:#008000;font-weight:bold;">set</span> <span style="color:#303030;">'</span><span style="color:#a06000;">cmd</span> (<span style="color:#008000;font-weight:bold;">join</span> (<span style="color:#008000;font-weight:bold;">list</span> <span style="background-color:#fff0f0;">"cat "</span> <span style="color:#a06000;">tmpf</span> <span style="background-color:#fff0f0;">" | xsel -ib"</span>)))
(<span style="color:#008000;font-weight:bold;">exec</span> <span style="color:#a06000;">cmd</span>)
(<span style="color:#008000;font-weight:bold;">delete-file</span> <span style="color:#a06000;">tmpf</span>)

(<span style="color:#008000;font-weight:bold;">exit</span>)</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Si potrebbe ancora modificarlo rendendolo più lispico ma poi si perderebbe la possibilità di confronto con la versione del passo successivo, questo che segue immediatamente.</p>
<p>Se a questo punto qualcuno ponesse la domanda &#8220;ma si deve fare con newLISP?&#8221; risponderei &#8220;certo che no! ecco la versione con Python&#8221;.</p>
<pre class="brush: python; title: ; notranslate">#!/usr/bin/python
# -*- coding: utf-8 -*-

import subprocess, os

# stato di capslock
cmd = &quot;xset q | grep LED&quot;
ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
                      stderr=subprocess.STDOUT)
output = (ps.communicate()[0]).strip()
clON = int(output[-2:]) % 2

# contenuto della clipboard
cmd = &quot;xsel -ob&quot;
ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
txt = (ps.communicate()[0])

# converto
if clON:
    txt = txt.upper()
else:
    txt = txt.lower()

# lo parcheggio in un file temporaneo
tmpf = &quot;/tmp/Mm&quot;
f = open(tmpf, 'w')
f.write(txt)
f.close()

# copio il file nella clipboard
#cmd = &quot;cat&quot;
cmd = &quot;cat {0} | xsel -ib&quot;.format(tmpf)
os.system(cmd) #, &quot;&quot;, shell = True)
os.remove(tmpf)</pre>
<p>Sono quasi equivalenti. Ecco un dump del test effettuato.</p>
<p><img class="aligncenter size-full wp-image-7150" alt="MM" src="http://okpanico.files.wordpress.com/2013/05/mm.png?w=530&#038;h=400" width="530" height="400" />Sì newLISP converte anche le lettere non ASCII <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /><br />
Ma siccome è un&#8217;<em><strong>inutility</strong></em> il discorso, per me, si chiude qua <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/'>Linguaggi</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/newlisp/'>newLISP</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/python/'>Python</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7148&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/16/maiuscolominuscolo-ultima-puntata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/tmm-fin.png" medium="image">
			<media:title type="html">tmm-fin</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/mm.png" medium="image">
			<media:title type="html">MM</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby &#8211; leggere da terminale e commenti</title>
		<link>http://okpanico.wordpress.com/2013/05/14/ruby-leggere-da-terminale-e-commenti/</link>
		<comments>http://okpanico.wordpress.com/2013/05/14/ruby-leggere-da-terminale-e-commenti/#comments</comments>
		<pubDate>Tue, 14 May 2013 04:26:58 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Linguaggi]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7138</guid>
		<description><![CDATA[OK, c&#8217;è stata una lunga pausa nell&#8217;esame di Ruby. L&#8217;ultima puntata è stata questa, tanto tempo fa: Ruby – iniziamo con gli script. Ora ripaprto. E continuiamo a fare pratica con gli script. Dopo &#8220;Hello World!&#8221; sarebbe bello che lo script salutasse proprio te. Così: gets fa l&#8217;opposto di puts: invece di scrivere la stringa [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7138&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-thumbnail wp-image-7139" alt="r5" src="http://okpanico.files.wordpress.com/2013/05/r5.jpeg?w=100&#038;h=150" width="100" height="150" />OK, c&#8217;è stata una lunga pausa nell&#8217;esame di Ruby. L&#8217;ultima puntata è stata questa, tanto tempo fa: <a href="http://okpanico.wordpress.com/2013/04/24/ruby-iniziamo-con-gli-script/" target="_blank">Ruby – iniziamo con gli script</a>.<br />
Ora ripaprto. E continuiamo a fare pratica con gli script. Dopo &#8220;Hello World!&#8221; sarebbe bello che lo script salutasse proprio te. Così:</p>
<pre class="brush: ruby; title: ; notranslate">#!/usr/bin/ruby
puts &quot;Ciao sono il 'puter&quot;
print &quot;come ti chiami:&quot;
name = gets()
puts &quot;Ciao #{name}Buona giornata!&quot;</pre>
<p><img class="aligncenter size-full wp-image-7141" alt="c1" src="http://okpanico.files.wordpress.com/2013/05/c1.png?w=530"   /></p>
<p><strong><code>gets</code></strong> fa l&#8217;opposto di <strong><code>puts</code></strong>: invece di scrivere la stringa sul terminale legge quella che scriviamo.</p>
<p>Naturalmente la quinta riga potevamo scriverla anche come: <strong><code>puts "Hello " + name + " Buona giornata!"</code></strong></p>
<p>Due cose:</p>
<ul>
<li>notare l&#8217;a-capo anomalo prima di <code>"<strong>Buona giornata</strong>"</code>, sarà da indagare in futuro;</li>
<li>solo per chi usa Linux la prima riga è speciale, permette di rendere lo script eseguibile in questo modo:</li>
</ul>
<p><img class="aligncenter size-full wp-image-7142" alt="c1-1" src="http://okpanico.files.wordpress.com/2013/05/c1-1.png?w=530"   /></p>
<p>In Windows non esiste l&#8217;equivalente e la riga viene considerata come un commento, come in realtà è.</p>
<p>Già, i commenti. Tranne dentro le stringhe <strong>&#8220;&#8221;</strong> come nel caso precedente Ruby considera il carattere <strong><code>#</code></strong> e tutto quello che segue fino alla fine della riga come un commento, serve a noi ed è ignorato dall&#8217;interprete, come in questo caso:</p>
<pre class="brush: ruby; title: ; notranslate">#!/usr/bin/ruby

# esempio (scemo) di commenti
v1 = 5 # primo dato
v2 = 7 # secondo
res = v1 + v2 # somma
print &quot;la somma di #{v1} + #{v2} vale #{res} #sapevatelo\n&quot;</pre>
<p><img class="aligncenter size-full wp-image-7143" alt="c2" src="http://okpanico.files.wordpress.com/2013/05/c2.png?w=530"   /></p>
<p>Qui vediamo diversi tipi di commenti:</p>
<ul>
<li>la prima riga, speciale di cui abbiamo già detto (è talmente speciale che ha un nome, <em><strong>shebang</strong></em>);</li>
<li>la terza riga, tutta di commento;</li>
<li>le righe 4, 5 e 6 con un&#8217;istruzione e poi un commento;</li>
</ul>
<p>Notare che il carattere <strong><code>#</code></strong> nell&#8217;ultima riga <em><strong>non è un commento</strong></em>. Anche le righe vuote, come la seconda vengono ignorate dall&#8217;interprete, proprio come i commenti.</p>
<p>Alle volte il commento che vogliamo scrivere è troppo lungo per una riga sola. In questo caso possiamo fare così:</p>
<pre class="brush: ruby; title: ; notranslate">#!/usr/bin/ruby

=begin
    esempio (scemo) di commento multilinea
    è tutto un commento fino a quando lo
    chiudiamo con la keyword che segue
=end
v1 = 5 # primo dato
v2 = 7 # secondo
res = v1 * v2 # prodotto
print &quot;il prodotto di #{v1} * #{v2} vale #{res} #sapevatelo\n&quot;</pre>
<p><img class="aligncenter size-full wp-image-7144" alt="c3" src="http://okpanico.files.wordpress.com/2013/05/c3.png?w=530"   /></p>
<p>Quando la lunghezza dello script supera poche righe questo tipo di commenti diventano molto utili, non immaginate quanto. Notare che le keyword <strong><code>=begin</code></strong> e <strong><code>=end</code></strong> devono cominciare in prima colonna, niente spazi.</p>
<p>Compito a casa: cosa succede se metto un commento multilinea dentro a un commento multilinea? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/linguaggi/'>Linguaggi</a>, <a href='http://okpanico.wordpress.com/category/linguaggi/ruby/'>Ruby</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7138&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/14/ruby-leggere-da-terminale-e-commenti/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/r5.jpeg?w=100" medium="image">
			<media:title type="html">r5</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/c1.png" medium="image">
			<media:title type="html">c1</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/c1-1.png" medium="image">
			<media:title type="html">c1-1</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/c2.png" medium="image">
			<media:title type="html">c2</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/c3.png" medium="image">
			<media:title type="html">c3</media:title>
		</media:content>
	</item>
		<item>
		<title>Visto nel Web &#8211; 78</title>
		<link>http://okpanico.wordpress.com/2013/05/12/visto-nel-web-78/</link>
		<comments>http://okpanico.wordpress.com/2013/05/12/visto-nel-web-78/#comments</comments>
		<pubDate>Sun, 12 May 2013 07:14:41 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Visto nel Web]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7118</guid>
		<description><![CDATA[Vi confesso un segreto: sono in ritardo terribile su (quasi) tutto. Forse da questo scaturiranno post nei prossimi mesi ma adesso panico. Per intanto ecco cosa ho visto nel Web. Programmez votre Raspberry Pi depuis le confort de votre navigateur Web &#8211; et en JavaScript! ::: FinuxFr Bruce Schneier: Why Collecting More Data Doesn&#8217;t Increase [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7118&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Vi confesso un segreto: sono in ritardo terribile su (quasi) tutto. Forse da questo scaturiranno post nei prossimi mesi ma adesso panico. Per intanto ecco cosa ho <strong>visto nel Web</strong>.</p>
<p><img class="aligncenter size-full wp-image-7121" alt="mamma" src="http://okpanico.files.wordpress.com/2013/05/mamma.png?w=530"   /></p>
<p><strong>Programmez votre Raspberry Pi depuis le confort de votre navigateur Web &#8211; et en JavaScript!</strong><br />
::: <a href="http://linuxfr.org/news/programmez-votre-raspberry-pi-depuis-le-confort-de-votre-navigateur-web-et-en-javascript" target="_blank">FinuxFr</a></p>
<p><strong>Bruce Schneier: Why Collecting More Data Doesn&#8217;t Increase Safety</strong><br />
::: <a href="http://yro.slashdot.org/story/13/05/04/1615202/bruce-schneier-why-collecting-more-data-doesnt-increase-safety" target="_blank">Slashdot</a></p>
<p><strong>Know Thy Complexities!</strong><br />
::: <a href="http://bigocheatsheet.com/" target="_blank">Big-O</a></p>
<p><img class="aligncenter size-full wp-image-7122" alt="fiamma" src="http://okpanico.files.wordpress.com/2013/05/fiamma.png?w=530"   /></p>
<p><strong>La nuova sfida: educare chi va sul web<br />
</strong>::: <a href="http://lastampa.it/2013/05/05/cultura/opinioni/editoriali/la-nuova-sfida-educare-chi-va-sul-web-lSPPIHDJmwrx60VG3j37dJ/pagina.html" target="_blank">la Stampa</a> ::: <a href="http://www.olmr.it/2013/05/boldrini-kienge-il-web-e-un-sintomo-e-la-nostra-societa-ad-essere-malata/" target="_blank">OLMR</a> ::: <a href="http://blog.debiase.com/2013/05/link-letture-per-domani-polemiche-oscurantiste-fair-use-privacy/" target="_blank">Luca De Biase</a> ::: <a href="http://www.nicoladangelo.net/2013/05/attacco-alla-rete/" target="_blank">Nicola D&#8217;Angelo</a> ::: <a href="http://www.mantellini.it/2013/05/06/volante-1-a-volante-192-168-1-1/" target="_blank">manteblog</a> ::: <a href="http://www.mantellini.it/2013/05/06/riassunto-delle-tristi-puntate-precedenti/" target="_blank">manteblog</a></p>
<p><strong>Terms of Service; Didn&#8217;t Read</strong><br />
::: <a href="http://tosdr.org/" target="_blank">Term of Service</a></p>
<p><img class="aligncenter size-full wp-image-7123" alt="391097_302006316597481_611106932_n" src="http://okpanico.files.wordpress.com/2013/05/391097_302006316597481_611106932_n.jpg?w=530"   /></p>
<p><strong>Making UEFI Secure Boot Work With Open Platforms</strong><br />
::: <a href="http://www.linuxfoundation.org/publications/making-uefi-secure-boot-work-with-open-platforms" target="_blank">The Linux Foundation</a></p>
<p><strong>BitTorrent Sync, prova su strada</strong><br />
::: <a href="http://reefbits.net/blog/bittorrent-sync-prova-su-strada/" target="_blank">ReefBits</a></p>
<p><strong>Ramanujan approximation for circumference of an ellipse</strong><br />
::: <a href="http://www.johndcook.com/blog/2013/05/05/ramanujan-circumference-ellipse/" target="_blank">The Endeavour</a></p>
<p><img class="aligncenter size-full wp-image-7124" alt="linux_search" src="http://okpanico.files.wordpress.com/2013/05/linux_search.jpg?w=530"   /></p>
<p><strong>Casa domotica controllata da Android, anche con i comandi vocali di Google Now</strong><br />
::: <a href="http://www.tuttoandroid.net/android/casa-domotica-android-google-now-109645/" target="_blank">Tutto Android</a></p>
<p><strong>Big Data: la mia rubrica su Europa – L’illusione del potere della rete</strong><br />
::: <a href="http://vincos.it/2013/05/06/big-data-la-mia-rubrica-su-europa-lillusione-del-potere-della-rete/" target="_blank">Vincos</a></p>
<p><strong>Signs that you&#8217;re a bad programmer</strong><br />
::: <a href="http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer" target="_blank">Software Engineering Tips</a></p>
<p><img class="aligncenter size-full wp-image-7125" alt="parcheggio" src="http://okpanico.files.wordpress.com/2013/05/parcheggio.jpg?w=530"   /></p>
<p><strong>elementary OS Luna Beta 2 Rilasciata, le novità e download</strong><br />
::: <a href="http://www.lffl.org/2013/05/elementary-os-luna-beta-2-rilasciata-le.html" target="_blank">lffl</a></p>
<p><strong>Iniziative per domani. Da conoscere oggi. Innovazione, impresa, startup, informazione, diritti</strong><br />
::: <a href="http://blog.debiase.com/2013/05/iniziative-per-domani-da-conoscere-oggi-innovazione-impresa-startup-informazione-diritti/" target="_blank">Luca De Biase</a></p>
<p><strong>How to be effective at open source: by programmers, for programmers</strong><br />
::: <a href="http://lemire.me/blog/archives/2013/05/06/how-to-be-effective-at-open-source-by-programmers-for-programmers/" target="_blank">Daniel Lemire</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7126" alt="BIzG6M4CYAEIXkX" src="http://okpanico.files.wordpress.com/2013/05/bizg6m4cyaeixkx.jpg?w=371&#038;h=392" width="371" height="392" /></p>
<p><strong>Prenda hammered: Judge sends porn-trolling lawyers to criminal investigators</strong><br />
::: <a href="http://arstechnica.com/tech-policy/2013/05/prenda-hammered-judge-sends-porn-trolling-lawyers-to-criminal-investigators/" target="_blank">Ars Technica</a></p>
<p><strong>U.S. Directly Blames China’s Military for Cyberattacks</strong><br />
::: <a href="http://www.nytimes.com/2013/05/07/world/asia/us-accuses-chinas-military-in-cyberattacks.html" target="_blank">The New York Times</a> ::: <a href="http://yro.slashdot.org/story/13/05/07/1731232/pentagon-ups-hacking-accusations-against-china" target="_blank">Slashdot</a></p>
<p><strong>Full Circle Magazine: script per scaricare facilmente tutti i numeri della rivista</strong><br />
::: <a href="http://www.lffl.org/2013/05/full-circle-magazine-script-per.html" target="_blank">lffl</a></p>
<p><img class="aligncenter size-full wp-image-7127" alt="nature" src="http://okpanico.files.wordpress.com/2013/05/nature.jpg?w=530"   /></p>
<p><strong>Microsoft prepares U-turn on Windows 8</strong><br />
::: <a href="http://www.ft.com/cms/s/2/330c8b8e-b66b-11e2-93ba-00144feabdc0.html#axzz2SbWWnYCE" target="_blank">Financial Times</a></p>
<p><strong>LibreCAD lavora ad un proprio DWG importer</strong><br />
::: <a href="http://www.linuxbird.org/?p=910" target="_blank">LinuxBird</a></p>
<p><strong>La Nasa fait migrer les ordinateurs de la Station spatiale internationale vers Linux</strong><br />
::: <a href="http://www.zdnet.fr/actualites/la-nasa-fait-migrer-les-ordinateurs-de-la-station-spatiale-internationale-vers-linux-39790175.htm" target="_blank">ZDNet</a> ::: <a href="http://www.zdnet.com/to-the-space-station-and-beyond-with-linux-7000014958/" target="_blank">ZDNet</a> ::: <a href="http://www.tomshw.it/cont/news/linux-sulla-stazione-spaziale-internazionale-addio-windows/45587/1.html" target="_blank">tom&#8217;s</a></p>
<p><img class="aligncenter size-full wp-image-7128" alt="brooms" src="http://okpanico.files.wordpress.com/2013/05/brooms.jpg?w=530"   /></p>
<p><strong>How the Syrian Electronic Army Hacked The Onion</strong><br />
::: <a href="http://theonion.github.io/blog/2013/05/08/how-the-syrian-electronic-army-hacked-the-onion/" target="_blank">The Onion</a></p>
<p><strong>Minesweeper in Matplotlib</strong><br />
::: <a href="http://jakevdp.github.io/blog/2012/12/06/minesweeper-in-matplotlib/" target="_blank">Pythonic Perambulations</a></p>
<p><strong>Debian Will Serve As The Default OS For Google Compute Engine</strong><br />
::: <a href="http://techcrunch.com/2013/05/08/debian-will-serve-as-the-default-os-for-google-compute-engine/" target="_blank">TechCrunch</a></p>
<p><img class="aligncenter size-full wp-image-7129" alt="532947_564836803538615_733865036_n" src="http://okpanico.files.wordpress.com/2013/05/532947_564836803538615_733865036_n.jpg?w=530"   /></p>
<p><strong>New Zealand Set To Prohibit Software Patents</strong><br />
::: <a href="http://tech.slashdot.org/story/13/05/09/0441215/new-zealand-set-to-prohibit-software-patents" target="_blank">Slashdot</a></p>
<p><strong>Israeli Singer Publishes a Song In Hebrew — and Perl</strong><br />
::: <a href="http://developers.slashdot.org/story/13/05/09/1235250/israeli-singer-publishes-a-song-in-hebrew-and-perl" target="_blank">Slashdot</a></p>
<p><strong>Obama Announces Open Data Policy With Executive Order</strong><br />
::: <a href="http://yro.slashdot.org/story/13/05/09/227204/obama-announces-open-data-policy-with-executive-order" target="_blank">Slashdot</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7130" alt="musper" src="http://okpanico.files.wordpress.com/2013/05/musper.png?w=334&#038;h=408" width="334" height="408" /></p>
<p><strong>World of Warcraft Loses 1.3 Million Players in First Quarter of 2013</strong><br />
::: <a href="http://games.slashdot.org/story/13/05/10/0214227/world-of-warcraft-loses-13-million-players-in-first-quarter-of-2013" target="_blank">Slashdot</a></p>
<p><strong>Una pagina web per ogni libro pubblicato</strong><br />
::: <a href="http://www.linuxbird.org/?p=938" target="_blank">LinuxBird</a></p>
<p><strong>La più grande biblioteca del mondo</strong><br />
::: <a href="http://www.nicoladangelo.net/2013/05/la-piu-grande-biblioteca-del-mondo/" target="_blank">Nicola D&#8217;Angelo</a></p>
<p style="text-align:center;"><img class="aligncenter  wp-image-7131" alt="aw060ZB_700b_v1" src="http://okpanico.files.wordpress.com/2013/05/aw060zb_700b_v1.jpg?w=424&#038;h=459" width="424" height="459" /></p>
<p><strong>Turista fai-da-te? Niente paura c’è openMarkers</strong><br />
::: <a href="http://www.linuxbird.org/?p=948" target="_blank">LinuxBird</a></p>
<p><strong>Mentana e le autostrade percepite</strong><br />
::: <a href="http://www.mantellini.it/2013/05/10/mentana-e-le-autostrade-percepite/" target="_blank">manteblog</a></p>
<p><strong>What&#8217;s New in Scratch 2.0?</strong><br />
::: <a href="http://scratch.mit.edu/overview/" target="_blank">Scratch</a></p>
<p><img class="aligncenter size-full wp-image-7132" alt="Schermata-2013-05-03-alle-23" src="http://okpanico.files.wordpress.com/2013/05/schermata-2013-05-03-alle-23.jpg?w=530"   /></p>
<p><strong>Primers</strong><br />
se ho capito bene un corso di matematica con Python dentro<br />
::: <a href="http://jeremykun.com/primers/" target="_blank">Math ∩ Programming</a></p>
<p><strong>Facebook Home, quando 1mln di dowload è poco</strong><br />
::: <a href="http://www.linuxbird.org/?p=961" target="_blank">LinuxBird</a></p>
<p><strong>Boston Replacing Microsoft Exchange With Google Apps</strong><br />
::: <a href="http://tech.slashdot.org/story/13/05/10/2014246/boston-replacing-microsoft-exchange-with-google-apps" target="_blank">Slashdot</a></p>
<p><img class="aligncenter size-full wp-image-7133" alt="troglofeed" src="http://okpanico.files.wordpress.com/2013/05/troglofeed.png?w=530"   /></p>
<p><strong>Return of the Borg: How Twitter Rebuilt Google’s Secret Weapon</strong><br />
::: <a href="http://www.wired.com/wiredenterprise/2013/03/google-borg-twitter-mesos/all/" target="_blank">wired</a></p>
<p><strong>Facebook Is Getting Serious About Original Programming With “Facebook Live”</strong><br />
adesso la TV!<br />
::: <a href="http://techcrunch.com/2013/05/10/facebook-live/" target="_blank">TechCrunch</a></p>
<p><strong>How Should the Law Think About Robots?</strong><br />
::: <a href="http://hardware.slashdot.org/story/13/05/10/2122229/how-should-the-law-think-about-robots" target="_blank">Slashdot</a></p>
<div id="attachment_7134" class="wp-caption aligncenter" style="width: 540px"><img class="size-full wp-image-7134 " alt="Nicolargo. Livraison de socca. Pizza hut n'a inventé rien" src="http://okpanico.files.wordpress.com/2013/05/nicolargo-livraison-de-socca-pizza-hut-na-inventc3a9-rien.jpg?w=530&#038;h=530" width="530" height="530" /><p class="wp-caption-text">Nicolargo. Livraison de socca. Pizza hut n&#8217;a inventé rien</p></div>
<p><strong>Appeals court ruling could be &#8216;death&#8217; of software patents</strong><br />
::: <a href="http://www.networkworld.com/news/2013/051013-appeals-court-ruling-could-be-269658.html" target="_blank">Network World</a></p>
<p><strong>Elon Musk quits Zuckerberg&#8217;s immigration advocacy group</strong><br />
::: <a href="http://www.reuters.com/article/2013/05/10/net-us-usa-immigration-technology-idUSBRE94910K20130510" target="_blank">Reuters</a></p>
<p><img class="aligncenter size-full wp-image-7120" alt="miracles_vs_time" src="http://okpanico.files.wordpress.com/2013/05/miracles_vs_time.png?w=530"   /></p>
<p> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/visto-nel-web/'>Visto nel Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7118&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/12/visto-nel-web-78/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/mamma.png" medium="image">
			<media:title type="html">mamma</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/fiamma.png" medium="image">
			<media:title type="html">fiamma</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/391097_302006316597481_611106932_n.jpg" medium="image">
			<media:title type="html">391097_302006316597481_611106932_n</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/linux_search.jpg" medium="image">
			<media:title type="html">linux_search</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/parcheggio.jpg" medium="image">
			<media:title type="html">parcheggio</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/bizg6m4cyaeixkx.jpg" medium="image">
			<media:title type="html">BIzG6M4CYAEIXkX</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/nature.jpg" medium="image">
			<media:title type="html">nature</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/brooms.jpg" medium="image">
			<media:title type="html">brooms</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/532947_564836803538615_733865036_n.jpg" medium="image">
			<media:title type="html">532947_564836803538615_733865036_n</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/musper.png" medium="image">
			<media:title type="html">musper</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/aw060zb_700b_v1.jpg" medium="image">
			<media:title type="html">aw060ZB_700b_v1</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/schermata-2013-05-03-alle-23.jpg" medium="image">
			<media:title type="html">Schermata-2013-05-03-alle-23</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/troglofeed.png" medium="image">
			<media:title type="html">troglofeed</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/nicolargo-livraison-de-socca-pizza-hut-na-inventc3a9-rien.jpg" medium="image">
			<media:title type="html">Nicolargo. Livraison de socca. Pizza hut n&#039;a inventé rien</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/miracles_vs_time.png" medium="image">
			<media:title type="html">miracles_vs_time</media:title>
		</media:content>
	</item>
		<item>
		<title>Gedit per Windows</title>
		<link>http://okpanico.wordpress.com/2013/05/10/gedit-per-windows/</link>
		<comments>http://okpanico.wordpress.com/2013/05/10/gedit-per-windows/#comments</comments>
		<pubDate>Fri, 10 May 2013 07:43:03 +0000</pubDate>
		<dc:creator>juhan</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://okpanico.wordpress.com/?p=7111</guid>
		<description><![CDATA[Io lo uso solo quando devo, ma capita più spesso di quanto vorrei No non sto parlando di gedit, si tratta di Windows. OK, tutto ciò premesso c&#8217;è una bella novità. Una cosa che magari tutti conoscono già (tutti tranne me e i miei amici). E poi forse si tratta di una notizia che non [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7111&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_7112" class="wp-caption aligncenter" style="width: 310px"><a href="http://projects.gnome.org/gedit/index.html" target="_blank"><img class="size-full wp-image-7112 " alt="sito di gedit" src="http://okpanico.files.wordpress.com/2013/05/gedit-logo.png?w=530"   /></a><p class="wp-caption-text">sito di gedit</p></div>
<p>Io lo uso solo quando devo, ma capita più spesso di quanto vorrei <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
No non sto parlando di <em><strong>gedit</strong></em>, si tratta di <strong>Windows</strong>.</p>
<p>OK, tutto ciò premesso c&#8217;è una bella novità. Una cosa che magari tutti conoscono già (tutti tranne me e i miei amici). E poi forse si tratta di una notizia che non interessa, chi è che usa ancora documenti di testo, i <strong><code>.txt</code></strong>; o crea script con <strong>Python</strong>, <strong>Ruby</strong> o roba simile?<br />
Comunque qualcuno c&#8217;è, un paio li conosco personalmente. E allora la bella notizia è che <em><strong>gedit</strong></em> c&#8217;è anche per <strong>Windows</strong>, qui: <a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/2.30/gedit-setup-2.30.1-1.exe" target="_blank">gedit win32 binary</a>.</p>
<p>Trovate il solito <strong><code>setup.exe</code></strong> che s&#8217;installa in un attimo, senza problemi.</p>
<p><img class="aligncenter size-full wp-image-7113" alt="g5" src="http://okpanico.files.wordpress.com/2013/05/g5.png?w=530&#038;h=552" width="530" height="552" /></p>
<p>Resta solo da configurare, aprire <strong>Preferenze</strong> dal menu <strong>Modifica</strong>. Ci sono diversi <strong>tab</strong>, tutti da controllare.<br />
E non dimenticate quello dei <strong>Plugin</strong> come ho fatto io recentemente <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-7114" alt="g4" src="http://okpanico.files.wordpress.com/2013/05/g4.png?w=530"   /></p>
<p>Tra i vantaggi c&#8217;è anche la<em><strong> syntax hilighting</strong></em> per millemila tipi di documenti (stavo per scrivere file).</p>
<br />Archiviato in:<a href='http://okpanico.wordpress.com/category/windows/'>Windows</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/okpanico.wordpress.com/7111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/okpanico.wordpress.com/7111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=okpanico.wordpress.com&#038;blog=13487266&#038;post=7111&#038;subd=okpanico&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://okpanico.wordpress.com/2013/05/10/gedit-per-windows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bb3480ee056dba90b6322dbc9b364f6f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">j00han</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/gedit-logo.png" medium="image">
			<media:title type="html">sito di gedit</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/g5.png" medium="image">
			<media:title type="html">g5</media:title>
		</media:content>

		<media:content url="http://okpanico.files.wordpress.com/2013/05/g4.png" medium="image">
			<media:title type="html">g4</media:title>
		</media:content>
	</item>
	</channel>
</rss>
