Il software Vodafone con cui ci si collega ad internet, fortunatamente è di nuova generazione e chi lo ha progettato, lo ha fatto in modo che fosse facilmente aggiornabile nel tempo in caso di cambi, da parte dell'operatore, di impostazioni fondamentali per la connessione mobile e perchè sia utilizzabile in tutto il mondo.

Per ottenere questo risultato, hanno fatto l'ottima scelta di inserire le configurazioni inerenti agli operatori, in dei comodi files XML.

Per facilitarvi il compito, ho creato un pacchettino che funge da esempio per chi volesse aggiungere a mano il proprio operatore. Questo pacchettino, è pre impostato per le sim della Tre.

L'installazione avviene in questa maniera:

- Localizzate la cartella di installazione del software Vodafone. Per gli utenti windows, di solito viene inserita in: Computer -> C: -> Programmi -> Vodafone -> Vodafone Mobile Broadband. Per capire se siete nella cartella giusta, dovreste trovare al suo interno, una cartella chiamata "Opco".
- Scomprimete il pacchetto all'interno della cartella "Vodafone Mobile Broadband", sovrascrivendo i contenuti già presenti.

Et voilà! Il gioco è fatto...

Download - Se il link iniziasse a non funzionare, segnalatemelo... grazie!

Sono anni che la gente, pagherebbe per sapere chi sono le persone che visitano piu' spesso il proprio profilo... e sono anni che c'e' gente che inventa soluzioni campate per aria per ottenere quel risultato... invana. Questo perchè la maggior parte delle piattaforme social, non permettono di visualizzare tale informazione. Non so se per privacy o per semplice scelta, ma tecnicamente sarebbe possibile farlo. E diciamoci la verità... i social, già registrano questo genere di informazioni, anche solo che per questioni di debug o di sicurezza... chi è che non ha un access log... ormai perfino il sito piu' "scabercio" sviluppato con le tecnologie piu' "scaberce" ha questa funzione. L'utilità di ciò, non si limiterebbe al sapere chi ci ama di piu'... ma anche a chi, forse, ci odia di piu'. La cosa certa, è che si potrebbe sapere, chi è che ci fa' "visite compulsive" piuttosto che occasionali. Ad esempio, secondo me, alcuni fattori da tenere in considerazione sarebbero: - il numero di visite in un lasso di tempo prestabilito - il numero di visite che hanno generato un interazione QUALSIASI col profilo visitato nello specifico: suddividere le semplici visite da quelle dove una volta visitato il profilo, si clicca su un "Mi piace" o si commenta o ancor piu' semplicemente, si invia un messaggio all'utente proprietario di quel profilo - il numero di visite che non trovano novità sul profilo, da quelle che presentano aggiornamenti e differenze Sicuramente non sono tutti, ma sono tre fattori esempio che rendono l'idea. Aggiungendo qualche studio comportamentale, magari bayesiano e un algoritmo per trovare discorsi e/o parole chiave utili, sono sicuro che sarebbe possibile definire una percentuale di pericolo di stalking... e magari anche la percentuale di pericolo di "assalto". Piu' i social invaderanno la nostra vita per certi versi controllandola e manipolandola (attraverso pubblicità mirate) e piu' saremo soggetti, fortunatamente, anche a dei controlli preventivi... I problemi per la realizzazione di questo sistema al momento sono solo due: - Tutto ciò, richiederebbe degli studi preventivi sul comportamento umano sulle piattaforme social. Insomma, esperimenti di ricerca su cavie UMANE. - Chi ce lo va' a dire a Zuckemberg di sviluppare un carrozzone simile? ma soprattutto, a che pro per le sue tasche?

Un tempo, il classico metodo per molestarti con pubblicità e/o inviti ad iscriverti a servizi et similari, erano i popups.

Ormai sono anni che circolano estensioni per i brosers "anti popup" e addirittura "anti pubblicità" ed i browsers stessi nel corso degli anni, si sono adeguati integrando tali funzionalità direttamente al loro interno.

Di recente, con l'avvento del web 2.0 e dei socials, i popups ormai sono storia passata ed entrano in gioco i "layers" sovrapposti al sito. Per farvi un esempio pratico, andate a questo indirizzo: http://it.emcelettronica.com/raspberry-pi-casa-domotica-e-videosorveglianza-gestibile-da-remoto-con-assistente-personale

