Blog

  • 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.");
    		}
    	}
    }