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

<channel>
	<title>SlashCode &#187; Sistemi Operativi</title>
	<atom:link href="http://davideaversa.it/slashcode/category/guide/sistemi-operativi/feed/" rel="self" type="application/rss+xml" />
	<link>http://davideaversa.it/slashcode</link>
	<description></description>
	<lastBuildDate>Thu, 03 May 2012 14:28:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Matlab 2011 su Ubuntu 11.04</title>
		<link>http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/</link>
		<comments>http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 13:14:09 +0000</pubDate>
		<dc:creator>THeK3nger</dc:creator>
				<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[mex]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://davideaversa.it/slashcode/?p=748</guid>
		<description><![CDATA[Per chi come me utilizza spesso, per gioia o per costrizione, Matlab si sarà accorto che su Ubuntu 11.04 il suddetto programma stenta un po&#8217; ad ingranare. Innanzitutto, una volta avviato, ci becchiamo questo warning: /matlab/bin/util/oscheck.sh: 605: /lib/libc.so.6: not found Il motivo è semplice. Dalla versione 11.04 di Ubuntu (nonché in Debian Sid) c&#8217;è in <a href='http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2011%2F06%2Fmatlab-2011-su-ubuntu-11-04%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe></div><div class="really_simple_share_google1" style="width:90px;"><div class="g-plusone" data-size="medium" data-href="http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/" ></div></div><div class="really_simple_share_twitter" style="width:110px;"><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Matlab 2011 su Ubuntu 11.04" data-url="http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/" 
						data-via=""  ></a></div></div>
		<div style="clear:both;"></div><p>Per chi come me utilizza spesso, per gioia o per costrizione, Matlab si sarà accorto che su Ubuntu 11.04 il suddetto programma stenta un po&#8217; ad ingranare. Innanzitutto, una volta avviato, ci becchiamo questo warning:</p>
<p><code class="codecolorer text dawn"><span class="text">/matlab/bin/util/oscheck.sh: 605: /lib/libc.so.6: not found</span></code></p>
<p>Il motivo è semplice. Dalla versione 11.04 di Ubuntu (nonché in Debian Sid) c&#8217;è in corso una ristrutturazione dei percordi delle librerie di sistema per permettere di installare delle librerie multiarchitettura permettendo, ad esempio, di utilizzare plugin per browser 32bit in sistemi a 64bit senza l&#8217;utilizzo di layer aggiuntivi (come ia32-libs).</p>
<p>Questa migrazione ha però sconvolto un gran numero di programmi come CMake per il quale è attualmente quasi impossibile compilare programmi Gtk e, appunto, Matlab.</p>
<p>Matlab infatti cerca la libreria libc.so.6 all&#8217;interno dei percorsi standard (<code class="codecolorer text dawn"><span class="text">/lib</span></code> e <code class="codecolorer text dawn"><span class="text">/usr/lib</span></code>) e non in quello modificato. Per risolvere il problema ci basta fare un link simbolico in questo modo:</p>
<p><code class="codecolorer text dawn"><span class="text">sudo ln -s /lib64/x86_64-linux-gnu/libc-2.13.so /lib64/libc.so.6</span></code></p>
<p>Per la versione 64bit e</p>
<p><code class="codecolorer text dawn"><span class="text">sudo ln -s /lib/i386-linux-gnu/libc-2.13.so /lib/libc.so.6</span></code></p>
<p>per la versione 32bit. </p>
<p>Il problema più grave però coinvolge <strong>MEX</strong> il tool di matlab per la compilazione. In Ubuntu infatti è stato abbandonato il supporto a GCC 4.3 e precedenti, versione per cui è progettato MEX. Se provate a compilare riceverete sfilze di errori caratterizzati da un sonoro:</p>
<p><code class="codecolorer text dawn"><span class="text">&nbsp;version `GLIBCXX_3.4.11' not found</span></code></p>
<p> Esiste però un workaround semplice che ci permetterà di utilizzare GCC 4.4 senza problemi.</p>
<p>Per prima cosa installiamo la versione 4.4 dei tools di compilazione: </p>
<p><code class="codecolorer text dawn"><span class="text">$ sudo apt-get install gcc-4.4 g++-4.4 gfortran-4.4</span></code></p>
<p>Secondo, apriamo il file <code class="codecolorer text dawn"><span class="text">~/.matlab/R2011a/mexopts.sh</span></code> con un editor a piacere e modifichiamo tutte le occorrenze di <strong>gcc</strong> con <strong>gcc-4.4</strong>, <strong>g++</strong> con <strong>g++-4.4</strong> e <strong>gfortran</strong> con <strong>gfortran-4.4</strong>.</p>
<p>A questo punto vi basta salvare il file e avviare nuovamente Matlab. Tutto dovrebbe funzionare correttamente.</p>
<p>Thanks to <a href="http://blog.syrus.us/">this blog</a> for the info. You saved my day.</p>
 <p><a href="http://davideaversa.it/slashcode/?flattrss_redirect&amp;id=748&amp;md5=54a0a27fbe9a57a4decf14866d3ee440" title="Flattr" target="_blank"><img src="http://davideaversa.it/slashcode/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://davideaversa.it/slashcode/2011/06/matlab-2011-su-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=thek3nger&amp;popout=1&amp;url=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2011%2F06%2Fmatlab-2011-su-ubuntu-11-04%2F&amp;language=it_IT&amp;category=text&amp;title=Matlab+2011+su+Ubuntu+11.04&amp;description=Per+chi+come+me+utilizza+spesso%2C+per+gioia+o+per+costrizione%2C+Matlab+si+sar%C3%A0+accorto+che+su+Ubuntu+11.04+il+suddetto+programma+stenta+un+po%26%238217%3B+ad+ingranare.+Innanzitutto%2C+una+volta...&amp;tags=gcc%2Cmatlab%2Cmex%2Cubuntu%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Aggiornare Sidux senza rischiare</title>
		<link>http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/</link>
		<comments>http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 07:22:07 +0000</pubDate>
		<dc:creator>THeK3nger</dc:creator>
				<category><![CDATA[Debian/Ubuntu]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sidux]]></category>

		<guid isPermaLink="false">http://slashcode.wordpress.com/?p=237</guid>
		<description><![CDATA[<div><a href="http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/"><img title="Aggiornare Sidux senza rischiare" src="http://www.trackback.it/img/update.jpg" alt="Aggiornare Sidux senza rischiare"  width="" /></a></div><br/>Sidux, non mi stancherò mai di ripeterlo, è una distribuzione basata su Debian Sid e, come tale, è potenzialmente instabile. Il team di Sidux si occupa di mantenerla sempre funzionale grazie a repository aggiuntivi ma il 90% dei pacchetti  sono sempre di Sid. Ci sono però due-tre accortezze da seguire per far si che ogni <a href='http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2009%2F09%2Faggiornare-sidux-senza-rischiare%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe></div><div class="really_simple_share_google1" style="width:90px;"><div class="g-plusone" data-size="medium" data-href="http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/" ></div></div><div class="really_simple_share_twitter" style="width:110px;"><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Aggiornare Sidux senza rischiare" data-url="http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/" 
						data-via=""  ></a></div></div>
		<div style="clear:both;"></div><p><img class="alignleft" title="Update" src="http://www.trackback.it/img/update.jpg" alt="" width="155" height="138" /> <strong>Sidux,</strong> non mi stancherò mai di ripeterlo, è una distribuzione basata su Debian Sid e, come tale, è potenzialmente instabile. Il team di Sidux si occupa di mantenerla sempre funzionale grazie a repository aggiuntivi ma il 90% dei pacchetti  sono sempre di Sid.</p>
<p>Ci sono però due-tre accortezze da seguire per far si che ogni aggiornamento vada a buon fine. Sono cose che dico perché, anche se sono messe in grassetto sul manuale di sidux in pochi le leggono (non le ho lette nemmeno io al primo dist-upgrade XD), specie se abituati a Ubuntu e Debian Stable in cui gli aggiornamenti sono molto soft.</p>
<p>Per prima cosa installate il pacchetto <strong><em>sidux-hermes</em>. </strong>Questo programma è una semplice icona che si piazza nella system-tray e vi segnale se il dist-upgrade può dare problemi.</p>
<p>Se l&#8217;icona è verde potetre aggiornare senza problemi. Se l&#8217;icona è arancione dovete fare attenzione ad alcune cose. Se l&#8217;icona è rossa allora vi conviene aspettare. <img src='http://davideaversa.it/slashcode/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>La seconda accortezza è quella di non eseguire un dist-upgrade con X attivo. Seguite quindi questa procedura:</p>
<ul>
<li>Chiudere la sessione attiva.</li>
<li>Ctrl+Shift+F1 per andare nella console.</li>
<li>Loggare come root.</li>
<li>Dare i comandi:
<pre># init 3
# apt-get update
# apt-get dist-upgrade
# init 5 &amp;&amp; exit</pre>
</li>
<li>Riloggare.</li>
</ul>
<p>Se terrete d&#8217;occhio questi due consigli potrete dormire sonni tranquilli. <img src='http://davideaversa.it/slashcode/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Buon Upgrade. <img src='http://davideaversa.it/slashcode/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <p><a href="http://davideaversa.it/slashcode/?flattrss_redirect&amp;id=237&amp;md5=a516f08b5a1505adfb701f6c7590273d" title="Flattr" target="_blank"><img src="http://davideaversa.it/slashcode/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://davideaversa.it/slashcode/2009/09/aggiornare-sidux-senza-rischiare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=thek3nger&amp;popout=1&amp;url=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2009%2F09%2Faggiornare-sidux-senza-rischiare%2F&amp;language=it_IT&amp;category=text&amp;title=Aggiornare+Sidux+senza+rischiare&amp;description=Sidux%2C+non+mi+stancher%C3%B2+mai+di+ripeterlo%2C+%C3%A8+una+distribuzione+basata+su+Debian+Sid+e%2C+come+tale%2C+%C3%A8+potenzialmente+instabile.+Il+team+di+Sidux+si+occupa+di+mantenerla+sempre+funzionale...&amp;tags=apt-get%2Cdebian%2Clinux%2Csidux%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Unix &#8211; Processi #1</title>
		<link>http://davideaversa.it/slashcode/2009/05/unix-processi-1/</link>
		<comments>http://davideaversa.it/slashcode/2009/05/unix-processi-1/#comments</comments>
		<pubDate>Thu, 28 May 2009 21:30:05 +0000</pubDate>
		<dc:creator>THeK3nger</dc:creator>
				<category><![CDATA[Sistemi Operativi]]></category>

		<guid isPermaLink="false">http://slashcode.wordpress.com/?p=200</guid>
		<description><![CDATA[<div><a href="http://davideaversa.it/slashcode/2009/05/unix-processi-1/"><img title="Unix &#8211; Processi #1" src="http://library.thinkquest.org/05aug/00669/en/history/software/unix.gif" alt="Unix &#8211; Processi #1"  width="190" height="200" /></a></div><br/>Ultimamente passo decisamente troppi problemi. Troppi casini tutti insieme mi hanno e mi stanno mettendo alla prova i nervi. Comunque, nei momenti di lucidità le mie deformazioni professionali prendono il sopravvento. Quindi festeggio questo momento di distensione mentale con un altro tassello al muro di slashcode. Cominciamo quindi a parlare della programmazione di sistema. In <a href='http://davideaversa.it/slashcode/2009/05/unix-processi-1/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2009%2F05%2Funix-processi-1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe></div><div class="really_simple_share_google1" style="width:90px;"><div class="g-plusone" data-size="medium" data-href="http://davideaversa.it/slashcode/2009/05/unix-processi-1/" ></div></div><div class="really_simple_share_twitter" style="width:110px;"><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Unix &#8211; Processi #1" data-url="http://davideaversa.it/slashcode/2009/05/unix-processi-1/" 
						data-via=""  ></a></div></div>
		<div style="clear:both;"></div><div class="wp-caption alignleft" style="width: 160px"><img title="Unix" src="http://library.thinkquest.org/05aug/00669/en/history/software/unix.gif" alt="Unix Logo" width="150" height="150" /><p class="wp-caption-text">Unix Logo</p></div>
<p>Ultimamente passo decisamente troppi problemi. Troppi casini tutti insieme mi hanno e mi stanno mettendo alla prova i nervi.</p>
<p>Comunque, nei momenti di lucidità le mie deformazioni professionali prendono il sopravvento. Quindi festeggio questo momento di distensione mentale con un altro tassello al muro di slashcode.</p>
<p>Cominciamo quindi a parlare della <strong>programmazione di sistema</strong>. In questa sede ci occuperemo della programmzaione in ambito <strong>Unix</strong>. Il motivo è semplice: è quella che conosco meglio e di cui (grazie alle numerose implementazioni aperte) è possibile studiare più in dettaglio il funzionamento. Citerò solamente il nome della funzione analoga per Windows in modo che chi sia interessato possa evere un punto di partenza per ricerche autonome.</p>
<p>Il nostro percorso inizia dai <strong>processi</strong>.</p>
<p><span id="more-200"></span></p>
<p>Come penso tutti sanno, su la quasi totalità dei calcolatori i programmi vengono lanciati dal sistema operativo. Il sistemo operativ, oltre ad avviare il programma, si occupa di <strong>alternare</strong> fra loro i programmi per dare l&#8217;illusione di più programmi in esecuzione contemporanea.</p>
<p>Per fare ciò il SO all&#8217;avvio del processo alloca nella sua memoria una struttura dati per memorizzare le informazioni <em>salienti</em> di ogni programma in esecuzione.</p>
<p>Per il SO un programma in esecuzione prende il nome <strong>processo</strong>. Un processo è in linea di massima composto dal <strong>testo</strong> del programma e dal suo <strong>spazio di memoria</strong>.</p>
<p>Fra le informazioni più importanti dal punto di vista del programmatore memorizzate dal SO c&#8217;è sicuramente il <strong>PID </strong>(<em>Process ID</em>). Il PID è un numero intero che identifica univocamente il processo nel SO.</p>
<p>Inoltre ci possiamo chiedere anche <strong>chi genera i processi?</strong> I processi sono organizzati gerarchicamente in una struttura ad albero: ogni processo (escluso <strong>init</strong>) ha un padre e ha eventualmente dei figli.</p>
<p>Proviamo questo semplice programma:</p>
<div id="spamform" style="display:none;">Please indicate why this post is abusive, and provide any other useful information.</p>
<p>Spam / advertising / junk<br />
Personal details<br />
Proprietary code<br />
Other</p>
<p>comments (optional)</p>
<p>email (optional)</p></div>
<div class="syntax">
<div class="c" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#include&lt;stdio.h&gt;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co2">#include&lt;stdlib.h&gt;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">void</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Trova e stampa il Process ID del processo corrente */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">int</span> pid = <span style="color:#ff0000;">getpid</span><span class="br0">(</span><span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">(</span><span class="st0">&#8220;%d<span class="es0">\n</span>&#8220;</span>,pid<span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Trova e stampa il Process ID del processo padre */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">int</span> ppid = <span style="color:#ff0000;">getppid</span><span class="br0">(</span><span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">(</span><span class="st0">&#8220;%d<span class="es0">\n</span>&#8220;</span>,ppid<span class="br0">)</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">}</span></div>
</li>
</ol>
</div>
</div>
<p>Questo programma non fa altro che stampare il PID del processo corrente (il programma stesso) e il PID del processo padre che ha generato il processo. Le due funzioni che fanno questo sono rispettivamente <strong>getpid </strong>e <strong>getppid</strong></p>
<p><strong>Ma come si generano i processi?</strong></p>
<p>In unix generare un processo è molto semplice. Si può usare la seguente <strong>chiamata di sistema</strong>.</p>
<p><strong>int fork()</strong></p>
<p>Questa funzione <strong>duplica il processo corrente</strong> e restituisce <strong>0</strong> al processo figlio e il PID del figlio al processo padre. Oppure  <strong>-1</strong> in caso di fallimento.</p>
<p>Sembra complicato poichè scrivere un programma che si duplica mantenendo lo stesso codice è decisamente fuori norma. L&#8217;uso però è semplicemente più intuitivo:</p>
<pre>if (<span style="color:#ff0000;">fork</span>() == 0) printf("Sono il figlio!");
else printf("Sono il padre!");</pre>
<p>Il fork va praticamente sempre inserito in un <strong>if</strong> per poter determinare se si sta eseguendo il padre o si sta eseguendo il figlio.</p>
<p>Il corrispettivo per window è la <em>CreateNewProcess</em> una funzione con 16 parametri che però permetti di creare direttamente un nuovo processo con un <strong>codice diverso da quello del padre</strong>.</p>
<p>Come si fa in Unix per sostituire il codice di un processo con quello di un nuovo programma?</p>
<p>Lo vedremo alla prossima dove parleremo della famiglia di funzioni <strong>exec</strong>.</p>
 <p><a href="http://davideaversa.it/slashcode/?flattrss_redirect&amp;id=200&amp;md5=d5f9bccc92105faba23f67d135837bfe" title="Flattr" target="_blank"><img src="http://davideaversa.it/slashcode/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://davideaversa.it/slashcode/2009/05/unix-processi-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=thek3nger&amp;popout=1&amp;url=http%3A%2F%2Fdavideaversa.it%2Fslashcode%2F2009%2F05%2Funix-processi-1%2F&amp;language=it_IT&amp;category=text&amp;title=Unix+%26%238211%3B+Processi+%231&amp;description=Ultimamente+passo+decisamente+troppi+problemi.+Troppi+casini+tutti+insieme+mi+hanno+e+mi+stanno+mettendo+alla+prova+i+nervi.+Comunque%2C+nei+momenti+di+lucidit%C3%A0+le+mie+deformazioni+professionali+prendono+il...&amp;tags=blog" type="text/html" />
	</item>
	</channel>
</rss>

