welcome: please sign in

Cerca

Link Dipartimentali

Link Esterni

Miti, leggende e Domande Frequenti


Ho pensato di raccogliere qui la risposta ad alcune delle domande che gli studenti pigri, anzichè chiedere a Google, rivolgono a me. Spero di fare cosa gradita rispondendo in italiano.

Più il mio disco è pieno più il mio PC va lento? (Si, No o Forse?)

(Nota del 14 Dicembre 2013. Stravolgimenti tecnologici, invenzione del teletrasporto e/o del calcolatore quantistico potrebbero rendere questa nota alquanto obsoleta).

No. E' Domenica, vorreste rilassarvi, ma un vostro amico vi chiama per un piccolo aiutino gratuito.

Forti del fatto che se foste diventati dei proctologi affermati la vostra Domenica pomeriggio "con gli amici" sarebbe stata sicuramente peggiore, decidete di ascoltarlo.

Il suo PC è diventato lentissimo: ha già provato a cancellare tutte quelle foto peeesanti della Cresima e il filmato voluminoso delle vacanze a Tropea, ha disinstallato tutto il disinstallabile, ma il PC è ancora lento... perchè??!!! "Ma non doveva essere più veloce adesso che è così leggero come quando l'ho comprato?"

All'origine di questa superstizione ci sono alcune credenze molto comuni tra quelli che chiamerò con affetto u-tonti (mi scuso anticipatamente con madri, padri, parenti, cugine, amici di primo e secondo grado):

1. E' facile associare ai propri file aggettivi metaforici ispirati a concetti familiari quali 'pesante', 'leggero'. Per cui, come una macchina col bagagliaio pieno di mattoni non può andare veloce, un calcolatore pieno di file, arranca, tira il fiato, in altre parole si ammoscia.

2. Non è chiara la differenza tra RAM e Memoria di Massa, per cui sono la stessa cosa. Quanta RAM ha il tuo PC? "500 Giga"! Quanto spazio hai sul disco fisso? "Mi pare 4 Giga"

3. L'esperienza insegna che più passa il tempo, più il disco si riempe, e più il PC diventa lento! E' chiaro che l'unica cosa che è cambiata in tutto questo tempo è l'occupazione su disco, per cui è quella la causa.

Circa la superstizione n.1, il problema è che la metafora è semplicemente inadeguata. I file che teniamo sulle nostre memorie di massa somigliano molto più ai volumi che conserviamo sugli scaffali di una libreria. E siamo d'accordo che finchè non prendiamo i volumi per leggerli, la loro presenza sugli scaffali, o la loro quantità, è pressochè ininfluente.

La superstizione n.1 è legata certamente alla n.2. Molti u-tonti non sanno che nei calcolatori ci sono due tipi di memoria, radicalmente differenti tra loro. Credo che gli u-tonti abbiano le loro ragioni nel dire che non sono tenuti ad essere informati di tutti 'questi dettagli tecnici' su quale e quanta RAM mi serve e quale e quanto grande deve essere il mio disco fisso (tanto chiamo Gibbì e lui si studia i volantini con le offerte per me).

Ad ogni modo la RAM è quell'area di parcheggio dove metto i dati correntemente utilizzati in "tempo reale". Per questa, a grandi linee vale la metafora della scrivania su cui tengo le cose a cui sto lavorando in questo momento, per cui più è incasinata e piena di roba, più lavorerò male e lentamente. Più la scrivania è larga, più avrò spazio per tenerci più cose contemporaneamente. Meno cose attive tengo insieme, più la mia efficienza sarà elevata.