Noterete che per visualizzare tale articolo, dovrete per forza cliccare sul tasto "Mi piace" alla loro pagina Facebook... se fate caso però, al di sotto di questa "finestrella" con sfondo scuro, c'e' la pagina pronta per esser letta.

Così ho pensato fosse utile, creare un bookmarklet che parte dai layers piu' alti e li rimuove di volta in volta, click per click.

Questo perchè non tutti i siti sono uguali ed alcuni impostano come "altezza" del layer pubblicitario un numero che puo' essere minore rispetto a quello degli altri siti. Se impostassi un'altezza fissa, il bookmarklet funzionerebbe soltanto su un ristretto numero di siti, mentre con questo sistema andrà bene per qualsiasi sito poichè scansiona TUTTI i layers, partendo da quelli piu' alti e scendendo di UN livello per ogni click, fino a quando la pagina risulta pulita e leggibile.

tieni premuto sul seguente collegamento e trascinalo sulla barra dei preferiti: NBCHMM Page Cleaner

Di seguito, la versione compressa e pronta per il bookmarklet

javascript:var a=document.getElementsByTagName("*"),b;for(b in a){var c=parseInt,d=a[b],e="string"==typeof d?document.getElementById(d):d;if(window.getComputedStyle)var f=document.defaultView.getComputedStyle(e,null).getPropertyValue("z-index");else e.currentStyle&&(f=e.currentStyle["z-index"]);90<=c(f)&&(console.log("hiding element"),console.log(a[b]),a[b].style.display="none")};

Di seguito, la versione non compressa
function getStyle(el,styleProp)
{
    if (typeof el == 'string') var x = document.getElementById(el);
    else x = el;

    if (window.getComputedStyle)
        var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
     else if (x.currentStyle)
         var y = x.currentStyle[styleProp];
     return y;
}
var x=(typeof x=='undefined')?100:x-1,
    els=document.getElementsByTagName('*');
for(var y in els)
    if (parseInt(getStyle(els[y],'z-index'))&gt;=90){
        console.log('hiding element');console.log(els[y]);
        els[y].style.display='none';
    }

P.s.: un altro valido esempio di sito con un "blocco" html, è ImageShack... quando provate ad inviare un immagine, comparirà il famigerato layer che ti obbliga ad iscriverti al servizio.

Oggi è una giornataccia e di solito in questi casi, mi comporto in due possibili modi completamente agli antipodi.

O mi butto a capofitto sul da farsi o pure... cazzeggio alla stra-grande! Questo mi permetterà di occuparmi meglio dei problemi piu' avanti ;)

Cinque minuti fa', mi sono imbattuto nell'ultimo easter egg di Google... in questo caso non è stato posizionato sul "doodle" in homepage... bensì sul logo centrato in homepage dell'evento per sviluppatori di tutto il mondo: Google I/O.

Cliccando sulla I e sull'O ed inserendo precise sequenze, si otterranno simpatici giochini a schermo.

Siccome non amo cliccare compulsivamente tastini senza un preciso senso logico, ho preferito spulciarmi il codice javascript che gestisce sti scherzetti ed ecco la parte interessante.

Ho notato che per gestire tutto l'ambaradam, hanno scritto una classe base che è stata poi estesa per ogni "giochino". Tale classe presenta un metodo chiamato "register" e ho pensato fosse un ottimo punto di partenza.

ww.mode.register = function (a, b, c, d) {
    ww.mode.modes[a] = {
        klass: b,
        pattern: c,
        len: d
    }
};
ww.mode.findModeByName = function (a) {
    return ww.mode.modes[a]
};
ww.mode.register("home", ww.mode.HomeMode, null);
ww.mode.register("cat", ww.mode.CatMode, 231, 8);
var isAndroid = navigator.userAgent.match(/Android/);
isAndroid || ww.mode.register("space", ww.mode.SpaceMode, 42, 8);
ww.mode.register("pong", ww.mode.PongMode, 129, 8);
ww.mode.register("bacon", ww.mode.BaconMode, 144, 8);
ww.mode.register("simone", ww.mode.SimoneMode, 211, 8);
ww.mode.register("eightbit", ww.mode.EightBitMode, 83, 8);
ww.util.getAudioContextConstructor() && (ww.mode.register("song", ww.mode.SongMode, 219, 8), ww.mode.register("synth", ww.mode.SynthMode, 136, 8));
ww.mode.register("ascii", ww.mode.AsciiMode, 127, 8);
ww.mode.register("bowling", ww.mode.BowlingMode, 117, 8);
ww.mode.register("rocket", ww.mode.RocketMode, 69, 8);
ww.mode.register("burger", ww.mode.BurgerMode, 57, 8);

