<?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"
	>

<channel>
	<title>Sante Caserio</title>
	<atom:link href="http://santecaserio.altervista.org/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://santecaserio.altervista.org/wordpress</link>
	<description>Php, MySQL, Software Libero... per un mondo di liberi</description>
	<pubDate>Tue, 24 Nov 2009 10:40:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Miei articoli su MySQL / Maria</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=137</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=137#comments</comments>
		<pubDate>Tue, 24 Nov 2009 09:45:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[maria]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=137</guid>
		<description><![CDATA[I miei ultimi articoli su MySQL e argomenti affini sono stati pubblicati su MySQL Italia (e per pigrizia non su questo blog, almeno per ora). La licenza con cui sono distribuiti è la Creative Commons Attribution Non-Commercial Share Alike versione 2.5, che ritengo libera. Potete trovare i miei testi nelle sezioni wiki e articoli, insieme [...]]]></description>
			<content:encoded><![CDATA[<p>I miei ultimi articoli su MySQL e argomenti affini sono stati pubblicati su <a title="La prima community italiana" href="http://mysqlitalia.it/">MySQL Italia</a> (e per pigrizia non su questo blog, almeno per ora). La licenza con cui sono distribuiti è la <a title="Sito ufficiale di CC" href="http://creativecommons.org/">Creative Commons</a> Attribution Non-Commercial Share Alike <a title="Spiegazione in italiano" href="http://creativecommons.org/licenses/by-nc-sa/2.5/it/">versione 2.5</a>, che ritengo libera. Potete trovare i miei testi nelle sezioni wiki e articoli, insieme ad altro materiale altrettanto interessante, se non di più.</p>
<p>Ringrazio sentitamente lo staff e in particolare Gianluigi e colgo l&#8217;occasione per invitare gli utenti di MySQL a utilizzare MySQL Italia, uno dei pochi siti ben curati e precisi.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=137</wfw:commentRss>
		</item>
		<item>
		<title>Windows 7 sins</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=136</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=136#comments</comments>
		<pubDate>Mon, 23 Nov 2009 04:30:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Libertà Informatica]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=136</guid>
		<description><![CDATA[Windows 7 sins è una campagna della Free Software Foundation.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.windows7sins.org/">Windows 7 sins</a> è una campagna della <a href="http://www.fsf.org/">Free Software Foundation</a>.</p>
<p><a href="http://windows7sins.org/"><img src="http://windows7sins.org/i/widget.png" alt="Windows 7 Sins" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=136</wfw:commentRss>
		</item>
		<item>
		<title>MariaDB, fork di MySQL</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=135</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=135#comments</comments>
		<pubDate>Tue, 17 Nov 2009 00:51:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MariaDB]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=135</guid>
		<description><![CDATA[Si chiama MariaDB il principale fork di MySQL, nato dal suo stesso creatore Monty Widenius in seguito all&#8217;acquisizione di MySQL da parte della Sun e, infine, di quest&#8217;ultima società da parte della Oracle.
Il nome suggerisce che, nelle intenzioni iniziali di Widenius, l&#8217;aspetto su cui il fork si sarebbe dovuto concentrare avrebbe dovuto essere Maria, lo [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Si chiama MariaDB il principale fork di MySQL, nato dal suo stesso creatore Monty Widenius in seguito all&#8217;acquisizione di MySQL da parte della Sun e, infine, di quest&#8217;ultima società da parte della Oracle.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Il nome suggerisce che, nelle intenzioni iniziali di Widenius, l&#8217;aspetto su cui il fork si sarebbe dovuto concentrare avrebbe dovuto essere Maria, lo storage engine da lui stesso creato. In realtà MariaDB include anche altri storage engine, sviluppati da terze parti. Vi sono poi alcuni contributi apportati dalla comunità, che in MySQL non sono stati inclusi – probabilmente a causa di procedure troppo rigide, che per la verità non sono state introdotte né da Sun né da Oracle. Ma il lavoro principale degli sviluppatori di MariaDB consiste probabilmente nel migliorare il codice già esistente e quello che viene man mano sviluppato per MySQL, testandolo e correggendo bug e problemi di performance.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">La piattaforma primaria per MariaDB è certamente GNU/Linux. In particolare sono stati creati dei pacchetti per varie versioni di Ubuntu, mentre non sono ancora pronti gli RPM per Red Hat e CentOS. Vi sono però i binari per GNU/Linux a 32 e a 64 bit. E&#8217; inoltre scaricabile una versione per Windows che non necessita di installazione. Il sito di MariaDB al momento non menziona la volontà di supportare (o meno) MacOS o altri sistemi UNIX.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Il programma è attualmente in fase beta, quindi non pronto per essere utilizzato in ambienti di produzione. Scaricando l&#8217;ultima versione è comunque possibile farsi un&#8217;idea abbastanza precisa di come sarà la versione stabile.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">La licenza utilizzata è la GNU GPL versione 2, ereditata da MySQL.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Analizziamo di seguito le varie novità di MariaDB rispetto al progenitore MySQL.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>Maria</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Si tratta di uno storage engine che deriva da MyISAM. Rispetto a quest&#8217;ultimo è più performante, soprattutto per quanto riguarda il caching; inoltre può gestire tabelle transazionali. Questa caratteristica sacrifica in parte le performance dei comandi SQL ed è attiva di default quando si crea una tabella. Per creare un&#8217;entità non transazionale ma più performante si può usare un&#8217;istruzione simile alla seguente:</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">CREATE TABLE new_tab (&#8230;) ENGINE=Maria TRANSACTIONAL=0;</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Come per le tabelle MyISAM, le entità Maria non transazionali possono utilizzare il formato FIXED (più performante) o il formato DYNAMIC (richiede meno spazio). Esiste poi il formato PAGE (l&#8217;unico disponibile per le tabelle transazionali), ideato per velocizzare il chaching. Tramite la utility maria_pack è possibile generare tabelle compresse di sola lettura, esattamente come si fa con MyISAM.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">MariaDB utilizza Maria per gestire le tabelle temporanee create internamente e questo velocizza l&#8217;esecuzione di alcune query.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">MyISAM, comunque, è ancora presente in MariaDB.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>XtraDB</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Questo storage engine è un fork di InnoDB sviluppato dalla Percona. Esso incorpora diversi contributi apportati dalla comunità e non presenti nel suo progenitore e, in MariaDB, lo sostituirà.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Allo stato attuale si può notare come l&#8217;inclusione di questo engine sia in qualche modo iniziata (ad esempio la presenza della tabella XTRADB_ENHANCEMENTS), ma non è ancora possibile utilizzarlo.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>PBXT</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">PBXT è uno storage engine transazionale sviluppato dalla PrimeBase. Implementa il controllo di versione multipla dei record, che permette di modificare righe delle tabelle senza bloccare l&#8217;accesso da parte di altre query, anche durante una transazione. I dati modificati da una transazione vengono scritti su disco una sola volta, in quanto PBXT garantisce l&#8217;affidabilità senza che i dati passino prima da un apposito log. Ha inoltre un meccanismo di rilevazione dei deadlock.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">I vantaggi di questo storage engine risiedono dunque nelle prestazioni, che possono essere analizzate tramite il tool xstat e la tabella PBXT_STATISTICS nell&#8217;INFORMATION_SCHEMA.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>Analisi delle prestazioni</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">E&#8217; stato migliorato lo slow query log, al quale sono state aggiunte numerose informazioni che dovrebbero facilitare l&#8217;individuazione dei colli di bottiglia. Sia questo log sia l&#8217;istruzione SHOW PROCESSLIST, inoltre, forniscono ora informazioni dettagliate fino al microsecondo (non più al secondo).</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>Prestazioni e affidabilità</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Il sito di MariaDB promette una maggiore stabilità, che deriverebbe anche dalla scelta di eliminare, dove possibile, i warning generati in fase di compilazione.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Abbiamo inoltre un incremento delle prestazioni facilmente rilevabile in almeno un tipo di query scritte male (SELECT che citano nella clausola FROM tabelle non effettivamente utilizzate). E&#8217; infine segnalato un miglioramento prestazionale nella gestione dei thread.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>E dopo?</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Lo sviluppo di MariaDB, naturalmente, continua. Nel ramo 5.1 dovranno ancora essere inseriti gli storage engine XtraDB, che sostituirà InnoDB, e FederatedX, una evoluzione di FEDERATED, il quale non è più mantenuto. La prossima versione sarà la 5.2.</span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">E&#8217; possibile tenere d&#8217;occhio il lavoro svolto dal team di sviluppo grazie al worklog pubblico, che si trova a questo indirizzo: <a href="http://askmonty.org/worklog/index.pl">http://askmonty.org/worklog/index.pl</a></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;"><strong>Siti di riferimento</strong></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Sito di MariaDB: <a href="http://askmonty.org/">http://askmonty.org/</a></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Planet MariaDB: <a href="http://planetmariadb.org/">http://planetmariadb.org/</a></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Documentazione di Maria: <a href="http://dev.mysql.com/doc/refman/5.1-maria/en/se-maria.html">http://dev.mysql.com/doc/refman/5.1-maria/en/se-maria.html</a></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Documentazione di XtraDB: <a href="http://www.percona.com/docs/wiki/percona-xtradb:start">http://www.percona.com/docs/wiki/percona-xtradb:start</a></span></p>
<p style="margin-bottom: 0cm;"><span style="font-family: Arial,sans-serif;">Documentazione di PBXT: <a href="http://www.primebase.org/documentation/">http://www.primebase.org/documentation/</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=135</wfw:commentRss>
		</item>
		<item>
		<title>MySQL: Inserire record che potrebbero esistere già</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=134</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=134#comments</comments>
		<pubDate>Wed, 12 Aug 2009 21:37:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[insert]]></category>

		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=134</guid>
		<description><![CDATA[L&#8217;SQL è un linguaggio imperativo. Questo significa che è costituito da una serie di comandi che indicano un&#8217;azione da compiere, lasciando poco spazio per le strutture di controllo del flusso. Sappiamo che il suo sottoinsieme noto come DML (Data Manipulation Language) comprende tre istruzioni fondamentali: DELETE per cancellare i record, UPDATE per aggiornarli e INSERT [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;SQL è un linguaggio imperativo. Questo significa che è costituito da una serie di comandi che indicano un&#8217;azione da compiere, lasciando poco spazio per le strutture di controllo del flusso. Sappiamo che il suo sottoinsieme noto come DML (Data Manipulation Language) comprende tre istruzioni fondamentali: DELETE per cancellare i record, UPDATE per aggiornarli e INSERT per inserirli. Sono azioni piuttosto elementari, che nel nostro lavoro quotidiano dovrebbero combinarsi formando istruzioni più complesse. Un esempio di richiesta complessa che spesso si vorrebbe rivolgere a un database è: “se un certo record nella tabella XXX esiste già, allora fai questo”. Mancando in SQL le istruzioni condizionali, generalmente questo tipo di logica è contenuta nel programma che si occupa di lanciare le query (esempio: uno script PHP). Un&#8217;alternativa è scrivere una Stored Procedure che se ne occupi, perchè tali procedure ammettono estensioni procedurali al linguaggio SQL, o possono essere scritte in altri linguaggi. MySQL però comprende alcune comode estensioni non standard che permettono di comunicare al server come si debba comportare nel caso in cui un certo record già esista.</p>
<p><strong>Valori unici</strong></p>
<p>Cosa significa per un database “questo record esiste già”? Come sappiamo, un record può essere identificato da una o più chiavi, ognuna delle quali può essere un campo, la prima parte di un campo o una combinazione di più campi. Generalmente la Chiave Primaria, che è il modo principale per identificare un record, è costituita da un campo numerico (UNSIGNED INTEGER) chiamato `id`. Vi possono essere delle Chiavi Candidate, che consistono in velori o combinazioni di valori che sono unici per ogni record. In MySQL questi sono i campi che rappresentano gli indici UNIQUE.</p>
<p><strong>INSERT IGNORE</strong></p>
<p>La prima di queste estensioni è la clausola IGNORE dell&#8217;istruzione INSERT. Essa semplicemente chiede a MySQL di ignorare gli errori dovuti al tentativo di inserire valori duplicati nella chiave primaria. In altre parole, se si tenta di inserire un record ma esso non può essere scritto poiché contiene un valore unico già presente in tabella, non viene generato alcun messaggio di errore. Se si tenta di inserire diversi record con un&#8217;unica INSERT e alcuni di questi non possono essere scritti perchè contengono valori duplicati, gli altri record verranno scritti senza problemi e non viene restituito alcun errore. Spesso i messaggi di errore hanno effetti collaterali che si desidera evitare.<br />
Un&#8217;ulteriore possibilità è usare, oltre alla clausola IGNORE, anche la clausola DELAYED. Essa chiede a MySQL di non generare alcun messaggio di errore in nessun caso. Questo vale per gli errori di tipo “Duplicate key”, ma anche ogni altro tipo di errore - ad esempio la mancanza dei permessi necessari per scrivere sulla tabella, disco pieno, etc. Se tale comportamento ci è comunque gradito (perchè non abbiamo intenzione di gestire alcun tipo di errore) allora la clausola DELAYED è da preferire per ragioni di performance. Infatti ciò che rallenta maggiormente le applicazioni sono le comunicazioni di rete e il mancato invio di messaggi di errore che verrebbero comunque ignorati è un&#8217;ottimizzazione intelligente. Comunque, è bene ricordare che gli unici Storage Engine a supportare questa clausola sono MyISAM, MEMORY, ARCHIVE e BLACKHOLE. Se usata su tabelle che usano altri motori, DELAYED provoca un errore.</p>
<p>Esempi:</p>
<p><code>INSERT IGNORE INTO `clienti` (`nome`, `cognome`, `tel`) VALUES ('Mario', 'Rossi', '123456');<br />
INSERT DELAYED IGNORE INTO `clienti` (`nome`, `cognome`, `tel`) VALUES ('Maria', 'Bianchi', '654321');</code></p>
<p><strong>REPLACE</strong></p>
<p>Il comportamento appena illustrato è desiderabile nel caso in cui il record che si tenta di inserire non possa essere più completo di quello già esistente. Se però nel record già presente in tabella alcuni campi sono vuoti (o meglio, impostati ai valori di DEFAULT), anche nel caso in cui l&#8217;istruzione INSERT contenga tali valori, essi andranno persi.<br />
Esiste però il caso opposto, cioè quello in cui si presume che il record già presente contenga meno informazioni (o informazioni meno aggiornate) rispetto a quelle che si sta tentando di inserire. In tal caso è ragionevole chiedere a MySQL si inserire sempre e comunque il nuovo record, sostituendo quello che eventualmente potrebbe essere già presente. Per fare questo si utilizza l&#8217;istruzione REPLACE.<br />
Essa è una combinazione di DELETE + INSERT. Questo implica alcune conseguenze non del tutto ovvie. La prima riguarda i permessi: per eseguire REPLACE bisogna avere i permessi di DELETE e INSERT. Inoltre, se si esegue REPLACE su una tabella InnoDB (o su altre tabelle che supportano le Chiavi Esterne) prima di inserire il nuovo record si cancellerà il vecchio, scatenando l&#8217;evento ad esso associato (come ON DELETE SET NULL). Infine, se sulla tabella sulla quale si esegue una REPLACE esiste un trigger associato all&#8217;evento DELETE, questo verrà lanciato.</p>
<p>Esempi:</p>
<p><code>REPLACE INTO `clienti` SET `nome`='Mario', `cognome`='Rossi', `tel`='123456';<br />
REPLACE DELAYED INTO `clienti` SET `nome`='Maria', `cognome`='Bianchi', `tel`='654321';</code></p>
<p>Si noti, infine, che REPLACE potrebbe eliminare più di un record prima di inserire il nuovo. Infatti, come si è detto, una tabella può avere più chiavi uniche (PRIMARY KEY e campi UNIQUE) e naturalmente un record potrebbe contenere diversi valori duplicati. Dopo aver lanciato questa istruzione, il numero di affected_rows() restituito corrisponde a 1 (il nuovo record inserito) + il numero di record eliminati. Sapere questo ci permette di determinare facilmente se uno o più record sono stati liminati e quanti:</p>
<p><code>$deleted_rows = mysqli_affected_rows($con) – 1;</code></p>
<p><strong>INSERT &#8230; ON DUPLICATE KEY UPDATE</strong></p>
<p>Vi è poi un ultimo caso, che è una via di mezzo tra i due precedenti. Può darsi che si voglia inserire un record nel caso esso non sia già esistente, ma che se esso esiste non vogliamo perdere né alcune informazioni già scritte in tabella, né alcune informazioni presenti nell&#8217;istruzione. In tal caso si utilizzerà INSERT con la clausola ON DUPLICATE KEY UPDATE.</p>
<p>Vediamo subito un esempio, nel quale tentiamo di inserire un nuovo utente; se esso esiste, vengono modificati il suo indirizzo email e l&#8217;url del suo blog, lasciando però inalterate tutte le altre informazioni.</p>
<p><code>INSERT INTO `utenti` (`username`, `password`, `email`, `www`)<br />
VALUES ('pippo', 'sesamo', 'pippo@topolinia.com', 'pippo.noblogs.org')<br />
ON DUPLICATE KEY UPDATE `email`='pippo@topolinia.com', `www`='pippo.noblogs.org';</code></p>
<p>INSERT &#8230; ON DUPLICATE KEY UPDATE non può essere utilizzata con DELAYED, sebbene ciò non generi alcun errore. E&#8217; possibile inserire diversi record come si fa talvolta con le INSERT anche utilizzando la clausola ON DUPLICATE KEY UPDATE. Il numero di affected_rows() equivale al numero di record inseriti + (il numero di record modificati * 2). Questo implica che non è possibile sapere con esattezza quanti record sono stati aggiunti e quanti sono stati modificati basandosi esclusivamente su affected_rows().</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=134</wfw:commentRss>
		</item>
		<item>
		<title>Venenux: un&#8217;altra distribuzione Libera</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=133</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=133#comments</comments>
		<pubDate>Tue, 11 Aug 2009 14:03:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[distribuzioni]]></category>

		<category><![CDATA[venenux]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=133</guid>
		<description><![CDATA[All&#8217;elenco delle distribuzioni GNU/Linux Libere riconosciute dalla FSF si aggiunge un nuovo nome: quello di VENENUX. Si tratta di una distribuzione realizzata da e per utenti di software libero latinoamericani.
VENENUX dichiara che non includerà mai pacchetti non liberi. Il sistema ha come primo obiettivo quello di essere fortemente ottimizzato. L&#8217;equipo che si occupa del suo [...]]]></description>
			<content:encoded><![CDATA[<p>All&#8217;elenco delle <a title="Free Distros" href="http://www.gnu.org/distros/free-distros.html">distribuzioni GNU/Linux Libere</a> riconosciute dalla <a title="Free Software Foundation" href="http://www.fsf.org/">FSF</a> si aggiunge un nuovo nome: quello di <a title="VENENUX GNU/Linux" href="http://www.venenux.org/">VENENUX</a>. Si tratta di una distribuzione realizzata da e per utenti di software libero latinoamericani.</p>
<p>VENENUX dichiara che non includerà mai pacchetti non liberi. Il sistema ha come primo obiettivo quello di essere fortemente ottimizzato. L&#8217;equipo che si occupa del suo sviluppo non è costituito solo da programmatori, ma anche di esperti di vari settori che sono in grado di stabilire i requisiti da soddisfare per venire incontro ai bisogni degli utenti avanzati. Inoltre il tutto è preconfigurato per adattarsi meglio a un&#8217;utente latinoamericana.</p>
<p>Con queste premesse, entra nella schiera delle distribuzioni libere un sistema operativo che non solo è libero dal punto di vista formale, ma favorisce una buona quantità di utenti che sono normalmente sono ignorati per motivi geopolitici.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=133</wfw:commentRss>
		</item>
		<item>
		<title>Kongoni, un altro modo di dire gnu</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=132</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=132#comments</comments>
		<pubDate>Fri, 24 Jul 2009 21:17:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[distribuzioni]]></category>

		<category><![CDATA[kongoni]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=132</guid>
		<description><![CDATA[All&#8217;elenco delle (poche) distribuzioni GNU/Linux completamente libere si aggiunge Kongoni:
http://www.kongoni.co.za/

Le distribuzioni completamente libere riconosciute dalla Free Software Foundation:
http://www.gnu.org/distros/free-distros.html
Linee guida per valutare la libertà di una distribuzione:
http://www.gnu.org/philosophy/free-system-distribution-guidelines.html
I motivi per cui le distribuzioni più note non sono incluse nell&#8217;elenco:
http://www.gnu.org/philosophy/common-distros.html

Kongoni (che in lingua shona significa gnu) è una distribuzione basata su Slackware con desktop KDE. Ancora non compare [...]]]></description>
			<content:encoded><![CDATA[<p>All&#8217;elenco delle (poche) distribuzioni GNU/Linux completamente libere si aggiunge Kongoni:<a href="http://www.kongoni.co.za/"></a></p>
<p><a href="http://www.kongoni.co.za/">http://www.kongoni.co.za/</a></p>
<ul>
<li>Le distribuzioni completamente libere riconosciute dalla Free Software Foundation:<br />
<a href="http://www.gnu.org/distros/free-distros.html">http://www.gnu.org/distros/free-distros.html</a></li>
<li>Linee guida per valutare la libertà di una distribuzione:<br />
<a href="http://www.gnu.org/philosophy/free-system-distribution-guidelines.html">http://www.gnu.org/philosophy/free-system-distribution-guidelines.html</a></li>
<li>I motivi per cui le distribuzioni più note non sono incluse nell&#8217;elenco:<br />
<a href="http://www.gnu.org/philosophy/common-distros.html">http://www.gnu.org/philosophy/common-distros.html</a></li>
</ul>
<p>Kongoni (che in lingua shona significa gnu) è una distribuzione basata su Slackware con desktop <a href="http://www.kde.org/">KDE</a>. Ancora non compare nell&#8217;elenco ufficiale della FSF, che però ha terminato di esaminare l&#8217;ultima release, chiamata Nietzsche e rilasciata meno di due settimane fa. Gli unici pacchetti non liberi che sono stati trovati sono il firmware Ralink e i font Lucida - nel prossimo update del sistema verranno eliminati. Kongoni si impegna inoltre a eliminare qualsiasi altro pacchetto non libero che venga loro segnalato.</p>
<p>Essendo una distribuzione sudafricana, in futuro hanno intenzione di includere alcuni software liberi che la maggior parte delle altre distribuzioni (libere o non libere) non può includere per problemi di brevetti o altre questioni legali che però in Sudafrica non sussistono.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=132</wfw:commentRss>
		</item>
		<item>
		<title>MySQL Wikibook</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=131</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=131#comments</comments>
		<pubDate>Sun, 12 Jul 2009 15:32:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=131</guid>
		<description><![CDATA[Ho appena aggiunto una sezione di una pagina del progetto di documentazione libera di MySQL (metadati sugli eventi). E&#8217; un lavoro sporco, o meglio noioso, ma qualcuno doveva pur farlo. Mi dispiace solo che al momento il progetto sia un po&#8217; abbandonato a sè stesso, perchè non ce n&#8217;è mai stato così bisogno come oggi.
Spero [...]]]></description>
			<content:encoded><![CDATA[<p>Ho appena aggiunto una sezione di una pagina del progetto di <a href="http://en.wikibooks.org/wiki/MySQL">documentazione libera di MySQL</a> (metadati sugli eventi). E&#8217; un lavoro sporco, o meglio noioso, ma qualcuno doveva pur farlo. Mi dispiace solo che al momento il progetto sia un po&#8217; abbandonato a sè stesso, perchè non ce n&#8217;è mai stato così <a href="http://santecaserio.altervista.org/wordpress/?p=114">bisogno</a> come oggi.</p>
<p>Spero che a qualcuno venga voglia di contribuire. Non fatevi intimidire dall&#8217;inglese. Prima di tutto, credo che i contributor più attivi non siano madrelingua inglese. E poi c&#8217;è sempre bisogno di una traduzione in italiano - anche se fosse parziale e aggiornata di rado sarebbe meglio di niente.</p>
<p>Buona rivolta.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=131</wfw:commentRss>
		</item>
		<item>
		<title>Licenze libere senza copyleft</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=130</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=130#comments</comments>
		<pubDate>Sun, 05 Jul 2009 17:01:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Licenze]]></category>

		<category><![CDATA[agpl]]></category>

		<category><![CDATA[copyleft]]></category>

		<category><![CDATA[licenza bsd]]></category>

		<category><![CDATA[licenza expat]]></category>

		<category><![CDATA[licenza mit]]></category>

		<category><![CDATA[licenza x11]]></category>

		<category><![CDATA[sgi free software license]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=130</guid>
		<description><![CDATA[Cos&#8217;è il copyleft?
Il termine copyleft è chiaramente il contrario di copyright. La traduzione italiana (contestata) è permesso d&#8217;autore. Ma che cosa significa?
Il copyright sono i &#8220;diritti&#8221; dell&#8217;autore di un&#8217;opera, intesi come divieti per chi ne possiede una copia. La famosa frase &#8220;All rights reserved&#8221; (tutti i diritti riservati) rende abbastanza ovvio l&#8217;ossimoro: non si parla [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cos&#8217;è il copyleft?</strong></p>
<p>Il termine copyleft è chiaramente il contrario di copyright. La traduzione italiana (contestata) è <em>permesso d&#8217;autore</em>. Ma che cosa significa?</p>
<p>Il copyright sono i &#8220;diritti&#8221; dell&#8217;autore di un&#8217;opera, intesi come divieti per chi ne possiede una copia. La famosa frase &#8220;All rights reserved&#8221; (tutti i diritti riservati) rende abbastanza ovvio l&#8217;ossimoro: non si parla di diritti, ma di rigide imposizioni.</p>
<p>Il copyleft è una clausola che può essere applicata a una licenza libera. Quest&#8217;ultima garantisce le libertà basilari all&#8217;utente. Tra queste libertà vi è quella di distribuirla. Il problema nasce proprio qui: se io scarico un software libero, ho il diritto di:</p>
<ul>
<li>Distribuirlo come software non libero?</li>
<li>Aggiungervi moduli non liberi?</li>
<li>Integrarlo in un software non libero di cui sono proprietario?</li>
</ul>
<p>Personalmente penso che la risposta alle domande sopra poste debba sempre essere <strong>no</strong>. Per lo stesso motivo per cui si sviluppa software libero, bisognerebbe impedire che tale software venisse distribuito non liberamente o andasse a integrare altri software che liberi non sono.</p>
<p>Altri la pensano diversamente. Ritengono che impedire le tre azioni sopra elencate equivalga a privare gli utenti di alcune loro libertà. A questa obiezione rispondo che non bisogna abusare della parola libertà. La mia libertà inizia dove finisce la tua? Bene, allora non ho il diritto di prendere un software (scritto da me o da altri), fornirtene una copia e decidere cosa farai tu con quella copia. Che senso ha lagnarsi di &#8220;non essere liberi di imporre&#8221;? E&#8217; pura retorica.</p>
<p>Ad ogni modo non tutti la pensano così e non riuscirò, con questo post, a convincerli a rivedere le proprie idee. Con questa introduzione voglio principalmente spiegare cos&#8217;è il copyleft: è il &#8220;copyright al contrario&#8221; che impedisce di distribuire un software libero (o i suoi moduli) come software non libero.</p>
<p><strong>L&#8217;uso del programma in rete<br />
</strong></p>
<p>Le licenze, con o senza copyleft, hanno un problema storico. Come <a href="http://santecaserio.altervista.org/wordpress/?p=126">ho spiegato</a> in un post precedente, le licenze libere tradizionali sono state scritte anni prima della diffusione di internet come la conosciamo oggi. Di conseguenza esse garantiscono tutte le libertà fondamentali agli utenti che ricevono una copia del programma, che avranno quindi la possibilità di eseguirlo in locale o installarlo essi stessi su di un server. Quando utilizzano il programma attraverso una rete però (webmail, forum, mailing list&#8230;) non ricevono alcuna copia del programma e i termini della licenza non si applicano. Queste persone non vedono il codice sorgente, tanto meno lo possono modificare o ridistribuire. Eppure, da un punto di vista logico, non esiste un motivo per il quale chi usa Evolution debba avere più libertà di chi usa una webmail.</p>
<p>L&#8217;unica licenza che prende in considerazione questo problema, e che quindi garantisce a chi usa un programma attraverso la rete le sue libertà basilari, è la <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">GNU AGPL</a>. Si tratta di una licenza libera dotata di un forte copyleft, derivata dalla <a href="http://www.fsf.org/licensing/licenses/gpl-3.0.html">GPL</a>.</p>
<p>Al momento, chi non ama il copyleft non ha a disposizione una licenza già pronta che risolva i problemi legati all&#8217;uso di un programma in rete. Vi è però una motivazione: inserire una clausola che garantisca le libertà degli utenti di rete significherebbe inserire una forma di copyleft. Infatti non si garantirebbe solo la libertà di chi riceve il programma che si sta distribuendo, ma anche la libertà degli utenti del suo server.</p>
<p>Chi considera una regola simile inaccettabile, a mio parere, dovrebbe comunque garantire in prima persona almeno i diritti degli utenti dei propri siti internet. Nulla gli vieta infatti di distribuire i sorgenti di tutti i programmi liberi che crea o che utilizza, se la licenza lo consente.</p>
<p><strong>Le licenze senza copyleft</strong></p>
<p>La più famosa licenza priva di copyleft è indubbiamente la <strong>BSD</strong>. Quando si utilizza questo nome però bisognerebbe capire cosa si intende. Esistono infatti due versioni: la <a href="http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6">licenza BSD <em>a 4 clausole</em></a> (o <em>licenza BSD originale</em> o <em>FreeBSD license</em>) conteneva la cosiddetta <em>clausola pubblicitaria</em> (<em>ad clause</em>). La clausola numero 3 imponeva infatti di includere nel software una frase che riconoscesse la paternità del programma alla <em>This product includes software developed by the University of California, Berkeley and its contributors.</em> Non si tratta ovviamente di un abuso, ma questo ha portato il problema della proliferazione dei riconoscimenti. Poichè ogni autore di un &#8220;pezzo&#8221; di software tendeva a modificare questa licenza aggiungendo il proprio nome o quello della propria organizzazione, man mano che nuovi programmatori miglioravano il codice si aggiungevano sempre più nomi. Lo stesso FreeBSD ha deciso di eliminare quella clausola e tentare di eliminare i nomi che potevano essere eliminati quando, nel 1997, ha dovuto rilasciare una versione con ben 75 riconoscimenti. Va comunque detto che non vi è nulla di non libero in tale licenza, solo qualche problema pratico.</p>
<p>La versione successiva della licenza viene generalmente chiamata la <a href="http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6">BSD <em>a 3 clausole</em></a>, o <em>modificata</em>. La clausola publicitaria è stata depennata. Questa licenza, in pratica, permette a chi riceve una copia del software di farne ciò che desidera. Anche distribuirlo in forma binaria - purchè naturalmente applichi la stessa licenza.</p>
<p>La <a href="http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3">licenza X11</a> non obbliga l&#8217;utente a includere il nome dell&#8217;autore originale (l&#8217;X Consortium) ma al contrario impedisce l&#8217;uso di tale nome a fini pubblicitari, a meno che non si disponga di esplicita dichiarazione scritta da parte dell&#8217;interessato.</p>
<p>La <a href="http://oss.sgi.com/projects/FreeB/">SGI Free Software License B</a>, versione 2.0, è molto simile alla X11. Le versioni precedenti alla 2.0 non sono considerate libere. Tuttavia esse permettono di ridistribuire il software con una versione successiva della licenza, perciò la loro non-libertà si può annullare ni maniera banale.</p>
<p>La <a href="http://www.gnu.org/licenses/license-list.html">licenza Expat</a> permette essenzialmente di fare qualsiasi cosa con il software che copre, purchè non si elimini la licenza. Inoltre essa si applica esplicitamente anche ai file di documentazione distribuiti con il programma.</p>
<p>Sia la licenza X11, sia la Expat sono talvolta chiamate <em>licenza MIT</em>. Data l&#8217;ambiguità del termine sarebbe meglio evitarlo.</p>
<p><strong>Come si combinano queste licenze con la GPL e la AGPL?</strong></p>
<p>Tutte le licenze senza copyleft qui elencate sono compatibili con la GPL. Questo significa che il codice coperto da GPL e il codice libero coperto da queste licenze possono essere combinati insieme formando un&#8217;unica entità distribuibile, modificabile e ridistribuibile. Ogni parte di codice sarà sottoposto solo alle regole stabilite dalla licenza alla quale è associato.</p>
<p>Queste licenze sono compatibili anche con la AGPL. Si tenga presente che un modulo coperto da una di esse, se inserito in un software più ampio coperto da AGPL, viene sottoposto a una delle clausole della AGPL. Se modificato, quindi, il suo codice sorgente dovrà essere reso disponibile alle persone che se ne servono attraverso una rete.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=130</wfw:commentRss>
		</item>
		<item>
		<title>Approfondimenti sulla AGPL</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=129</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=129#comments</comments>
		<pubDate>Sun, 05 Jul 2009 07:05:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Licenze]]></category>

		<category><![CDATA[agpl]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=129</guid>
		<description><![CDATA[Ho già parlato (un paio di post fa) della licenza GNU Affero General Public License, o AGPL. Ma vorrei approfondire il tema.
Differenze con la GPL
La AGPL3 differisce con la GPL3per principalmente per la sezione 13. La riporto, in inglese, perchè GNU non ha ancora fornito una traduzione in italiano.
13. Remote Network Interaction; Use with the [...]]]></description>
			<content:encoded><![CDATA[<p>Ho <a href="http://santecaserio.altervista.org/wordpress/?p=126">già parlato</a> (un paio di post fa) della licenza GNU Affero General Public License, o <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPL</a>. Ma vorrei approfondire il tema.</p>
<p><strong>Differenze con la GPL</strong></p>
<p>La AGPL3 differisce con la GPL3per principalmente per la sezione 13. La riporto, in inglese, perchè GNU non ha ancora fornito una traduzione in italiano.</p>
<p><em>13. Remote Network Interaction; Use with the GNU General Public License.</p>
<p>Notwithstanding any other provision of this License, if you modify the<br />
Program, your modified version must prominently offer all users<br />
interacting with it remotely through a computer network (if your version<br />
supports such interaction) an opportunity to receive the Corresponding<br />
Source of your version by providing access to the Corresponding Source<br />
from a network server at no charge, through some standard or customary<br />
means of facilitating copying of software.  This Corresponding Source<br />
shall include the Corresponding Source for any work covered by version 3<br />
of the GNU General Public License that is incorporated pursuant to the<br />
following paragraph.</p>
<p>Notwithstanding any other provision of this License, you have<br />
permission to link or combine any covered work with a work licensed<br />
under version 3 of the GNU General Public License into a single<br />
combined work, and to convey the resulting work.  The terms of this<br />
License will continue to apply to the part which is the covered work,<br />
but the work with which it is combined will remain governed by version<br />
3 of the GNU General Public License.</em></p>
<p>Per prima cosa, essa dice che, se si modifica il codice sorgente del programma, bisogna offrire ai propri utenti (che interagiscono con il programma attraverso la rete) la possibilità chiara (<em>prominently</em>) di ricevere una copia dei sorgenti stessi.</p>
<p><strong>La AGPL e le altre licenze</strong></p>
<p>Il codice sorgente del programma rilasciato con la AGPL potrebbe includere delle librerie o altri moduli, che possono anche essere stati scritti da altri programmatori, e che potrebbero essere coperti da licenze differenti. Allora sorge la domanda: se si modifica queste librerie, occorre poi distriburle agli utenti che le utilizzano attraverso una rete?</p>
<p>Risposta: si, a meno che non si tratti di librerie di sistema. Non sarebbe ragionevole, infatti, chiedere che chi modifichi libc ne fornisca il sorgente agli utenti del proprio sito. Tuttavia, se si utilizza una libreria per la connessione al database e questa viene modificata, i sorgenti dovranno essere pubblicamente disponibili.</p>
<p>Per la precisione, la sezione 13 utilizza una definizione ben precisa parlando del &#8220;codice sorgente&#8221; che deve essere distribuito: lo chiama <em>Corresponding Source</em>. Questo termine è definito nella sezione 1 della AGPL:</p>
<p><em>The &#8220;Corresponding Source&#8221; for a work in object code form means all<br />
the source code needed to generate, install, and (for an executable<br />
work) run the object code and to modify the work, including scripts to<br />
control those activities.  However, it does not include the work&#8217;s<br />
System Libraries, or general-purpose tools or generally available free<br />
programs which are used unmodified in performing those activities but<br />
which are not part of the work.  For example, Corresponding Source<br />
includes interface definition files associated with source files for<br />
the work, and the source code for shared libraries and dynamically<br />
linked subprograms that the work is specifically designed to require,<br />
such as by intimate data communication or control flow between those<br />
subprograms and other parts of the work.</p>
<p>The Corresponding Source need not include anything that users<br />
can regenerate automatically from other parts of the Corresponding<br />
Source.</p>
<p>The Corresponding Source for a work in source code form is that<br />
same work.</em></p>
<p><strong>AGPL e GPL: compatibili?</strong></p>
<p>La AGPL3 richiama esplicitamente la GPL nella sezione 13 riportata all&#8217;inizio. Essa è compatibile con la versione 3 della GPL. Questo significa che è possibile usare una libreria distribuita con GPL3 all&#8217;interno di un programma AGPL.</p>
<p>Tuttavia, la AGPL non è compatibile con la GPL2. Questo accade perchè quanto richiesto dalla sezione 13 è definito come <em>Further Resctrictions</em> dalla sezione 7 della GPL2. Essa proibisce qualsiasi ulteriore restrizione, perchè si rischierebbe che un distributore aggiunga alla licenza imposizioni che non hanno a che fare con la libertà.</p>
<p><strong>Scegliere tra AGPL e GPL</strong></p>
<p>La maggior parte degli sviluppatori web che rilasciano script coperti da licenza AGPL3, semplicemente non hanno riflettuto sul fatto che questa licenza non garantisca realmente la libertà degli utenti o non sono a conoscenza della AGPL.</p>
<p>La AGPL andrebbe sempre utilizzata al posto della GPL. Nel caso in cui si stia rilasciando uno script PHP che produce output in HTML, le ragioni sono ovvie. Ma anche quando si sta rilasciando un programma di altro genere è saggio utilizzare la AGPL. Infatti il software potrebbe essere scaricato da programmatori che decideranno di migliorarlo, eventualmente aggiungendovi nuove funzionalità - questa pratica è prevista dalle licenze libere ed è da incoraggiare. Tuttavia questo significa anche che un programma pensato per essere eseguito in locale potrebbe diventare un programma che offre funzionalità di rete, che magari l&#8217;autore originale non immaginava. E&#8217; quindi una buona abitudine utilizzare sempre la AGPL.</p>
<p><strong>Troppo libera per Google</strong></p>
<p>Google si proclama sostenitore del software libero e fornisce strumenti per alcuni progetti. Google Code però ha preso una decisione drastica: ha bandito la AGPL. <a href="http://groups.google.com/group/google-code-hosting/browse_thread/thread/1714c5c0ef5d9f9f/7d59a938d295bb8f">Chiedendo gentilmente</a> agli autori dei progetti coperti da questa licenza di&#8230; andarsene.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=129</wfw:commentRss>
		</item>
		<item>
		<title>Mailing list anti-cloud</title>
		<link>http://santecaserio.altervista.org/wordpress/?p=128</link>
		<comments>http://santecaserio.altervista.org/wordpress/?p=128#comments</comments>
		<pubDate>Fri, 03 Jul 2009 17:01:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Libertà Informatica]]></category>

		<category><![CDATA[cloud computing]]></category>

		<guid isPermaLink="false">http://santecaserio.altervista.org/wordpress/?p=128</guid>
		<description><![CDATA[Un breve post per segnalarvi che Ac LAB (Anti-cloud LAB) ha ora una sua mailing list. La lista è pubblica. Consiglio l&#8217;iscrizione a chi è interessato all&#8217;argomento.
]]></description>
			<content:encoded><![CDATA[<p>Un breve post per segnalarvi che <a href="http://aclab.indivia.net/">Ac LAB</a> (Anti-cloud LAB) ha ora una sua <a href="https://lists.aktivix.org/mailman/listinfo/aclab">mailing list</a>. La lista è pubblica. Consiglio l&#8217;iscrizione a chi è interessato all&#8217;argomento.</p>
]]></content:encoded>
			<wfw:commentRss>http://santecaserio.altervista.org/wordpress/?feed=rss2&amp;p=128</wfw:commentRss>
		</item>
	</channel>
</rss>
