Accademia:Log 2011 03 23

[21:51:28] <amosse> Buona sera a tutti
[22:27:21] <Stemby> 'sera
[22:27:31] <amosse> sera
[22:27:31] <Stemby> scusate per l'ora ma ho finito tardissimo
[22:27:39] <Stemby> che folla
[22:27:54] <amosse> si in effetti..
[22:27:55] <Stemby> fatemi un po' di spazio che non respiro
[22:28:13] <Stemby> amosse: sei l'ultimo superstite?
[22:28:17] <Stemby> che famo?
[22:28:33] <amosse> boh
[22:28:36] <Stemby> vediamo l'output su file, va
[22:28:40] <Stemby> gli altri si attaccano
[22:28:41] <amosse> ok
[22:28:45] <amosse> ok
[22:28:49] <Stemby> dammi 2 minuti che mi sistemo
[22:28:54] <amosse> ok
[22:29:19] <Stemby> tu hai guardato qualcosa?
[22:29:34] <amosse> a dire il vero non tanto
[22:29:51] <amosse> sto cercando di aggiornare il wikiu
[22:29:56] <amosse> *wiki
[22:30:46] <amosse> se hai un minuto dacci un occhiata, 'sequenze'
[22:31:11] <Stemby> vedrò
[22:31:17] <Stemby> non subito, comunque
[22:31:26] <amosse> ok
[22:31:32] <amosse> no problem
[22:31:51] <Stemby> eccomi
[22:31:58] <amosse> ok
[22:32:01] <Stemby> allora, riprendiamo da dove eravamo rimasti
[22:32:07] <Stemby> ti ricordi?
[22:32:09] <amosse> vai pure
[22:32:12] <amosse> si
[22:32:25] <Stemby> tutorial, capitolo 7 se non erro
[22:32:45] <amosse> http://docs.python.org/release/3.1.3/tutorial/inputoutput.html#reading-and-writing-files
[22:33:02] <Stemby> esatto
[22:33:23] <Stemby> i metodi fatti son chiari?
[22:33:36] <amosse> si, solo una domanda
[22:33:49] <Stemby> dimmi
[22:33:51] <Stemby> ah, ecco
[22:33:53] <Stemby> aspetta
[22:34:00] <Stemby> l'altra volta ti avevo detto:
[22:34:10] <Stemby> for line in f.readlines():
[22:34:14] <Stemby> ti ricordi?
[22:34:19] <amosse> si
[22:34:28] <Stemby> mi ricordavo che non era performante
[22:34:31] <Stemby> è così
[22:34:33] <Stemby> non usarlo
[22:34:43] <Stemby> puoi fare direttamente come sul wiki
[22:34:51] <Stemby> for line in f:
[22:34:52] <Stemby> ok?
[22:35:02] <amosse> ok
[22:35:07] <Stemby> perché gli oggetti di tipo file sono già iterabili
[22:35:13] <amosse> ok
[22:35:14] <Stemby> inutile creare una lista
[22:35:17] <Stemby> bon
[22:35:36] <Stemby> la tua domanda?
[22:36:14] <amosse> il secondo argomento di open(), quando è 'a' cosa significa esattamente
[22:36:43] <amosse> 'opens the file for appending'
[22:36:48] <amosse> ?
[22:36:52] --> groll (~groll@Azzurra-195E4683.48-151.net24.it) has joined #debianizzati-corsi
[22:37:07] <Stemby> adesso lo vediamo
[22:37:08] <amosse> ciao groll
[22:37:12] <amosse> ok
[22:37:15] <groll> ciao
[22:37:21] <Stemby> l'avevo spiegato già l'altra volta, comunque lo riprendiamo
[22:37:25] <Stemby> ciao groll
[22:37:41] <Stemby> bon
[22:37:52] <Stemby> allora vediamo come scrivere un file
[22:38:01] <amosse> ok
[22:38:10] <Stemby> primo passaggio: creare un oggetto di tipo file, in scrittura
[22:38:24] <Stemby> come dicevo, è una fase delicata
[22:38:40] <Stemby> se scrivi su un file esistente, lo cancelli!
[22:38:56] <Stemby> quindi posizionati in una cartella che sia sicura
[22:39:03] <Stemby> poi fammi vedere come faresti
[22:39:08] <Stemby> (nell'interprete)
[22:39:13] <amosse> ok
[22:41:07] <Stemby> forza
[22:41:08] <amosse> >>> f = open('prova.txt', 'w')
[22:41:13] <Stemby> ok
[22:41:25] <Stemby> fammi vedere se posso farlo anch'io
[22:41:27] <Stemby> un attimo
[22:41:50] <Stemby> ok, non ho nessun file che si chiama così
[22:42:18] <Stemby> bene
[22:42:31] <Stemby> secondo passaggio: dobbiamo scriverci i contenuti
[22:42:33] <Stemby> come fare?
[22:42:42] <Stemby> qui entra in gioco il metodo write()
[22:42:52] <amosse> ok
[22:42:53] <amosse> provo
[22:43:05] <Stemby> hai visto sul tutorial?
[22:43:16] <amosse> no
[22:43:28] <Stemby> guarda
[22:43:43] <Stemby> la sintassi è banale
[22:43:50] <Stemby> f.write(string)
[22:44:07] <Stemby> dove al posto di string ci metti una stringa
[22:44:14] <amosse> >>> f.write('ciao questa è una prova') 23
[22:44:18] <Stemby> ottimo
[22:44:28] <amosse> perchè 23?
[22:44:34] <Stemby> secondo te?
[22:44:43] <amosse> n° caratteri
[22:44:47] <Stemby> esatto
[22:45:10] <Stemby> in realtà hai dimenticato un carattere
[22:45:13] <Stemby> o meglio...
[22:45:23] <Stemby> vediamo cosa succede se aggiungi un altra stringa
[22:45:26] <Stemby> forza
[22:45:35] <Stemby> scrivi un'altra stringa
[22:46:31] <amosse> >>> f.write('\nla seconda riga\n') 17
[22:46:41] <Stemby> eh, così non vale :p
[22:46:47] <Stemby> comunque ok
[22:46:50] <Stemby> hai capito
[22:47:01] <amosse> si '\n'
[22:47:27] <Stemby> \n è un unico carattere, ti è chiaro questo, vero?
[22:47:39] <amosse> si si
[22:47:51] <Stemby> infatti se vedi ci sono 15 caratteri nella tua stringa
[22:47:56] <Stemby> più i 2 \n
[22:48:00] <Stemby> in totale 17
[22:48:04] <Stemby> conta :)
[22:48:15] <amosse> si esatto
[22:48:24] <Stemby> ok
[22:48:30] <Stemby> ora ti spiego un altro metodo
[22:48:34] <Stemby> close()
[22:48:38] <Stemby> prova
[22:49:05] <amosse> ok
[22:49:44] <amosse> chiude l'oggetto?
[22:49:59] <Stemby> diciamo di sì
[22:50:05] <Stemby> f.close()
[22:50:06] <Stemby> ok?
[22:50:10] <amosse> ok
[22:50:13] <Stemby> prova a scrivere una riga
[22:50:56] <amosse> ValueError: I/O operation on closed file.
[22:50:59] <Stemby> esatto
[22:51:02] <Stemby> però:
[22:51:10] <Stemby> >>> f
[22:51:10] <Stemby> <_io.TextIOWrapper name='prova.txt' mode='w' encoding='UTF-8'>
[22:51:12] <Stemby> ok?
[22:51:20] <Stemby> l'oggetto esiste ancora
[22:51:24] <Stemby> non è stato distrutto
[22:51:30] <Stemby> però è chiuso
[22:51:37] <Stemby> ovvero non ci si può operare sopra
[22:51:43] <Stemby> ok?
[22:51:46] <amosse> a cosa serve chiuderlo
[22:52:01] <Stemby> ad esempio:
[22:52:09] <Stemby> devi leggere e scrivere sullo stesso file
[22:52:30] <Stemby> chiudi la lettura
[22:52:34] <Stemby> lo riapri in scrittura
[22:52:38] <Stemby> e viceversa
[22:52:47] <amosse> ok
[22:52:56] <Stemby> diciamo che in realtà close() lo si potrebbe anche non usare praticamente mai
[22:53:19] <amosse> quindi diciamo per una questione di sicurezza dei dati
[22:53:20] <Stemby> nel senso che quando il processo finisce, python distrugge automaticamente tutti gli oggetti
[22:53:23] <weirdo> "ne resterà solo uno"
[22:53:44] <amosse> quale?
[22:53:48] <Stemby> e quando un oggetto file viene distrutto, per prima cosa in automatico viene chiuso
[22:54:04] <Stemby> però per chiarezza nei sorgenti non è mai male aggiungere un close()
[22:54:22] <amosse> scusa sorgenti?
[22:54:28] <Stemby> diciamo che io tendenzialmente lascio aperto in scrittura un file lo stretto indispensabile
[22:54:41] <Stemby> sorgenti = listato
[22:54:52] <Stemby> il codice dei tuoi script
[22:54:58] <amosse> ok
[22:55:14] <Stemby> appena posso chiudo
[22:55:25] <amosse> ok
[22:55:30] <Stemby> in questo modo, se dovesse spegnersi il pc, non dovrebbero succedere danni
[22:55:37] <Stemby> apro → scrivo → chiudo
[22:55:42] <Stemby> se serve, riapro
[22:55:50] <amosse> ok
[22:55:54] <Stemby> poi ognuno si regola come crede
[22:56:14] <amosse> quindi un file close() può essere solo letto?
[22:56:22] <Stemby> ?
[22:56:30] <Stemby> no, neppure
[22:56:36] <Stemby> se è chiuso è chiuso
[22:56:43] <Stemby> devi riaprirlo in lettura
[22:56:53] <amosse> hai ragione scusa
[22:57:02] <amosse> ok
[22:57:02] <Stemby> >>> f.read()
[22:57:02] <Stemby> Traceback (most recent call last):
[22:57:02] <Stemby>   File "<stdin>", line 1, in <module>
[22:57:02] <Stemby> ValueError: I/O operation on closed file.
[22:57:12] <Stemby> basta provare...
[22:57:13] <Stemby> :)
[22:57:31] <amosse> ok i/o -> scrivi/leggi
[22:57:50] <Stemby> su file sì
[22:57:58] <amosse> ok
[22:58:10] <Stemby> input = ingresso
[22:58:20] <Stemby> (dei dati grezzi)
[22:58:32] <Stemby> output = iscita dei dati elaborati dal programma
[22:58:35] <Stemby> *uscita
[22:58:45] <amosse> ok
[22:58:53] <Stemby> possiamo fare:
[22:59:03] <Stemby> tastiera → script → monitor
[22:59:09] <Stemby> (come abbiamo fatto finora)
[22:59:11] <Stemby> oppure
[22:59:19] <Stemby> file → script → monitor
[22:59:22] <Stemby> oppure
[22:59:27] <Stemby> file → script → file
[22:59:32] <Stemby> oppure...
[22:59:46] <Stemby> tastiera → script → file
[22:59:57] <Stemby> oppure... tante altre possibilità
[23:00:06] <amosse> ok
[23:00:16] <Stemby> ma con gli strumenti che abbiamo ora direi che le possibilità son quelle
[23:00:35] <amosse> ok
[23:00:37] <Stemby> bene
[23:00:45] <Stemby> compito per la prossima volta:
[23:00:53] <Stemby> scrivere un convertitore di encoding
[23:01:09] <amosse> spiegati meglio
[23:01:21] <Stemby> input: file con codifica barbara
[23:01:29] <Stemby> → il tuo script
[23:01:40] <Stemby> → file codificato UTF-8
[23:01:45] <Stemby> ok?
[23:01:51] <Stemby> quello che mi hai chiesto l'altra volta
[23:01:57] <Stemby> di sicuro esiste già
[23:02:13] <Stemby> però riscrivilo tu da 0 in Python
[23:02:22] <Stemby> vedrai che ti basteranno poche righe
[23:02:31] <amosse> scusa ma non ho capito
[23:03:24] <amosse> mi puoi fare un esempio?
[23:03:25] <Stemby> sai cos'è la codifica di un file?
[23:03:39] <amosse> si e no
[23:03:47] <Stemby> mmmm
[23:03:52] <Stemby> weirdo: spieghi tu?
[23:03:54] <Stemby> :)
[23:04:11] <Stemby> groll?
[23:05:04] <groll> io vado a dormire ora
[23:05:04] <Stemby> http://it.wikipedia.org/wiki/File_di_testo#Codifica
[23:05:09] <weirdo> mica lo so spiegare, sono capace soltanto a litigarci con il charset
[23:05:17] <amosse> la codifica , per esempio UTF-8, ma in pratica cosa vuol dire
[23:05:25] <Stemby> :)
[23:05:32] <Stemby> hai presente la tabella ascii?
[23:05:55] <amosse> purtroppo no
[23:05:59] <Stemby> http://it.wikipedia.org/wiki/ASCII
[23:06:14] <Stemby> qui siamo all'informatica degli anni '70-'80
[23:06:27] <weirdo> ma anche se lo sai resta comunque una jungla
[23:06:33] <Stemby> la tabella ASCII dovrebbe essere impressa nella mente del programmatore
[23:07:09] <groll> notte
[23:07:11] <Stemby> in pratica è una tabella che fa corrispondere ad ogni numero un carattere
[23:07:13] <Stemby> notte groll
[23:07:23] <amosse> notte
[23:07:32] <amosse> ok
[23:07:47] <amosse> i numeri sono da 0 a 255?
[23:08:04] <Stemby> ad esempio, il carattere \n è il carattere numero 10 della tabella ASCII
[23:08:07] <Stemby> trovato?
[23:08:11] <Stemby> in realtà no
[23:08:22] <Stemby> la tabella ASCII è a 7 bit
[23:08:24] <Stemby> non a 8
[23:08:43] <Stemby> quindi hai giusto la metà dei caratteri a disposizione
[23:08:45] <amosse> 000 1010         012         10         0A         LF         ␊         ^J         \n         Line feed
[23:08:50] <Stemby> esattp
[23:08:55] <Stemby> 10 in decimale
[23:09:02] <Stemby> 1010 in binario
[23:09:12] <amosse> ok
[23:09:18] <-- groll (~groll@Azzurra-195E4683.48-151.net24.it) has quit (Read/Dead Error: Input/output error)
[23:09:33] <Stemby> A in esadecimale
[23:09:35] <Stemby> :)
[23:09:42] <amosse> ok
[23:09:46] <Stemby> è lo stesso numero in diverse basi
[23:10:03] <amosse> ok
[23:10:14] <Stemby> comuque, quel che conta è che il carattere numero 10 (decimale) è \n
[23:10:17] <Stemby> e così via
[23:10:24] <weirdo> basta lezioni noiose ma da oggi siamo tutti programmatori !  http://hackertyper.net/
[23:10:48] <Stemby> il carattere che significa '5' me lo trovi nella tabella ASCII?
[23:11:19] <Stemby> amosse: ↑
[23:11:31] <amosse> 53
[23:11:52] <Stemby> esatto
[23:12:05] <Stemby> quello che significa 'Y'?
[23:12:24] <amosse> 89
[23:12:47] <Stemby> esatto
[23:12:52] <Stemby> vedo che hai capito
[23:13:06] <amosse> quindi, per tornare all'esercizio
[23:13:10] <Stemby> in totale hai a disposizione 7 bit, quindi che numeri hai disponibili?
[23:13:13] <Stemby> un attimo
[23:13:37] <amosse> la metà
[23:13:40] <Stemby> ovvero?
[23:13:51] <Stemby> quanti e quali
[23:14:34] <Stemby> soluzione
[23:14:52] <Stemby> il numero più grande (in binario) con 7 bit quale sarà?
[23:15:05] <Stemby> amosse: sai cos'è un numero binario?
[23:15:08] <Stemby> (in base 2)
[23:15:15] <amosse> 99
[23:15:19] <Stemby> no
[23:15:39] <Stemby> in binario che cifre hai a disposizione?
[23:15:47] <Stemby> (binario = base 2)
[23:16:01] <amosse> eh qui casca l' asino..
[23:16:04] <amosse> la matematica
[23:16:08] <Stemby> hai solo 2 cifre
[23:16:24] <Stemby> 0 e 1
[23:16:27] <Stemby> ok?
[23:16:34] <amosse> 10
[23:16:42] <Stemby> cos'è 10?
[23:16:48] --> groll (~groll@Azzurra-195E4683.48-151.net24.it) has joined #debianizzati-corsi
[23:16:49] <Stemby> (e in che base?)
[23:17:04] <Stemby> allora
[23:17:07] <amosse> se hho a disposizione due cifre 0 e 1
[23:17:15] <Stemby> sì...?
[23:17:34] <amosse> il numero più grande sarà 11
[23:17:39] <Stemby> non direi
[23:17:51] <Stemby> in base 10 quante cifre hai disponibili?
[23:18:14] <amosse> 10 -> da 0 a 9
[23:18:25] <Stemby> e il numero più grande che puoi scrivere?
[23:18:40] <amosse> 99
[23:18:54] <Stemby> non esiste un numero più grande di 99???
[23:18:58] <Stemby> :)
[23:19:05] <Stemby> forse in seconda elementare
[23:19:13] <Stemby> ma ti assicuro che 100 esiste
[23:19:16] <Stemby> ma anche 101
[23:19:22] <Stemby> ma anche 102
[23:19:28] <Stemby> ma anche 100000000000000000
[23:19:34] <Stemby> ma anche 10000000000000000000000000000000000000000000000000000000000000000000000000000
[23:19:37] <Stemby> ecc.
[23:19:42] <Stemby> non esiste limite
[23:19:47] <Stemby> i numeri interi sono infiniti
[23:19:55] <amosse> ok
[23:19:57] <Stemby> questo in qualunque base
[23:20:15] <Stemby> però ho detto che hai a disposizione solo 7 bit
[23:20:29] <Stemby> il bit in base 2 corrisponde al carattere
[23:20:33] <Stemby> (in base 2!)
[23:20:44] <Stemby> quindi 7 bit = 7 cifre binarie
[23:20:59] <Stemby> quindi quale sarà il più grande numero in base 2 a 7 bit?
[23:21:30] <Stemby> facciamo un parallelo in base 10
[23:21:30] <amosse> 2222222
[23:21:34] <Stemby> no!
[23:21:40] <Stemby> il 2 non è una cifra disponibile
[23:21:45] <Stemby> hai solo 0 e 1
[23:21:59] <Stemby> dicevo
[23:22:05] <Stemby> è come se ti avessi chiesto:
[23:22:21] <amosse> 9999999
[23:22:21] <Stemby> in base 10, qual è il numero più grande che puoi scrivere usanto 7 caratteri?
[23:22:25] <Stemby> esatto
[23:22:42] <Stemby> invece usando 7 bit in base 2?
[23:22:57] <Stemby> *usando
[23:23:16] <Stemby> hai a disposizione solo 7 cifre
[23:23:26] <amosse> 2222222
[23:23:27] <Stemby> e le cifre possono essere solo o 0 oppure 1
[23:23:33] <Stemby> no!
[23:23:39] <Stemby> 2 non lo puoi usare!!!!
[23:23:50] <amosse> 1111111
[23:23:52] <Stemby> oh!
[23:24:05] <Stemby> in base 10 la cifra più grande è il 9
[23:24:15] <Stemby> poi si scavalla alle decinee
[23:24:22] <Stemby> o dalle decine alle centinaia
[23:24:24] <Stemby> ecc.
[23:24:27] <Stemby> ti è chiaro?
[23:24:37] <amosse> ok
[23:24:39] <Stemby> in base 2 la cifra più grande è 1
[23:24:51] <Stemby> poi, passi alle decine, centinaia, ecc.
[23:24:52] <amosse> ah ok
[23:24:56] <Stemby> proprio allo stesso modo
[23:25:11] <Stemby> 1111111 è il numero più grande a 7 bit
[23:25:18] <Stemby> che numero è?
[23:25:21] <Stemby> (in base 10)
[23:25:44] <amosse> 9999999
[23:25:47] <Stemby> come si converte da binario a decimale?
[23:25:50] <Stemby> nooooooooooooooooooooooo!
[23:25:53] <Stemby> scusa
[23:26:05] <Stemby> 0 binario = 0 decimale
[23:26:11] <Stemby> 1 binario = 1 decimale
[23:26:18] <Stemby> 10 binario = ?
[23:26:36] <Stemby> 3 decimale
[23:26:48] <Stemby> sorry
[23:26:50] <Stemby> 2 decimale
[23:26:58] <Stemby> 11 binario = 3 decimale
[23:27:08] <Stemby> 100 binario = 4 decimale
[23:27:10] <amosse> quindi:
[23:27:15] <Stemby> 101 binario = 5 decimale
[23:27:24] <Stemby> 110 binario = 6 decimale
[23:27:25] <amosse> binario -> 0, 1
[23:27:34] <Stemby> 111 binario = 7 decimale
[23:27:45] <Stemby> 1000 binario = 8 decimale
[23:27:55] <Stemby> 1001 binario = 9 decimale
[23:28:05] <Stemby> 1010 binario = 10 decimale
[23:28:09] <Stemby> ok?
[23:28:18] <Stemby> quindi?
[23:28:19] <amosse> ok
[23:28:29] <Stemby> come si trasforma un numero binario in decimale?
[23:28:55] <Stemby> ti consiglio di dare un'occhiata ai seguenti numeri binari:
[23:29:01] <Stemby> 1
[23:29:02] <Stemby> 10
[23:29:03] <Stemby> 100
[23:29:05] <Stemby> 1000
[23:29:16] <Stemby> e vedere a cosa corrispondono in decimale
[23:29:31] <amosse> dove lo trovo
[23:29:33] <Stemby> da lì dovresti essere in grado di capire qual è l'algoritmo
[23:29:39] <Stemby> te li ho scritti...
[23:29:50] <-- groll (~groll@Azzurra-195E4683.48-151.net24.it) has quit (Read/Dead Error: Input/output error)
[23:29:54] <amosse> ok
[23:30:31] <amosse> per la matematica é un problema....
[23:30:40] <amosse> *me
[23:30:48] <Stemby> è un problema da risolvere
[23:30:55] <Stemby> queste cose sono importantine
[23:31:12] <Stemby> soprattutto se ci si vuole abbassare di livello
[23:31:20] <Stemby> (in C è inimmaginabile non saperle)
[23:31:39] <amosse> ma scusa, quale mat c'é da sapere
[23:31:44] <Stemby> comuque quei numeri te li ho scritti
[23:31:59] <amosse> per la programmazione
[23:32:03] <amosse> ok
[23:32:27] <Stemby> mah, a dire il vero niente di trascendentale
[23:32:37] <amosse> tipo
[23:32:41] <Stemby> la matematica delle medie
[23:32:54] <amosse> se mi dai degli argomenti, me li guardo
[23:33:04] <Stemby> cambio di base
[23:33:19] <Stemby> poi non saprei, man mano vediamo
[23:33:32] <Stemby> comunque il cambio di base te lo sto spiegando ora
[23:33:43] <amosse> ok
[23:33:54] <Stemby> passare da binario a decimale è davvero semplice
[23:33:54] <amosse> am quei numeri che mi hai dato
[23:34:09] <amosse> tu li conosci a memoria o ci sono delle formule7
[23:34:10] <Stemby> e
[23:34:18] <Stemby> è come in base 10
[23:34:29] <Stemby> solo che hai solo 2 cifre a disposizione
[23:34:34] <Stemby> 0
[23:34:34] <Stemby> 1
[23:34:36] <Stemby> 10
[23:34:36] <Stemby> 11
[23:34:40] <Stemby> 100
[23:34:42] <Stemby> 101
[23:34:44] <Stemby> 110
[23:34:45] <Stemby> 111
[23:34:49] <Stemby> 1000
[23:34:50] <amosse> scusa
[23:34:51] <Stemby> 1001
[23:34:57] <amosse> ripeto
[23:35:01] <Stemby> sto contando in base 2
[23:35:16] <amosse> ok
[23:35:19] <Stemby> 0
[23:35:22] <Stemby> niente
[23:35:29] <Stemby> 1: unità piene
[23:35:39] <Stemby> 10: decine piene, unità vuote
[23:35:47] <Stemby> 11: decine e unità piene
[23:36:01] <Stemby> quindi se aumenti di uno, devi passare alla centinaia
[23:36:04] <Stemby> 100
[23:36:11] <Stemby> + 1?
[23:36:13] <Stemby> 101
[23:36:18] <Stemby> + 1?
[23:36:20] <Stemby> 110
[23:36:27] <Stemby> +1?
[23:36:30] <Stemby> fammelo tu
[23:36:34] <amosse> 111
[23:36:37] <Stemby> oh
[23:36:42] <Stemby> vedi che hai capito
[23:36:46] <Stemby> +1?
[23:36:56] <Stemby> passi alle migliaia
[23:36:57] <amosse> 1000
[23:36:59] <Stemby> esatto
[23:37:02] <Stemby> chiaro?
[23:37:06] <amosse> ok
[23:37:08] <weirdo> tranquillo, lo scorderai tanto in fretta quanto lo hai imparato
[23:37:22] <Stemby> adesso guarda a cosa corrispondono quei numeri in base 10
[23:37:26] <Stemby> in particolare:
[23:37:27] <Stemby> 1
[23:37:28] <Stemby> 10
[23:37:29] <Stemby> 100
[23:37:30] <Stemby> 1000
[23:37:41] <Stemby> 1 → 1
[23:37:45] <Stemby> 10 → 2
[23:37:49] <Stemby> 100 → 4
[23:37:55] <Stemby> 1000 →
[23:37:57] <Stemby> ?
[23:38:37] <amosse> 11 -> 3
[23:38:46] <Stemby> sì
[23:38:51] <Stemby> 1000 →
[23:38:53] <amosse> ok
[23:38:56] <Stemby> ?
[23:39:21] <amosse> 16
[23:39:26] <Stemby> no
[23:39:30] <Stemby> 8
[23:39:39] <amosse> ok *2
[23:39:43] <Stemby> esatto
[23:40:17] <amosse> quindi
[23:40:27] <Stemby> in pratica la formula per passare da binario a decimale è questa
[23:40:36] <Stemby> 100101010101111001
[23:40:43] <Stemby> non so che numero sia
[23:40:47] <Stemby> comunque si fa così
[23:40:51] <Stemby> si parte da destra
[23:41:01] <Stemby> prima cifra: 1
[23:41:29] <Stemby> la base è 2, quindi 2^0 = 1
[23:41:46] <Stemby> la seconda cifra è 0 → 0
[23:41:52] <Stemby> la terza è 0 → 0
[23:42:01] <Stemby> la quarta è 1
[23:42:24] <Stemby> quindi, 2^3 → 8
[23:42:33] <Stemby> la quinta è 1
[23:42:38] <Stemby> quindi:
[23:42:47] <Stemby> 2^4 → 16
[23:43:01] <Stemby> la sesta è 1
[23:43:16] <Stemby> 2^5 → 32
[23:43:20] <Stemby> eccetera
[23:43:27] <Stemby> poi fai la somma di tutti
[23:43:41] <amosse> scusa, cosa vuol il segno che usi
[23:43:48] <Stemby> 1+0+0+8+16+32+ ....
[23:43:55] <Stemby> elevamento a potenza
[23:44:08] <amosse> ok
[23:44:17] <Stemby> alla 0, alla prima, alla seconda, alla terza, ecc.
[23:44:26] <Stemby> qualsiasi numero elevato alla 0 dà 1
[23:44:34] <Stemby> qualsiasi numero elevato alla 1 dà se stesso
[23:44:35] <amosse> ok
[23:44:49] <Stemby> questo vale per tutte le basi
[23:44:55] <Stemby> (per passare a decimale)
[23:45:19] <Stemby> in base 2 eviti di moltiplicare la cifra per la base elevata alla posizione-1
[23:45:28] <Stemby> perché moltiplicare per 1 è inutile
[23:45:45] <Stemby> quindi ti basta fare l'elevamento a potenza
[23:45:50] <Stemby> per ogni cifra
[23:45:53] <Stemby> ok?
[23:46:00] <amosse> ok
[23:46:02] <Stemby> torniamo al discorso di prima
[23:46:05] <Stemby> 1111111
[23:46:11] <Stemby> trasformamelo in base 10
[23:46:32] <Stemby> partendo da destra:
[23:46:42] <Stemby> 2^0 +
[23:46:50] <Stemby> 2^1 +
[23:46:52] <Stemby> 2^2 +
[23:46:56] <Stemby> 2^3 +
[23:46:58] <Stemby> 2^4 +
[23:47:00] <Stemby> 2^5 +
[23:47:05] <Stemby> 2^6
[23:47:09] <Stemby> ------
[23:47:11] <Stemby> totale?
[23:47:57] <Stemby> 1 + 2 + 4 + 8 + 16 + 32 + 64
[23:48:01] <Stemby> quanto fa?
[23:48:29] <amosse> 127
[23:48:32] <Stemby> ok
[23:48:47] <Stemby> quello è il numero più grande disponibile nella tabella ASCII
[23:48:56] <Stemby> in totale quanti numeri hai a disposizione?
[23:49:22] <amosse> 128
[23:49:25] <Stemby> esatto!
[23:49:33] <Stemby> perché devi aggiungere lo 0
[23:49:37] <Stemby> 0 -- 127
[23:49:45] <Stemby> ottimo
[23:49:59] <amosse> da 0 a 255 / 2
[23:50:10] <Stemby> esatto
[23:50:20] <Stemby> 255 in binario come sarà?
[23:51:03] <amosse> ?
[23:51:17] <Stemby> 255 (base 10) → ? (base 2)
[23:51:34] <Stemby> trasforma 255 in base 2
[23:51:37] <Stemby> :)
[23:51:43] <Stemby> non serve fare conti
[23:51:50] <Stemby> è evidente
[23:52:16] <Stemby> 1111111 → 127
[23:52:26] <Stemby> 255 → ?
[23:53:06] <Stemby> amosse, dai
[23:53:13] <Stemby> non servono conti
[23:53:34] <amosse> 1 per 14 volte
[23:53:39] <Stemby> (è più facile passare da binario a decimale che il contrario)
[23:53:42] <Stemby> no!
[23:53:44] <Stemby> 8
[23:53:47] <Stemby> 8 bit
[23:53:51] <Stemby> 11111111
[23:54:07] <Stemby> infatti
[23:54:21] <Stemby> 127 + 2^7 cosa fa?
[23:54:33] <Stemby> 2^7 → ?
[23:54:52] <Stemby> due alla settima quanto fa?
[23:55:01] <amosse> 128
[23:55:03] <Stemby> esatto
[23:55:12] <Stemby> quella è la cifra che abbiamo aggiunto a sinistra
[23:55:16] <Stemby> (l'ottavo bit)
[23:55:26] <Stemby> gli altri 7 bit sono quelli di prima
[23:55:31] <Stemby> 128 + 127 = ?
[23:55:53] <amosse> 255
[23:55:56] <Stemby> et voilà
[23:56:03] <Stemby> 1111111 → 255
[23:56:14] <Stemby> per un totale di 256 numeri a disposizione
[23:56:19] <Stemby> ok?
[23:56:26] <amosse> si
[23:56:31] <Stemby> sorry
[23:56:36] <Stemby> ho dimenticato un bit
[23:56:42] <Stemby> 11111111 → 255
[23:56:47] <Stemby> ora è giusto
[23:56:51] <Stemby> 8 bit
[23:57:05] <Stemby> tornando alla tabella ASCII
[23:57:12] <Stemby> ha solo 7 bit
[23:57:17] <Stemby> quindi solo 128 numeri
[23:57:26] <Stemby> pochini...
[23:57:43] <Stemby> infatti in pratica permette di contenere solo i caratteri della tastiera americana
[23:57:48] <Stemby> niente accentate
[23:57:59] <Stemby> niente caratteri strani vari
[23:58:01] <Stemby> ok?
[23:58:04] <amosse> ok
[23:58:16] <Stemby> la tabella ASCII è tuttora valida
[23:58:19] <Stemby> ma limitatissima
[23:58:32] <Stemby> (pensa ai caratteri cinesi, tanto per dire)
[23:58:45] <Stemby> sono nate quindi delle estensioni
[23:58:53] <Stemby> a 8 bit
[23:59:15] <Stemby> passare da 7 bit a 8 bit significa raddoppiare i numeri disponibili
[23:59:25] <Stemby> (e dunque i caratteri utilizzabili)
[23:59:31] <amosse> ok
[23:59:45] <Stemby> problema: ASCII è uno standard riconosciuto universalmente
[23:59:53] <Stemby> le varie estensioni a 8 bit molto meno
[23:59:58] <Stemby> ce ne sono numerose
[00:00:00] - {Day changed to gio mag 5 00:00:00 2011}
[00:00:03] <Stemby> nessuna ha il predominio
[00:00:14] <Stemby> da qui nascono i problemi di encoding
[00:00:48] <Stemby> il carattere numero 210 di una certa tabella sarà probabilmente diverso dal 210 di un'altra
[00:00:50] <Stemby> chiaro?
[00:01:08] <amosse> ok
[00:01:13] <Stemby> i primi 128 (da 0 a 127) sono uguali per tutte le tabelle
[00:01:28] <Stemby> da 128 in poi è un caos
[00:01:35] <Stemby> tu scrivi è
[00:01:39] <Stemby> "è"
[00:01:44] <amosse> ok
[00:01:48] <Stemby> una tabella capisce "è"
[00:01:54] <Stemby> un'altra capisce un'altra roba
[00:02:15] <Stemby> UTF-8 è un'ulteriore evoluzione
[00:02:35] <amosse> ok
[00:02:50] <Stemby> http://it.wikipedia.org/wiki/UTF-8
[00:03:02] <Stemby> è uno standard che fa parte di unicode
[00:03:16] <amosse> ok
[00:03:21] <Stemby> è il tentativo più riuscito per cercare di tornare ad avere un'unica tabellona universale
[00:03:29] <Stemby> che contenga tutti i caratteri del mondo
[00:03:50] <Stemby> (e anche molti simboli di fantasia, caratteri di lingue inventate, ecc.)
[00:04:07] <Stemby> 1 byte = 8 bit
[00:04:25] <Stemby> unicode usa da 1 a 4 byte
[00:04:33] <Stemby> (per ogni carattere)
[00:04:37] <Stemby> scusa
[00:04:40] <Stemby> non unicode
[00:04:43] <Stemby> UTF-8
[00:04:47] <Stemby> ok?
[00:04:51] <amosse> ok
[00:05:11] <Stemby> ovviamente tutti i caratteri più importanti saranno nel primo byte
[00:05:12] <amosse> quindi fino a 32 bit
[00:05:17] <Stemby> in pratica sì
[00:05:27] <Stemby> che è un numero impressionante
[00:06:04] <amosse> ma scusa, questo cosa centra con i processori a 32 - 64?
[00:06:14] <amosse> niente
[00:06:53] <Stemby> >>> 2**32
[00:06:53] <Stemby> 4294967296
[00:07:03] <Stemby> hai tutti quei numeri a disposizione
[00:07:19] <Stemby> 4 miliardi e rotti
[00:07:21] <Stemby> :)
[00:07:29] <Stemby> ben altra rova rispetto a 128
[00:07:35] <Stemby> *roba
[00:07:41] <Stemby> dicevo
[00:08:19] <Stemby> le lettere accentate, caratteri tipo →øç eccetera saranno nel primo byte
[00:08:39] <Stemby> per questo non è ancora del tutto sbagliato dire che 1 byte = 1 carattere
[00:08:53] <Stemby> (in ASCII e in ASCII esteso è verissimo, invece)
[00:09:18] <Stemby> però se scrivi in cinese, senz'altro ogni carattere occuperà più di un byte
[00:09:22] <Stemby> non so dirti quanto
[00:09:26] <Stemby> *quanti
[00:09:36] <Stemby> ma sucuramente almeno 2 byte
[00:09:40] <Stemby> *sicuramente
[00:09:46] <Stemby> ok?
[00:09:52] <amosse> ok
[00:10:11] <Stemby> windows di default non usa ancora UTF-8, a quanto ne so
[00:10:41] <amosse> debian?
[00:10:42] <Stemby> (ma non ne sono certo, mi son perso gli ultimi 10 anni di sviluppi)
[00:10:51] <Stemby> debian assolutamente sì
[00:11:17] <amosse> ok
[00:11:27] <Stemby> $ locale
[00:11:27] <Stemby> LANG=it_IT.UTF-8
[00:11:27] <Stemby> LC_CTYPE="it_IT.UTF-8"
[00:11:27] <Stemby> LC_NUMERIC="it_IT.UTF-8"
[00:11:27] <Stemby> LC_TIME="it_IT.UTF-8"
[00:11:27] <Stemby> LC_COLLATE="it_IT.UTF-8"
[00:11:27] <Stemby> LC_MONETARY="it_IT.UTF-8"
[00:11:27] <Stemby> LC_MESSAGES="it_IT.UTF-8"
[00:11:27] <Stemby> LC_PAPER="it_IT.UTF-8"
[00:11:27] <Stemby> LC_NAME="it_IT.UTF-8"
[00:11:27] <Stemby> LC_ADDRESS="it_IT.UTF-8"
[00:11:27] <Stemby> LC_TELEPHONE="it_IT.UTF-8"
[00:11:27] <Stemby> LC_MEASUREMENT="it_IT.UTF-8"
[00:11:27] <Stemby> LC_IDENTIFICATION="it_IT.UTF-8"
[00:11:27] <Stemby> LC_ALL=
[00:11:34] <Stemby> controlla :)
[00:12:12] <Stemby> hai a disposizione una copia di win?
[00:12:28] <amosse> si
[00:12:48] <Stemby> ok
[00:12:54] <Stemby> allora l'esercizio è questo
[00:13:00] <Stemby> scrivi un file di testo in win
[00:13:16] <Stemby> son quasi certo che sarà codificato con una codifica diversa da UTF-8
[00:13:28] <Stemby> file di testo puro, eh, mi raccomando!
[00:13:41] <amosse> notepad
[00:13:44] <Stemby> quindi niente word
[00:13:46] <Stemby> esatto!
[00:13:51] <amosse> ok
[00:13:54] <Stemby> niente OOo, ecc.
[00:14:17] <Stemby> devi usare dei caratteri FUORI dalla tabella ASCII
[00:14:24] <Stemby> altrimenti non serve a niente
[00:14:39] <Stemby> come ti dicevo, per tutte le codifiche i primi 128 caratteri sono uguali
[00:14:47] <amosse> ok
[00:14:52] <Stemby> lettere accentate
[00:14:56] <Stemby> €
[00:15:01] <Stemby> ç
[00:15:05] <Stemby> ecc.
[00:15:17] <amosse> ok
[00:15:19] <Stemby> ovviamente puoi mischiali a caratter ASCII
[00:15:31] <Stemby> l'importante è che non ci siano solo caratteri ASCII
[00:15:39] <amosse> ok
[00:15:52] <Stemby> poi scrivi uno script
[00:16:30] <Stemby> che apra il file, cambi la codifica a UTF-8, e salvi un nuovo file secondo la nuova codifica
[00:16:38] <Stemby> ok?
[00:16:45] <Stemby> cosa ti serve?
[00:16:45] <amosse> ok
[00:16:52] <Stemby> 1) conoscere la codifica usata da win
[00:17:00] <Stemby> (Google è amico)
[00:17:29] <Stemby> 2) direi quasi senz'altro il parametro encoding della funzione open()
[00:17:45] <Stemby> http://docs.python.org/release/3.1.3/library/functions.html#open
[00:18:04] <Stemby> 3) quello che abbiamo appreso la volta scorsa e all'inizio di questa lezione
[00:18:31] <Stemby> ovvero: i metodi degli oggetti di tipo file
[00:18:35] <Stemby> nient'altro
[00:18:52] <Stemby> ok?
[00:19:01] <amosse> ci provo, anche se non é proprio banale
[00:19:10] <Stemby> no è così difficile, secondo me
[00:19:16] <Stemby> *non
[00:19:28] <amosse> provo
[00:19:28] <Stemby> mi aspetto una decina di righe o poco più
[00:19:53] <Stemby> poi il parametro encoding probabilmente non ti servirà mai più
[00:19:53] <amosse> ok
[00:20:08] <amosse> ok
[00:20:12] <Stemby> ma per lo meno avrai capito a fondo cos'è la codifica di un file
[00:20:14] <Stemby> :9
[00:20:20] <Stemby> notte