chalda.it
30set/092

Commenti javascript per la validazione xhtml

Quante volte vi è capitato di dover inserire codice javascript direttamente sulla pagina ma questo ha portato alla non validazione della stessa?

Bene, questo succede perché il validatore w3c non riesce a gestire il codice html presente all'interno del javascript e lo interpreta come codice html normale.

Per ovviare a questo problema è sufficiente aggiungere dei commenti prima e dopo lo script:

<script type="text/javascript">
/* <![CDATA[ */
// Il contenuto javascript va qui
/* ]]> */
</script>

E il gioco è fatto!
Ora tutto il validatore considera tutto il javascript come commento.

28lug/090

Eseguire un evento (click, hover, focus) con jQuery

Ogni tanto succede che abbiamo bisogno di eseguire una funzione associata ad un click senza che effettivamente il click venga dato.
Un esempio: clicca pippo!

<a href="#" id="pippo" onclick="alert('Hai cliccato su pippo!')" >clicca pippo!</a >

Ora proviamo invece a cliccare su Pluto.

<a href="#" id="pluto" onclick="jQuery('#pippo').trigger('click')">Pluto</a>

Come vedete cliccando su Pluto in questo modo viene eseguito il click di Pippo.

Ovviamente questa cosa si può fare con tutti gli eventi, tra i quali hover, focus, doubleclick, etc.
A voi il divertimento!

20lug/093

Javascript: Rimuovere un elemento da un array

Ed eccoci alla classica domanda che inevitabilmente tutti ci poniamo!
Come si fa a togliere un elemento da un array in javascript?
Beh, per toglierlo dall'inizio o dalla fine si possono usare i semplici .pop() (per togliere l'ultimo) e .shift() (per togliere il primo).
Ma come fare per togliere un elemento all'interno?

Purtroppo non esiste una funzione di sistema che lo faccia, quindi dovremmo crearcela noi :)

Innanzi tutto vediamo come togliere un elemento da un array. Clicca qui per eseguire il codice sottostante.

var ar = ['a','b','c','d','e'];     // Il nostro array
alert('Il nostro array iniziale:' + new String(ar));
var el = ar.splice(3,1);  // Togliamo l'elemento alla posizione 3
alert('Il nostro elemento rimosso:  '+ el);
alert('Il nostro array finale: ' + new String(ar) );

Ora sappiamo come togliere un elemento e sostituirlo, quindi creiamo una funzione prototype all'oggetto Array che tolga l'elemento alla posizione pos e lo restiuisca:

Array.prototype.removePos = function(pos) {
   var el = this.splice(3,pos);
   return el
};

// Esempio di utilizzo:
var ar = ['a','b','c','d','e'];
var el = ar.removePos(3); // Ora el conterrà 'e' e ar sarà ['a','b','c','e']

Se invece vogliamo ricercare un elemento el e toglierlo la funzione sarà la seguente:

 Array.prototype.removeEl = function(el) {
   this.splice(array.indexOf(el), 1);
};

// Esempio di utilizzo:
var ar = ['a','b','c','d','e'];
ar.removeEl('c'); // Ora ar sarà ['a','b','d','e']

Tutto qui :)

24giu/092

Come rimuovere il bordo tratteggiato alle immagini sul click

Quando si clicca su un pulsante, div con background o altra cosa grafica compare un fastidiosissimo bordo tratteggiato.

Per toglierlo basta inserire negli stili

a:active{outline: none;}a:focus{-moz-outline-style: none;}

E il gioco è fatto!

11giu/090

Come risolvere il bug del “testo fantasma” in ie6

Cos'è il testo fantasma?

Il testo fantasma è una parte di testo che compare senza alcun motivo dove non dovrebbe, solitamente una ripetizione di una parte di testo in un'altra pagina.



Il problema è causato dal float:left, per cui basta evitare di inserirli :-)



