Stallman su software libero e libertà della persona

Citazione

Onestamente non so se ci sono cose che Gnu/Linux può fare meglio, anche perché non so esattamente cosa possa fare l’iBad. E non posso dire che il nostro software sia sempre migliore di quello proprietario: dipende da quello che ti serve. Ma questo è un problema secondario. Il punto è che se ragioniamo in termini di convenienza, ci sono software migliori e software peggiori. Ma se ragioniamo in termini di etica, noi siamo dalla parte del Bene, loro dalla parte del Male. Dunque il nostro software sarà sempre migliore del loro.
[...]
Qui parliamo di etica. Fare un sacco di soldi con un sistema che calpesta le libertà individuali non va bene, è un attacco alla società nel suo complesso dal quale dobbiamo difenderci con tutti i mezzi. Meglio fare pochi soldi con qualcosa di eticamente sostenibile. Il business viene dopo la libertà.

Richard M. Stallman, Stallman: «iPad? Io lo chiamo iBad» 1

Grazie a Dario Cavedon per la segnalazione.

Note

  1. Il titolo inglese è: Stallman: «The iBad? A serious threat to individual freedom» la cui traduzione italiana è: Stallman: «L’iBad? Una seria minaccia alla libertà individuale».

Cambiare la guid dei post

In uno dei siti che gestisco e realizzati con WordPress, avevo l’esigenza di cambiare la GUID di ogni post in modo che combaciasse con il suo ID o, per essere più chiari, con il permalink di default (tipo http://miosito.it/?p=123). Il motivo per cui non combaciava era dovuto all’importazione da un file XML estraneo a WordPress. L’operazione di sostituzione può essere effettuata con gli strumenti che il CMS ci fornisce e, visto che magari vi può tornare utile, questo è lo script che ho usato:

<?php
global $wpdb, $post;
$myposts = get_posts('numberposts=-1');
$i = 0;
$updated = 0;
$not_updated = 0;
foreach($myposts as $post) :
	setup_postdata($post);
	$i++;
	$current_guid = get_post_field('guid', $post->ID);
	$correct_guid = get_permalink($post->ID);
	if ($current_guid != $correct_guid) {
		$where = array('ID' => $post->ID);
		$wpdb->update($wpdb->posts, array('guid' => $correct_guid), $where);
		echo $i.'. GUID del post '.$post->ID.' aggiornato da '.$current_guid.' a '.$correct_guid.'<br />';
		$updated++;
	} else {
		echo $i.'. GUID del post '.$post->ID.' OK<br />';
		$not_updated++;
	}
endforeach;

echo '<p><strong>Risultato:</strong><br />';
echo 'Righe aggiornate: <strong>'.$updated.'</strong><br />';
echo 'Righe non aggiornate: <strong>'.$not_updated.'</strong><br />';
echo 'Totale righe controllate: <strong>'.($updated+$not_updated).'</strong></p>';
?>

In poche parole, lo script confronta il campo guid della riga del post con il permalink (che, anche temporaneamente, va impostato come Default) e, se è diverso, lo adegua. Alla fine dell’operazione, lo script stampa tutte le operazioni eseguite, sia che abbia modificato la riga del database sia che non lo abbia fatto.

Ho utilizzato lo script incollandolo nell’index.php, subito dopo la chiamata all’header. In pochi secondi tutte le migliaia di post avevano la GUID corretta. Per averne anche un riscontro visivo, si può aggiungere all’interno del loop, magari proprio prima del titolo del post, questa riga:

echo get_post_field('guid', $post->ID).'<br />'.get_permalink( $post->ID );

Nel Codex, alla pagina Interfacing With the Database ci sono tutte le informazioni necessarie, in particolare il paragrafo UPDATE rows.