(O U-tonto, attento, sto parlando di una scrivania metaforica ma reale e fatta di legno e/o alluminio e/o di un materiale a tua scelta, non cominciare a togliere le icone dal Desktop, quello non c'entra, il tuo PC lento era e lento resterà)

La superstizione n.3 è legata al successo di numerosi esperimenti scientifici condotti da vari u-tonti in più parti del mondo, che hanno dimostrato che quando il disco è pieno il PC è più lento, e quando il PC è lento, il disco è pieno.

Qui devo concedermi la libertà di fermarmi e fare una piccola saccente lezione di vita: correlazione non è la stessa cosa di causa->effetto. Trovate spiegazioni di questo qui, qui e qui (Inglese).

Questo semplice fatto logico andrebbe insegnato sin dalle scuole elementari e prima dell'alfabeto se fosse possibile: nel nostro caso il problema è legato al fatto che c'è una cosa che cresce più o meno parallelamente all'occupazione su disco (statisticamente parlando, direi con forte correlazione), che è la vera causa del calo di prestazioni.

La frammentazione. Sì, la frammentazione. Oddio, quindi la superstizione che dice che "devo deframmentare il disco, se no il pc si ammoscia" è vera? Sì, è vera U-to', è vera.

U-to', l'altra superstizione che dice che il Mac non va deframmentato e se hai Linux non hai problemi di frammentazione, quella è falsa, U-to'. Falsa. Dovrai deframmentare un po' meno spesso, ma ci sarai costretto prima o poi lo stesso, U-to'.

Parentesi tecnica (solo per stu-tonti che vogliono approfondire, e per u-tonti coraggiosi)

Ci sono delle considerazioni tecniche da fare che ci impediscono comunque di dire che l'occupazione su disco non ha mai nulla a che vedere con la performance di un calcolatore.

1. SSD vs HD tradizionale. Se abbiamo un disco fisso tradizionale dobbiamo tenere conto che la vera metrica da tenere d'occhio non è esattamente la frammentazione, ma le distanze che le testine del disco sono costrette a percorrere nell'unità di tempo.

Per fissare le idee, immaginiamo di poter misurare in "gradi al minuto" quant'è la distanza angolare che la testina di un disco è costretta a percorrere in un minuto di attività. Più è alto questo numero, più intuitivamente sarà bassa la performance del mio disco. Sicuramente tanti file frammentati e fuori ordine non contribuiscono a tenere questo numero basso: ma questo numero aumenta anche proporzionalmente alla presenza di dati nelle regioni periferiche (leggi: lontane dall'asse di rotazione) del disco, e a quanto di frequente vi si accede (ripeto, un film di 8 Giga mai aperto da anni non vi darà nessun beneficio se cancellato, anche se sta nelle zone periferiche del disco). E normalmente, le regioni periferiche sono sempre le ultime ad essere riempite (quando il disco comincia ad essere molto pieno).

Purtroppo, riducendo l'occupazione su disco alla cieca, cancellando file a destra e a manca come il mio amico che cancella le foto "pesanti", non è possibile ritornare allo stato iniziale (quando il disco era usato solo nelle zone vicino al centro). Quello che si ottiene è normalmente la creazione di grossi e piccoli buchi di spazio disponibile, utili a creare ulteriore frammentazione non appena si carica qualcosa di nuovo. Un buon deframmentatore risolve anche questo problema, eliminando buchi e occupazioni di file in periferia.

Se abbiamo un disco a stato solido di nuova generazione, non c'è più una testina della quale misurare quanto è costretta a "viaggiare", e la frammentazione diventa un problema pressochè ininfluente sulla performance del vostro dispositivo.

1. Indicizzatori e anti-virus. Un buon sistema di indicizzazione dei file (è il sistema che consente di cercare i file digitandone il nome e avendo risposta quasi istantanea) è silente e lavora nell'ombra indicizzando i file solo nel momento in cui vengono acceduti. Esigenze tecniche richiedono tuttavia che qualche volta un'indicizzatore debba fare da "pastore" di tutti i file-pecora, anche quando i file non sono usati. Più file ci sono, più il pastore deve lavorare. Un buon sistema di indicizzazione (Google Desktop lo era) limita queste attività addizionali al minimo indispensabile e quando l'utente è lontano dalla tastiera. Purtroppo ci sono in giro sistemi di indicizzazione lontani (molto lontani) dall'eccellenza, e questi, ahimè, rallenteranno il PC tanti più file avete... a ruota, gli anti-virus analizzeranno tutti i file che l'indicizzatore apre (un anti-virus è progettato per analizzare i file al volo quando vengono aperti dall'u-tonto ma anche quando aperti da processi in background quali il sistema di indicizzazione), causando ulteriore calo di performance.