Amo de-obfuscare i codici sorgenti OO... puoi pure modificarmi gli argomenti delle funzioni, ma sulle proprietà/attributi puoi far proprio poco! :)

E' proprio quì che mi son reso conto di tutto il funzionamento:

- La I viene interpretata come un 1 e la O come 0
- Ogni giochetto corrisponde ad un char preciso(tutti blank)
- Questo char, viene poi convertito in binario
- Digitando la I e la O si scrive il codice binario e se corrisponde ad un char registrato, inizializza il giochino a cui è associato

La lista di caratteri a questo punto è:

  • 231 (Binary: 11100111)
  • 129 (Binary: 10000001)
  • 144 (Binary: 10010000)
  • 211 (Binary: 10010000)
  • 83 (Binary: 01010011)
  • 127 (Binary: 01111111)
  • 117 (Binary: 01110101)
  • 69 (Binary: 01000101)
  • 57 (Binary: 00111001)
Inoltre, disponibile su qualsiasi dispositivo fatta eccezione per Android: 42 (Binary: 00101010)
Infine, disponibile su qualsiasi browser con libreria audio nativa: 219 (Binary: 11011011), 136 (Binary: 10001000)


P.s.: Qualche piccola circostanza divertente:
- Dopo aver fatto tutto ciò, non mi sono nemmeno goduto il piacere di provare tutti i giochini.
- Sempre e solo dopo aver fatto tutto ciò, trovo un simpaticissimo testo su stackoverflow dove specifica tutti gli easter eggs e ne da anche un piccolo codice javascript per l'esecuzione "on-demand". 

Rappresentazione oggetto: ww.mode.modes

