Archivi tag: script

Chiudere automaticamente un’immagine zoomata con NivoZoom

NivoZoom è una libreria Free ed estremamente leggera, utilizzata per ingrandire le immagini (magari di un e-commerce). Il comportamento di base però è quello di ingrandire l’immagine con un click e di chiuderlo con un altro click. E’ possibile gestire la chiusura automatica dell’immagine sostituendo la funzione doZoom con la seguente (io ho utilizzato la versione Development della libreria disponibile sul sito ufficiale):

var timerClose;
 function doZoom(img, link, nivoZoomHover){
 var imgLarge = $('img.nivoLarge', link);
 if(link.hasClass('zoomed')){
 //Hide Overlay
 if(settings.overlay) $('#nivoOverlay').fadeOut(settings.speed/2);
 //Hide Caption
 if($('.nivoCaption', link).length > 0){
 $('.nivoCaption', link).fadeOut(settings.speed/2);
 }
 //Hide Image
 imgLarge.fadeOut(settings.speed/2, function(){
 img.animate({ opacity:1 }, settings.speed/2);
 });
 link.removeClass('zoomed');
 clearTimeout(timerClose);
 } else {
 //Show Overlay
 if(settings.overlay) $('#nivoOverlay').fadeIn(settings.speed/2);
 //Hide ZoomHover
 nivoZoomHover.css('opacity','0');
 //Show Image
 img.animate({ opacity:0 }, settings.speed/2, function(){
 imgLarge.fadeIn(settings.speed/2, function(){
 showCaption(img, imgLarge, link);
 });
 });
 link.addClass('zoomed');
 timerClose = window.setTimeout(doZoom,8000,img,link,nivoZoomHover);

 }
 }

Creare una macchina virtuale con VirtualBox su un server linux “headless”

Quando si installa un server linux e lo si usa soltanto per pochi e semplici servizi di rete può essere conveniente non installare l’interfaccia grafica. Se poi viene utilizzato soltanto un client SSH per amministrarlo, allora potrebbe risultare comodo creare e gestire le macchine virtuali senza l’intervento della GUI.
Una volta installato VirtualBox, tramite il comando VBoxManage è possibile gestire le fasi di creazione, modifica e gestione delle macchine virtuali.
Iniziamo a creare una macchina:
VBoxManage createvm --name "SampleServer" --ostype Ubuntu_64 --register
il comando crea una macchina virtuale assegnando l’identificativo SampleServer, indica che verrà installato un sistema operativo Ubuntu a 64 bit e la registra nel catalogo (operazione che è possibile fare in seguito con il comando VBoxManage registervm)
Per conoscere tutti i tipi di sistema operativo che si possono installare è disponibile il comando:
VBoxManage list ostypes
In seguito possiamo indicare i parametri hardware:
VBoxManage modifyvm "SampleServer" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
dove ovviamente memory indica la quantità di RAM da assegnare alla macchina, acpi permette di attivare le funzionalità di accensione e spegnimento, il parametro boot1 indica il primo dispositivo di avvio (che può essere dvd per far partire l’installazione ma poi va modificato in disk). Per quanto riguarda la rete, è possibile configurare una o più schede di rete in modalità nat, bridged o hostonly. Nel caso di una interfaccia bridged è necessario indicare anche su quale interfaccia fisica va associata.
Il terzo passo è quello di creare un hard disk:
VBoxManage createhd --filename "SampleServerDisk.vdi" --size 10000
Dove ovviamente la dimensione è indicata in MegaBytes.
In seguito è necessario creare un controller IDE ed associare al controller le periferiche:
VBoxManage storagectl "SampleServer" --name "IDE Controller" --add ide --controller PIIX4
le due direttive che seguono collegano al controller “IDE Controller” l’hard disk ed una immagine ISO che useremo per l’installazione:
VBoxManage storageattach "SampleServer" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "SampleServerDisk.vdi"
VBoxManage storageattach "SampleServer" --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /percorso/disco.iso
A questo punto il sistema è pronto. La macchina può essere avviata tramite il comando VBoxManage startvm “SampleServer” oppure è possibile avviarla con il comando VBoxHeadless che permette di connettersi con un client RDP (Desktop remoto) e controllare a video la macchina.
VBoxHeadless --startvm "SampleServer"
A questo punto potete collegarvi all’IP del server fisico alla porta 3389 per eseguire l’installazione della macchina virtuale.
Enjoy it!

Deframmentare / recuperare un filesystem XFS (per la serie: anche linux ha i suoi problemi)

A volte può capitare che il server vada in crash senza apparente motivo. Dopo mesi, richieste di assistenza a chi pensavo fosse più competente di me in materia di server linux, e tanta disperazione ho capito a cosa erano dovuti i frequenti blocchi del server: al filesystem XFS!
XFS è un filesystem adatto a gestire grosse moli di dati, gestire file grandi diverse centinaia di megabytes velocemente. Sfortunatamente XFS soffre pesantemente della frammentazione ed il disco tende a riempirsi velocemente e senza realmente contenere dati!
D’altra parte ci sono due utilità che ci permettono di deframmentare il file system XFS

  1. xfs_db – letteralmente XFS Debug Information – che permette di esaminare il filesystem ed ottenere informazioni utili
  2. xfs_fsr – File System Organizer – che migliora l’organizzazione dei filesystem montati. L’algoritmo opera con i singoli file, li compatta e migliora l’organizzazione all’interno del disco (mettendo i pezzi dei file in blocchi continui)
    per esempio consideriamo il comandoroot@linuxMachine:~$ sudo xfs_db -c frag -r /dev/sda1
    actual 189356, ideal 148090, fragmentation factor 21.79%

    dopo la procedura risulta

    root@linuxMachine:~$ sudo xfs_db -c frag -r /dev/sda1
    actual 148180, ideal 148090, fragmentation factor 0.03%

    Lo spazio disponibile a questo punto sarà molto di più ed l’accesso al disco sarà decisamente più veloce!

Svuotare una cartella (es. cartella /tmp/) piena di files

A qualcuno che vuol fare pulizia nel proprio hard disk (o l’hard disk del proprio server) può capitare di voler svuotare una cartella (ad es. l’inutile cartella /tmp/), ma dopo aver immesso il comando:

# rm -rf *

si ottiene come risultato:
/bin/rm: Argument list too long.

La soluzione per aggirare il problema è quella di combinare il comando find al comando xargs

# find . -name ‘*’ | xargs rm

Il comando find permette di individuare tutti i file che hanno un determinato nome (basato su una espressione regolare), mentre xargs è un comando che permette di gestire il passaggio di parametri da riga di comando ad altri programmi come rm, gestendo le limitazioni del sistema operativo come numero di parametri e lunghezza dei singoli parametri.