Installare nginx su Debian Squeeze

Installiamo un web server molto veloce e che richieda poche risorse.
Per ottenere tutto ciò installeremo nginx su Debian Squeeze.
Iniziamo aggiungendo il repository necessario per scaricare nginx aggiungendo le seguenti linee al file /etc/apt/sources.list:

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

Fatto questo aggiungiamo la chiave GnuPG del repository appena caricato:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
rm -f dotdeb.gpg

A questo punto è necessario aggiornare APT:

aptitude update

Adesso possiamo procedere con l’installazione vera e propria di nginx:

aptitude install nginx

Semplicemente visitando l’indirizzo http://localhost/, o l’indirizzo appropriato del server su cui si sta facendo l’installazione, si può notare che è comparsa la pagina di benvenuto di nginx.

Pagina ufficiale del progetto nginx.
Pagina ufficiale del repository dotdeb.

Installare Oracle Java su Ubuntu 12.04

Rimuvere l’installazione delle OpenJDK

sudo apt-get purge openjdk*

Aggiungere il repository

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Installare Oracle JRE

sudo apt-get install oracle-java7-installer

Se necessario installare Oracle JDK

sudo apt-get install oracle-jdk7-installer

Sostituire Open Office con Libre Office

Come sostituire Open Office con il nuovo Libre Office su una versione di Ubuntu che ancora non lo montava di default?

Rimuovere completamente Open Office

sudo apt-get remove openoffice*.*

Aggiungere i nuovi repository

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update

Installare i nuovi pacchetti di Libre Office

sudo apt-get install libreoffice libreoffice-gnome

Per la traduzione in italiano è necessario installare

sudo apt-get install libreoffice-l10n-it

Ripristinare grub2

  1. Lanciare una CD Live di Ubuntu 9.10 o superiore. Una volta avviato, aprire un terminale e digitare il seguente comando:

    sudo fdisk -l

    Prendere nota della partizione sulla quale è installato Ubuntu. Nei prossimi passi verrà assunto come partizione di installazione /dev/sda1.

  2. Montare la partizione sulla quale risiede il sistema. Da riga di comando digitare:

    sudo mount /dev/sda1 /mnt
  3. Montare il resto dei dispositivi con il comando:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
  4. Effettuare un chroot sul proprio sistema. Digitare da riga di comando:

    sudo chroot /mnt

    Se non si è sicuri su questo punto, molto probabilmente non si possiede una partizione di /boot separata. Saltare quindi il prossimo passaggio.

    Se Ubuntu è installato con una partizione di /boot separata (in questo esempio /dev/sda2), sarà necessario montare anch’essa digitando da riga di comando:

    mount /dev/sda2 /boot
  5. Per installare Grub 2 nel MBR, digitare nel terminale il seguente comando:

    grub-install /dev/sda
    update-grub2

    Se si ricevono errori è possibile riprovare con il comando:

    grub-install --recheck /dev/sda
  6. Uscire dal chroot premendo la combinazione di tasti Ctrl+D o eseguendo il comando:

    exit
  7. Smontare tutti i dispositivi digitando:

    cd ~
    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    sudo umount /mnt/
  8. Riavviare il sistema e rimuovere il CD Live.

Fonte: http://wiki.ubuntu-it.org/AmministrazioneSistema/Grub/Ripristino

String Replace in MySQL

Analogamente al linguaggio PHP, che presenta la funzione str_replace, anche il DBMS MySQL ci offre una funzione simile: REPLACE. Pensiamo ad esempio ai BBCodes, pezzi di codice inseriti dall’utente e poi convertiti in (x)HTML: ci sono molte alternative sul come effettuare la conversione da BBCodes ad (x)HTML; noi prenderemo in considerazione l’alternativa in cui i dati inseriti dall’utente vengano inseriti nel database così come sono ed i BBCodes contenuti vengano poi convertiti in tag da MySQL.
Ecco il codice di esempio:

UPDATE `articoli` SET `contenuto`= REPLACE(`contenuto`,'[b]','<strong>');

