martedì 22 novembre 2016

Come si deve fare un esame scritto (ma non solo)

Visto l'esito dell'ultima provetta, raccolgo qui varie informazioni sparse che ho già fornito più e più e volte. Spero che raccogliendole siano più efficaci.

Rispondere alla domanda del testo senza inventarsi una domanda diversa.

Inventarsi una domanda diversa è un fenomeno che accade molto più spesso di quanto ci si possa immaginare (vedi ad esempio i commenti numero 4, 14, 23 e 25 in questo post).

Se viene chiesto di fornire una certa informazione allora deve essere fornita esattamente quella informazione. Non fornire l'informazione richiesta significa non avere svolto l'esercizio. Non perché io sia pignolo: perché questo è un requisito basilare di ogni professione. Se chiedo ad un imbianchino di pitturarmi una camera di verde allora lui deve pitturarmi una camera di verde. Punto. Che prospettive di lavoro può avere un imbianchino che pittura la cucina invece della camera? O che pittura la camera di bianco?

Fornire informazioni che sono diverse da quelle richieste, inoltre, rende manifesto che uno non è neanche in grado di comprendere il testo di un esercizio ed attenersi ai requisiti. Una impostazione mentale di questo genere è radicalmente in contrasto con la natura dell'ingegneria. Se viene chiesto di fare un ponte allora si deve fare un ponte. Non si deve fare un frigorifero perché si ha voglia di fare un frigorifero, perché siamo più bravi a fare i frigoriferi, perché i frigoriferi sono interessanti, perché se dimostro di sapere fare un frigorifero allora è ovvio che saprò fare anche un ponte, perché basta che produca qualcosa che più o meno ha a che fare con i frigoriferi (caso frequentissimo). Come si deve valutare un elaborato di un aspirante ingegnere che non è neanche in grado di attenersi ai requisiti ma produce ciò che vuole lui?

Talvolta gli studenti si inventano una domanda diversa consapevolmente ("quello che mi è stato chiesto non lo so, però ho studiato"). L’approccio di scegliere da solo l’argomento di cui parlare, svicolando abilmente la domanda, può essere utilissimo in altri contesti (ad esempio in politica) ma è completamente negativo nell’ingegneria per gli stessi motivi sopra discussi.

Talvolta gli studenti inseriscono molte più informazioni di quelle richieste (per dimostrare di avere studiato o perché non si rendono conto che sono inutili). Ciò è molto pericoloso: informazioni inutili hanno valore pressoché nullo se sono corrette e valore negativo se sono sbagliate. Scrivere informazioni inutili, inoltre, è una perdita di tempo prezioso.

Leggere correttamente il testo di un esame è fondamentale anche per i motivi descritti in questo post.

Mai descrivere traffico o tabelle in forma narrativa / discorsiva

Quando viene chiesto di descrivere una qualche forma di traffico (applicativo, pacchetti o frame), è pressoché impossibile che uno svolgimento completamente “narrativo/discorsivo” riesca a convincere il lettore che chi scrive ha veramente capito.

Una risposta deve essere esaustiva e non ambigua, mentre in ogni svolgimento narrativo rimangono sempre punti non descritti e ambigui. Questo post mostra due esempi dettagliati (i commenti 13 e 19 di questo post sono altri esempi).

Esercizi in cui viene chiesto di descrivere del traffico devono essere svolti descrivendo una sequenza di elementi (messaggio, pacchetto o frame) in cui ogni elemento è descritto in modo schematico con un livello di dettaglio “adeguato”.

Per ogni elemento, deve anche essere descritto in modo esauriente e non ambiguo chi trasmette e chi riceve.

Quanto scritto per il traffico si applica in modo analogo per informazioni quali tabelle, regole di configurazione, regole di firewall e così via. In ogni caso si deve fornire un insieme di elementi facendo mente locale sul tipo di ogni elemento (coppia range-azione per una tabella di routing, quadrupla indirizzi IP/port number per una regola di firewall, nome-insiemeURL-protocollo-ACL per un realm di protezione, nome-tipo-valore per un RR e così via). Poi si deve fornire, per ogni elemento, tutte le informazioni corrispondenti al suo tipo.