2. Spazio libero vicino allo 0. Normalmente in questo caso il vostro PC più che "lento" diventa inutilizzabile. Se avete un file di swap dinamico non sarà più possibile ingrandirlo, e l'impossibilità di creare file temporanei si manifesterà con gli errori a video più disparati.

3. Disinstallare applicazioni. A volte togliere delle applicazioni installate è un beneficio per la performance, ma non perchè diminuisce l'occupazione su disco. Se l'applicazione disinstallata prevede una applicazione sempre aperta e avida di RAM (leggi: quelle che lasciano l'iconcina in basso a destra sulla barra applicazioni) il beneficio sarà più o meno evidente a seconda dell'occupazione dello stub residente che avete disinstallato. Se l'applicazione non prevede parti residenti (es. Photoshop, GIMP) il beneficio sarà quasi nullo e legato più che altro a quelle poche chiavi del registry (se usate Windows) che saranno cancellate e non dovranno essere indicizzate.

E' possibile tracciare la gente che visita il mio profilo Facebook?


(Nota del Gennaio 2010) No. Ma è giusto che vi spieghi perchè. E' piuttosto facile tracciare l'elenco degli IP che visitano un sito web del quale ho il totale controllo. Ad esempio, ecco un pezzetto del log di accesso del mio http://www.mat.unical.it/ianni:

86.63.252.89 - - [08/Jan/2010:16:46:44 +0100] "GET /~ianni HTTP/1.1" 301 248 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" "-"
86.63.252.89 - - [08/Jan/2010:16:46:44 +0100] "GET /~ianni/ HTTP/1.1" 200 8253 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" "-"
86.63.252.89 - - [08/Jan/2010:16:46:45 +0100] "GET /~ianni/mail.jpg HTTP/1.1" 200 2538 

Da dove l'ho preso? Dalla cartella /var/log/apache del mio server! Ogni rigo indica un accesso a una risorsa web sulla mia pagina. Ad esempio qualcuno, dall'IP 86.63.252.89, ha letto la mia home, oggi, 8 Gennaio. Mi basta usare un servizio web come GeoIP per avere una idea abbastanza circoscritta della posizione geografica di questo IP. Questa persona usava Firefox 3.5.6. Posso vedere anche di più: in certi casi viene registrata la pagina di provenienza del visitatore (il cosiddetto referrer), vale a dire la pagina precedentemente visitata da questo:

125.20.8.166 - - [02/Feb/2009:11:57:13 +0100] "GET /~ianni/ HTTP/1.0" 200 8140 "http://www.google.co.in/search?num=50&hl=en&lr=&cr=countryIT&as_qdr=all&q=professor+homepage+++networks+OR+algorithms+%22operating+systems%22&start=50&sa=N" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" "-"

Il tizio di cui sopra proveniva da un certo URL (quello subito dopo il valore 8140) che dice molto: usava Google India (www.google.co.in) e la mia homepage gli è comparsa in risposta alla ricerca "professor homepage networks OR algorithms operating systems". Il referrer URL trasporta molte informazioni interessanti, a volte addirittura l'id utente attualmente usato sul forum di provenienza (quello all'interno del quale il visitatore ha cliccato l'URL presente nel mio sito).

Già, molti di voi non lo sanno, ma altrettanto pericoloso per la privacy quanto i leggendari cookie è il fatto che ogni browser trasmette ai web server l'URL che ci ha portato su quel dato sito! Esempio: visito l'URL A ospitato dal sito H. All'interno di questo trovo un link all'URL B, ospitato dal sito G. Nel momento in cui clicco su B, viene contattato il server G, e come interessante informazione, viene passato a G l'url della pagina html in cui ho cliccato, cioè A (se non ci credete... guardate il pezzetto di log che vi ho attaccato sopra).

Si tratta di una informazione preziosa per G, consentendo di fare statistiche, o di offrire contenuti personalizzati alla luce del fatto che si sa che l'utente proveniva da H. Se qualcuno di voi volesse disabilitare l'invio dei referrers, può chiedere a google (esempio con "disable referrers on firefox").

Ma torniamo al nostro discorsetto: "prof, sta dunque dicendo che non si può proprio tracciare chi visita il mio profilo facebook perchè non ho accesso al server e quindi ai log di quest'ultimo?" Non esattamente...

Cross-linking


Ci sono dei casi in cui anche se non ho accesso alle statistiche del sito che ospita il mio blog, posso comunque vedere chi lo visita. Il trucco è abbastanza semplice: è sufficiente che questo sito mi consenta di ospitare una immagine o una qualsiasi risorsa esterna, ospitata da un web server a cui invece ho accesso. Devo inoltre essere sicuro che questa risorsa esterna venga aperta automaticamente ogni volta che viene visitato il blog.

La ricetta funziona egregiamente con MSN Spaces e con la maggiorparte dei siti forum/blog in circolazione. Con MSN spaces si può ad esempio usare l'URL che punta alla musica di sottofondo. Come?

Se questo link non è presente altrove nel web (o al limite, guardando se il referrer URL corrisponde a quello del blog), ogni visita a musichina.mp3 corrisponde a una visita al vostro blog, registrata con tanto di referrer e indirizzo IP.

Perchè queste tecniche non funzionano con Facebook


La tecnica di cui sopra funziona egregiamente con tutti quei siti che accettano contenuti sottomessi dagli utenti e che consentono il cross-linking diretto. Vale a dire, il sito A ospita il link a B, e quando il browser dell'utente U accede ad A, siccome B deve essere visualizzato all'interno di A, il browser di U carica e visualizza anche B. L'accesso a B viene registrato dal server che lo ospita.

Molti siti web pubblici sono costretti a consentire il cross-linking: perchè? L'unica alternativa al cross-linking diretto è il cross linking indiretto: il sito A, anzichè ospitare B, ospita un link speciale A->B, ospitato da A. Quando U carica A, viene caricato subito dopo A->B. A questo punto A->B può essere stato implementato in due modi:

Entrambi i metodi sono piuttosto costosi per chi gestisce un social network con migliaia, se non milioni di visitatori. Nel primo caso avete bisogno di tanto spazio di storage sui vostri server. Nel secondo caso vi serve tanta banda, perchè il vostro server dovrà fare da intermediario per tutte le risorse accessibili in cross-linking indiretto.

Beh, quelli di Facebook hanno le risorse per implementare entrambe le tecniche. Le immagini sono linkate indirettamente perchè precaricate e memorizzate sui server di FB. Qualsiasi URL esterno voi tentiate di piazzare sulla vostra pagina, e in qualsiasi modo voi pensiate di farlo, viene processato e trasformato. Ecco cosa succede se cerco di linkare una immagine presente sul mio sito: L'URL originale era http://www.mat.unical.it/ianni/secr/mind2.jpg, quello che mi ritrovo su FB è

http://external.ak.fbcdn.net/safe_image.php?d=db5528289b4533d6b8e6d9ff445004c8&url=http%3A%2F%2Fwww.mat.unical.it%2Fianni%2Fsecr%2Fmind2.jpg&w=90&h=90

Sarà un server di facebook ad accedere a questa immagine... e non il browser della persona che visita il mio profilo. Lo stesso vale per le applicazioni Facebook. L'API di queste ultime è appositamente studiata per impedire ai programmatori qualsiasi tipo di cross-linking diretto a risorse esterne. Capì??

Attenzione: non è necessario modificare tutti i link esterni per vietare il cross-linking diretto. FB modifica solo gli URL, da voi postati, che necessitano di essere visualizzati automaticamente dal browser (immagini, primo fotogramma dei filmati youtube, ecc.). Vi capiterà dunque di vedere che i link che vanno cliccati esplicitamente dal visitatore restano tali e quali (esempio, http://www.repubblica.it). Dunque resta possibile tracciare chi clicca espressamente su un certo URL presente nella propria bacheca... basta che mettiate un titolo interessante... che ne dite di "Vuoi davvero farti gli affari miei? Clicca qui!".

Come faccio a dimostrare che non sono stato io a mandare una certa e-mail?

Come faccio a risalire all'indirizzo IP di una persona che sta chattando con me su Facebook o su Messenger?