Con questo codice verrà convertito il BBCode [B] nel tag <strong>. Certamente non è sufficente questa unica query per rendere il tutto produttivo ma rende bene l’idea di come si possa utilizzare la funzione REPLACE di MySQL.

Cancellare tutti i file vecchi

Script per cancellare tutti i file più vecchi di un numero di giorni:

find /dir/to/file/* -mtime +3 -exec rm {} ;

dove -mtime +3 indica che verranno cercati i file creati più di 3 giorni fa.

PHP cURL file download

Se si tratta di un file ASCII utilizzare il seguente codice:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://news.google.com/news?hl=en&topic=t&output=rss');
$fp = fopen('rss.xml', 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec ($ch);
curl_close ($ch);
fclose($fp);

Se invece si tratta di un file binario utilizzare quest’altro codice

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/serverfile.zip');
$fp = fopen('file.zip', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec ($ch);
curl_close ($ch);
fclose($fp);

Link mailto antispam

Come molti sapranno è sufficiente inserire un indirizzo email in una pagina web per essere bersagliati da una valanga di email di spam. Con qualche piccolo accorgimento si può evitare questo inconveniente. Io ad esempio ho deciso di usare javascript ma ci sono moltissimi altri modi per farlo. Ecco il codice da inserire nell’head:

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<script type="text/javascript">
$(document).ready(function () {
	mail_addr('#mail', 'info', 'andreafalco', 'com');
});
function mail_addr(i, n, d, t) {
	var string_mail = n + '@' + d + '.' + t;
	$(i).html(string_mail);
	$(i).attr('href', 'ma' + 'ilto' + ':' + string_mail);
}
</script>

Decomprimere file .gz

function gzfile_get_contents($filename, $use_include_path = 0)
{
	//File does not exist
	if(!@file_exists($filename)) {
		return false;
	}
	
	//Read and imploding the array to produce a one line string
	$data = gzfile($filename, $use_include_path);
	$data = implode($data);
	return $data;
}
//scriviamo il risultato in un file
file_put_contents('punto.txt', gzfile_get_contents('punto.txt.gz'));

System.Collections.Hashtable

Rappresenta un insieme di coppie chiave/valore organizzate in base al codice hash della chiave.

using System;
using System.Collections;

class Example
{
	public static void Main()
	{
		Hashtable htTest = new Hashtable();

		htTest.Add("txt", "notepad.exe");
		htTest.Add("bmp", "paint.exe");
		htTest.Add("dib", "paint.exe");
		htTest.Add("rtf", "wordpad.exe");

		try
		{
			htTest.Add("txt", "winword.exe");
		}
		catch
		{
			Console.WriteLine("Un elemento con 'Key' = 'txt' esiste gia.");
		}

		Console.WriteLine("Per la 'key' = 'rtf', 'Value' = {0}.", htTest["rtf"]);

		htTest["rtf"] = "winword.exe";
		Console.WriteLine("Per la 'key' = 'rtf', 'Value' = {0}.", htTest["rtf"]);

		htTest["doc"] = "winword.exe";

		if (!htTest.ContainsKey("ht"))
		{
			htTest.Add("ht", "hypertrm.exe");
			Console.WriteLine("Valore aggiunto con 'key' = 'ht', 'Value' = {0}", htTest["ht"]);
		}

		Console.WriteLine();
		foreach( DictionaryEntry de in htTest )
		{
			Console.WriteLine("'Key' = {0}, 'Value' = {1}", de.Key, de.Value);
		}

		ICollection valueColl = htTest.Values;

		Console.WriteLine();
		foreach( string s in valueColl )
		{
			Console.WriteLine("'Value' = {0}", s);
		}

		ICollection keyColl = htTest.Keys;

		Console.WriteLine();
		foreach( string s in keyColl )
		{
			Console.WriteLine("'Key' = {0}", s);
		}

		Console.WriteLine("nRimuovo elemento con chiave = 'doc'");
		htTest.Remove("doc");

		if (!htTest.ContainsKey("doc"))
		{
			Console.WriteLine("L'elemento con chiave = 'doc' non esiste.");
		}
	}
}