Piero V.

Plugin RewriteURLs (v2.2) [Flatpress]

Italiano

Ho risolto alcuni bug di RewriteURLs, un’alternativa al plugin PrettyURLs di Flatpress.

Per chi non lo conoscesse, sia RewriteURLs, sia PrettyURLs permettono di sfruttare il mod_rewrite del web server “abbellendo” gli URL (tipo quelli del mio blog).

Se non avete mai usato questi plugin dovrete configurare il vostro webserver, per esempio per Apache dovete scrivere in un file .htaccess (cambiate i vostri percorsi):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /flatpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /flatpress/index.php [L]
</IfModule>

Attenzione: considero questo uno dei miei plugin più complicati. Lo ritengo ancora un software in fase beta.

Licenza: GNU GPLv2

Download: rewriteurls_v2.2.tar.gz

English

I’ve fixed some bugs of RewriteURLs, an altervanive to PrettyURLs.

Both RewriteURLs and PrettyURLs allow to use the mod_rewrite of your server to use nice URLs (like mine).

If you haven’t used one of these plugins yet, you have to configure you webserver: for example, if you use Apache, you have to write in a .htaccess file this code (change your paths):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /flatpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /flatpress/index.php [L]
</IfModule>

Warning: it’s one of my most complicated plugin: I consider it a beta software.

I’ve also to comment the file because it’s complicated and there are few comments.

License: GNU GPLv2

Download: rewriteurls_v2.2.tar.gz

Reverse di Songsterr

Attenzione: lo scopo di questo articolo è puramente informativo, perciò l’autore non si prende alcuna responsabilità di ogni suo uso, lecito o illecito che sia.

Il sito Songsterr è un sito utile ai musicisti che vogliono leggere le parti di una canzone per impararla, vedere passaggi che non sono chiari etc…

È in pratica una versione web-based del software Guitar Pro, infatti sin dal primo sguardo chi lo conosce si accorgerà che ha molte funzioni simili.

Per poter usare Songsterr non occorre essere registrati, invece occorre esserlo per inviare una nuova canzone. Penso questa decisione sia dovuta al fatto che si vuole mantenere un’alta qualità al servizio offerto.

Un’altra distinzione tra gli utenti è che quelli non registrati (e anche gli account gratuiti, penso) hanno un limite nelle funzioni: non possono variare i livelli, stampare le tablature, mettere il player a schermo intero etc. Tuttavia ci sono alcune canzoni di prova delle funzionalità PRO.

In questo articolo voglio analizzare il funzionamento del player, limitato alle richieste delle informazioni sulle canzoni, non a come queste ultime vengono visualizzate. … [Leggi il resto]

TuxGuitar

Oggi volevo parlarvi di questo software: TuxGuitar.

È un editor di tablature libero (rilasciato sotto la licenza LGPL v2.1), una specie di clone aperto di Guitar Pro, infatti è compatibile con i suoi formati, anche se gli manca qualche funzionalità.

È scritto in java perciò è multi piattaforma.

È utilissimo ai chitarristi per impararsi le parti difficili, come gli assoli.

Su Windows mi pare funzioni al primo colpo, mentre su Linux c’è bisogno di Timidity (almeno su Debian e Ubuntu).

Comunque vi consiglio anche il sito Songsterr che funziona in modo simile solo che vi dà un player online che usa flash.

Lì le tablature sono fatte molto bene e in realtà sono in formato GP4 (Guitar Pro 4, supportato bene anche da TuxGuitar) e voi le scaricate inconsciamente e le mettete in RAM.

Comunque esisterebbe un modo per scaricarle: se monitorate le richieste vi accorgerete dell’indirizzo del file GP4 che sarebbe scaricabile (non c’è alcun controllo sullo User-Agent, almeno con Iceweasel 4.0.1 va alla grande) tuttavia devo invitarvi a non farlo perché è contro i TOS di Songsterr e potenzialmente illegale.

Spero di poterla dire quest’ultima informazione, altrimenti mi linciano 😊

PHP: implode considerando anche le chiavi

Ogni tanto in PHP c’è il bisogno di unire gli array considerando anche le chiavi, così ho scritto questa funzione.

In realtà è banale ma ogni volta che comincio un progetto sono costretto a riscrivermela, così la scrivo qui.

/**
 * Mette insieme gli elementi di un array in una stringa considerando
 * anche le chiavi.
 *
 * @param string $glueval: stringa per unire chiave e valore
 * @param string $gluekey: stringa per unire le coppie
 * @param array $array: L'array da unire
 * @return string: L'array unito
 *
 * @author: Piero VDFN
 * @license: Public Domain
 */
function implode_keys($glueval, $gluekey, $array) {
	if(count($array)==0) {
		return '';
	}
	$r='';
	foreach($array as $key=>$val) {
		$r.=$key.$glueval.$val.$gluekey;
	}
	$r=substr($r, 0, -strlen($gluekey));
	return $r;
}

Questa funzione è utilissima per unire le variabili GET da mettere in un indirizzo partendo da un array.

Cosa sono gli hook

Spesso quando parlo dello sviluppo dei plugin di Flatoress o in generale dello sviluppo di un sito web dico sempre qualcosa riguardante gli hook, che però non sono un concetto noto a tutti, perciò ho deciso di fare questo post di spiegazione.

Innanzitutto un programma o uno script possono essere divisi in blocchi (più o meno grandi), come inizializzazione, preparazione del contenuto, output del contenuto, chiusura delle risorse utilizzate (connessioni al database etc…).

Lo scopo degli hook è di poter inserire dinamicamente una porzione di codice (per esempio una funzione) in questi blocchi, infatti hook in italiano vuol dire gancio. Talvolta gli hook possono anche sostituire i comportamenti di default di un programma.

Gli hook sono praticamente ciò che rende un programma estendibile.

Per esempio grazie agli hook si può commutare da un sistema di indirizzi che si basa su variabili GET ad un sistema di indirizzi basato sul mod_rewrite più SEO-compatibile: si inserisce una funzione che all’inizializzazione dei parametri “raccoglie” gli URL riscritti e poi si usa un altro hook per creare i link.

Usano gli hook anche grandi progetti come Wordpress o Dokuwiki.

Le caratteristiche pratiche dal punto di vista della programmazione degli hook sono:

  • presenza di funzioni che permettono di aggiungerli, modificarli, rimuoverli o eseguirli
  • un sistema di priorità per eseguire delle porzioni di codice prima o dopo di altre
  • la possibilità di essere chiamati molte volte
  • la possibilità di poterne creare di nuovi dinamicamente

Un primordiale sistema di hook è abbastanza semplice da implementare: è una lista di callback da eseguire. Perciò, per esempio, basta creare un array multidimensionale: nel primo array si inserisce la priorità per chiave e il valore un array con il nome delle funzioni da chiamare (per esempio, in PHP tramite call_user_func).

Spero di essere stato il più chiaro possibile, altrimenti fatemelo sapere via commento.