venerdì 18 novembre 2016

Provetta: Errori


  1. Prima richiesta GET per il primo documento: contiene Content-Type e Content-Length (quindi un messaggio HTTP che non trasporta nessun documento ha uno header che descrive tipo e lunghezza...di che cosa?). Errore fatto da uno che ha sbagliato nettamente l'esercizio zero.
  2. Get di un documento a spritz.it, risposta contiene un cookie. Get di una immagine a conta.org e gli invia il cookie ricevuto da spritz.it (quante volte abbiamo detto che gli identificatori di sessione per un sito X non sono MAI inviati a siti diversi da X? quante volte abbiamo detto che questo non è un dettaglio irrilevante perché, ad esempio, se il browser inviasse al sito Y l'identificatore della sessione che ha sul sito X allora Y potrebbe inviare a X richieste che sarebbero elaborate come se provenissero dal browser?). Errore fatto da uno che ha sbagliato nettamente l'esercizio zero.
  3. DNS request "www.spritz.it A ?" DNS response "www.spritz.it NS ns.spritz.it". Traduzione della DNS response: "caro Browser, esiste una zona di nome www.spritz.it il cui name server ha nome ns.spritz.it". Possibile non essere in grado di distinguere tra web server (cane) e zona (gatto)? Entrambe sono entità che hanno un nome ma sono di tipo radicalmente diverso.
  4. Valore contatori: "per la pagina X, 1". Se il testo dice che per ogni pagina ci sono DUE contatori, perché si torna UN valore per ogni pagina?. Questo ed il precedente sono stati fatti da uno che ha sbagliato nettamente l'esercizio zero.
  5. "il numero di porta del welcoming socket è scelto dal sistema operativo". Ma quando mai? E come farebbe il client a conoscere quel numero di porta? Quando un client si collega la sua richiesta va verso il welcoming socket: se il  numero di porta fosse scelto dal s.o. allora il client non potrebbe conoscerlo, ergo nessun client potrebbe collegarsi,
  6. "dipende se il browser sta effettuando o meno traffico SMTP o POP". "I numeri di porta sul server sono inferiori a 1024 (25 o 110)".  Non so come potere commentare. Affermazioni di questo genere dimostrano l'assenza di ogni minima idea su che cosa accada fisicamente.
  7. "su pc1 c'è 1 socket con numero di porta 53". Idem
  8. DNS request "www.spritz.it A ?" DNS response "ns.it A IP-x". Traduzione: "Il browser chiede al name server che ore sono e il name server gli risponde che piove". Cioè il browser fa una domanda (traducimi il nome pippo) e riceve una risposta che non ha nulla a che vedere con la domanda (ecco la traduzione per il nome luigi). Da un altro punto di vista, come caspita fa il browser a capire che ns.it è il nome di un name server? La stringa "ns" non ha alcun significato per il protocollo DNS. Un name server potrebbe chiamarsi anche "xy" oppure "luigi". La risposta avrebbe dovuto essere "ns.it NS somename.it, somename.it A IP-x".
  9. "sul nodo in cui esecuzione gmail esiste un solo socket il cui numero di porta viene scelto dal s.o. ed è superiore a 1024". Stessi commenti di 6.
  10. "Ogni PC ha un socket con numero di porta superiore a 1024". Se il browser è collegato a due server, come fa ad essere collegato con un solo socket?
  11. "Sul nodo in cui è in esecuzione GMail ci sono...un welcoming socket (il cui numero di porta sarà inferiore a 1024 e diverso da 25, 80 o 110)". Stessi commenti di 6 e di 5.
  12. "Su ogni PC esistono 3 socket con numero di porta 25, 80 e 110". Stessi commenti di 6.
  13. "Il name server di IP-NB chiede al name server della zona .it che gli indica di contattare spritz.it che può risolvere la richiesta: www.spritz.it A IP-s". Consegnare uno svolgimento del genere significa perdere tempo e fare perdere tempo. Il testo diceva chiaramente che consegnare senza avere svolto tutto è inutile. Se uno ritiene in buona fede che questo possa essere uno svolgimento allora significa che non ha neanche letto il documento di preparazione alla provetta ("consigli", numero 6) (e neanche i post di questo blog, vedi ad esempio questo: https://reti-units.blogspot.it/2016/04/risposte-narrative.html; post che non scrivo per divertimento, ma per cercare di aiutare chi ha difficoltà).
  14. "Totale accessi a spritz.it:2, totale client che visitano spritz.it: 1; totale accessi a engine.org e numero client: 1". Questo significa non avere neanche letto il testo dell'esame. Siamo al terzo anno di università. Stessi commenti di 13. 
  15. "suppongo che si colleghi sia al mail server di gmail che al web server di corriere tramite un browser e quindi su una connessione TCP con protocollo HTTP": a parte il fatto che GMail è un sito web, questa ipotesi non ha il minimo senso; come si fa a collegarsi ad un mail server con protocollo HTTP?
  16. "su PC1 esiste un socket che apre una connessione con il proxy che ha numero di porta 8080": a parte l'ambiguità (il "che" si riferisce al proxy o al socket?), la domanda chiedeva il numero di porta locale su PC1, non quello remoto. Quindi la risposta è gravemente incompleta nella interpretazione migliore (manca il numero di porta locale) o gravemente errata nella interpretazione peggiore (il numero di porta locale è 8080 oppure il numero di porta locale non esiste). Da un paragrafo successivo è evidente che l'interpretazione deve essere la peggiore.
  17. "sappiamo che su un calcolatore non ci possono essere più socket che parlano con lo stesso socket che ha stesso numero di porta" Chi l'ha mai detto o scritto?
  18. "Conosce i seguenti RR: it IP-NS, com IP-NS, org IP-NS..." Questi NON sono RR! Ogni RR ha un tipo. Ed il procedimento di risoluzione, ricorsiva o iterativa, richiede DUE RR per ogni zona, uno di tipo NS ed uno di tipo A.
  19. DNS Request "www.spritz.com A ?", DNS Response "mi risponde dicendo di contattare il name server ns.com". Ormai davvero non so più come dirlo. Ho detto decine di volte che le risposte narrative non vanno bene, non perché io sono fissato ma perché è impossibile da una risposta narrativa capire se chi scrive ha capito. Come gli dice di contattare il name server ns.com? In inglese? in italiano? Inviandogli un RR? o inviandogli un codice di errore? L'ho anche scritto: in questo blog e nel documento con gli esercizi. Se una persona che ha già ripetuto questo esame molte volte continua a fornire risposte narrative io davvero non so cosa posso fare.
  20. Posso arrivare a capire la logica che ha portato a fare il ragionamento (sbagliatissimo) "browser collegato con GMail; GMail ha a che fare con la email; ci sono socket che hanno a che fare con SMTP e/o POP". Ma per quanti sforzi faccia non riesco a capire come si possa dire che sul nodo del corriere della sera ci siano 3 socket con numero di porta 110 (peraltro, dopo avere scritto che non ci sono connessioni POP). L'unica ipotesi che posso fare è che sia stato scritto un numero a caso sperando di indovinare la risposta corretta. Questa è una strategia di approccio all'esame che sconsiglio: l'evento sfavorevole ha probabilità molto elevata, perché il numero delle risposte possibili è altissimo; il costo dell'evento sfavorevole può essere enorme (quando la risposta che si sceglie non ha il minimo senso, come in questo caso).
  21. "su PC1 ci sono socket con numero di porta 80". No comment.
  22. Almeno due persone hanno interpretato l'esercizio DNS assumendo che gli RR fossero nella cache del browser. Leggere il testo. Non ci sono ambiguità possibili, gli RR erano nella cache del name server (ovviamente ciò non significa che io non scrivo mai in modo ambiguo; può succedere; ma in questo caso non è successo).
  23. Svolgimento dell'esercizio 8: un romanzo breve che conclude con "dunque il conteggio finale è 2". Quando dico e ripeto che bisogna imparare a leggere risulto antipatico, lo so, ma un motivo c'è. Il testo dell'esercizio era chiarissimo: erano richiesti due contatori per ognuna delle 3 pagine. Immaginiamo un imbianchino; gli viene chiesto di pitturare tre stanze di bianco con strisce gialle e lui ne pittura solo una di blu. Immaginiamo il primo impiego in azienda: vi viene chiesto di fare una cosa e voi ne fate un'altra.
  24. Che caspita è lo header "Encoding: 6 Febbraio" che accompagna i cookie a lunga scadenza?
  25. Ancora sull'esercizio 8: perché fornire conteggi per sito quando i conteggi sono chiesti per pagina? Vedi commento #23.
  26. "PC1 ha un solo socket ed il suo numero di porta viene definito dall'applicativo client". Viene definito dal s.o. 
  27. Molti prelevano documenti in cui la terza parte dell'URL è "/" inviando GET index.html. Ma perché? GET index.html si invia quando la terza parte dell'URL è index.html.
  28. I link (cioè i documenti il cui URL è il valore di HREF di un A) NON sono prelevati automaticamente. Sono prelevati solo clickandi sul link.
  29. La presenza di www in testa ai nomi di server in molti casi è un processo random. Presente o assente in modo non predicibile. Uno stesso nome compare con o senza www in punti diversi del traffico http. Poi non si capisce perché per trovare l'indirizzo IP di www.spritz.it e di www.engine.org le DNS request siano spritz.it A ? e engine.org A ?. Mah.
  30. Su GMail c'è un welcoming socket ed un communication socket per ogni client. I numeri di porta dei communication socket diversi tra loro. Ma quando mai??? Valori numerici dei numeri di porta non indicati. Possibile che non si legga il testo? (in questo caso penso che il testo sia stato letto ma, astutamente, schivato...). "Si suppone che i PC siano autenticati in GMail" e per cosa serve questa ipotesi???
  31. "PC3 ha un solo socket perché connesso a un solo server". PC3 aveva Chrome connesso al corriere della sera e Firefox connesso al corriere della sera, Su PC3, quindi, ci sono due processi connessi allo stesso server. Ogni connessione è privata di un processo, non può essere condivisa tra più processi. Questo punto non lo abbiamo approfondito molto, quindi non considero questo come un errore grave.
  32. "Ogni PC ha due socket su porta 80". Il numero di porta lato client non ha nulla a che vedere con il numero di porta lato server.
  33. Il welcoming socket NON è duplicato per ogni client. Mettere su un server due socket per ogni client, di cui uno è un welcoming e l'altro un communication non ha il minimo senso.
  34. DNS request "www.spritz.it A ?" DNS response "www.spritz.it NS ...". Quindi esiste una zona di nome www.spritz.it?
  35. DNS request "flickr.com A ?" DNS response "flickr.com NS ...". Il testo diceva che il name server conosceva i RR sufficienti per contattare il name server della zona com. Qui invece si assume che conosca i RR per contattare il name server della zona flickr.com.
  36. Esercizio Zero: Non riesco minimamente a capire la logica che porti a mettere un mail server collegato con il server web del Corriere della Sera. Neanche la logica di una risposta "zero connessioni SMTP...su GMail ci sono 5 socket (1 welcoming e 4 communication) tutti con porta numero 25". Neanche la logica di fornire due svolgimenti per l'esercizio Zero, uno per il "caso in cui gli utenti stanno inviando una mail" ed un altro per il "caso in cui vengano prelevate le mail".
  37. Esercizio Zero: "avremo 3 connessioni SMTP". Tralasciando il fatto che questa affermazione sia sbagliatissima, non riesco minimamente a capire la logica che porti a dire che "avremo 1 connessione POP perché tutti gli utenti sono collegati". Poi che su GMail ci sono 4 socket con numeri di porta "da 110 in su, perché sono dei client". Poi che sui PC il numero di porta è 53. Consegnare uno svolgimento di questo genere significa perdere tempo e fare perdere tempo.
  38. Esercizio Zero: cosa caspita c'entrano i web server dell'organizzazione? In numero variabile grosso modo uguale al numero dei client? con collegamenti che sono tra web server dell'organizzazione e GMail/Corriere in un esercizio e tra PC e GMail/Corriere nell'esercizio successivo?
  39. Esercizio Zero: come si fa ad essere collegati con due server usando un solo socket? (siamo senza proxy; anche con proxy sono due, ma dire che con proxy è uno solo può essere considerato corretto).
  40. Qual'è il senso di "GET /www.spritz.it" e di "GET /www.engine.org"?
  41. Il "Content-Type: iframe" dovevo ancora vederlo. Così come "Accept: iframe/formato iframe".
  42. Il numero di persone che hanno sbagliato l'esercizio zero per me è veramente una causa di depressione. Ma quando vi siete collegati a GMail da PC avete mai dovuto installare un mail client???
  43. Qual'è il senso di mettere un punto interrogativo in testa ad ogni URL richiesto (Get ?/, Get ?i.htm,...)?
  44. Se sono chiesti gli accessi ai documenti www.spritz.it/ e www.spritz.it/i1.html, che senso ha fornire conteggi "spritz.it 3" e "spritz.it/i1.htm 1". Non ha alcun senso. Se uno conta (erroneamente) gli accessi al sito invece che alla pagina allora deve fornire www.spritz.it. Inoltre, il contatore deve contare gli accessi al documento: non al documento e alle immagini o script che contiene quel documento.

giovedì 17 novembre 2016

Provetta: Esercizio Zero

Scrivo questo post senza avere ancora visto neanche un compito (giornata infernale).

La rappresentazione grafica che si ottiene leggendo il testo dell'esercizio Zero è questa:


Fare una rappresentazione senza questi elementi significa non avere capito il testo. Senza avere capito il testo non si può superare l'esame.

I numeri di porta sono tutti 80 sul lato destro. Sul lato sinistro sono tutti superiori a 1024, non predicibili e tali che in ogni PC non ci sono due numeri di porta uguali. Assegnare numeri di porta con valori diversi significa avere grosse lacune di base. Talmente grosse da non essere accettabili.

Le risposte sono quindi banali:


  1. Quante sono le connessioni SMTP uscenti o entranti da ORG? (cioè, quante sono le connessioni TCP in cui una delle due estremità è sulla porta 25 ed una delle due estremità è interna a ORG). 0
  2. Ripetere per le connessioni POP. 0
  3. Quanti socket esistono sul nodo su cui è in esecuzione GMail? 4 (più communication socket, quindi 5) Quali numeri porta hanno? tutti 80
  4. Ripetere per il nodo su cui è in esecuzione il Corriere della Sera 2 (più communication socket, quindi 3), numeri di porta 80.
  5. Ripetere per PC1, PC2, PC3. 2 socket per ogni PC, ognuno con numero di porta superiore a 1024 e diverso da ogni altro socket sullo stesso PC

Si possono aggiungere elementi allo scenario? Dipende.

Aggiungere un proxy all'interno di ORG può avere senso. In tal caso la risposta alle 4 domande non cambia.

Aggiungere un mail client in ogni PC può avere senso o non averlo. Perché aggiungerne uno e non sette o dodici? Perché aggiungere un mail client e non anche un name server, o Skype o un altro browser? Forse perché uno non riesce a concepire che la risposta alle domande 1 e 2 può essere "zero"?

Ovviamente, se uno aggiunge un mail client in ogni PC deve aggiungere anche un mail server. Altrimenti il mail client è inutile. A quel punto uno si chiede, ma allora perché non aggiungere anche un name server? E perché aggiungerne solo uno, visto che le organizzazioni coinvolte sono tre? Dovremmo aggiungere tre mail server e tre name server.

Inoltre, visto che i mail client ed i mail server non compaiono nell'esercizio, perché non aggiungere una decina di altri web server? Visto che si aggiungono cose inutili, perché aggiungere proprio quelle? Forse perché non si concepisce che la risposta alle domande 1 e 2 può essere "zero"?

Supponiamo, tra le infinite aggiunte possibili, di avere aggiunto un solo mail server e di averlo messo accanto al web server GMail. Ovviamente, collegare un browser al mail server significa non avere capito nulla di cos'è un browser e cos'è un mail server. Non si può superare un corso universitario di reti di calcolatori con una lacuna di questo genere.

Supponiamo, tra le infinite aggiunte possibili, di avere aggiunto un mail client su ogni PC. Ovviamente, collegare un mail client al web server GMail significa non avere capito nulla di cos'è un mail client e cos'è un web server. Non si può superare un corso universitario di reti di calcolatori con una lacuna di questo genere.

Detto questo, spero sinceramente di non dovere bocciare nessuno a causa di uno svolgimento errato di questo esercizio. Da una occhiata superficiale e rapidissima temo però che non sarà così. A scanso di equivoci, comunque, anche in caso di esercizio zero sballato prima di bocciare guardo tutto il resto del compito.

AGGIORNAMENTO Venerdi 18 Novembre. Tra le possibili aggiunte una certamente corretta (ai fini dell'esercizio) è quella di mettere un mail client sullo stesso nodo su cui è in esecuzione GMail. In tal caso il numero di socket su quel nodo aumenta. Ma considererei perfetto anche uno svolgimento senza questa aggiunta.



martedì 15 novembre 2016

Cookie con scadenza nel passato (!)

per curiosità stavo analizzando gli header della response che si riceve con questo link amazon:


E mi sono accorto che c'è un set-cookie con expiry date nel passato. Come è possibile ? Si tratta di un errore del server amazon?

Penso proprio che sia un errore nel codice del server amazon.

Errori di questo genere sono descritti, ad esempio, qui:

(non occorre approfondire: l'idea è che, per quanto ne so io, non può essere una situazione voluta dal server).

Ho analizzato il traffico in dettaglio (con lo strumento Fiddler: potente ma non banalissimo da usare con i siti HTTPS per motivi che capiremo alla fine del corso). Ho visto che la situazione è ancora più intricata perché non solo ci sono tanti cookie ma addirittura ci sono più cookie con lo stesso id ma date di scadenza diverse; in particolare (per i valori delle coppie name-value: XXXX l'ho messo io per oscurare i valori veri; - è il valore vero: anche questo è un forte indizio di errore nel codice):

Ci sono 4 cookie con data di scadenza nell'anno 2036:
  • Set-cookie: ubid-acbit=XXXXXXXXXXX; path=/; domain=.amazon.it; expires=Tue, 01-Jan-2036 00:00:01 GMT
  • Set-cookie: lc-acbit=it_IT; path=/; domain=.amazon.it; expires=Tue, 01-Jan-2036 00:00:01 GMT
  • Set-cookie: session-id-time=XXXXXXXXXXX; path=/; domain=.amazon.it; expires=Tue, 01-Jan-2036 00:00:01 GMT
  • Set-cookie: session-id=XXXXXXXX; path=/; domain=.amazon.it; expires=Tue, 01-Jan-2036 00:00:01 GMT
Altri 4 cookie con stesso id e data di scadenza nel 2004,
  • Set-Cookie: ubid-acbit=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: lc-acbit=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: session-id-time=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: session-id=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
Più altri 7 o 8 che scadono nel 2004; 
  • Set-Cookie: session-token=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: at-acbit=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: x-acbit=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: x-wl-uid=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: sess-at-acbit=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
  • Set-Cookie: UserPref=-; path=/; domain=.www.amazon.it; expires=Tue, 16-Nov-2004 07:28:28 GMT
I cookie del terzo gruppo sono scartati dal browser (già scaduti; non ho verificato nella tabella dei cookie del browser ma penso proprio che sia così).

Per gli altri due gruppi bisognerebbe vedere cosa dice esattamente il protocollo HTTP circa il comportamento da tenere in casi come questo; quale che sia la specifica http, comunque, il browser considera solo il cookie con data di scadenza più avanti nel tempo. Ho verificato questa affermazione ispezionando il contenuto della prima richiesta successiva verso amazon:

Cookie: session-token=YYYYY; x-wl-uid=YYYYY; ubid-acbit=XXXXX; lc-acbit=it_IT; session-id-time=XXXXX; session-id=XXXX

I 2 valori indicati con YYYY dovevano essere già presenti nel mio browser in precedenza. Gli altri 4 valori sono esattamente quelli con scadenza nel 2036, quelli del primo gruppo.

Riflessione

La domanda sorge spontanea: "ma com'è possibile che ci siano errori di questo genere?". La risposta è questa:

1) gli errori che non provocano problemi di funzionalità o sicurezza possono rimanere latenti per molto tempo (= nessuno se ne accorge);
1-bis) anche se qualcuno li scopre, si può decidere di non correggerli o di dare loro una priorità talmente bassa che in pratica non saranno mai corretti (proprio perché non causano problemi di funzionalità o sicurezza);

Riflessione ancora più importante

Questo esempio dovrebbe aiutare a capire ancora meglio il significato di "Come organizzo lo studio di Internet":

...Analizzare gli argomenti di Internet esattamente come si verificano nella realtà sarebbe didatticamente disastroso.

In ogni argomento si mescolano infatti:

  1. elementi necessari per il funzionamento e fondamentali per la comprensione dell'argomento;
  2. elementi non necessari per il funzionamento e/o non fondamentali per la comprensione;

Gli elementi 2 purtroppo sono tantissimi....

giovedì 10 novembre 2016

Orwell e Facebook (e i cookie)

Supponiamo di essere sul sito del corriere della sera.

Per il solo fatto di aver visualizzato la home page del corriere ho inviato un centinaio di get /?imgX (e/o eseguito scripit) a un centinaio di siti che mi hanno mandato indietro cookies a fini pubblicitari.

Poniamo però che come diceva lei a lezione, ci siano anche le foto di tutti quelli che sono nella lista di fb che hanno visionato la stessa pagina... questo mi fa pensare a Orwell piuttosto che alla pubblicità...cioè che scopo pubblicitario potrebbe avere il fatto che io sappia che tot miei conoscenti hanno visto la stessa pagina? Siamo comunque già tutti sulla stessa pagina non serve fare ulteriore pubblicità!

Obbiettivo

Utente U1 preleva la pagina P1 sul sito S. La pagina P1 contiene N link. S vuole incoraggiare U1 a prelevare uno o più dei documenti linkati (per motivi evidenti: più pagine vede l'utente, meglio è per S).

Se P1 riesce a mostrare ad U1, accanto ad ogni link, uno o più dei suoi amici Facebook che hanno prelevato quel link, allora U1 forse preleverà quel link. E' un modo per incoraggiare U1 a prelevare quel contenuto.

Da un altro punto di vista, P1 fornisce "contenuti personalizzati a U1, ottimizzati per le sue preferenze" (una di quelle frasi standard scritte nei messaggi relativi ai cookie.

Meccanismo tecnico

Il meccanismo tecnico non è banalissimo ma neanche complicato. Abbiamo tutti gli elementi per comprenderlo. E' più difficile da descrivere che da capire.

La pagina P1 è costruita in modo da avere "accanto" ad ogni link un URL che punta su Facebook. L'URL è funzione della pagina P1 e del link (cioè ogni link su P1 è associato ad un URL diverso su Facebook).

Sia P1-k il k-esimo link su P1 e sia F1-k l'URL di Facebook associato a P1-k.

Quando U1 chiede F1-k a Facebook, Facebook riceve il cookie di U1; se U1 è autenticato, allora Facebook è in grado di capire lo username Facebook di U1 e, quindi, gli amici di U1. A questo punto Facebook analizza quali amici di U1 hanno prelevato P1-k (informazione che Facebook ha raccolto in precedenza con le tecniche solite), sceglie in qualche modo un amico "caro" e quando torna a U1 il documento F1-k ci mette dentro la foto di quell'amico.

Osservazione

Nella realtà ciò che viene fatto più spesso non è mettere accanto ad ogni link una lista di amici, ma mettere su ogni pagina una lista di amici che hanno visto quella pagina e hanno clickato su "like". 

In questo caso l'interesse è incoraggiare l'utente a premere like perché ciò fornisce un forte segnale sulle preferenze e sui gusti dell'utente. Segnale molto più forte della sola visione di un contenuto e che poi può essere sfruttato in molti modi. 

Con la notazione sopra, P1 non contiene URL verso Facebook (o meglio, non contiene contenuto visibile prelevato da Facebook; contiene contenuto prelevato da Facebook ma invisibile); ogni pagina linkata da P1 ha URL verso Facebook (l'immagine qui sopra mostra il contenuto di tale URL). Quando l'utente preleva tale URL, Facebook applica un meccanismo analogo a prima.




sabato 5 novembre 2016

"Devo rispondere scrivendo X oppure scrivendo Y?"

- quando si schematizza una richiesta a un name server, questo deve essere indicato con il suo nome o con il nome della zona di cui è name server? 

Se ad esempio il nome del nameserver della zona units.it fosse misterdomain.eu (cioè si ha il RR units.it NS misterdomain.eu), quando invio una richiesta a units.it, accanto al server schematizzato posso scrivere "name server della zona units.it" o "misterdomain.eu" indifferentemente?

Forse è una precisazione superflua, in quanto l'ho detto più volte, ma preferisco ribadirla: non esiste "lo" svolgimento corretto; un esercizio può essere svolto in N modi diversi, tutti per me perfetti o corretti.

Da un altro punto di vista, non dovete passare notti insonni chiedendovi se quello che voi intendete scrivere coincide con quello che io voglio leggere.

Il principio è molto semplice: chi legge deve essere certo che chi scrive ha capito. Si può dimostrare che si è capito in N modi diversi.

Ad esempio, se come destinatario di una richiesta DNS uno scrive "DNS" oppure "name server", allora chi legge non può essere certo che chi scrive ha capito. Mi pare evidente.

Nel caso specifico, entrambi gli svolgimenti sarebbero corretti: sia scrivendo "name server della zona Z", sia scrivendo il nome di quel name server (nome che ovviamente deve essere specificato in altre parti dell'esercizio), chi legge è certo che chi scrive ha capito.

Detto questo, in questo caso è preferibile scrivere il nome del name server. Perché è preferibile? Perché se uno scrive "name server della zona units.it" allora in chi legge permane il dubbio "ma questo lo saprà che il name server della zona units.it è misterdomain.eu? ha chiaro il significato del record NS che ha scritto due righe prima?". In altre parole, chi scrive ha capito a chi va inviata la richiesta DNS, ma forse non ha capito il significato dei record NS. Può sembrarvi una pignoleria eccessiva, ma vi garantisco che non è così. La creatività degli studenti nell'escogitare giri di parole finalizzati a nascondere i propri dubbi non ha limiti. Ho visto quasi di tutto.

Il dubbio sopra citato può avere impatto nullo, trascurabile o non trascurabile sulla valutazione, in dipendenza del resto dello svolgimento.

Pertanto, il vostro scopo deve essere dimostrare di avere capito; di fronte a due o tre opzioni, conviene scegliere quella meno ambigua (più specifica); quella cioè che contiene maggiore informazione.

Nota bene: "opzione che contiene maggiore informazione" non significa "aggiungere informazioni superflue". Nell'esempio precedente, scrivere "name server della zona units.it" (quindi opzione che contiene minore informazione) con l'aggiunta "può appartenere a qualsiasi organizzazione; un registrar può infatti avere accordi tecnici ed operativi per permettere la creazione automatizzata di RR in molti top-level domain tra i quali anche .it" non rende l'opzione scelta più informativa. L'aggiunta è superflua. In chi legge permane il dubbio "ma questo lo sa come si chiama il name server della zona units.it? lo sa sono i record NS che ha scritto poco sopra?

In generale, fornire informazioni superflue è inutile (non risponde alla domanda) ed è dannoso (si perde tempo e si fornisce una prova negativa delle proprie capacità). Perché informazioni superflue forniscono una impressione negativa? Per tre motivi:
  1. fornire informazioni superflue perché le si ritengono utili significa non avere capito l'argomento;
  2. fornire informazioni superflue per dimostrare che "questo non lo so tanto bene ma ho studiato tanto e le altre cose le so" significa non avere capito cosa sia un ingegnere. Se uno deve dimensionare un ascensore ma sa dimensionare solo i frigoriferi non è che può dire "l'ascensore è caduto ma io sono bravissimo nel dimensionare i frigoriferi".
  3. Ho l'umana debolezza di essere particolarmente sensibile, in senso negativo, nei confronti di questo fenomeno.