Monthly Archives: January 2009

Oh oh oh, il mio blog su Wordpress

Ecco, alla fine ci sono passato anche io a Wordpress.

Ho resistito molto ma infine eccolo qua: quello che era il vecchio claudio.cicali.org su un vetustissimo Textpattern adesso è claudio.cicali.name su WP 2.7.

Avendo notato che recentemente mi era tornata la voglia di scrivere ma che avevo troppi siti sparsi qua e là ho approfittato dell’anno nuovo per raccogliere tutto sotto un unico dominio;

Wordpress lo conoscete tutti meglio di me, e sembra che piaccia a tutti. Come ho già avuto modo di dire, però, io sono un meccanico e giudico le macchine da quello che c’è sotto il cofano e non dal colore della carrozzeria. Wordpress, sotto sotto (php level), fa un po’ ridere (era taaaanto tempo che non vedevo più un “header.php”), ma l’interfaccia è molto carina e potente (e bacata, vabbé, come tutti).

Per certi versi è l’esatto opposto di Drupal (che conosco assai meglio): WP è bello fuori (interfaccia utente) e brutto dentro (codice, sistema di temi e probabilmente altro ancora); Drupal è brutto fuori (ma migliora!) e bello dentro (molto, ma molto developer friendly). OK, sono strumenti diversi, ma dopo tutte ’ste fanfare pensavo di trovare qualcosa di bello e scintillante, e invece… comunque mi è anche chiaro che, a causa del suo stesso successo, WP non si può permettere di cambiare completamente il motore.

I post dei vecchi blog li ho copiati tutti a manella, che tanto erano una cinquantina e così ho avuto anche modo di fare amicizia con questa bella interfaccia.

Su un blog (di cui, ahem, avevo addirittura perso la password di amministrazione), invece della data del post veniva visualizzato il numero di giorni passati. Ecco che una cosina così, direttamente da MySQL mi ha fatto tanto comodo:

select date_format(date_add(now(), interval -33 day), '%d/%m/%Y');

In questo modo ho visualizzato esattamente la data in formato italiano del post :)

Per il tema ho scelto Typography, che ho dovuto pesantemente modificare sia nei CSS che nell’HTML. Il lavoro non è ancora finito… sigh.

Wordpress adora l’XHTML, maledetto; io ho usato comunque il DTD 4.01 ma qualche tag generato e non creato rimane XHTML. Pazienza.

Ho installato il plugin OpenId, che invito tutti ad installare sul proprio blog per permettere ai visitatori  di usarlo per commentare. Se non volete che vi appaia l’invito a fare login con OpenID quando si accede a wp-admin, allora occorre modificare il file login.php del plugin. Dato che io non accetto registrazioni dagli utenti, è sufficiente aggiungere:

if (!get_option('users_can_register') )
  return;

subito all’inizio della funzione openid_wp_login_form()

Il sito è mezzo in inglese e mezzo in italiano, così come sono le stringhe dell’interfaccia… penso proprio rimarrà così :)

Ah, la scritta in alto “Claudio’s Hideout” è volutamente “tagliata” :)

Un lavoretto interessante è stato quello di fare in modo che i vecchi url di claudio.cicali.org continuassero a funzionare in maniera corretta. Ho tenuto dunque traccia della mappa tra il vecchio e il nuovo url e poi nella document root di claudio.cicali.org ho messo questo script:

include("routes.php");
$url = "http://claudio.cicali.org" . $_SERVER['REQUEST_URI'];
if (isset($routes[$url])) {
  header("Location: " . $routes[$url], false, 301);
}
else {
  error_log($url . " non trovato");
  header("HTTP/1.0 404 Not Found");
  print "<h1>404 - Not Found</h1>";
}
exit;

ovviamente condito con questo paio di regoline

RewriteRule ^$ http://claudio.cicali.name [R=303,L]
RewriteRule . index.php [L]

Inizializzazione delle variabili JavaScript con l’operatore ||

Il JavaScript permette l’operazione di inizializzazione delle variabili utilizzando l’operatore logico ||. Pur essendo molto comodo, occorre prestare molta attenzione a come lo si usa. Vediamo qualche esempio.

Questa sintassi è utilizzata talvolta in concomitanza con un’altra caratteristica del linguaggio, ovvero quella di non avere una sintassi esplicita per i valori di default dei parametri delle funzioni; in JavaScript, infatti, TUTTE le funzioni sono a numero di argomenti variabile.

In tale contesto il test che si può effettuare è il seguente

foo();

function foo(bar) {
  bar = bar || "test";
  alert(bar);
}

In tal caso vedremo ovviamente un bel alert con “test”.

Purtroppo, e qui sta l’inghippo, l’operatore || è sensibile a tutto ciò che in JavaScript è falsy o truthy, ovvero a tutti quei valori che l’inteprete in fase di test di un’espressione riduce al valore booleano true o false.

foo();
foo(false);
foo(0);
foo(null);
foo("");
function foo(bar) {
  bar = bar || "test";
  alert(bar);
}

In tutti questi casi vedremo spuntare un bel “test” nel messaggio di alert, e probabilmente non è esattamente quello che intuitivamente ci saremmo aspettati.

Se vogliamo fare un test robusto per la presenza o meno del nostro parametro, allora occorre ricorrere al classico (meno elegante e un po’ cervellotico):

function foo(bar) {
  if (typeof bar == 'undefined') {
    bar = "test";
  }
  console.log(test);
}

Da notare una piccola perversione: nel caso in cui “bar” non venga passato (e sia dunque “undefined”), l’inteprete avrà comunque definito il simbolo “bar” per lo scope locale della funzione e non come simbolo globale

Test effettuati su FF 3


Flash Player, Firefox e gli Archived Flash Players

Si sa che i rapporti tra Adobe e Linux sono sempre stati un po’ strani… uno degli effetti collaterali di questo atavico problema sta nel supporto dei vari Flash Player.

Recentemente ho spesso un problema: dopo un po’ che smanetto con il player (frequenti caricamenti di pagine, visto che sto sviluppando un’applicazione flash/ajax) questo dopo due o tre secondi di “play” si pianta.

Ho scoperto che il problema sta banalmente nell’audio; se per qualche motivo il “sottosistema audio” ha dei problemi (non funziona, conflitta, è piantato – le solite problematiche dell’audio sotto Linux), il plugin si comporta in quel modo. Nel mio caso l’inghippo sta nel suspend della macchina… quando questa si riprende, l’audio è sminchiato (problema conosciuto dell’Acer Aspire One – che credevo di aver risolto, e invece…). Logout/Login e va tutto a posto.

Nel frattempo, però (non tutti i mali…), ho avuto modo di trovare una risorsa molto interessante: gli Archived Flash Players, ovvero una directory dove Adobe mantiene tutte le vecchie versioni dei player, dalla 2 alla 10 comprese tutte le sottorelease e tutte le varie architetture (esistono per esempio ben 12 sottoversioni del player 9!).

Una volta scaricato e scompattato l’archivio, per usare una versione piuttosto che un’altra è sufficiente:

  1. Chiudere Firefox (altrimenti va in crash)
  2. Copiare la versione che interessa in $HOME/.mozilla/plugins (il file che serve è solo il libflashplayer.so)
  3. Riavviare Firefox

I contenuti di questo sito sono distribuiti con una licenza Creative Commons 2.5 eccetto dove diversamente specificato.

Tema WordPress Punto5 sviluppato da Claudio Cicali; icone del set famfamfam silk e komodomedia.

© 2005-2010
Claudio Cicali