giovedì, novembre 03, 2011

Come ti recupero una chiavetta usb ...

Circa un mesetto fa mi e' capitato di trovare per strada una chiavetta Usb con il connettore completamente distrutto. Ho pensato: "chissa' se riesco a recuperarla."
L'analizzo un attimo, rimuovo la copertura in plastica e noto che la componente Flash risultava intatta, compresi tutti gli altri componenti. La conservo in borsa.
Recentemente son riuscito a comprare un cavo Usb a poco prezzo (a circa un euro). Lo taglio, lo sfiletto e con un po' di pazienza saldo i quattro contatti.
Attacco il cavo al PC et-voila'! Funziona! :)
La prima cosa che controllo e' la dimensione, ben 4GB di chiavetta. Ottimo.
Al suo interno ho trovato un paio di virus e degli mp3 (che delusione :P) ...

4 GB di spazio recuperato!

Per rifinire chiudo la parte elettronica dentro una piccola bottiglietta di plastica richiudendola con del nastro isolante:

Le fasi del rimontaggio :P

Ecco il video della formattazione:


Devo dire che e' stato divertente ^_^

Etichette: , , , ,


venerdì, febbraio 26, 2010

Firefor 3.6: Nuove schede in fondo ...

Da poco (anche sotto consiglio indiretto di Giorgio) ho aggiornato FireFox all'ultima versione disponibile (la 3.6 - come da immagine :P).
Tutto bene (Personas adesso e' integrato, figata) tranne per una cosa ... se apro un link su una nuova scheda:



Questa si posiziona accanto alla scheda attiva, e non in coda (alla fine) come succedeva per la versione 3.5.
Magari ho esagerato con i termini, non e' un problema in effetti ... e' una nuova feature. Cercando un po' in rete (con l'aiuto di una collega) abbiamo trovato questo articolo dove si spiega l'arcano ... ed anche come ripristinare il vecchio comportamento.
La procedura e' semplice ... ma nascosta (che ci voleva a mettere un check in piu' sotto le configurazioni delle schede? Vabbe' ...) la illustro:

1 - usare il link about:config:



2 - Cercare la riga con browser.tabs.insertRelatedAfterCurrent:



3 - Impostare a false:



Tutto qui ...

Bye.

Etichette: , , ,


domenica, aprile 19, 2009

Gli array associativi in Javascript ...

Oggi ho proprio voglia di scrivere qualcosa di tecnico.
Alla fin fine per guadagnarmi il pane faccio il programmatore e condividere delle soluzioni puo' essere utile (e questo tutti gli sviluppatori lo sanno!).
Quindi, il problema che dovevo risolvere era questo:

"In una jsp, selezionando un valore da una select bisogna riempirne opportunamente un'altra."

Non sembra la fine del mondo ... uno potrebbe dire: "che ci vuole!"
Ok, ma quando i dati sono dinamici e presi da un DB ... forse non e' cosi' banale.
E poi ad ogni valore della prima select alla seconda sono associati un numero variabile di elementi.
Mi serviva una soluzione semplice ed efficacie, che si potesse dinamicizzare.

Ho risolto il problema con gli array associativi in javascript.

Vediamo prima di tutto cos'e' un array associativo. In javascript si puo' definire cosi':

arrayAssociativo = new Array();
arrayAssociativo["Val1"] = "SubVal1";
arrayAssociativo["Val2"] = "SubVal2";
arrayAssociativo["Val3"] = "SubVal3";

E per recuperare un valore basta usare, ad es: arrayAssociativo["Val1"];

Quindi possiamo appunto "associare" ad una stringa un altro oggetto.

Un altro modo per definire l'array associativo (ed e' quello che preferisco) e' questo:

var arrayAssociativo = {"Val1":"SubVal1", "Val2":"SubVal2", "Val3":"SubVal13};

Molto piu' "professionale" direi :)

Cmq, il trucco sta in questa seconda definizione, infatti (complicando le cose) posso scrivere un array associativo di questo tipo:

var arrayOfValue = [{firstValue: 'Val 1', secondValue: new Array('SubVal 1-1', 'SubVal 1-2', 'SubVal 1-3', 'SubVal 1-4')}, {firstValue: 'Val 2', secondValue: new Array('SubVal 2-1', 'SubVal 2-2')}, {firstValue: 'Val 3', secondValue: new Array('SubVal 3-1', 'SubVal 3-2', 'SubVal 3-3')}];

In pratica ho associato alle stringhe che stanno su firstValue un array semplice sul secondValue.

La funzione javascript che gestisce lo switch dei valori si puo' scrivere cosi':

// Funzione per eseguire lo switch
// I parametri:
// destination - la select di destinazione
// value - il valore della prima select
function fillSelect(destination, value) {

// verifico se e' stata fatta una scelta valida
if(value == undefined || value == "") {
destination.setAttribute('disabled', 'disabled');
return;
}

// svuoto la select
while( destination.childNodes.length >= 1 ) {
destination.removeChild( destination.firstChild );
}

// il primo elemento e' vuoto
destination.options[0] = new Option('', '');

// itero l'array associativo per trovare il valore giusto
var arraySecondValues = [];
for(var j=0; j < arrayOfValue.length; j++) {
if(arrayOfValue[j].firstValue == value) {
arraySecondValues = arrayOfValue[j].secondValue;
break;
} else {
continue;
}
}

// adesso itero l'array recuperato
// con i valori da copiare nella seconda select
for(var i=0; i < arraySecondValues.length; i++) {

// uso "i + 1" perche' ho gia' definito il primo elemento
// della select con uno spazio vuoto
destination.options[i + 1] = new Option(arraySecondValues[i], arraySecondValues[i]);
}

destination.options.length = i + 1;
destination.removeAttribute('disabled');
}

Il codice html:

<form name="testForm" method="post" action="" id="testForm">
Prima select: <br/>
<select name="firstSelect" onchange="fillSelect(document.testForm.secondSelect, this.value);">
<option value=""></option>
<option value="Val 1">Val 1</option>
<option value="Val 2">Val 2</option>
<option value="Val 3">Val 3</option>
</select>
<br/><br/>
Seconda select: <br/>
<select name="secondSelect" disabled="disabled"><option value=""></option></select>
</form>

Ed il gioco e' fatto. L'unica cosa che dobbiamo dinamicizzare nella nostra jsp e' l'array associativo e i dati della prima select. Io ho usato un bean con due liste riempite con i dati presi dal DB per poi utilizzare la funzione JSTL <c:forEach> a dovere.


Per testare il codice:
Prima select:

Seconda select:

Etichette: , , ,


giovedì, aprile 05, 2007

Tutorial on-line ...

Ieri ho trovato questo bel sito: http://www.luv2help.com/

Tanti Tutorial in formato video :)

( ... a volte le immagini dicono piu' di 1000 parole ... )

Etichette: , , ,