Object {homeObjectcatObjectspaceObjectpongObjectbaconObject}
  1. asciiObject
    1. klassfunction (a,b){this.preloadSound("i.mp3");this.preloadSound("o.mp3");ww.mode.Core.call(this,a,b,"ascii",!0,!0,!0);this.getPaperCanvas_(!0)}
    2. len8
    3. pattern127
    4. __proto__Object
  2. baconObject
    1. klassfunction (a,b){this.preloadSound("bacon-sizzle.mp3");this.preloadSound("egg-cracked.mp3");this.preloadSound("cracked-open.mp3");this.preloadSound("eggs-sizzling.mp3");ww.mode.Core.call(this,a,b,"bacon",!0,!0,!1)}
    2. len8
    3. pattern144
    4. __proto__Object
  3. bowlingObject
    1. klassfunction (a,b){this.preloadSound("strike.mp3");this.preloadSound("whoosh-1.mp3");ww.mode.Core.call(this,a,b,"bowling",!0,!0,!1)}
    2. len8
    3. pattern117
    4. __proto__Object
  4. burgerObject
    1. klassfunction (a,b){this.preloadSound("bite-1.mp3");this.preloadSound("bite-2.mp3");ww.mode.Core.call(this,a,b,"burger",!0,!0,!1)}
    2. len8
    3. pattern57
    4. __proto__Object
  5. catObject
    1. klassfunction (a,b){this.preloadSound("cat-1.mp3");this.preloadSound("cat-2.mp3");ww.mode.Core.call(this,a,b,"cat",!0,!0)}
    2. len8
    3. pattern231
    4. __proto__Object
  6. eightbitObject
    1. klassfunction (a,b){this.preloadSound("i.mp3");this.preloadSound("o.mp3");this.preloadSound("error.mp3");ww.mode.Core.call(this,a,b,"eightbit",!0,!0,!0,!1);this.getPaperCanvas_(!0);this.frontmostWantsRetina_=this.frontmostRequestsRetina_=1<window.devicePixelRatio;this.canvas_=document.getElementById("eightbit-canvas")}
    2. len8
    3. pattern83
    4. __proto__Object
  7. homeObject
    1. klassfunction (a,b){this.preloadSound("i.mp3");this.preloadSound("o.mp3");ww.mode.Core.call(this,a,b,"home",!0,!0,!1,!0);this.patternMatcher_=new ww.PatternMatcher(ww.mode.modes);this.wentIdleTime_=0;this.isIdle_=!0;this.maxIdleTime_=12E3}
    2. lenundefined
    3. patternnull
    4. __proto__Object
  8. pongObject
    1. klassfunction (a,b){this.preloadSound("1.mp3");this.preloadSound("2.mp3");ww.mode.Core.call(this,a,b,"pong",!0,!0,!0);this.startBallSpeed_=this.ballSpeed_=250;this.maxBallSpeed_=800;this.startBallRadius_=this.ballRadius_=30;this.minBallRadius_=10;this.paddleX_=40;this.paddleY_=80;this.paddleWidth_=40;this.paddleHeight_=160;this.paused_=!0;this.bottomWallOpacity_=this.rightWallOpacity_=this.topWallOpacity_=0}
    2. len8
    3. pattern129
    4. __proto__Object
  9. rocketObject
    1. klassfunction (a,b){this.preloadSound("rocket-launch.mp3");this.preloadSound("rumble.mp3");this.preloadSound("sci-fi-door.mp3");ww.mode.Core.call(this,a,b,"rocket",!0,!0,!1);var c=this.find(".letter-i"),d=this.find(".letter-o");this.centerO_=d.attr("cx")+", "+d.attr("cy");this.centerI_=c.attr("cx")+", "+c.attr("cy");this.rocket_=this.find(".letter-i-wrapper");this.moons_=$("#moon-1");this.fires_=$("[id*=fire-]").css("opacity",0);this.maxFires_=this.fires_.length;this.currentFire_=0;this.isAnimating_=
    2. len8
    3. pattern69
    4. __proto__Object
  10. simoneObject
    1. klassfunction (a,b){ww.mode.Core.call(this,a,b,"simone",!0,!0)}
    2. len8
    3. pattern211
    4. __proto__Object
  11. songObject
    1. klassfunction (a,b){this.preloadSound("brass-note-1.mp3");this.preloadSound("brass-note-2.mp3");this.preloadSound("brass-note-3.mp3");this.preloadSound("brass-note-4.mp3");this.preloadSound("lute-note-1.mp3");this.preloadSound("lute-note-2.mp3");this.preloadSound("lute-note-3.mp3");this.preloadSound("lute-note-4.mp3");this.preloadSound("funky-note-1.mp3");this.preloadSound("funky-note-2.mp3");this.preloadSound("funky-note-3.mp3");this.preloadSound("funky-note-4.mp3");this.preloadSound("beats-piano.mp3");
    2. len8
    3. pattern219
    4. __proto__Object
  12. spaceObject
    1. klassfunction (a,b){this.preloadSound("i.mp3");this.preloadSound("o.mp3");this.world_=this.getPhysicsWorld_();this.world_.viscosity=0;ww.mode.Core.call(this,a,b,"space",!0,!0,!0);this.getPaperCanvas_();if(this.wantsAudio_){var c=this.getAudioContext_();this.tuna_=new Tuna(c);this.chorus_=new this.tuna_.Chorus({rate:1,feedback:0,delay:2,bypass:0})}}
    2. len8
    3. pattern42
    4. __proto__Object
  13. synthObject
    1. klassfunction (a,b){ww.mode.Core.call(this,a,b,"synth",!0,!0,!1)}
    2. len8
    3. pattern136
    4. __proto__Object
  14. __proto__Object




Pre Scriptum: chiedo venia per l'itaGliano scandaloso... questo post è frutto di un delirio pomeridiano da pancia piena in fase anemica galoppante... guardate il messaggio piu' che la forma :)

Ci avviciniamo sempre di piu' ormai, all'era del cloud computing e dei dispositivi mobile.

C'e' chi dice che già ci siamo ma in realtà non è vero... facendo assistenze e consulenze mi sono reso conto che sono ancora in pochi quelli che si preoccupano di salvare i propri dati su internet(ignorando la questione per la privacy) o su dispositivi esterni.

Perchè sì, effettivamente privacy a parte, il cloud computing potrebbe essere la soluzione a mille piccoli inconvenienti che rendono la vita difficile a chi non sa' usare bene i pc... o che semplicemente nel passaggio da un pc ad un altro, da un dispositivo ad un altro, perde i propri dati.

Vuoi per delle riparazioni selvagge o per la perdita/furto del dispositivo, spesso si perdono dati che fanno parte integrante della nostra vita... come le nostre foto. E' un po' come se un tempo, i nostri genitori girassero per le strade, con sotto braccio l'intero album famigliare di fotografie... dubito lo avrebbero mai fatto.

Pensiamo al cloud computing... riducendolo al mero salvataggio di dati online recuperabili da qualsiasi postazione e dispositivo... questo, secondo me, è perfettamente integrato con i dispositivi mobile. Dispositivi però dotati anche di memoria espandibile tramite supporti SD.

La sfida tra le due metodiche credo sia ardua... e c'e' una cosa che mi è venuta in mente che farebbe "vincere" indubbiamente la seconda delle due.

Ovvero, mi domandavo... se i telefoni, in presenza della SD memorizzano tutti i dati su di essa e semplicemente inserendola in qualsiasi altro dispositivo con quel sistema operativo(ad esempio android), il sistema operativo renderà disponibile il tutto... perchè questa bellissima tecnica non puo' esser impiegata per i PC?

Come sempre, mi spiego da cani e provo con un esempio "futuristico"...

  • Tutti i pc sono piu' o meno identici
  • Gli standards per i content type sono ormai perfettamente integrati ai sistemi operativi
  • Tutti i sistemi operativi vengono installati su una memoria che rimarrà in modalità read-only ad eccezione nelle operazioni di manutenzione (install, update, remove, etc)
  • Soltanto memorie "secondarie" (altri supporti interni/esterni) saranno in modalità scrittura e saranno usati come destinazioni di default per applicazioni installate e dati archiviati.
  • Tutti i sistemi operativi scansioneranno tutti i dispositivi di memoria disponibili e metteranno a disposizione tutti i dati ED APPLICAZIONI, all'utente.
Se tutto ciò potesse esser realtà, non escluderebbe la possibilità di integrare tecnologie di "cloud computing" sviluppando magari sistemi di "mirroring" di tutti i contenuti.

In piu', immaginate quanto possa esser comodo avere tutte le proprie applicazioni configurate come piace a noi con tutti i nostri dati, su supporti di memoria esterni, FACILMENTE DUPLICABILI PER BACKUP e che al solo nostro inserirli sulle porte USB, dopo aver caricato il pc ci metterà a disposizione tali contenuti. Insomma, vai da un amico? ha un pc o un telefono? inserisci la sd ed ecco tutta la tua workstation li pronta per esser usata! Sei in ufficio e non hai finito il lavoro urgentissimo con scadenza l'indomani? stacchi la memoria e te la porti a casa! And so on...

Insomma, questi baracconi che ci ostiniamo ad usare per far felici le tasche delle famiglie che gestiscono l'industria dell'high-tech, sono ormai parte del PASSATO. O quantomeno per gli usi piu' comuni, se sei un nerd liberissimo di comunicare col tuo pc in Assembly.

Post Scriptum: habemus papam, habemus finem mundi!

E' già un po' di tempo che ci penso... secondo me Whatsapp ha le sue piccole debolezze che lo rendono vulnerabile quanto gli altri piu' comuni sistemi di IM.

Andai a controllare(ed uso il passato remoto perchè è successo ormai quasi un anno fa') il protocollo di comunicazione tra client e server facendo una simpatica scoperta: è il semplicissimo Jabber (ora XMPP mantenuto da Google).

- Userà SSL o sarà interamente "sniffabile" il traffico dati (e quindi relative comunicazioni)?
- Sarà possibile fingersi qualcun'altro?

Alla mia seconda domanda, ho appena dato involontariamente risposta. Ho due telefoni come ormai molti, uno per lavoro ed uno personale.

Su quello di lavoro, ho temporaneamente inserito la sim "personale" ed installato whatsapp, validato l'account con il numero personale e poi ho rimosso tale sim per reinserire quella di lavoro.

La sorpresa? che nonostante io abbia cambiato sim, Whatsapp non se ne è accorto ed ha mantenuto l'utenza "personale" permettendomi di comunicare attraverso quell'utenza.

Non oso provare ad effettuare un login da piu' posizioni e vedere che succede... se magari il "deviceX" non si accorge che c'e' un "deviceY" collegato con il suo utente...

Con questi benedetti smartphones e servizi on-line sempre piu' invadenti nella nostra vita di tutti i giorni... a voi le conclusioni...

Vi sarà sicuramente capitato di aver bisogno di eliminare completamente ogni traccia rimasta dei vostri dati da supporti di memoria(harddisks, sd, etc.).

Ad esempio se vi trovate a vendere il vostro PC... o se siete gente poco raccomandabile e avete molto da nascondere :-)

http://www.dban.org/

Questo magnifico software "Darik's Boot and Nuke" è in grado di cancellare i dati mettendovi a portata di click i migliori algoritmi in circolazione ed è aggiornato a Giugno del 2011!

Dateci un occhiata... ne vale la pena.

Visualizzazioni totali