In alternativa provate questi workaround che ho trovato:

  • Commenti: Non si sa il perché ma i commenti nel codice (<!-- -->) creano questi problemi. Provate a rimuoverli
  • Float: Il float da sempre strani problemi, provate ad aggiungere lo stile display:inline ai div con float
  • Ultima soluzione che ho trovato è quella di aggiungere un margine negativo ai div

Se avete altre soluzioni...
Scrivetele nei commenti :)

9giu/090

Come aggiungere font TTF in linux

Per aggiungere i font TTF su linux (Debian, Ubuntu, Kubuntu) è semplicissimo:

Basta aprire un terminale ed eseguire questa riga:

mv nomefont.ttf /usr/share/fonts/truetype/ 

Ecco fatto! Ora bisogna aggiornare la cache dei font:

fc-cache -f -v

Ecco alcuni siti simpatici per scaricare font gratuitamente:

  • http://www.webpagefonts.com/
9giu/090

Come proteggere una cartella in apache

Per proteggere una cartella in apache da occhi indiscreti la procedura è molto semplice.


Per prima cosa bisogna creare il file .htaccess nella directory da proteggere:

AuthUserFile /percorso/htdocs/dir-protetta/.htpasswd
AuthGroupFile /dev/null
AuthName "Directory protetta, inserire i dati di accesso:"
AuthType Basic
<Limit GET>
require valid-user
</Limit>

In dettaglio:

  • AuthUserFile: Specifica il file contenente le password
  • AuthName: Testo da visualizzare nella finestra di accesso

Bene, ora bisogna creare il file .htpasswd nella directory specificata in AuthUserFile.

Per farlo si utilizza il comando htpaswd:

htpasswd –c .htpasswd username 

Dove al posto di username inseriremo il nome utente che vogliamo.

Eseguito il comando ci chiederà la password e il gioco è fatto!

9giu/091

Abilitare/Disabilitare il System Beep in Linux (Debian, Ubuntu)

Come fare per disattivare quel fastidiosissimo beep che esce dalle casse interne del nostro pc su linux (Debian, Ubuntu, Kubuntu, etc) ?

Modificate il file /etc/modprobe.d/blacklist digitando:

sudo pico -w  /etc/modprobe.d/blacklist

e aggiungete la seguente riga alla fine del file:

blacklist pcspkr

Salvate e uscite.
Ora non resta che aggiornare i mod:

sudo rmmod pcspkr

Per riattivarli è sufficiente rimuovere la riga appena inserita in /etc/modprobe.d/blacklist
e riaggiornare i moduli con la stessa procedura.

Ora il fastidioso beep è disabilitato!

7giu/092

Come aggiornare la data in linux tramite un server esterno

Per tenere sempre aggiornata e sincronizzata una data in linux è semplicissimo:
Nel terminare lanciare con permessi di amministrazione il seguente codice:

ntpdate ntp.ubuntu.com

Ovviamente al posto di npt.ubuntu.com potete mettere qualsiasi altro server ntp, come quello ufficiale per l'ora italiana:

ntpdate ntp1.inrim.it 

o

ntpdate ntp2.inrim.it 

A voi la scelta :)

7giu/091

Cambiare nome a molti file in linux

Per rinominare molti file contemporaneamente in una directory in linux si può utilizzare un semplice ciclo for:

for filename in *; do mv $filename filename_nuovo; done

In questo modo rinomina tutti i file (*) nella directory come filename_nuovo.

Per esepio se vogliamo aggiungere a tutti i file in una directory l'estensione .bak è sufficiente modificare così la riga:

for filename in *; do mv $filename $filename.bak ; done

Se invece si ha familiarità con le espressioni regolari di perl... allora diventa tutto semplice utilizzando il comando replace!
Alcuni esempi:

   # Rimuove l'esetensione .bak ai file .bak
   rename 's/\.bak$//' *.bak

   # converte in minuscolo i nomi dei file
   rename 'y/A-Z/a-z/' *

Ricordatevi che esiste anche un simpatico parametro -n che simula e visualizza a video i file che verrebbero modificati. Una buona cosa per evitare problemi :)