1 00:00:00,000 --> 00:00:02,620 [Powered by Google Translate] [Settimana 7, continua] 2 00:00:02,620 --> 00:00:05,090 [David J. Malan, Harvard University] 3 00:00:05,090 --> 00:00:07,780 [Questo è CS50.] [CS50.TV] 4 00:00:07,780 --> 00:00:09,810 Bene. Welcome Back. Questo è CS50, 5 00:00:09,810 --> 00:00:12,100 e questa è la fine della settimana 7. 6 00:00:12,100 --> 00:00:15,460 Quindi, una di queste piccole cose stupide che va su Internet 7 00:00:15,460 --> 00:00:24,080 e noi slurped, e ora dovrebbe fare un po 'di senso geeky per voi. 8 00:00:24,080 --> 00:00:28,330 Beh, è ​​stato più divertente di questo ragazzo di quanto non fosse a voi ragazzi. 9 00:00:28,330 --> 00:00:32,619 Parlando di, beh, ragazzi, 10 00:00:32,619 --> 00:00:42,550 oggi è il compleanno di Nate. 11 00:00:42,550 --> 00:00:46,630 Per darvi un'idea di quanto bene Nate e io siamo 12 00:00:46,630 --> 00:00:50,140 allo sviluppo web in base alla classe Lunedi e basato ora su questo, 13 00:00:50,140 --> 00:00:53,170 Ho pensato di tirare su home page di Nate, se non lo avete ancora visto. 14 00:00:53,170 --> 00:00:57,020 Questo qui ia Nate HTML. 15 00:00:57,020 --> 00:00:59,380 Quindi, vedere il suo codice sorgente, se vuoi vedere come fare questo, e Nate, 16 00:00:59,380 --> 00:01:02,250 se potessimo imbarazzo brevemente, il personale hai un po 'di qualcosa 17 00:01:02,250 --> 00:01:06,080 se volete condividere un po 'di dessert con alcuni dei ragazzi della classe qui. 18 00:01:06,080 --> 00:01:10,150 Se vuoi venire in giù. 19 00:01:10,150 --> 00:01:14,350 Voi tutti applaudono e sono molto bello, ma nessuno si è seduto da nessuna parte vicino a Nate, 20 00:01:14,350 --> 00:01:17,560 per qualche ragione, in quella zona posteriore. 21 00:01:17,560 --> 00:01:24,020 Così forse si possono trovare alcune persone di godere di questi con. 22 00:01:24,020 --> 00:01:33,380 Buon compleanno, Nate. 23 00:01:33,380 --> 00:01:37,660 >> Saluti supplementari: Abbiamo mostrato un paio di clip dai nostri studenti CS50x. 24 00:01:37,660 --> 00:01:39,710 Se volete vedere chi altro è in tutto il mondo 25 00:01:39,710 --> 00:01:41,850 che sta seguendo lungo, è possibile testa a questo URL, 26 00:01:41,850 --> 00:01:45,780 dove Giuseppe, uno dei nostri TF, ha messo insieme una sorta di montaggio 27 00:01:45,780 --> 00:01:50,290 di tutti coloro che sono stati la presentazione questi video, tra cui Rick Astley. 28 00:01:50,290 --> 00:01:53,010 E se si scorre attraverso questi, è davvero molto stimolante 29 00:01:53,010 --> 00:01:56,890 per vedere la diversità dei paesi e città di cui le persone stanno salutando. 30 00:01:56,890 --> 00:02:00,830 Quindi, se volete dare un'occhiata a questo, che sarà fino fino alla fine del semestre. 31 00:02:00,830 --> 00:02:05,370 Oggi continuiamo il nostro sguardo al Web, programmazione web, HTML e simili, 32 00:02:05,370 --> 00:02:08,280 e abbiamo anche il pranzo in arrivo questo Venerdì 33 00:02:08,280 --> 00:02:11,360 se si desidera, e, in particolare, non lo hanno fatto prima. 34 00:02:11,360 --> 00:02:13,630 Il tema di Venerdì sarà il compleanno di Nate, 35 00:02:13,630 --> 00:02:15,700 quindi se si desidera avere pranzo di compleanno con Nate 36 00:02:15,700 --> 00:02:17,500 ed altri, alcuni dei nostri amici da industria, 37 00:02:17,500 --> 00:02:19,300 si prega di testa a tale URL lì. 38 00:02:19,300 --> 00:02:22,510 Spazio, come sempre, è limitata. Inoltre, se hai dimenticato, 39 00:02:22,510 --> 00:02:26,460 rendersi conto che la prossima settimana è il termine ultimo per il problema impostato 4 di caccia al tesoro, 40 00:02:26,460 --> 00:02:30,070 per cui dopo aver recuperato tutti quei file JPEG da card.raw, 41 00:02:30,070 --> 00:02:32,880 tu ei tuoi compagni di sezione, se si desidera, può provare a fotografare 42 00:02:32,880 --> 00:02:36,100 il maggior numero di scienziati informatici di che scheda di memoria il più possibile, 43 00:02:36,100 --> 00:02:39,070 e voi e la vostra sezione poi vincere un premio favoloso. 44 00:02:39,070 --> 00:02:44,470 Fare riferimento alla pset 4 del disciplinare di cosa presentare e da quando. 45 00:02:44,470 --> 00:02:47,650 Inoltre, se si desidera avere la vostra opera immortalato 46 00:02:47,650 --> 00:02:51,400 sul sito web del corso e la sua storia di abbigliamento, 47 00:02:51,400 --> 00:02:54,010 sapere che hai il benvenuto ora per iniziare a presentare progetti 48 00:02:54,010 --> 00:02:57,180 per quest'anno T-shirt e felpe e simili. 49 00:02:57,180 --> 00:02:59,200 Faremo del nostro meglio per includere il maggior numero possibile, 50 00:02:59,200 --> 00:03:01,440 ma avremo alcuni membri del personale della revisione di tutti i progetti 51 00:03:01,440 --> 00:03:04,180 per assicurarsi che siano in linea con le specifiche, 52 00:03:04,180 --> 00:03:07,500 e poi scegliere in genere una manciata di loro di essere esposti. 53 00:03:07,500 --> 00:03:10,620 Quindi, se siete il tipo di costruzione, è sufficiente sapere che i requisiti 54 00:03:10,620 --> 00:03:14,030 per la grafica sono PNG, almeno 200 DPI, 55 00:03:14,030 --> 00:03:16,520 non dovrebbe essere più di 4000 x 4000 pixel, 56 00:03:16,520 --> 00:03:19,010 e non più di 10 MB, ma siete invitati a utilizzare le cose come 57 00:03:19,010 --> 00:03:22,430 Photoshop o GIMP o vari programmi di grafica, 58 00:03:22,430 --> 00:03:24,590 ciò che avete a vostra disposizione. 59 00:03:24,590 --> 00:03:28,280 >> Anche all'orizzonte è il progetto finale. Il progetto finale è davvero il culmine di 50, 60 00:03:28,280 --> 00:03:30,560 in cui tutte le assegnazioni in corso, 61 00:03:30,560 --> 00:03:33,170 è la vostra occasione davvero di fare le proprie cose. 62 00:03:33,170 --> 00:03:35,280 E che può essere semplicemente quello di fare qualcosa per divertimento, 63 00:03:35,280 --> 00:03:38,160 può essere quello di risolvere un problema pressante tuo gruppo di studenti ha, 64 00:03:38,160 --> 00:03:40,980 per qualche nuovo sito web, un meccanismo nuova collezione per i dati. 65 00:03:40,980 --> 00:03:43,420 Può essere una applicazione mobile per Android, per iOS. 66 00:03:43,420 --> 00:03:46,030 In realtà, il cielo è il limite, e nel corso delle prossime settimane, 67 00:03:46,030 --> 00:03:50,900 come transizione da C a questi linguaggi di alto livello come PHP e JavaScript, 68 00:03:50,900 --> 00:03:55,150 vi troverete sempre più familiarità con alcuni reali tecniche, 69 00:03:55,150 --> 00:03:57,800 alcuni strumenti del mondo reale, e ad integrarla, 70 00:03:57,800 --> 00:04:00,170 sapere che il corso ha una storia di seminari, 71 00:04:00,170 --> 00:04:02,880 in base al quale nelle prossime settimane diverse, una parte del personale docente 72 00:04:02,880 --> 00:04:06,160 e nostri amici da campus offrirà seminari facoltativi 73 00:04:06,160 --> 00:04:08,540 che vanno al di là di ciò che è in genere fatto in sezione 74 00:04:08,540 --> 00:04:11,090 per farvi conoscere le cose come programmazione Android, 75 00:04:11,090 --> 00:04:13,450 per farvi conoscere le cose come iOS di programmazione 76 00:04:13,450 --> 00:04:15,950 o più avanzate tecniche di sviluppo web. 77 00:04:15,950 --> 00:04:17,970 C'è tutta una storia di questi già online. 78 00:04:17,970 --> 00:04:25,000 Se andate a cs50.net/seminars, abbiamo fatto questo per diversi anni, 79 00:04:25,000 --> 00:04:28,740 e vedrete che ha archiviato qui con i PDF e video e simili 80 00:04:28,740 --> 00:04:33,090 sono i video diverse decine di seminari. 81 00:04:33,090 --> 00:04:37,380 L'anno scorso, per esempio, abbiamo avuto un seminario sul acing vostri colloqui tecnici, 82 00:04:37,380 --> 00:04:40,980 se si sta effettivamente cercando di andare fuori e fare uno stage o tempo pieno concerto. 83 00:04:40,980 --> 00:04:43,450 Windows Mobile sviluppo, sviluppo Android, Google Maps, 84 00:04:43,450 --> 00:04:47,700 API, CSS, lo sviluppo per il BlackBerry, Emacs. 85 00:04:47,700 --> 00:04:52,610 Davvero, siete invitati a dare un'occhiata a uno qualsiasi di questi seminari a vostro piacimento. 86 00:04:52,610 --> 00:04:57,080 E saremo in possesso di nuovi in ​​questo semestre, pure. 87 00:04:57,080 --> 00:04:59,020 >> Così che cosa è avanti con il progetto finale? 88 00:04:59,020 --> 00:05:01,090 Beh, in primo luogo, anche se questa data è un po 'imminente, 89 00:05:01,090 --> 00:05:06,460 questo è davvero solo l'occasione per iniziare a pensare il progetto finale molto realistico. 90 00:05:06,460 --> 00:05:10,550 Sappiamo solo l'inizio di qualcosa di quello che ci sarà ancora da coprire nel corso, 91 00:05:10,550 --> 00:05:13,470 HTML, PHP e simili, ma siete tutti familiarità con il Web, 92 00:05:13,470 --> 00:05:16,270 e pregiudizi questa conversazione verso il Web solo perché 93 00:05:16,270 --> 00:05:18,380 maggior parte delle persone finisce per fare progetti finali basate sul Web, 94 00:05:18,380 --> 00:05:20,260 ma che non è affatto necessario. 95 00:05:20,260 --> 00:05:22,260 Utilizzo di C va bene, obiettivo C, Java, 96 00:05:22,260 --> 00:05:25,350 qualsiasi altra lingua si potrebbe sapere o voler sapere è abbastanza bene. 97 00:05:25,350 --> 00:05:29,370 Ma per ottenere i succhi di frutta che scorre inizialmente, ci aspettiamo che la presentazione di una proposta preliminare 98 00:05:29,370 --> 00:05:33,520 che, per il PDF sul sito, che è ora a cs50.net, 99 00:05:33,520 --> 00:05:36,080 e in alto a sinistra vedrete progetto finale 100 00:05:36,080 --> 00:05:38,920 è la specifica per il progetto definitivo, 101 00:05:38,920 --> 00:05:41,470 e ci sono dettagli sulla proposta preliminare e simili. 102 00:05:41,470 --> 00:05:44,760 Si riduce praticamente giù a una e-mail al tuo compagno di insegnamento 103 00:05:44,760 --> 00:05:48,450 solo per intavolare una conversazione con lui o lei a quello che stai pensando. 104 00:05:48,450 --> 00:05:52,510 Su projects.cs50.net è un deposito di idee da persone del campus 105 00:05:52,510 --> 00:05:54,480 se stai lottando per venire con qualche idea, 106 00:05:54,480 --> 00:06:01,140 e manual.cs50.net/APIs è un repository di link alle API. 107 00:06:01,140 --> 00:06:06,710 >> Che, però, è un API? 108 00:06:06,710 --> 00:06:09,790 Che cos'è un API? L'ho già detto almeno due volte, 109 00:06:09,790 --> 00:06:12,640 secondo le trascrizioni delle ultime settimane. 110 00:06:12,640 --> 00:06:17,050 Che cos'è? [Studente, incomprensibile] 111 00:06:17,050 --> 00:06:19,340 >> Ok, bene. Quindi qualcosa di interfaccia di programmazione. 112 00:06:19,340 --> 00:06:22,710 Application Programming Interface, e questo può assumere diverse forme, 113 00:06:22,710 --> 00:06:25,850 ma ciò che questa realtà si riduce a è il codice 114 00:06:25,850 --> 00:06:29,660 che qualcun altro hs scritto o dati che qualcun altro ha raccolto 115 00:06:29,660 --> 00:06:33,670 che viene messo a disposizione in qualche modo programmatico. 116 00:06:33,670 --> 00:06:36,630 È possibile scrivere codice in C, PHP, Python, Ruby, 117 00:06:36,630 --> 00:06:38,760 qualunque sia la vostra lingua scelta è tipicamente, 118 00:06:38,760 --> 00:06:42,240 e in qualche modo si può costruire su qualcun altro la funzionalità 119 00:06:42,240 --> 00:06:44,440 o qualcun altro set di dati. 120 00:06:44,440 --> 00:06:47,210 Per esempio, se vado a questo link qui, 121 00:06:47,210 --> 00:06:50,750 e vedrete un paio di link nella pagina successiva 122 00:06:50,750 --> 00:06:56,093 per cui abbiamo API proprio CS50, che sono molto Harvard-centrica, e quindi le API di terze parti. 123 00:06:56,930 --> 00:06:59,300 Tra le API di terze parti sono cose veramente utili 124 00:06:59,300 --> 00:07:01,780 come essere in grado di inviare SMS il popolo a, 125 00:07:01,780 --> 00:07:04,690 essere in grado di ricevere messaggi di testo SMS da persone. 126 00:07:04,690 --> 00:07:08,160 E cose del genere che si possa avere la minima idea di come implementare voi stessi, 127 00:07:08,160 --> 00:07:10,440 ma grazie a servizi, alcuni, libera e un po 'di commerciale 128 00:07:10,440 --> 00:07:14,000 si può costruire in cima a quelli e fare qualcosa di vostro interesse. 129 00:07:14,000 --> 00:07:16,990 Tra le API CS50 sono questi campus-centric cose come 130 00:07:16,990 --> 00:07:21,480 Corsi di Harvard, energia, eventi, cibo, mappe, notizie, tweet e Shuttleboy proprio, 131 00:07:21,480 --> 00:07:23,940 e questi sono API che guardare un po 'di qualcosa come questo. 132 00:07:23,940 --> 00:07:26,990 >> Vorrei tirare su l'API HarvardFood. 133 00:07:26,990 --> 00:07:30,620 Se siete mai stati al sito HUD, probabilmente siete stati lì 134 00:07:30,620 --> 00:07:35,410 per vedere che cosa c'è per cena o per vedere quali sono le ore per un po 'd-hall. 135 00:07:35,410 --> 00:07:38,000 Beh, non è particolarmente facile da navigare, 136 00:07:38,000 --> 00:07:41,100 e così quello che abbiamo fatto qualche tempo fa è stato scritto che il software, 137 00:07:41,100 --> 00:07:47,270 capita di essere in PHP, che in realtà schermo raschia la totalità del sito HUD. 138 00:07:47,270 --> 00:07:51,400 Per lo screening raschiare qualcosa significa scrivere un programma in un linguaggio come PHP 139 00:07:51,400 --> 00:07:55,270 che finge di essere un browser, anche se potrebbe funzionare a un prompt dei comandi, 140 00:07:55,270 --> 00:07:58,180 che finge di essere un browser, si collega a un sito Web, 141 00:07:58,180 --> 00:08:01,480 scarica il suo codice HTML, la lingua in cui è scritto, 142 00:08:01,480 --> 00:08:04,300 e poi legge, o più precisamente, lo analizza 143 00:08:04,300 --> 00:08:06,140 verso il basso, da sinistra a destra. 144 00:08:06,140 --> 00:08:08,870 E quello che abbiamo fatto è stato che abbiamo scritto il nostro codice in modo tale che 145 00:08:08,870 --> 00:08:12,910 ogni volta abbiamo visto qualcosa in quel HTML che sembrava qualcosa sul menu, 146 00:08:12,910 --> 00:08:16,470 come hamburger, ci sarebbe quindi importare che nel nostro database. 147 00:08:16,470 --> 00:08:20,410 E ogni volta che abbiamo visto il contenuto nutrizionale, ci importa che nel nostro database. 148 00:08:20,410 --> 00:08:23,090 E quello che abbiamo fatto è stato sfruttare il fatto che il sito web HUD, 149 00:08:23,090 --> 00:08:27,280 anche se potrebbe essere un po 'una sfida per noi esseri umani per navigare 150 00:08:27,280 --> 00:08:32,559 sotto la cappa, tutto il codice HTML viene generato dai rispettivi programmi informatici. 151 00:08:32,559 --> 00:08:35,159 Quindi tutti i loro HTML, anche se potrebbe sembrare disordinato, 152 00:08:35,159 --> 00:08:38,026 come la maggior parte dei siti sotto il cofano che segue un modello. 153 00:08:38,260 --> 00:08:40,799 Quindi abbiamo appena trascorso un paio d'ore per capire che modello 154 00:08:40,799 --> 00:08:44,240 in modo che alla fine, buttiamo via tutto il codice HTML disordinato, 155 00:08:44,240 --> 00:08:47,340 tutte l'estetica del rivestimento in grassetto e corsivo e simili, 156 00:08:47,340 --> 00:08:52,350 e cosa siamo poi in grado di fare è esporre gli stessi dati. 157 00:08:52,350 --> 00:08:54,870 Ad esempio, in questo modo. 158 00:08:54,870 --> 00:08:56,840 Così abbiamo, secondo la documentazione qui, 159 00:08:56,840 --> 00:08:59,190 hanno informato il mondo che, se si richiede un URL 160 00:08:59,190 --> 00:09:03,310 che appare così, food.cs50.net / qualcosa, 161 00:09:03,310 --> 00:09:07,220 e di fornire alcuni parametri, che ci parla di oggi, 162 00:09:07,220 --> 00:09:11,780 come data finale di tempo, data di inizio tempo, pasto e così via, 163 00:09:11,780 --> 00:09:14,090 ciò che i nostri server tornerà a voi, per esempio, 164 00:09:14,090 --> 00:09:18,740 è un file CSV, comma separted valori come un file di Excel, 165 00:09:18,740 --> 00:09:23,140 contenente tutto il necessario per la prima colazione in questa data particolare nel marzo dello scorso anno 166 00:09:23,140 --> 00:09:25,450 quando mi è capitato di scrivere questa documentazione. 167 00:09:25,450 --> 00:09:27,870 >> Per chi ha familiarità, CSV non è l'unico formato di file. 168 00:09:27,870 --> 00:09:30,610 C'è un altro formato che è ancora più versatile 169 00:09:30,610 --> 00:09:32,670 chiamato JSON, JavaScript Object Notation. 170 00:09:32,670 --> 00:09:34,770 I dati possono tornare in quel formato. 171 00:09:34,770 --> 00:09:38,110 Quindi l'asporto è che se ci si immerge in questa API 172 00:09:38,110 --> 00:09:41,170 o qualsiasi altro CS50 o qualcosa là fuori su Internet, 173 00:09:41,170 --> 00:09:45,560 o non a tutti, si rende conto che il mondo è sempre più avviato a standardizzare 174 00:09:45,560 --> 00:09:47,670 come le macchine di comunicare tra loro. 175 00:09:47,670 --> 00:09:50,660 Usiamo formati di dati standard come CSV o JSON. 176 00:09:50,660 --> 00:09:54,320 E che cosa significa questo per voi è che si può scrivere la parte interessante di un programma 177 00:09:54,320 --> 00:09:56,580 che consente l'utente cercare un sala da pranzo menu, 178 00:09:56,580 --> 00:10:00,010 che permette loro di creare liste di preferiti che permette loro di ricevere avvisi di testo 179 00:10:00,010 --> 00:10:02,480 quando il loro piatto preferito sta per essere servito in qualche d-hall 180 00:10:02,480 --> 00:10:07,090 utilizzando qualcun altro set di dati e la costruzione in cima alla loro API. 181 00:10:07,090 --> 00:10:13,600 Quindi, più su che in forma di seminari e la documentazione che avete qui online. 182 00:10:13,600 --> 00:10:16,450 Così quelli, poi, sono le API. 183 00:10:16,450 --> 00:10:18,900 >> Questo ci riporta a HTML. Riassunto veloce. 184 00:10:18,900 --> 00:10:22,920 Cosa è l'HTML? 185 00:10:22,920 --> 00:10:25,000 [Studente, incomprensibile] Buono >>. HyperText Markup Language. 186 00:10:25,000 --> 00:10:31,300 Qualcun altro, ciò che è Hypertext Markup Language? 187 00:10:31,300 --> 00:10:37,340 HyperText Markup Language. 188 00:10:37,340 --> 00:10:40,330 Va bene. Così HTML, HyperText. 189 00:10:40,330 --> 00:10:43,100 HyperText riferisce solo al Web, per la maggior parte. 190 00:10:43,100 --> 00:10:45,730 Markup significa che non è in realtà un linguaggio di programmazione, HTML. 191 00:10:45,730 --> 00:10:48,120 Non è una lingua che si può esprimere la logica trovi 192 00:10:48,120 --> 00:10:50,710 Non ha cicli. Non ha condizioni. 193 00:10:50,710 --> 00:10:52,820 Non ha funzioni, di per sé. 194 00:10:52,820 --> 00:10:56,680 Piuttosto, ha queste cose chiamati tag, o più propriamente, elementi. 195 00:10:56,680 --> 00:10:59,970 E questi elementi hanno tag di inizio e di fine, 196 00:10:59,970 --> 00:11:04,300 o tag di apertura e tag chiusi, e che cosa questi tag intende generalmente per un browser è, 197 00:11:04,300 --> 00:11:09,270 iniziare a fare qualcosa e poi smettere di fare qualcosa, anche se ci sono eccezioni a tale. 198 00:11:09,270 --> 00:11:12,480 A volte è solo 'mettere una interruzione di linea qui,' per esempio. 199 00:11:12,480 --> 00:11:15,150 E abbiamo visto esempi di che l'altro giorno, tra rivestimento in grassetto, 200 00:11:15,150 --> 00:11:17,430 interruzioni di riga, e poi un paio di altri tag. 201 00:11:17,430 --> 00:11:19,880 Così HTML è il linguaggio in cui sono scritte le pagine web. 202 00:11:19,880 --> 00:11:23,760 Quindi, se vado a qualcosa come Google.com 203 00:11:23,760 --> 00:11:26,180 e tirare solo la loro home page, 204 00:11:26,180 --> 00:11:29,690 Ricordiamo che se si fa clic destro o controllare clicca 205 00:11:29,690 --> 00:11:32,140 e guardare alla fonte visualizzazione di una pagina, in genere 206 00:11:32,140 --> 00:11:34,420 è un casino completo in questi giorni sotto il cofano, ma è perché 207 00:11:34,420 --> 00:11:38,170 computer non si preoccupano di spazio bianco, quindi questo non ha bisogno di guardare piuttosto. 208 00:11:38,170 --> 00:11:40,240 Ma se ci ingrandire parti di esso, 209 00:11:40,240 --> 00:11:43,460 notare che Chrome, solo per essere bello, ha colori diversi le cose. 210 00:11:43,460 --> 00:11:48,460 In effetti, questo è il tag prima che abbiamo visto in una pagina web. 211 00:11:48,460 --> 00:11:51,750 E ancora, HTML 5, l'ultima versione di questo linguaggio, 212 00:11:51,750 --> 00:11:53,830 ha questa cosa all'inizio, 213 00:11:53,830 --> 00:11:57,820 00:12:03,580 ma questo è solo una sorta di standard che dice: ehi mondo, ecco che arriva un file HTML in versione 5. 215 00:12:03,580 --> 00:12:08,920 >> La parte interessante comincia qui. Così 00:12:11,640 degli elementi HTML ultima volta. 217 00:12:11,640 --> 00:12:14,630 Quali erano i due figli principali? 218 00:12:14,630 --> 00:12:17,170 Testa e corpo, proprio come il ragazzo con il tatuaggio di un attimo fa. 219 00:12:17,170 --> 00:12:19,640 Ci sono due parti della pagina web, la testa e il corpo, 220 00:12:19,640 --> 00:12:23,750 e richiamo, quindi, che forse la pagina web più semplice potremmo fare simile a questa. 221 00:12:23,750 --> 00:12:27,460 E ho rientrato solo per essere una sorta di pulito e ordinato con il mio codice, 222 00:12:27,460 --> 00:12:30,710 ma quello che è veramente importante è che vi è una certa gerarchia a questo. 223 00:12:30,710 --> 00:12:35,420 E qualsiasi tag che ho aperto ho chiuso e che c'è quindi questa simmetria 224 00:12:35,420 --> 00:12:38,300 a tutto il codice che ho creato. 225 00:12:38,300 --> 00:12:41,620 Così l'ultima volta abbiamo iniziato a scrivere le pagine web sul mio computer portatile. 226 00:12:41,620 --> 00:12:45,470 Ho aperto modifica del testo, ho salvato il file come hello.html, 227 00:12:45,470 --> 00:12:50,190 Poi ho trascinato il file sul mio browser, e voilà, avevo una pagina su Internet. 228 00:12:50,190 --> 00:12:53,110 Ora, non è proprio il caso, avevo una pagina sul mio hard disk, 229 00:12:53,110 --> 00:12:58,260 e io ero letteralmente l'unica persona al mondo che avrebbe visto quella pagina web in un browser. 230 00:12:58,260 --> 00:13:00,670 >> Così oggi, si introduce un server web reale 231 00:13:00,670 --> 00:13:02,750 e la nozione di servizio effettivamente contenuti su Internet 232 00:13:02,750 --> 00:13:04,970 e come tutto questo inizia a combaciare. 233 00:13:04,970 --> 00:13:08,350 Così si scopre che tutto questo tempo l'apparecchio CS50 234 00:13:08,350 --> 00:13:11,590 hai avuto un server Web sul computer. 235 00:13:11,590 --> 00:13:16,560 Abbiamo, in tutta onestà, usato solo per gedit, per Clang, per GDB e simili, 236 00:13:16,560 --> 00:13:21,000 ma anche installato da noi per voi in macchina è un server web, 237 00:13:21,000 --> 00:13:23,940 e che server web capita di essere libero, un open source, 238 00:13:23,940 --> 00:13:26,580 uno di quelli più popolari al mondo, chiamato Apache. 239 00:13:26,580 --> 00:13:31,340 Il suo nome più tecnico è HTTPd, d essendo per il demone qui, 240 00:13:31,340 --> 00:13:34,110 che è un termine tecnico per un server. 241 00:13:34,110 --> 00:13:38,690 Così installato nell'apparecchio CS50 è un server web, e che cosa vuol dire? 242 00:13:38,690 --> 00:13:43,740 Beh, un server web è, concettualmente, alcuni server su Internet che serve contenuti web. 243 00:13:43,740 --> 00:13:48,630 Quando è stato chiesto per un file, sputa il codice HTML che compone quel file, e voilà. 244 00:13:48,630 --> 00:13:51,370 Vedete un po 'home page del sito web. 245 00:13:51,370 --> 00:13:54,970 Ma è un server, più precisamente, un pezzo di software. 246 00:13:54,970 --> 00:13:59,190 Essa non deve essere su una macchina fisica, deve solo essere un pezzo di esecuzione software. 247 00:13:59,190 --> 00:14:01,980 Quindi l'apparecchio CS50, naturalmente, è un pezzo di software 248 00:14:01,980 --> 00:14:04,270 anche se è una sorta di fingere di essere una macchina. 249 00:14:04,270 --> 00:14:06,960 E 'finta di essere un elaboratore all'interno di un computer, 250 00:14:06,960 --> 00:14:11,140 ma questo significa solo che l'apparecchio può certamente funzionare le cose come server web. 251 00:14:11,140 --> 00:14:13,260 E 'in grado di eseguire i server di posta. 252 00:14:13,260 --> 00:14:16,440 Potremmo eseguire un server di messaggistica istantanea all'interno dell'apparecchio se volevamo, 253 00:14:16,440 --> 00:14:20,780 e in effetti, facciamo eseguire un altro tipo di server, noto come un server di database, mySQL. 254 00:14:20,780 --> 00:14:22,620 Ma più su che la prossima settimana. 255 00:14:22,620 --> 00:14:26,400 Questo significa che posso effettivamente visitare le pagine web 256 00:14:26,400 --> 00:14:30,480 interno della macchina utilizzando un browser all'interno dell'apparecchio 257 00:14:30,480 --> 00:14:33,600 o anche sul mio portatile, il mio Mac o il PC. 258 00:14:33,600 --> 00:14:37,780 Che cosa significa questo? Si scopre che ogni volta che si sta eseguendo un computer Linux, 259 00:14:37,780 --> 00:14:40,910 il suo soprannome è "host locale". 260 00:14:40,910 --> 00:14:43,370 Non ha un nome di dominio, perché non abbiamo acquistato un nome di dominio 261 00:14:43,370 --> 00:14:46,590 per qualcosa come l 'apparecchio, per cui il suo nome di default è host locale. 262 00:14:46,590 --> 00:14:50,470 >> Ma, al fine di ottenere l'apparecchio per iniziare a pubblicare le pagine web, 263 00:14:50,470 --> 00:14:52,270 dobbiamo creare loro per primi. 264 00:14:52,270 --> 00:14:55,200 Allora, facciamo così. Lasciami andare in una finestra di terminale qui 265 00:14:55,200 --> 00:14:58,190 e notare che io sono al mio tipico John Harvard prompt. 266 00:14:58,190 --> 00:15:01,670 Lasciatemi andare avanti e digitare ls, e vedremo alcune cose familiari di questo semestre, 267 00:15:01,670 --> 00:15:04,580 desktop, download, set e così via, 268 00:15:04,580 --> 00:15:07,540 ma ora cominciamo rivolgere la nostra attenzione ad una coppia. 269 00:15:07,540 --> 00:15:11,530 Su molti server web Linux c'è questa cartella chiamata html pubblica, 270 00:15:11,530 --> 00:15:15,630 ma stiamo andando a saltare quella per ora e concentrarsi su questo, vhost. 271 00:15:15,630 --> 00:15:18,850 Qualcuno sa che cosa è un vhost? 272 00:15:18,850 --> 00:15:21,110 Solo gergo stupido per host virtuale, 273 00:15:21,110 --> 00:15:23,850 e che cosa questo significa è che su un server tipico 274 00:15:23,850 --> 00:15:26,810 si può effettivamente ospitare più siti web. 275 00:15:26,810 --> 00:15:31,500 È possibile acquistare un nome di dominio come foo.com, ed è possibile ospitare su un server. 276 00:15:31,500 --> 00:15:36,100 Ma si può anche acquistare bar.com e ospitare sul server stesso. 277 00:15:36,100 --> 00:15:40,250 Il motivo è, i browser sono abbastanza intelligente per informare il server 278 00:15:40,250 --> 00:15:45,880 quando un utente richiede un po 'di pagina web, nome del dominio che cosa l'utente vuole il homepage. 279 00:15:45,880 --> 00:15:48,760 Così che cosa è bella di questo è non è necessario un server fisico 280 00:15:48,760 --> 00:15:52,040 o uno CS50 apparecchio per ogni sito web si potrebbe desiderare di creare. 281 00:15:52,040 --> 00:15:55,520 È possibile utilizzare lo stesso server e sviluppare un centinaio di diversi siti web. 282 00:15:55,520 --> 00:15:58,770 E in effetti, se sei una persona che cerca di avviare un sito web, 283 00:15:58,770 --> 00:16:02,100 sia per divertimento o per lavoro, in genere si va su Internet, 284 00:16:02,100 --> 00:16:04,650 e si paga qualcuno dieci dollari al mese, un centinaio di dollari al mese 285 00:16:04,650 --> 00:16:06,670 per ospitare il tuo sito web per voi. 286 00:16:06,670 --> 00:16:11,060 E il modo in cui funziona è che fanno pagare altre persone 287 00:16:11,060 --> 00:16:13,160 dieci dollari al mese o di un centinaio di dollari al mese 288 00:16:13,160 --> 00:16:17,200 per ospitare siti web di altre persone sul loro stesso server. 289 00:16:17,200 --> 00:16:20,740 Il motivo per cui può farlo è a causa di questa caratteristica chiamata bhosts, 290 00:16:20,740 --> 00:16:23,790 ma più che quando arriva il momento per i progetti finali. 291 00:16:23,790 --> 00:16:28,360 >> Per ora, limitiamoci a tuffarsi dentro. Così vhost cd, e se digito ls ora, 292 00:16:28,360 --> 00:16:31,370 notare che c'è una cartella dentro chiamato host locale. 293 00:16:31,370 --> 00:16:33,440 Questo perché, per impostazione predefinita, i dati dell'apparecchio 294 00:16:33,440 --> 00:16:36,160 siete mai andando a correre un sito web su un apparecchio. 295 00:16:36,160 --> 00:16:38,970 Questo non è davvero il mondo reale, non è un mondo reale server web. 296 00:16:38,970 --> 00:16:41,690 Permettetemi quindi di andare in host locale, e adesso vedremo in là 297 00:16:41,690 --> 00:16:44,290 una directory ultimo chiamato HTML. 298 00:16:44,290 --> 00:16:47,080 Quindi è un po 'profonda, la gerarchia, ma se e quando 299 00:16:47,080 --> 00:16:51,230 si decide di iniziare a sviluppare siti web nei prossimi mesi o anni n, 300 00:16:51,230 --> 00:16:54,370 questo tipo di struttura di cartelle tende ad essere utile. 301 00:16:54,370 --> 00:16:56,560 Ora andiamo in HTML come ho appena fatto, 302 00:16:56,560 --> 00:16:59,010 digita ls, e non c'è nulla. 303 00:16:59,010 --> 00:17:01,390 Così ora andiamo avanti e farlo. Vorrei aprire Chrome 304 00:17:01,390 --> 00:17:07,300 all'interno dell'apparecchio, e lasciatemi andare a http://localhost. 305 00:17:07,300 --> 00:17:14,440 Quindi letteralmente il nome per il mio apparecchio, entrare, e ho indice di /. 306 00:17:14,440 --> 00:17:18,290 Questo non mi sta davvero mostrando qualcosa di interessante, 307 00:17:18,290 --> 00:17:23,400 ma si scopre che quello che stiamo vedendo è che la cartella, HTML. 308 00:17:23,400 --> 00:17:25,770 Non c'è niente all'interno di tale cartella in questo momento, 309 00:17:25,770 --> 00:17:28,750 così, invece, che cosa ho intenzione di fare è creare prima un file. 310 00:17:28,750 --> 00:17:33,530 Creare un file HTML come abbiamo fatto il Lunedi, ma questa volta è messo all'interno dell'apparecchio. 311 00:17:33,530 --> 00:17:36,830 Per quelli di voi che stanno cercando di seguire ora con i computer portatili, 312 00:17:36,830 --> 00:17:42,040 vorrei fare una parte che sarà coperto nella web-based pset, 313 00:17:42,040 --> 00:17:44,280 ma per ottenere questo a lavorare per la prima volta, 314 00:17:44,280 --> 00:17:49,830 si sta andando ad avere per eseguire questo comando: sudo service httpd start. 315 00:17:49,830 --> 00:17:52,670 E questo, di nuovo, si ripeterà nel pset ultimo, 316 00:17:52,670 --> 00:17:55,460 ma se stai giocando insieme a casa ora, il server web 317 00:17:55,460 --> 00:17:58,660 è disattivata nel dell'apparecchio, e che è così che non fiaccare la RAM 318 00:17:58,660 --> 00:18:01,960 e la memoria per 7 settimane fuori del semestre quando non ne abbiamo bisogno. 319 00:18:01,960 --> 00:18:05,190 Quindi è necessario eseguire questo comando una volta, e si otterrà un output del genere. 320 00:18:05,190 --> 00:18:07,920 Poi si dovrebbe essere in grado di suonare qui. 321 00:18:07,920 --> 00:18:10,330 Ora torniamo in questa cartella. 322 00:18:10,330 --> 00:18:12,770 Questa cartella è vuota, per cui vorrei iniziare a creare un file, 323 00:18:12,770 --> 00:18:16,360 gedit hello.html. 324 00:18:16,360 --> 00:18:20,930 >> Bene. Gedit è aperto, come di consueto. Lasciami fare doctype, html, 325 00:18:20,930 --> 00:18:25,270 html, lasciami andare avanti di me stesso e iniziare a chiudere i miei tag in anticipo. 326 00:18:25,270 --> 00:18:28,380 Ora ho la testa. Lasciatemi andare avanti e chiudere la testa, 327 00:18:28,380 --> 00:18:32,450 vorrei ora fare il titolo della pagina, ciao mondo come l'ultima volta, 328 00:18:32,450 --> 00:18:34,790 titolo vicino, ora mi permetta di fare un corpo. 329 00:18:34,790 --> 00:18:38,130 In qui dirò ciao, mondo con alcune exclams 330 00:18:38,130 --> 00:18:40,550 a precisare che si tratta di una stringa differente. 331 00:18:40,550 --> 00:18:45,800 Corpo vicino, e ora lasciami andare avanti e salvare il file. 332 00:18:45,800 --> 00:18:48,470 Vorrei tornare alla mia finestra di terminale, e se digito ls, 333 00:18:48,470 --> 00:18:51,830 Dovrei, presumibilmente, vedere hello.html. E lo faccio. 334 00:18:51,830 --> 00:18:55,070 Così ora torniamo al mio browser, fare clic su ricaricare, 335 00:18:55,070 --> 00:18:58,930 e si può vedere siamo davvero all'interno di questa cartella HTML. 336 00:18:58,930 --> 00:19:02,310 Non riesco a visualizzare una pagina web ancora, questo è Apache, il server web, 337 00:19:02,310 --> 00:19:04,670 mi mostra il contenuto della lista di questa directory. 338 00:19:04,670 --> 00:19:08,260 Proprio come Mac OS o Windows in genere fare da soli disco rigido locale. 339 00:19:08,260 --> 00:19:12,730 Quindi, se voglio vedere questa pagina web, posso fare clic su questo collegamento po 'qui, hello.html, 340 00:19:12,730 --> 00:19:15,160 e in effetti, questo è quello che mi aspettavo di vedere. 341 00:19:15,160 --> 00:19:18,080 Ora, ancora una volta, questo non è un URL che qualcuno di voi può visitare in questo momento, 342 00:19:18,080 --> 00:19:20,760 perché per voi, host locale, se si dispone di un computer portatile qui, 343 00:19:20,760 --> 00:19:23,050 si fa riferimento all'istanza propria dell'apparecchio. 344 00:19:23,050 --> 00:19:25,900 Questo è sulla mia macchina personale, 345 00:19:25,900 --> 00:19:29,080 ma questo è una specie di stupido per me avere, per avere 346 00:19:29,080 --> 00:19:34,480 un utente come me clicca su hello.html per vedere effettivamente il contenuto di questa pagina. 347 00:19:34,480 --> 00:19:42,590 Si scopre che i server web come Apache ti permettono di avere un file di default per qualsiasi server web. 348 00:19:42,590 --> 00:19:44,640 Notate che abbiamo hello.html. 349 00:19:44,640 --> 00:19:48,410 Qual è il comando in Linux per rinominare un file? 350 00:19:48,410 --> 00:19:50,870 >> MV, per mossa. Cerchiamo quindi di fare a me, 351 00:19:50,870 --> 00:19:55,870 e fammi rinominare hello.html a index.html. 352 00:19:55,870 --> 00:19:58,610 Permettetemi di digitare ls per confermare che è stata rinominata. 353 00:19:58,610 --> 00:20:03,250 Ora, questo sta andando - se dovessi tornare a host locale, 354 00:20:03,250 --> 00:20:06,710 notato ora che sto vedendo automaticamente la pagina web. 355 00:20:06,710 --> 00:20:11,740 Questo è identico al mio in realtà facendo / index.html, 356 00:20:11,740 --> 00:20:14,740 ma la cosa bella è che il web server è capire, 357 00:20:14,740 --> 00:20:18,830 oh, se si dispone di un file che, dalle convenzioni umane, si chiama index.html, 358 00:20:18,830 --> 00:20:21,200 lasciate che vi mostri l'utente che il file di default 359 00:20:21,200 --> 00:20:25,290 piuttosto che un elenco di directory, che stupido non è affatto user-friendly. 360 00:20:25,290 --> 00:20:28,900 In effetti, la maggior parte dei siti web visitati su Internet non si dispone di un elenco di file fare clic su, 361 00:20:28,900 --> 00:20:34,040 si limitano a mostrare il contenuto. Ecco, questo è il modo in cui può farlo, index.html. 362 00:20:34,040 --> 00:20:37,000 Quindi questo è tutto divertimento e buona, ma questa è una pagina web piuttosto semplice. 363 00:20:37,000 --> 00:20:41,640 Lasciatemi andare avanti e aprire il file index.html nella mia vhosts, 364 00:20:41,640 --> 00:20:47,620 host locali, directory html, e cerchiamo di aggiungere qualcosa di maggiore interesse. 365 00:20:47,620 --> 00:20:56,120 Quindi c'è ciao mondo, lascia invece dire 'Questo è CS50, Harvard College. . . ' 366 00:20:56,120 --> 00:21:00,000 Così l'inizio della descrizione naturalmente catalogo di qualche tipo lì. 367 00:21:00,000 --> 00:21:03,780 Ora, se io ricaricare, che dovrebbe vedere nella mia home page. 368 00:21:03,780 --> 00:21:09,560 Va bene, e io vedo che, ma supponiamo che voglio elencare ora ancora un po 'il contenuto in questo file. 369 00:21:09,560 --> 00:21:15,160 Potrei andare qui e dire, nessuno prerequisiti, 370 00:21:15,160 --> 00:21:18,740 anche se alcuni di voi sono probabilmente come, 'Ha ha ha, prerequisiti.' 371 00:21:18,740 --> 00:21:24,320 Ma - ufficialmente. Quindi ricaricare, e ora abbiamo la stranezza stessa che abbiamo visto l'ultima volta. 372 00:21:24,320 --> 00:21:26,240 Ma perché? E 'stata una semplice correzione. 373 00:21:26,240 --> 00:21:31,440 Perché questa pagina rotto? 374 00:21:31,440 --> 00:21:34,170 [Studente, incomprensibile] >> Si, abbiamo risolto questo prima 375 00:21:34,170 --> 00:21:37,440 esplicitamente dicendo al browser 'mettere una interruzione di linea qui.' 376 00:21:37,440 --> 00:21:39,440 E questo perché, ancora una volta, un browser è solo andare a fare 377 00:21:39,440 --> 00:21:42,610 in modo esplicito ciò che il linguaggio di marcatura che dice di fare, 378 00:21:42,610 --> 00:21:45,730 quindi, anche se si potrebbe aver colpito inserire una o due volte o anche dieci volte, 379 00:21:45,730 --> 00:21:49,870 sta andando a combinare che tutti in un unico spazio, solo per convenzione. 380 00:21:49,870 --> 00:21:52,770 Quindi, se si vuole veramente un interruzione di linea, è necessario utilizzare il tag br, 381 00:21:52,770 --> 00:21:56,840 e ora avviso, come Lunedi, ho messo la / all'interno di questo tag, 382 00:21:56,840 --> 00:22:00,090 solo perché questo proprio non mi sembra giusto 383 00:22:00,090 --> 00:22:02,990 per avviare una interruzione di linea quindi fermarlo con niente in mezzo. 384 00:22:02,990 --> 00:22:07,740 >> Così la convenzione in formato HTML è quello di aprire e chiudere un tag contemporaneamente. 385 00:22:07,740 --> 00:22:11,050 Per inciso, vedrete un sacco di siti web nei libri non farlo. 386 00:22:11,050 --> 00:22:14,240 È giusto fare o di non farlo, ma dovremmo 387 00:22:14,240 --> 00:22:17,430 che il design-saggio e stilisticamente, questo è solo meglio 388 00:22:17,430 --> 00:22:20,540 perché allora ogni tag è sia aperto e chiuso in qualche modo. 389 00:22:20,540 --> 00:22:23,370 Quindi ora cerchiamo di salvare e ricaricare. Torna al browser, va bene. 390 00:22:23,370 --> 00:22:26,680 Ora stiamo facendo qualche progresso, ma non è abbastanza. 391 00:22:26,680 --> 00:22:33,210 Andiamo avanti e iniziare a digitare in un corpo di testo più lunga. 392 00:22:33,210 --> 00:22:40,610 Quindi diciamo, 'A quick brown fox salta un cane pigro.' 393 00:22:40,610 --> 00:22:42,700 E ora vorrei solo copiare e incollare un paio di volte 394 00:22:42,700 --> 00:22:45,040 in modo da avere un paragrafo di testo. 395 00:22:45,040 --> 00:22:47,780 Torniamo qui. Quindi, non è alla ricerca molto buona. 396 00:22:47,780 --> 00:22:50,000 Io ho una interruzione di linea, quindi è bene, 397 00:22:50,000 --> 00:22:52,140 ma ora, una volta che stiamo arrivando al punto di avere una pagina web 398 00:22:52,140 --> 00:22:55,640 che ha un sacco di contenuti e linee non solo singoli per dimostrare HTML, 399 00:22:55,640 --> 00:22:58,570 possiamo cominciare a pensare a queste cose come punti reali. 400 00:22:58,570 --> 00:23:01,590 E possiamo cominciare a strutturare la nostra pagina web un po 'più pulito. 401 00:23:01,590 --> 00:23:05,120 E in effetti, quello che posso fare è andare qui all'interno del mio tag body, 402 00:23:05,120 --> 00:23:09,400 e sai una cosa, se 'Questo è CS50. . . ' demarks davvero l'inizio di un paragrafo, 403 00:23:09,400 --> 00:23:11,310 beh, diciamo etichettare come tale. 404 00:23:11,310 --> 00:23:13,570 Permettetemi di rientrare il testo, solo per convenzione, lasciatemi dire 405 00:23:13,570 --> 00:23:15,710 che questo paragrafo finisce qui, 406 00:23:15,710 --> 00:23:18,320 e allora piuttosto che fare questo interruzione di linea, vorrei solo dire 407 00:23:18,320 --> 00:23:23,300 che vi appartiene e come un nuovo paragrafo, 408 00:23:23,300 --> 00:23:27,610 e mi limiterò a presto trattino semplicemente sovrascrivere tutta questa roba. 409 00:23:27,610 --> 00:23:30,660 >> Così ora abbiamo un paragrafo rientrato lì, 410 00:23:30,660 --> 00:23:33,510 e ora il nostro markup sta iniziando a farsi un po 'di più 411 00:23:33,510 --> 00:23:37,070 semanticamente coerente con quello che stiamo cercando di fare. 412 00:23:37,070 --> 00:23:40,130 Abbiamo un punto, quindi cerchiamo di chiamare un paragrafo con il tag p. 413 00:23:40,130 --> 00:23:43,370 Abbiamo un secondo paragrafo, quindi cerchiamo di chiamare un paragrafo con il tag p. 414 00:23:43,370 --> 00:23:45,850 E ora, che cosa il browser in genere non 415 00:23:45,850 --> 00:23:48,490 è proprio come in un libro inglese o un saggio, 416 00:23:48,490 --> 00:23:51,280 dove in genere vedere alcune interruzioni di riga tra i paragrafi. 417 00:23:51,280 --> 00:23:53,720 I browser lo farà automaticamente per voi. 418 00:23:53,720 --> 00:23:56,680 Così ora abbiamo due punti e possiamo continuare questo. 419 00:23:56,680 --> 00:23:58,770 Ma, naturalmente, sul Web, quando si hanno i corpi di testo 420 00:23:58,770 --> 00:24:01,370 non è in genere solo macchie enormi di testo. 421 00:24:01,370 --> 00:24:04,040 Ci sono spesso collegamenti ipertestuali in là. 422 00:24:04,040 --> 00:24:07,250 Quindi, se si vuole, ad esempio, sono alcuni link lì, 423 00:24:07,250 --> 00:24:10,760 Immagino quello che potrebbe essere di interesse in qualsiasi pagina web che sto creando qui è - 424 00:24:10,760 --> 00:24:12,780 lasciami andare a Google.com, 425 00:24:12,780 --> 00:24:16,540 e lasciami cercare un quick brown fox. 426 00:24:16,540 --> 00:24:22,150 Vai alle immagini di Google, e, che ne dici - questo è carino. 427 00:24:22,150 --> 00:24:27,420 Andremo con questo. Quindi qui abbiamo un quick brown fox che salta su un cane pigro. 428 00:24:27,420 --> 00:24:30,560 Così che cosa ho intenzione di fare qui, solo per il gusto di dimostrazione, 429 00:24:30,560 --> 00:24:32,950 si supponga che questa immagine era sul mio server, 430 00:24:32,950 --> 00:24:35,240 e mi era stato la creazione di queste immagini. 431 00:24:35,240 --> 00:24:38,720 Ciò che ho appena fatto è stato fare clic destro o controllare clicca sull'immagine, 432 00:24:38,720 --> 00:24:42,370 e quello che vedrete nella maggior parte dei browser è un piccolo menu - 433 00:24:42,370 --> 00:24:48,800 smettere di farlo - un menu che vi permette di scegliere Copia indirizzo o URL copia. 434 00:24:48,800 --> 00:24:52,750 Quindi vorrei tornare indietro al mio HTML, e supponiamo che io voglio 435 00:24:52,750 --> 00:24:56,420 a collegamento ipertestuale ad un'altra pagina web. 436 00:24:56,420 --> 00:24:58,640 >> Qual è stato il tag chiamato per questo? 437 00:24:58,640 --> 00:25:01,650 [Studente, incomprensibile] >> Si '. Così a href riferimento iper. 438 00:25:01,650 --> 00:25:04,660 Lasciatemi andare avanti e incolla che trovi 439 00:25:04,660 --> 00:25:07,290 Si tratta di un URL piuttosto lunga, per cui vorrei zoomare verso l'esterno. 440 00:25:07,290 --> 00:25:09,950 Chiudi parentesi, così ora sono noti fin qui 441 00:25:09,950 --> 00:25:11,960 perché tale URL è successo a essere piuttosto lungo. 442 00:25:11,960 --> 00:25:15,180 Vorrei scorrere qui alla fine del quick brown fox, 443 00:25:15,180 --> 00:25:18,830 e poi voglio chiudere questa tag con 00:25:21,280 dove ho chiuso solo il nome del tag. 445 00:25:21,280 --> 00:25:24,470 Ora lasciatemi andare avanti e salvare il file, ricaricare la pagina web, 446 00:25:24,470 --> 00:25:27,880 e ora, per impostazione predefinita, che sta per essere sottolineati in blu per me, 447 00:25:27,880 --> 00:25:31,980 ma anzi, ora posso cliccare su questo e voilà. C'è l'immagine. 448 00:25:31,980 --> 00:25:33,990 E non deve essere un immagine, ma potrebbe essere collegato 449 00:25:33,990 --> 00:25:36,270 ad un altro sito casuale su Internet. 450 00:25:36,270 --> 00:25:39,610 Ho potuto fare questo, per esempio, con CS50, quindi un ultimo esempio qui. 451 00:25:39,610 --> 00:25:42,730 'Questo è CS50' potrebbe avere un senso di andare a, href = 452 00:25:42,730 --> 00:25:50,340 http://www.cs50.net, citazione chiudere, ancora vicino. 453 00:25:50,340 --> 00:25:53,990 Quindi, ora che è un URL ancora più breve, e questa volta non stiamo andando a un collegamento ad un'immagine. 454 00:25:53,990 --> 00:25:57,880 Stiamo invece andando a collegarsi a un'altra pagina. 455 00:25:57,880 --> 00:25:59,840 Ora, abbiamo un immagine qui. 456 00:25:59,840 --> 00:26:02,970 Mi sento come si può fare un po 'meglio di un semplice collegamento a un'immagine. 457 00:26:02,970 --> 00:26:05,760 Che cosa succede se si vuole realmente incarnare nella nostra pagina web? 458 00:26:05,760 --> 00:26:09,290 >> Beh, quello che posso fare è, invece di link a questo grafico, 459 00:26:09,290 --> 00:26:14,690 vorrei invece tagliare l'URL, e noi provvederemo a sbarazzarsi di quel collegamento ipertestuale e pulire questo. 460 00:26:14,690 --> 00:26:17,190 E andremo qui e sbarazzarsi di questo. 461 00:26:17,190 --> 00:26:20,910 Non abbiamo davvero bisogno di tutte queste frasi ora, quindi vorrei accorciare la pagina un po '. 462 00:26:20,910 --> 00:26:24,530 E poi qui mi lasci andare avanti in un nuovo paragrafo, 463 00:26:24,530 --> 00:26:30,100 dire che non desidera che il testo ora, io voglio l'immagine la cui origine sta per essere tale URL. 464 00:26:30,100 --> 00:26:33,100 L'immagine, come una interruzione di linea, può esserci o non lo è. 465 00:26:33,100 --> 00:26:35,900 Permettetemi quindi di chiudere immediatamente quel tag. 466 00:26:35,900 --> 00:26:39,440 Lasciami andare avanti ora e chiudere il paragrafo che sono dentro, 467 00:26:39,440 --> 00:26:43,010 e se tutto va bene ciao, mondo, se ricaricare ora, 468 00:26:43,010 --> 00:26:45,520 Io, in effetti, vedere a destra nella mia pagina web un'immagine. 469 00:26:45,520 --> 00:26:48,570 Così ora abbiamo un tag di immagine, un tag di ancoraggio e simili, 470 00:26:48,570 --> 00:26:51,320 e per buona misura, fammi fare un'altra cosa che è spesso trascurato 471 00:26:51,320 --> 00:26:55,900 sui siti web in questi giorni: Facciamo fornire un testo descrittivo per questa immagine 472 00:26:55,900 --> 00:26:58,090 per le persone che si trovano su un dispositivo mobile 473 00:26:58,090 --> 00:27:00,640 e pertanto potrebbero non essere in grado di scaricare questa immagine molto velocemente, 474 00:27:00,640 --> 00:27:03,310 per le persone non vedenti e potrebbero non essere in grado di vedere l'immagine 475 00:27:03,310 --> 00:27:06,480 ma potrebbero avere un lettore di schermo che può dire loro ciò che questa immagine è di. 476 00:27:06,480 --> 00:27:09,100 E per fare ciò, vi è un altro attributo per il tag immagine 477 00:27:09,100 --> 00:27:11,290 chiamato alt, per il testo alternativo. 478 00:27:11,290 --> 00:27:14,650 E quello che posso fare qui è dire, 'Questo è un quick brown fox.' 479 00:27:14,650 --> 00:27:17,650 Modo che anche se l'umano non può vedere l'immagine sullo schermo, 480 00:27:17,650 --> 00:27:20,560 lui o lei può almeno sentire, come con qualche pezzo di software, 481 00:27:20,560 --> 00:27:23,080 quello che c'è realmente sullo schermo. 482 00:27:23,080 --> 00:27:25,040 >> Che non cambierà l'estetica della pagina, 483 00:27:25,040 --> 00:27:27,640 ma è certamente buona pratica per gli utenti. 484 00:27:27,640 --> 00:27:31,760 Va bene, lasciamo questa pagina web nella sua forma attuale, 485 00:27:31,760 --> 00:27:33,890 ma vediamo se non possiamo ora introdurre 486 00:27:33,890 --> 00:27:36,210 alcuni approcci migliori per la scrittura di queste pagine web, 487 00:27:36,210 --> 00:27:39,980 alcune lezioni che stanno per servire noi e le nostre pagine diventano sempre più complesse. 488 00:27:39,980 --> 00:27:42,220 Quello che non avete intenzione di fare nei prossime settimane 489 00:27:42,220 --> 00:27:46,810 è a piedi attraverso tutti i tag HTML diverse decine che ci sono. 490 00:27:46,810 --> 00:27:49,800 Molto simile a zero torna a settimana 0, probabilmente sarà sufficiente 491 00:27:49,800 --> 00:27:52,120 per dare una panoramica generale di alcuni dei concetti, 492 00:27:52,120 --> 00:27:54,530 un rapido giro di alcuni dei blocchi che si erano probabilmente in grado, 493 00:27:54,530 --> 00:27:58,240 abbastanza comodamente, per navigare da soli, i pezzi del puzzle diversi. 494 00:27:58,240 --> 00:28:00,460 E che sta per accadere di nuovo in HTML, molto probabilmente, 495 00:28:00,460 --> 00:28:04,320 per cui ci sono ampie risorse sul Web che ti indicheremo a, 496 00:28:04,320 --> 00:28:06,920 vari libri di testo, se si preferisce leggere un libro di testo, 497 00:28:06,920 --> 00:28:10,560 che vi guiderà attraverso tutte le varie cose che si possono fare con HTML, 498 00:28:10,560 --> 00:28:16,100 ma in realtà, si è visto finora in HTML la maggior parte dei concetti fondamentali. 499 00:28:16,100 --> 00:28:19,900 Abbiamo il concetto di tag aperti, i tag chiusa. 500 00:28:19,900 --> 00:28:22,100 Alcuni tag che sono entrambi aperti e chiusi 501 00:28:22,100 --> 00:28:24,620 nel senso che sono vuote; ci dovrebbe essere nulla all'interno di essi 502 00:28:24,620 --> 00:28:27,490 come un tag di immagine o di una interruzione di linea, che sono proprio lì. 503 00:28:27,490 --> 00:28:32,330 Abbiamo anche cercato già la nozione di un attributo, come alt o fonte. 504 00:28:32,330 --> 00:28:36,410 Si noti che queste parole tendono, per convenzione, di essere breve e concisa. 505 00:28:36,410 --> 00:28:39,140 >> Noi non hanno il potere su ciò che queste cose si chiamano, 506 00:28:39,140 --> 00:28:42,060 qualcun altro che ha inventato HTML si avvicinò con questi nomi. 507 00:28:42,060 --> 00:28:44,710 Quindi, non resta che iniziare a conoscere o cercare, ogni volta che ne avete bisogno, 508 00:28:44,710 --> 00:28:47,160 quali sono i nomi di questi tag e attributi. 509 00:28:47,160 --> 00:28:49,510 Nel caso di questi attributi, attribuisce generalmente 510 00:28:49,510 --> 00:28:52,900 modificare il comportamento di alcuni tag. 511 00:28:52,900 --> 00:28:55,710 In questo caso, l'attributo fonte dice il tag immagine 512 00:28:55,710 --> 00:28:57,940 ciò l'origine dell'immagine deve essere. 513 00:28:57,940 --> 00:29:04,460 L'attributo href dice al tag di ancoraggio quello che dovrebbe essere effettivamente il collegamento a. 514 00:29:04,460 --> 00:29:06,800 Ma in termini di struttura di una pagina web, anche se Facebook 515 00:29:06,800 --> 00:29:09,680 e Google e lo sguardo come come un pasticcio completo 516 00:29:09,680 --> 00:29:12,560 sotto la cappa a prima vista, se si inizia a leggere attraverso di essa 517 00:29:12,560 --> 00:29:16,950 più metodicamente, tutti seguono questa base, struttura di base. 518 00:29:16,950 --> 00:29:19,660 Ma siamo in grado di migliorare la stilizzazione di queste cose. 519 00:29:19,660 --> 00:29:24,180 Quindi lasciami andare ad alcuni esempi che ho preparato in anticipo. 520 00:29:24,180 --> 00:29:27,280 Lasciatemi andare avanti e copiarli da un'altra cartella qui 521 00:29:27,280 --> 00:29:29,380 e metterli in questa directory. 522 00:29:29,380 --> 00:29:32,210 In anticipo, quello che ho fatto è stato preparare alcuni file: 523 00:29:32,210 --> 00:29:35,670 search0, ricerca1, SEARCH2 e search3 e 4. 524 00:29:35,670 --> 00:29:38,740 Lasciatemi andare avanti e aprire il primo di questi file, 525 00:29:38,740 --> 00:29:42,570 e vediamo se non possiamo cominciare a creare il nostro motore di ricerca. 526 00:29:42,570 --> 00:29:46,530 Nella parte superiore di questo file, come di solito avviene in classe, solo un mucchio di commenti. 527 00:29:46,530 --> 00:29:49,760 In HTML, però, il mezzo con cui si inizia un commento 528 00:29:49,760 --> 00:29:55,640 è <- e poi si è all'interno di un commento, un multi-riga di commento. 529 00:29:55,640 --> 00:29:59,800 Quando si è pronti a interrompere quel commento, si può fare ->. 530 00:29:59,800 --> 00:30:02,380 Quindi tutto in alto in blu è solo un commento. 531 00:30:02,380 --> 00:30:04,620 >> Questa è la mia dichiarazione doctype, che ancora una volta, 532 00:30:04,620 --> 00:30:07,080 si può semplicemente copiare e incollare sulla fede, per ora. 533 00:30:07,080 --> 00:30:10,410 Questo dice al browser, 'Ecco che arriva un po' di HTML 5. ' 534 00:30:10,410 --> 00:30:13,600 Al di sotto, sulla linea 14, è il primo dei miei tag reali, 535 00:30:13,600 --> 00:30:16,900 e questo dice solo, come prima, ecco che arriva un po 'di HTML, 536 00:30:16,900 --> 00:30:19,460 ecco che arriva il capo della mia pagina, ecco che arriva il titolo, 537 00:30:19,460 --> 00:30:23,900 e poi, al contrario, che è per il titolo, che è per la testa. 538 00:30:23,900 --> 00:30:26,460 Arriva ora il corpo della pagina. 539 00:30:26,460 --> 00:30:31,040 Quindi un paio di nuovi tag h1: ora sta per la rubrica 1. 540 00:30:31,040 --> 00:30:33,850 C'è una tradizione in HTML per molti anni indietro 541 00:30:33,850 --> 00:30:37,990 di avere diverse dimensioni di testo. 542 00:30:37,990 --> 00:30:41,980 E di nuovo nel corso della giornata, ognuno voleva dire, in generale, solo grandi e in grassetto. 543 00:30:41,980 --> 00:30:45,860 Ma c'è anche h2, che è grande, ma non è così grande e in grassetto. 544 00:30:45,860 --> 00:30:49,320 C'è h3, che è una specie di grande, ma non così grande e in grassetto, 545 00:30:49,320 --> 00:30:52,380 e così via, tutta la strada fino a h6. 546 00:30:52,380 --> 00:30:55,550 In questi giorni, però, h1, h2 e h3 devono realmente 547 00:30:55,550 --> 00:30:57,980 di avere un significato più semantico a loro, 548 00:30:57,980 --> 00:31:01,100 per cui h1 è davvero un titolo: il titolo di una pagina web, 549 00:31:01,100 --> 00:31:04,210 l'intestazione di una colonna o qualcosa del genere di testo. 550 00:31:04,210 --> 00:31:09,030 Così ho volutamente detto h1 CS50 ricerca> h1 551 00:31:09,030 --> 00:31:12,640 in modo da precisare che questo è davvero il titolo, il titolo della mia pagina. 552 00:31:12,640 --> 00:31:14,850 Non il titolo nel senso barra del titolo, 553 00:31:14,850 --> 00:31:18,960 ma il titolo che in realtà vedere nella pagina web stessa, nel corpo. 554 00:31:18,960 --> 00:31:20,990 Ora, questo, si può intuire quello che è, 555 00:31:20,990 --> 00:31:23,110 anche se abbiamo alcuni pezzi nuovi di sintassi. 556 00:31:23,110 --> 00:31:25,930 Questa è una forma. Così il web diventa davvero interessante 557 00:31:25,930 --> 00:31:28,770 quando i siti web l'input da parte degli utenti. 558 00:31:28,770 --> 00:31:31,700 In questa classe, il problema posto sulla programmazione web, 559 00:31:31,700 --> 00:31:33,880 non stiamo andando a fare un sito web, di per sé, 560 00:31:33,880 --> 00:31:37,570 con contenuto statico che mostra le fotografie che hai preso, 561 00:31:37,570 --> 00:31:40,010 o questo è il mio curriculum, e le cose su di me, 562 00:31:40,010 --> 00:31:42,450 perché queste cose sono relativamente facili da mettere insieme. 563 00:31:42,450 --> 00:31:44,400 E 'difficile fare le cose belle sul Web, 564 00:31:44,400 --> 00:31:46,390 ma almeno tirare su il contenuto è piuttosto banale. 565 00:31:46,390 --> 00:31:49,380 Ma le cose si fanno davvero interessanti quando qualcuno può visitare il tuo sito web 566 00:31:49,380 --> 00:31:52,260 e fornire input e possono compilare i moduli, 567 00:31:52,260 --> 00:31:55,800 può spuntare caselle di controllo e può interagire con il tuo sito web. 568 00:31:55,800 --> 00:31:57,780 E in effetti, probabilmente, ogni sito web che ti interessano 569 00:31:57,780 --> 00:32:00,710 in questi giorni, in ogni dettaglio, è in qualche modo interattivo. 570 00:32:00,710 --> 00:32:03,110 Facebook, Google, e simili, che prendono l'input dell'utente 571 00:32:03,110 --> 00:32:05,100 e produrre output personalizzati. 572 00:32:05,100 --> 00:32:07,780 >> Quindi cerchiamo di iniziare a farlo ora. Transizione Let ora 573 00:32:07,780 --> 00:32:11,150 da solo usando HTML per il markup di contenuti statici 574 00:32:11,150 --> 00:32:14,790 come invece un meccanismo di consegna per il contenuto dinamico. 575 00:32:14,790 --> 00:32:17,350 E verso questo fine, cerchiamo di implementare il nostro motore di ricerca. 576 00:32:17,350 --> 00:32:20,820 Facciamo come segue. Ecco il tag form. 577 00:32:20,820 --> 00:32:24,090 L'attributo azione specifica che quando l'utente compila questo modulo 578 00:32:24,090 --> 00:32:28,400 con la loro tastiera, sarà presentato a questo URL qui. 579 00:32:28,400 --> 00:32:31,230 Quindi sono tipo di imbroglio. E 'intenzione di portarci un po' di più 580 00:32:31,230 --> 00:32:33,780 di una classe per implementare l'intero motore di ricerca, 581 00:32:33,780 --> 00:32:35,880 quindi ci basta fare il front-end, per così dire. 582 00:32:35,880 --> 00:32:38,650 Faremo la parte che permette all'utente di cercare, e noi sorta di punt a Google 583 00:32:38,650 --> 00:32:40,950 la parte più difficile di trovare i risultati della ricerca, 584 00:32:40,950 --> 00:32:43,520 ma, in particolare, ho intenzione di parlare al server web di Google 585 00:32:43,520 --> 00:32:46,710 utilizzando uno dei due metodi molto popolare. 586 00:32:46,710 --> 00:32:50,000 Una fase di arrivare, un altro, che saremo finalmente vedere, di essere posta, 587 00:32:50,000 --> 00:32:52,660 anche se ci sono altri che sono meno spesso utilizzati. 588 00:32:52,660 --> 00:32:56,440 Quindi, ottenere solo evoca l'idea di, voglio ottenere alcuni contenuti, ottenere alcuni risultati di ricerca. 589 00:32:56,440 --> 00:32:58,440 Questo, si può forse intuire cosa fa. 590 00:32:58,440 --> 00:33:01,900 Questo è un tipo di input, è, infatti, andando a guardare come un campo di testo, 591 00:33:01,900 --> 00:33:05,200 e il nome di tale ingresso, il nome della variabile che, per così dire, 592 00:33:05,200 --> 00:33:08,610 sarà q per la query per convenzione. 593 00:33:08,610 --> 00:33:11,700 E ancora, il tipo di questo ingresso non sarà una casella di controllo; 594 00:33:11,700 --> 00:33:13,890 non sarà un menu, ma sarà un campo di testo 595 00:33:13,890 --> 00:33:18,060 come indicato da questo attributo qui, e questa casella di testo, 596 00:33:18,060 --> 00:33:20,680 come un'interruzione di riga, è o c'è o non c'è. 597 00:33:20,680 --> 00:33:24,480 Quindi abbiamo un elemento vuoto con la barra all'interno di quel tag. 598 00:33:24,480 --> 00:33:28,050 Poi ho intenzione di mettere una interruzione di linea, e si può, forse, indovinate un po 'questo sta per fare. 599 00:33:28,050 --> 00:33:30,210 Questo è un altro tipo di input del form. 600 00:33:30,210 --> 00:33:32,350 >> Questo sta per essere utilizzato per l'invio del modulo. 601 00:33:32,350 --> 00:33:36,140 Quindi questo sarà il grosso pulsante che l'utente può fare clic per inviare il modulo, 602 00:33:36,140 --> 00:33:40,800 e l'etichetta su questo pulsante sarà 'CS50 ricerca.' 603 00:33:40,800 --> 00:33:44,170 Chiudi forma, corpo vicino, vicino HTML. 604 00:33:44,170 --> 00:33:46,280 Vediamo cosa abbiamo in forma di questa pagina web. 605 00:33:46,280 --> 00:33:48,260 Permettetemi quindi di andare al mio browser, 606 00:33:48,260 --> 00:33:50,360 lasciami andare, ancora, per host locale. 607 00:33:50,360 --> 00:33:54,650 Questo è ancora index.html, quindi se voglio vedere il file chiamato search0, 608 00:33:54,650 --> 00:33:59,710 Posso semplicemente fare / search0.html, immettere - 609 00:33:59,710 --> 00:34:01,880 e il primo dei miei errori. 610 00:34:01,880 --> 00:34:04,400 Cosa sta succedendo? Io chiaramente non hai il permesso 611 00:34:04,400 --> 00:34:06,430 per accedere a questo file, per qualche ragione. 612 00:34:06,430 --> 00:34:10,170 Ma questo perché, a differenza del lavoro che abbiamo fatto finora in C, 613 00:34:10,170 --> 00:34:14,340 in cui i programmi che scrivi si presume che siano runable da te, 614 00:34:14,340 --> 00:34:17,590 eseguibile da te, che non è proprio il caso sul web, 615 00:34:17,590 --> 00:34:21,010 per cui a volte si potrebbe desiderare di creare file su un server, 616 00:34:21,010 --> 00:34:23,310 ma non si desidera che il mondo intero di essere in grado di vederli. 617 00:34:23,310 --> 00:34:25,469 Piuttosto, si desidera che il mondo a vedere alcuni file 618 00:34:25,469 --> 00:34:27,730 ma non gli altri, solo per amor di privacy. 619 00:34:27,730 --> 00:34:30,730 Quindi è più di un opt-in base a quando si sta facendo le cose sul web. 620 00:34:30,730 --> 00:34:32,810 E adesso lasciatemi in realtà digitare ls qui, 621 00:34:32,810 --> 00:34:37,440 e vedere i file che ho, a meno di ricordare che se faccio ls-l per lungo tempo, 622 00:34:37,440 --> 00:34:41,520 Vado a prendere una lista più lunga che mi dà qualche dettaglio in più su questi file 623 00:34:41,520 --> 00:34:45,139 che ora sono, in realtà, per la prima volta importanti per noi. 624 00:34:45,139 --> 00:34:47,840 Si noti che in fondo a destra sono i nomi dei miei file, 625 00:34:47,840 --> 00:34:50,690 e poi il momento in cui essi sono stati da ultimo modificati o copiati. 626 00:34:50,690 --> 00:34:54,370 Questo numero: ecco che cosa? Ti ricordi? 627 00:34:54,370 --> 00:34:56,400 La dimensione in byte, quanto è grande il file è. 628 00:34:56,400 --> 00:34:59,520 >> Quindi, mi sembra di avere un qualche tipo di logo qui che è più grande di tutti gli altri file. 629 00:34:59,520 --> 00:35:03,610 Questo è quello che sono, questo è quello che sono e quello che sono dentro di gruppo 630 00:35:03,610 --> 00:35:07,430 Ma poi, qui a sinistra è un po 'criptico della sequenza, 631 00:35:07,430 --> 00:35:10,040 e abbiamo parlato, credo, brevemente in passato, 632 00:35:10,040 --> 00:35:12,050 ma questo ha a che fare con le autorizzazioni. 633 00:35:12,050 --> 00:35:14,020 E anche se questo è un po 'confuso, 634 00:35:14,020 --> 00:35:17,270 RW significa probabilmente lettura e scrittura. 635 00:35:17,270 --> 00:35:22,560 Così si scopre che questi trattini denotano diversi set di autorizzazioni per persone diverse. 636 00:35:22,560 --> 00:35:24,730 E il modello è, essenzialmente, come segue. 637 00:35:24,730 --> 00:35:27,650 Quando si vede una sequenza di trattini qui, hanno il seguente aspetto. 638 00:35:27,650 --> 00:35:30,450 C'è un trattino, poi ci sono altri tre trattini, 639 00:35:30,450 --> 00:35:33,390 poi c'è un altro tre, poi ci sono altri tre. 640 00:35:33,390 --> 00:35:36,800 Il primo è un trattino orizzontale o il suo annuncio per directory. 641 00:35:36,800 --> 00:35:40,220 Così che si è abbastanza facile. Se si tratta di una cartella, si dice d, altrimenti è un trattino. 642 00:35:40,220 --> 00:35:44,080 Ci sono un paio di altri casi, ma per ora ci interessa solo i file e le directory. 643 00:35:44,080 --> 00:35:48,090 Questi tre trattini - e ho inserito artificialmente gli spazi. 644 00:35:48,090 --> 00:35:50,490 Erano, ovviamente, non c'è quando li abbiamo visti poco fa. 645 00:35:50,490 --> 00:35:52,900 Queste sono le autorizzazioni del proprietario del file, 646 00:35:52,900 --> 00:35:55,840 e richiamare da un secondo che fa è stato lettura e scrittura. 647 00:35:55,840 --> 00:35:58,560 Quello era perché io, come la persona che ha creato questo file poco fa, 648 00:35:58,560 --> 00:36:01,250 Io, solo per impostazione predefinita, su un computer Linux, 649 00:36:01,250 --> 00:36:03,910 hanno la capacità di continuare a leggere e scrivere il file. 650 00:36:03,910 --> 00:36:07,170 >> Quindi il sistema operativo dà solo a me RW automaticamente. 651 00:36:07,170 --> 00:36:10,840 Quelli centrali appartengono al mio gruppo, quello degli studenti, 652 00:36:10,840 --> 00:36:14,590 che è una sorta di senso sull'apparecchio perché io sono l'unica persona che utilizza l'apparecchio. 653 00:36:14,590 --> 00:36:16,620 Quindi lasciatemi semplicemente agitare le mani a che per ora. 654 00:36:16,620 --> 00:36:19,190 Ma questi ultimi sono più importanti per il web. 655 00:36:19,190 --> 00:36:21,580 Si tratta di tutti gli altri nel mondo, e il fatto 656 00:36:21,580 --> 00:36:24,600 che ciò sia --- significa che nessun altro al mondo 657 00:36:24,600 --> 00:36:26,680 dispone di tutte le autorizzazioni a questo file. 658 00:36:26,680 --> 00:36:29,180 Chiaramente un problema, quindi ho bisogno di risolvere questo problema 659 00:36:29,180 --> 00:36:33,830 in qualche modo da dare al mondo ciò? Lettura e scrittura? 660 00:36:33,830 --> 00:36:35,850 Probabilmente è stupido, giusto? Io non voglio che nessuno sul Web 661 00:36:35,850 --> 00:36:38,530 per andare a visitare la mia pagina e in qualche modo modificare quel file, 662 00:36:38,530 --> 00:36:40,800 anche se in realtà non poteva con un file HTML, 663 00:36:40,800 --> 00:36:44,110 ma solo in linea di principio, probabilmente vogliono solo loro di essere in grado di leggerlo. 664 00:36:44,110 --> 00:36:47,910 Che cosa significa per leggerlo? Non vuol dire che stanno andando a cuore il codice HTML vero e proprio, 665 00:36:47,910 --> 00:36:51,820 ma il browser deve essere in grado di analizzare il linguaggio di markup, 666 00:36:51,820 --> 00:36:53,720 verso il basso, da sinistra a destra. 667 00:36:53,720 --> 00:36:57,990 Quindi qualcuno sul web deve essere in grado di leggere, così ho minimamente bisogno di dare r. 668 00:36:57,990 --> 00:37:00,240 Posso farlo in diversi modi, ma forse 669 00:37:00,240 --> 00:37:03,080 il più semplice è quello di eseguire questo comando qui. 670 00:37:03,080 --> 00:37:10,860 Chmod, change mode, quindi a + r in modo che tutti, tutti nel mondo + leggere, 671 00:37:10,860 --> 00:37:13,830 e poi il nome del file, search0.html. 672 00:37:13,830 --> 00:37:18,310 >> Ora, se faccio ls-l di nuovo, si noti che il file è stato modificato, 673 00:37:18,310 --> 00:37:21,440 e in effetti, ho acceso r per tutti. 674 00:37:21,440 --> 00:37:23,350 Ho anche acceso per il mio gruppo, ma va bene, 675 00:37:23,350 --> 00:37:27,150 perché se ho ripiegato su per tutti, il mio gruppo è un sottoinsieme di questo. 676 00:37:27,150 --> 00:37:31,480 Quindi va bene anche. Questo significa che solo il computer ha ora reso leggibile. 677 00:37:31,480 --> 00:37:34,430 Ora vorrei tornare al mio browser, fare clic su ricaricare. 678 00:37:34,430 --> 00:37:36,330 Ah-ah. Ora abbiamo CS50 ricerca. 679 00:37:36,330 --> 00:37:39,830 Ho ingrandito un po 'artificialmente - Motore di ricerca piuttosto orribile. 680 00:37:39,830 --> 00:37:41,930 Ma vediamo se funziona realmente. 681 00:37:41,930 --> 00:37:45,880 Primo luogo, vorrei fare un rapido controllo sanità mentale, mi permetta di controllare mouse e visualizzare il codice sorgente della pagina. 682 00:37:45,880 --> 00:37:50,780 Si noti che all'interno di Chrome che stiamo vedendo ora il codice HTML stesso che io stesso ho creato. 683 00:37:50,780 --> 00:37:55,420 Da non confondere qui, però. Non posso iniziare a cambiare il codice qui, 684 00:37:55,420 --> 00:37:59,420 perché il browser ha una visualizzazione in sola lettura di questo codice. 685 00:37:59,420 --> 00:38:06,060 Il browser ha appena chiesto dell'host locale per un file chiamato search0.html. 686 00:38:06,060 --> 00:38:09,490 Ora è pura coincidenza che l'apparecchio 687 00:38:09,490 --> 00:38:13,480 sembra essere sullo stesso computer come browser. 688 00:38:13,480 --> 00:38:20,470 Ho potuto solo, equivalentemente, hanno digitato www.facebook.com/search0.html, 689 00:38:20,470 --> 00:38:23,830 e se Facebook ha un file chiamato così, mi sarebbe poi vedere la loro HTML. 690 00:38:23,830 --> 00:38:27,360 E, naturalmente, non è possibile modificare il file che torna da Facebook, sia. 691 00:38:27,360 --> 00:38:29,360 Così ora siamo una sorta di sfocatura delle linee. 692 00:38:29,360 --> 00:38:32,130 L'apparecchio è sia un server, le pagine web, 693 00:38:32,130 --> 00:38:34,870 ma è anche un cliente, nel senso che sto usando un browser 694 00:38:34,870 --> 00:38:37,630 per parlare in realtà a quel server. 695 00:38:37,630 --> 00:38:39,610 Quindi cerchiamo di vedere se il mio motore di ricerca Google funziona. 696 00:38:39,610 --> 00:38:44,930 Lasciatemi andare avanti e cercare quick brown fox, entrare. 697 00:38:44,930 --> 00:38:47,540 E voilà, ora ho il mio motore di ricerca. 698 00:38:47,540 --> 00:38:51,460 >> Ma come funziona? 699 00:38:51,460 --> 00:38:55,380 Un po 'di un tratto, ma - e ora non si può vedere, appunto, la parte che è di interesse. 700 00:38:55,380 --> 00:38:57,370 Notate cosa succede. 701 00:38:57,370 --> 00:39:00,430 Si noti l'URL. Si scopre che tale metodo, 702 00:39:00,430 --> 00:39:02,780 chiamato ottenere, è super-semplice. 703 00:39:02,780 --> 00:39:10,270 Quando si specifica in una forma che si desidera 'ottenere' risultati da alcuni server, 704 00:39:10,270 --> 00:39:13,200 che cosa sta andando a fare è prendere quello che digitato nel modulo 705 00:39:13,200 --> 00:39:15,290 e metterlo nella URL. 706 00:39:15,290 --> 00:39:18,580 E 'intenzione di standardizzare come viene messo in l'URL come segue. 707 00:39:18,580 --> 00:39:22,290 Si noti che questo è l'URL che era il valore del mio attributo action. 708 00:39:22,290 --> 00:39:24,730 Ecco dove volevo il modulo per finire. 709 00:39:24,730 --> 00:39:26,950 Ma poi notare questo punto di domanda. 710 00:39:26,950 --> 00:39:30,230 Si tratta di una convenzione sul Web in base al quale per fornire l'input dell'utente 711 00:39:30,230 --> 00:39:35,320 a un sito Web, si aggiunge all'URL un punto interrogativo, 712 00:39:35,320 --> 00:39:38,330 e poi ci sono un sacco di coppie chiave-valore. 713 00:39:38,330 --> 00:39:42,380 Il nome di una chiave, altrimenti noto come parametro nel Web, 714 00:39:42,380 --> 00:39:46,380 allora si ha un segno di uguale, allora si ha il valore di tale parametro. 715 00:39:46,380 --> 00:39:49,810 Quindi è essenzialmente un nome di variabile e un valore variabile, 716 00:39:49,810 --> 00:39:54,250 ma i nomi di quelli delle variabili e dei valori provenienti da form HTML. 717 00:39:54,250 --> 00:39:56,250 Perché sono i plus lì, cosa ne pensi? 718 00:39:56,250 --> 00:39:59,340 Perché non è stato digitato + tra le mie parole. 719 00:39:59,340 --> 00:40:01,430 [Studente, incomprensibile] 720 00:40:01,430 --> 00:40:05,080 >> Si ', e' solo per la spaziatura. Le probabilità sono, ogni volta che hai visto un URL, 721 00:40:05,080 --> 00:40:07,320 non c'è mai gli eventuali spazi in esso, se non altro perché 722 00:40:07,320 --> 00:40:09,440 se non ci fosse, non si poteva davvero copia e incolla 723 00:40:09,440 --> 00:40:12,700 in una chat o in una e-mail, perché si spezzerebbe. 724 00:40:12,700 --> 00:40:15,420 Si desidera che il tutto sia una stringa di caratteri contigui. 725 00:40:15,450 --> 00:40:18,450 >> Così il browser è abbastanza intelligente per capire, uh-uh. 726 00:40:18,450 --> 00:40:22,610 Non basta mettere uno spazio lì. Permettetemi di codificare lo spazio in qualche modo standard. 727 00:40:22,610 --> 00:40:25,170 Una delle convenzioni per farlo è quello di avere il browser 728 00:40:25,170 --> 00:40:29,350 automaticamente messo un + in cui si sarebbe altrimenti uno spazio. 729 00:40:29,350 --> 00:40:32,140 Così ora, avviso di Google è stato un po 'user-friendly. 730 00:40:32,140 --> 00:40:34,380 Io certamente non ha creato questa pagina web, 731 00:40:34,380 --> 00:40:37,200 ma hanno precompilato proprio campo di testo 732 00:40:37,200 --> 00:40:39,490 con quello che, appunto, ho digitato trovi 733 00:40:39,490 --> 00:40:43,090 Supponiamo che io voglio cercare qualcosa di diverso, come un cane pigro. 734 00:40:43,090 --> 00:40:45,340 Posso solo digitare questo qui, ri-cerca. 735 00:40:45,340 --> 00:40:47,730 Si noti che l'URL cambia qui, 736 00:40:47,730 --> 00:40:51,390 a meno di notare poi che posso effettivamente la ricerca di tutto quello che voglio 737 00:40:51,390 --> 00:40:53,610 solo da capire come funzionano gli URL. 738 00:40:53,610 --> 00:40:56,840 Ho potuto fare gatto pigro, entrare, 739 00:40:56,840 --> 00:41:01,370 e notare ora mi sto molto pigro - dovremmo? Mi sento come dovremmo. 740 00:41:01,370 --> 00:41:09,900 Ho un gatto molto pigro. 741 00:41:09,900 --> 00:41:11,930 Bene. Questa è una delle cose più stupide che abbiamo fatto. 742 00:41:11,930 --> 00:41:17,160 Ma questo è un gatto pigro. 743 00:41:17,160 --> 00:41:19,730 In ogni caso, qual è la chiave qui da asporto? 744 00:41:19,730 --> 00:41:22,830 Ora siamo una sorta di gioco nel mondo di HTTP. 745 00:41:22,830 --> 00:41:26,050 HTML è proprio questo linguaggio di markup, tag di apertura, tag di chiusura, 746 00:41:26,050 --> 00:41:29,490 che indica al browser come visualizzare il contenuto di una pagina web. 747 00:41:29,490 --> 00:41:32,850 Ma quando si inizia la trasmissione dei dati attraverso la rete Internet 748 00:41:32,850 --> 00:41:36,290 tra browser web e server, è lì che questo protocollo 749 00:41:36,290 --> 00:41:39,370 noto come HyperText Transfer Protocol prende il sopravvento. 750 00:41:39,370 --> 00:41:42,630 Questo è il tipo di convenzione umana, quando Sam e ho stretto la mano il Lunedi, 751 00:41:42,630 --> 00:41:48,300 avviando una connessione e quindi chiudendo un, idea stessa connessione qui. 752 00:41:48,300 --> 00:41:53,100 Come sono i risultati di Google di tornare da me? 753 00:41:53,100 --> 00:41:55,290 Come il mio invio del modulo di andare a Google? 754 00:41:55,290 --> 00:41:58,160 Beh, richiama l'altro giorno che quello che sta realmente accadendo 755 00:41:58,160 --> 00:42:02,150 sotto la cappa quando si richiede una pagina web è, 756 00:42:02,150 --> 00:42:04,860 il vostro browser invia un po-criptico messaggio del tipo 757 00:42:04,860 --> 00:42:09,510 GET / HTTP/1.1 per la home page predefinita. 758 00:42:09,510 --> 00:42:13,000 >> Oppure, in questo caso, perché specificatamente richiesto precedentemente 759 00:42:13,000 --> 00:42:17,340 search0.html, questo allora sarebbe il po-criptico messaggio 760 00:42:17,340 --> 00:42:20,040 che il mio browser invia all'apparecchio. 761 00:42:20,040 --> 00:42:23,090 O, in questo caso di Google, ciò che è effettivamente inviato 762 00:42:23,090 --> 00:42:33,740 è una richiesta per / di ricerca, e quindi? q = gatto pigro, con un più lì. 763 00:42:33,740 --> 00:42:36,790 Quindi questo messaggio, che io, l'umano, non sto scrivendo, 764 00:42:36,790 --> 00:42:40,620 ma è stato inviato dal mio browser, questo è il modo HTTP accade. 765 00:42:40,620 --> 00:42:43,240 Questo è l'equivalente delle nostre mani che hanno scosso. 766 00:42:43,240 --> 00:42:46,320 Questa è la richiesta, e il server sta per inviare una risposta. 767 00:42:46,320 --> 00:42:48,560 Quindi, diamo uno sguardo a questo sotto la cappa. 768 00:42:48,560 --> 00:42:55,320 Come prima, siamo in grado di aprire questo campo speciale in un browser. 769 00:42:55,320 --> 00:42:58,720 Visualizza pagina, controllare gli elementi. 770 00:42:58,720 --> 00:43:01,550 Così sotto ispezionare elemento, notare che quello che è successo in Chrome, 771 00:43:01,550 --> 00:43:04,160 e IE e Firefox hanno meccanismi simili, 772 00:43:04,160 --> 00:43:07,370 abbiamo questi strumenti di sviluppo accessibili a noi. 773 00:43:07,370 --> 00:43:09,630 Le persone normali non utilizzare queste schede. 774 00:43:09,630 --> 00:43:11,940 Ma noi, oggi, sono interessati a quello che sta succedendo 775 00:43:11,940 --> 00:43:13,890 sotto il cofano a livello di rete. 776 00:43:13,890 --> 00:43:16,130 Quindi, se mi tiro su il livello di rete qui, 777 00:43:16,130 --> 00:43:18,510 lasciatemi andare avanti e ampliare questa finestra, 778 00:43:18,510 --> 00:43:21,840 aprire questa voce qui, e guardare le intestazioni. 779 00:43:21,840 --> 00:43:26,010 Che cosa succede quando richiedo un file da un server web 780 00:43:26,010 --> 00:43:29,410 è il mio browser invia un sacco di cose. 781 00:43:29,410 --> 00:43:32,390 E lasciate che visualizzare il codice sorgente. Così sotto intestazioni di richiesta, 782 00:43:32,390 --> 00:43:35,250 e questo è solo un po 'di Chrome mi mostra uscita di diagnosi, 783 00:43:35,250 --> 00:43:37,340 un po 'come un debugger di qualche tipo, 784 00:43:37,340 --> 00:43:40,500 notare che quello che ho messo in evidenza qui è proprio quello che 785 00:43:40,500 --> 00:43:47,060 Chrome sta inviando al server per richiedere un file chiamato search0.html. 786 00:43:47,060 --> 00:43:50,160 È significativo il server quello che pensa il suo nome è, 787 00:43:50,160 --> 00:43:52,210 grazie a questo campo due punti di accoglienza, poi c'è un po 'di 788 00:43:52,210 --> 00:43:56,950 roba abbastanza esoterico qui dentro, come qualcosa a che fare con le date e gli orari, 789 00:43:56,950 --> 00:43:59,720 qualcosa a che fare con le lingue che il browser capisce, 790 00:43:59,720 --> 00:44:02,850 ma le linee veramente importanti sono questi i primi due qui. 791 00:44:02,850 --> 00:44:05,490 >> Che cosa significa il server risponde con? Beh, se scorri verso il basso qui 792 00:44:05,490 --> 00:44:08,510 e visualizzare il codice sorgente di questa cosa, si noti che il server 793 00:44:08,510 --> 00:44:13,700 ha risposto con un messaggio un po 'criptico e, non 304 modificato. 794 00:44:13,700 --> 00:44:16,030 E 'un po' strano, in realtà vorrei provare a risolvere il problema. 795 00:44:16,030 --> 00:44:18,670 Vorrei tenere premuto MAIUSC e fare clic ricaricare qui 796 00:44:18,670 --> 00:44:22,460 per forzare il browser per rendere effettivamente richiesta per la prima volta. 797 00:44:22,460 --> 00:44:25,700 Allora lascia che lo zoom in, e vedremo ora che la risposta del server, 798 00:44:25,700 --> 00:44:28,950 perché ho tenuto turno, è 200 OK. 799 00:44:28,950 --> 00:44:31,170 Quindi, probabilmente non avete mai visto il numero 200 800 00:44:31,170 --> 00:44:33,300 in numeri il contesto del Web, ma quello che 801 00:44:33,300 --> 00:44:36,760 hai visto a volte inaspettatamente da un server? 802 00:44:36,760 --> 00:44:42,010 404, file not found, 403, proibito, 500, errore del server. 803 00:44:42,010 --> 00:44:44,890 Quindi ci sono questi codici numerici che il mondo utilizza nel Web 804 00:44:44,890 --> 00:44:47,870 per indicare gli errori, proprio come funzioni C 805 00:44:47,870 --> 00:44:51,030 può restituire errori e principale può restituire i codici di uscita. 806 00:44:51,030 --> 00:44:54,160 200, però, si vede raramente perché significa che tutto va bene. 807 00:44:54,160 --> 00:44:59,000 E 304 è probabilmente mai vedere perché ciò che sta a significare? 808 00:44:59,000 --> 00:45:03,330 Che nulla ha - vediamo se riusciamo a simulare di nuovo - 809 00:45:03,330 --> 00:45:07,170 Oh, ora non hanno collaborato. 304 ha dichiarato non modificato, 810 00:45:07,170 --> 00:45:09,170 e allora perché è stato il server anche rispondere? 811 00:45:09,170 --> 00:45:12,550 Beh, per l'efficienza, un server web automaticamente per voi, 812 00:45:12,550 --> 00:45:16,570 se il file non è stato modificato, non ritrasmettere l'intero file HTML. 813 00:45:16,570 --> 00:45:19,150 Sarà solo dire al browser non è cambiato. 814 00:45:19,150 --> 00:45:21,220 Basta usare la copia che hai già. 815 00:45:21,220 --> 00:45:22,650 Quindi c'è questo concetto di caching sul Web 816 00:45:22,650 --> 00:45:25,840 per le prestazioni, in modo da non perdere tempo e larghezza di banda rifiuti 817 00:45:25,840 --> 00:45:29,160 download di file più e più volte inutilmente. 818 00:45:29,160 --> 00:45:31,460 >> Ma questa pagina web, ora, era super-semplice, 819 00:45:31,460 --> 00:45:34,980 e si limita a mostrarmi il codice HTML che è tornato. 820 00:45:34,980 --> 00:45:40,940 Facciamo effettivamente utilizzare la scheda di rete ora di fare una ricerca su Google come quick brown fox. 821 00:45:40,940 --> 00:45:43,010 Vorrei quindi fare clic su CS50 ricerca, 822 00:45:43,010 --> 00:45:46,950 e ora, notate in fondo qui un sacco di roba è tornato 823 00:45:46,950 --> 00:45:49,900 perché quando visito un sito web vero e proprio come Google.com, 824 00:45:49,900 --> 00:45:53,520 hanno immagini, hanno testo, hanno un linguaggio chiamato JavaScript lì. 825 00:45:53,520 --> 00:45:55,940 Così ogni riga della tabella qui sotto 826 00:45:55,940 --> 00:46:01,490 rappresenta qualcosa che Google sputare in risposta alla mia richiesta singola. 827 00:46:01,490 --> 00:46:04,160 Quello che importa, però, è il primo. 828 00:46:04,160 --> 00:46:08,420 E se vado alla ricerca, richiesta, fare clic qui visualizzare il codice sorgente, 829 00:46:08,420 --> 00:46:11,300 notare che, in effetti, il messaggio criptico che il mio navigatore ha inviato 830 00:46:11,300 --> 00:46:15,010 a Google era queste due righe qui, 831 00:46:15,010 --> 00:46:18,420 seguito da alcune informazioni arcano qui che ignoreremo per ora. 832 00:46:18,420 --> 00:46:20,890 Ma notate, anche, ciò che Chrome è piuttosto comodo con, 833 00:46:20,890 --> 00:46:24,540 è anche a me mostra la stringa di query che è stato inviato in 834 00:46:24,540 --> 00:46:27,410 Quindi, piuttosto che mostrare più questo, che è stato letteralmente mandato, 835 00:46:27,410 --> 00:46:30,800 se vederlo decodificato, Chrome, solo per scopi di debug, 836 00:46:30,800 --> 00:46:34,270 per gli sviluppatori come noi, è solo mi mostra un essere umano-friendly versione di - 837 00:46:34,270 --> 00:46:36,390 non è così che si scrive volpe, a quanto pare. 838 00:46:36,390 --> 00:46:40,520 Sto notando adesso - ma è che vi mostra quello che, a quanto pare, digitato. 839 00:46:40,520 --> 00:46:45,340 Nel frattempo, la risposta che è tornato dal server è di nuovo 200 OK. 840 00:46:45,340 --> 00:46:47,930 Ma inclusi in tale risposta, ovviamente, 841 00:46:47,930 --> 00:46:51,920 se effettivamente visualizzare HTML della pagina - 842 00:46:51,920 --> 00:46:55,440 spiacenti, questo è un tasto di scelta rapida po 'andato storto oggi. 843 00:46:55,440 --> 00:46:59,020 >> Mi occupero 'di questo più tardi. Quindi, se abbiamo effettivamente visualizzare il codice sorgente della pagina, 844 00:46:59,020 --> 00:47:02,990 che posso fare qui cliccando risposta, 845 00:47:02,990 --> 00:47:10,080 questo è ciò che è stato effettivamente sputato indietro, in aggiunta a quello criptico messaggio 200 OK dal server. 846 00:47:10,080 --> 00:47:12,520 Un enigmatico, ma dove sta tutto questo proviene da? 847 00:47:12,520 --> 00:47:15,570 Bene, facciamo un'altra cosa qui. Un altro po 'criptico-comando, 848 00:47:15,570 --> 00:47:20,530 ma questo tipo di pulito, in quanto ci rivela esattamente quello che sta succedendo sotto il cofano. 849 00:47:20,530 --> 00:47:22,530 Così sono tornato sul mio Mac qui, ho collegato 850 00:47:22,530 --> 00:47:25,980 un programma chiamato SSH, Secure Shell, a un altro server 851 00:47:25,980 --> 00:47:28,940 perché la maggior parte dei computer di Harvard bloccare il comando che stiamo per eseguire 852 00:47:28,940 --> 00:47:31,640 perché c'è questo comando su alcuni server chiamato traceroute 853 00:47:31,640 --> 00:47:34,810 che permette di tracciare il percorso tra i punti a e b, 854 00:47:34,810 --> 00:47:37,020 e finora abbiamo preso tutto per scontato 855 00:47:37,020 --> 00:47:40,170 che posso digitare Google.com e in qualche modo ottenere i dati 856 00:47:40,170 --> 00:47:43,530 dalla metà strada in tutto il paese o dall'altra parte del mondo. 857 00:47:43,530 --> 00:47:45,810 Con traceroute possiamo realmente immergersi in un po 'più profonda 858 00:47:45,810 --> 00:47:49,370 su come funziona Internet, e vedere cosa sta succedendo sotto il cofano. 859 00:47:49,370 --> 00:47:54,440 Quindi cerchiamo di andare avanti e arbitrariamente tracciare un percorso, per esempio, Stanford.edu, 860 00:47:54,440 --> 00:47:57,150 che è in tutto il paese, e premi invio. 861 00:47:57,150 --> 00:47:59,380 Questo comando può essere super-veloce o super-slow, 862 00:47:59,380 --> 00:48:02,010 ma quello che stiamo vedendo ora, linea per linea, 863 00:48:02,010 --> 00:48:08,060 è ogni uno dei passi del luppolo e tra noi e Palo Alto, o Stanford, 864 00:48:08,060 --> 00:48:11,010 dove hanno il loro server web. 865 00:48:11,010 --> 00:48:16,600 Che cosa fa ognuna di queste linee rappresentano più concretamente, però? 866 00:48:16,600 --> 00:48:19,100 Un pezzo di gergo da Internet? [Studente, incomprensibile] 867 00:48:19,100 --> 00:48:21,570 >> Che cos'è? [Studente, incomprensibile] 868 00:48:21,570 --> 00:48:25,390 >> Ah, quindi non ci sono i tempi, ma che cosa ogni riga - cosa intendo per hop? 869 00:48:25,390 --> 00:48:29,140 >> Beh, ci sono queste cose su Internet chiamato router. 870 00:48:29,140 --> 00:48:33,020 E router, come suggerisce il nome, le informazioni sul percorso dal punto a al punto b. 871 00:48:33,020 --> 00:48:36,920 Ma ci sono diversi punti oltre a e b. 872 00:48:36,920 --> 00:48:40,010 Ci sono c e d, e ed f tra la riga 1, 873 00:48:40,010 --> 00:48:43,480 che risulta essere l'indirizzo IP del mio computer, 874 00:48:43,480 --> 00:48:46,890 o il mio indirizzo numerico, che identifica in modo univoco il mio computer, 875 00:48:46,890 --> 00:48:50,300 e la fase 15, che è in realtà il server web sesto, 876 00:48:50,300 --> 00:48:54,640 a quanto pare, che sto dedurre da questo, o la versione 6 del server Web a Stanford. 877 00:48:54,640 --> 00:48:56,680 Ma che specie di pulito è, si può vedere il percorso 878 00:48:56,680 --> 00:49:00,480 che la mia 0 e 1 sono prendendo dal mio computer a Stanford. 879 00:49:00,480 --> 00:49:02,500 Quindi il punto 1 è l'indirizzo del mio computer. 880 00:49:02,500 --> 00:49:05,760 Ogni computer su Internet ha un identificatore univoco che assomiglia a questo. 881 00:49:05,760 --> 00:49:08,150 Numero.numero.numero.numero. 882 00:49:08,150 --> 00:49:10,370 Da qualche parte in questo campus, probabilmente nel centro scientifico, 883 00:49:10,370 --> 00:49:16,780 è un router gateway chiamato Core 2-te83, qualunque cosa significhi, 884 00:49:16,780 --> 00:49:20,590 quindi questo è uno dei router grandi Harvard fantasia che indirizza un sacco del loro traffico. 885 00:49:20,590 --> 00:49:24,640 Ecco un altro dei router di Harvard, questo è Border Gateway, 886 00:49:24,640 --> 00:49:28,310 significato di confine è probabilmente alla periferia della città universitaria da qualche parte. 887 00:49:28,480 --> 00:49:32,790 Poi c'è nox uno, riga 4, che è Crossroads del Nord, 888 00:49:32,790 --> 00:49:35,070 che è un grande ISP, Internet Service Provider, 889 00:49:35,070 --> 00:49:37,740 che posti come Harvard collegare fino a. 890 00:49:37,740 --> 00:49:40,760 Ma poi le cose si fanno un po 'interessante in linea 6. 891 00:49:40,760 --> 00:49:45,960 Dove sono i miei bit tutto ad un tratto? Kansas. 892 00:49:45,960 --> 00:49:49,300 Il mondo ha l'abitudine di usare codici aeroportuali in un sacco di queste cose, 893 00:49:49,300 --> 00:49:52,900 o almeno abbreviazioni per gli Stati o città, 894 00:49:52,900 --> 00:49:56,490 così sembra che, in soli 60 ms, 895 00:49:56,490 --> 00:49:59,420 un pacchetto di informazioni, 0 e 1 e 'dal mio computer portatile 896 00:49:59,420 --> 00:50:03,210 ottenuto fino a Kansas, e di nuovo, in 60 ms. 897 00:50:03,210 --> 00:50:08,180 >> Inoltre, dopo Kansas, hanno preso un tour attraverso Houston, probabilmente, 898 00:50:08,180 --> 00:50:10,140 come suggerisce il nome di questo server. 899 00:50:10,140 --> 00:50:13,310 Così come un server su Internet deve avere un indirizzo numerico, 900 00:50:13,310 --> 00:50:18,360 può anche, eventualmente, avere un indirizzo un po 'più human-friendly che l'uomo si avvicinò con. 901 00:50:18,360 --> 00:50:20,510 Ora, nel passaggio 8, non sappiamo di cosa si tratta. 902 00:50:20,510 --> 00:50:22,550 A volte solo tipo di router ti ignorano, 903 00:50:22,550 --> 00:50:25,010 e solo che non rispondere alle domande, in modo che va bene. 904 00:50:25,010 --> 00:50:29,290 Quello dopo il punto 8 è apparentemente dove? L.A. 905 00:50:29,290 --> 00:50:35,290 Si noti che in soli 78 ms, ciò che ci porta gli esseri umani come 6 + ore per fare fisicamente, 906 00:50:35,290 --> 00:50:40,110 prende i pacchetti di informazioni su Internet ms da 78 a viaggiare così lontano. 907 00:50:40,110 --> 00:50:45,890 Passo 10 è a Los Angeles come bene, e passo 11 sembra essere andato a nord, nei pressi di Stanford. 908 00:50:45,890 --> 00:50:48,750 Questo è il loro router di confine, o un router di confine. 909 00:50:48,750 --> 00:50:51,240 Un paio di passi di Stanford che ci stanno ignorando, 910 00:50:51,240 --> 00:50:55,610 e, infine, si raggiunge il server web in solo 87 ms. 911 00:50:55,610 --> 00:50:57,760 Ora, tutti questi numeri, per inciso, 912 00:50:57,760 --> 00:51:00,640 solo dirvi quanto tempo ci vuole per ottenere i dati da me 913 00:51:00,640 --> 00:51:03,530 a ciascuno di questi router, e non è cumulativo. 914 00:51:03,530 --> 00:51:06,960 Ciò che questo programma non è, invia prima un messaggio, in sostanza, il primo router. 915 00:51:06,960 --> 00:51:09,490 Poi uno al secondo router, poi una terza al router, 916 00:51:09,490 --> 00:51:12,610 misurare ogni volta. Quindi, in teoria, questi tempi saranno sempre più 917 00:51:12,610 --> 00:51:14,860 o almeno molto vicini l'uno all'altro, 918 00:51:14,860 --> 00:51:18,090 e, in effetti, quelle che sono proprio qui nel campus sono super-piccole. 919 00:51:18,090 --> 00:51:20,820 Non appena si iniziano ad andare in tutto il paese, si prende i dati 920 00:51:20,820 --> 00:51:24,830 un po 'di più per viaggiare, più vicino a 100 ms, prendere o lasciare. 921 00:51:24,830 --> 00:51:28,330 Ma andiamo nella direzione opposta ora. Che ne dici di Università di Cambridge nel Regno Unito? 922 00:51:28,330 --> 00:51:32,540 Meglio invece di eseguire traceroute www.cam per Cambridge, 923 00:51:32,540 --> 00:51:36,710 . Ac per accademico,. Uk, e premi invio qui. 924 00:51:36,710 --> 00:51:38,830 E 'stato dannatamente veloce. 925 00:51:38,830 --> 00:51:43,300 I miei dati letteralmente andato a Cambridge, in Inghilterra, in quella frazione di secondo di tempo. 926 00:51:43,300 --> 00:51:45,340 >> Quindi cerchiamo di vedere il percorso che ha preso. 927 00:51:45,340 --> 00:51:47,520 Harvard, Harvard, Harvard, Crossroads del Nord, 928 00:51:47,520 --> 00:51:52,690 che è un provider di servizi Internet, e quindi questo è Crossroads del Nord, e poi bam. 929 00:51:52,690 --> 00:51:58,320 Qual è tra i punti 6 e 7, router 6 e 7? 930 00:51:58,320 --> 00:52:02,040 L'Oceano Atlantico. E stiamo dedurre questo dal fatto che 931 00:52:02,040 --> 00:52:06,530 si va da 20 ms a 80 ms qui qui. 932 00:52:06,530 --> 00:52:10,050 Quindi, qualcosa ha preso 60 ms, più o meno, da superare. 933 00:52:10,050 --> 00:52:12,910 E questo era probabilmente un corpo d'acqua. 934 00:52:12,910 --> 00:52:15,250 Cosa succede dopo? Bene, eccoci qui a Londra, 935 00:52:15,250 --> 00:52:18,860 solo dopo 88 ms. More London, più Londra, 936 00:52:18,860 --> 00:52:21,730 non so dove sia, ma si suppone che sia al di fuori di Londra, 937 00:52:21,730 --> 00:52:26,390 Cambridge qui, e finalmente - letteralmente, Università di Cambridge 938 00:52:26,390 --> 00:52:29,500 . Something.net, e poi, finalmente, nella riga 16, 939 00:52:29,500 --> 00:52:31,720 il loro server web è apparentemente chiamato Scorpius 940 00:52:31,720 --> 00:52:35,500 sotto il cofano, anche se noi lo conosciamo come www. 941 00:52:35,500 --> 00:52:38,790 Tipo di mind-blowing, credo. La prima volta che ho fatto questo, totalmente saltato la mia mente. 942 00:52:38,790 --> 00:52:41,670 Purtroppo, Harvard blocca questo tipo di traffico, tipicamente, sulla rete. 943 00:52:41,670 --> 00:52:44,340 Così non si può farlo facilmente eccellente. 944 00:52:44,340 --> 00:52:48,500 Rendetevi conto, però, questo qui è possibile. 945 00:52:48,500 --> 00:52:53,630 Bene. Prendiamo la nostra pausa di 5 minuti qui. Torneremo e tuffarsi nel profondo. 946 00:52:53,630 --> 00:53:00,850 Così siamo tornati, e abbiamo tipo di lemme lemme in merito qualche indicazione differenti qui. 947 00:53:00,850 --> 00:53:03,700 Quindi cerchiamo di riassumere esattamente quello che sta succedendo qui. 948 00:53:03,700 --> 00:53:07,990 Abbiamo iniziato la conversazione a parlare di questo linguaggio chiamato HTML. 949 00:53:07,990 --> 00:53:10,680 Anche in questo caso, non è un linguaggio di programmazione. E 'solo un linguaggio di markup 950 00:53:10,680 --> 00:53:15,490 che è in gran parte di estetica e di strutturazione dei contenuti in forma di una pagina web. 951 00:53:15,490 --> 00:53:19,220 Ma HTML, quindi, ha bisogno di qualche tipo di meccanismo 952 00:53:19,220 --> 00:53:22,870 per viaggiare tra browser web e server. 953 00:53:22,870 --> 00:53:28,360 HTML quindi una sorta di corse in cima a questa lingua, 954 00:53:28,360 --> 00:53:31,280 o più propriamente, un protocollo, noto come HTTP. 955 00:53:31,280 --> 00:53:33,730 >> E HTTP, come abbiamo visto finora, 956 00:53:33,730 --> 00:53:37,140 è una specie di analoga a questa convenzione umana di stringere la mano. 957 00:53:37,140 --> 00:53:39,940 Quando un browser vuole per richiedere una pagina da un server, 958 00:53:39,940 --> 00:53:43,450 invia questa richiesta "get" dal browser al server, 959 00:53:43,450 --> 00:53:48,040 e poi il server risponde con un numero come 200, tutto è ok, 960 00:53:48,040 --> 00:53:53,290 così come l'HTML o un numero cattivo come 404, file non trovato. 961 00:53:53,290 --> 00:53:58,220 Ma nel frattempo, HTTP sé non è Internet, per sé. 962 00:53:58,220 --> 00:54:01,550 HTTP è solo un servizio, una funzionalità di Internet 963 00:54:01,550 --> 00:54:05,530 molto simile a G chat è un altro servizio, molto simile a e-mail è un altro servizio. 964 00:54:05,530 --> 00:54:09,180 Ci sono un sacco di cose che si possono fare su Internet. 965 00:54:09,180 --> 00:54:12,670 HTTP è solo una di quelle applicazioni. 966 00:54:12,670 --> 00:54:17,210 Così in cima - HTTP è in cima a qualcosa d'altro 967 00:54:17,210 --> 00:54:21,750 che non ha menzionato per nome, si potrebbe avere sentito parlare per nome, il protocollo TCP / IP. 968 00:54:21,750 --> 00:54:25,160 Così la storia che abbiamo appena detto che non è tutto 969 00:54:25,160 --> 00:54:28,720 come i dati viaggiano dal punto a al punto b. 970 00:54:28,720 --> 00:54:30,950 E in questo caso, abbiamo visto ad un livello molto basso 971 00:54:30,950 --> 00:54:33,060 router a router a router a router, 972 00:54:33,060 --> 00:54:35,390 come i dati sono effettivamente trasmessi. 973 00:54:35,390 --> 00:54:40,510 Ma lungo la strada, che sta per incontrare impedimenti vari. 974 00:54:40,510 --> 00:54:43,770 Oltre a questi router, ci sono cose chiamate firewall su Internet, 975 00:54:43,770 --> 00:54:46,680 e così i dati, come quella stavamo trasmettendo 976 00:54:46,680 --> 00:54:49,720 da me a Stanford, da me a Cambridge, 977 00:54:49,720 --> 00:54:54,560 viene inviato, a questo livello, qualcosa chiamato un indirizzo IP. 978 00:54:54,560 --> 00:54:57,340 Lo abbiamo visto poco fa, e un indirizzo IP 979 00:54:57,340 --> 00:55:02,480 è solo un indirizzo numerico del w.x.y.z forma, 980 00:55:02,480 --> 00:55:08,070 dove ognuno di questi è tra, prendere o lasciare, 0 e 255, 981 00:55:08,070 --> 00:55:10,080 anche se non riesco a utilizzare tutti quei numeri. 982 00:55:10,080 --> 00:55:14,220 Ma ognuno di questi segnaposto è un numero compreso tra 0 e 255. 983 00:55:14,220 --> 00:55:16,820 Quindi un indirizzo IP questi giorni è di 32 bit. 984 00:55:16,820 --> 00:55:20,780 >> Ora, che ci dà gli indirizzi IP quante possibili in tutto il mondo? 985 00:55:20,780 --> 00:55:24,420 Circa 4 miliardi, perché ogni volta contiamo in potenze di 2 986 00:55:24,420 --> 00:55:27,760 tutta la strada fino a 32 di qualcosa, che di solito dà noi 4 miliardi di euro. 987 00:55:27,760 --> 00:55:30,160 Ecco, questo è un sacco di indirizzi IP, ma si potrebbe aver letto, 988 00:55:30,160 --> 00:55:32,410 oppure si può ora notare nella stampa popolare, 989 00:55:32,410 --> 00:55:36,020 una spinta verso una nuova versione di IP chiamato IPV6. 990 00:55:36,020 --> 00:55:38,290 In questo momento stiamo utilizzando la versione 4. 991 00:55:38,290 --> 00:55:41,060 In realtà non è stata una versione 5, stiamo solo saltando diritto a 6. 992 00:55:41,060 --> 00:55:46,760 Versione 6 userà 128 bit per gli indirizzi IP, che è dannatamente enorme. 993 00:55:46,760 --> 00:55:49,430 Non dobbiamo correre fuori per un bel po 'di tempo, 994 00:55:49,430 --> 00:55:52,980 ma abbiamo iniziato a corto di indirizzi IP versione 4, 995 00:55:52,980 --> 00:55:56,110 perché tutti noi le cose non solo come computer portatili e desktop, 996 00:55:56,110 --> 00:55:58,700 molti di noi hanno i telefoni, molti di noi hanno altri dispositivi 997 00:55:58,700 --> 00:56:01,600 come TiVo e simili che hanno indirizzi IP se stessi. 998 00:56:01,600 --> 00:56:03,720 Harvard stessa ha decine di migliaia di computer. 999 00:56:03,720 --> 00:56:07,970 Così il mondo è veramente a corto di indirizzi IP, almeno di questo modulo. 1000 00:56:07,970 --> 00:56:10,340 Così nel corso dei prossimi anni, si sta andando a vedere gli indirizzi 1001 00:56:10,340 --> 00:56:12,870 sui propri computer probabilmente lentamente cambiare 1002 00:56:12,870 --> 00:56:16,740 come sempre più aziende e università iniziano a supportare la versione più recente. 1003 00:56:16,740 --> 00:56:22,770 Ma un indirizzo IP non è sufficiente per un computer per richiedere dati a computer b. 1004 00:56:22,770 --> 00:56:24,950 Poiché il computer B potrebbe essere un server, 1005 00:56:24,950 --> 00:56:27,600 e un server, come ho già detto in precedenza, possono fare mazzi di cose. 1006 00:56:27,600 --> 00:56:29,940 Può ospitare pagine web, può essere un server di posta, 1007 00:56:29,940 --> 00:56:32,310 esso può essere un server Skype, può essere un server di chat G. 1008 00:56:32,310 --> 00:56:35,870 >> Tutti questi diversi servizi che possono essere forniti su un server 1009 00:56:35,870 --> 00:56:38,330 potrebbero tutti, fisicamente, sia sulla stessa macchina. 1010 00:56:38,330 --> 00:56:40,380 Quindi, oltre a indirizzi IP, 1011 00:56:40,380 --> 00:56:43,250 il mondo ha cose chiamate porte su Internet. 1012 00:56:43,250 --> 00:56:47,830 Una porta è solo un numero, per cui vi è un numero univoco per HTTP. 1013 00:56:47,830 --> 00:56:50,280 Il suo numero è 80. 1014 00:56:50,280 --> 00:56:55,870 HTTP utilizza anche il numero 443, ma più in particolare, per HTTPS criptati. 1015 00:56:55,870 --> 00:57:00,030 Ogni volta che si vede la s, per la sicurezza, che sta usando un numero diverso. 1016 00:57:00,030 --> 00:57:06,580 Ci sono altri numeri, come 25, utilizzati per qualcosa chiamato SMTP, altrimenti noto come e-mail. 1017 00:57:06,580 --> 00:57:09,620 C'è qualcosa che si chiama 22 per SSH, 1018 00:57:09,620 --> 00:57:11,850 e c'è un sacco di altri porti là fuori. 1019 00:57:11,850 --> 00:57:14,460 Ora, noi esseri umani raramente vedono questi numeri. 1020 00:57:14,460 --> 00:57:21,970 Tuttavia, quando si digita un indirizzo come http://www.facebook.com, 1021 00:57:21,970 --> 00:57:26,560 il browser è segretamente l'inserimento 80, perché si sta utilizzando il protocollo HTTP. 1022 00:57:26,560 --> 00:57:30,630 Se, invece, di tipo HTTPS, è segretamente l'inserimento di 443. 1023 00:57:30,630 --> 00:57:35,180 E siamo in grado di vedere questo tipo manualmente se mi tiro un brower 1024 00:57:35,180 --> 00:57:41,850 e andare a http://www.facebook.com:80. 1025 00:57:41,850 --> 00:57:44,550 Pertanto non citando esplicitamente solo il nome del sito web 1026 00:57:44,550 --> 00:57:47,650 ma la porta che voglio parlare, e premi invio. 1027 00:57:47,650 --> 00:57:50,170 Notate scompare, perché il browser assume, 1028 00:57:50,170 --> 00:57:53,360 oh, 80, non ho nemmeno intenzione di dimostrare che fastidio a voi. 1029 00:57:53,360 --> 00:57:56,400 Ma la ragione di questo è che se io in realtà volevo inviare una e-mail a qualcuno, 1030 00:57:56,400 --> 00:58:02,340 Vorrei davvero essere il suo invio a loro sulla porta 25, che essere SMTP. 1031 00:58:02,340 --> 00:58:04,890 Un po 'di una semplificazione eccessiva, ma alcuni di voi hanno amici 1032 00:58:04,890 --> 00:58:09,290 che in realtà il lavoro su Facebook, e che, allo stesso modo, hanno i server che ricevono e-mail. 1033 00:58:09,290 --> 00:58:12,610 >> Ogni volta che si invia una e-mail, gmail cosa sta facendo per voi 1034 00:58:12,610 --> 00:58:14,960 o Outlook o qualsiasi altro programma che si utilizza, 1035 00:58:14,960 --> 00:58:19,270 è una specie di segreto di inserire quel numero anche, 25, in questo caso. 1036 00:58:19,270 --> 00:58:24,490 È questa combinazione di indirizzo IP e numero che identifica univocamente 1037 00:58:24,490 --> 00:58:29,190 un computer su Internet e un servizio specifico su quel computer. 1038 00:58:29,190 --> 00:58:33,460 Ora, naturalmente, la maggior parte di noi hanno probabilmente mai digitato manualmente un indirizzo IP. 1039 00:58:33,460 --> 00:58:37,340 Forse avete in macchina, ma nel mondo reale, non così tanto. 1040 00:58:37,340 --> 00:58:42,750 Perché non digitare gli indirizzi IP nel browser? 1041 00:58:42,750 --> 00:58:45,860 E avrebbe funzionato, infatti, siamo in grado di vedere questo, lascia che ti mostri 1042 00:58:45,860 --> 00:58:50,000 uno altro comando che dovrebbe funzionare quasi ovunque nel campus di Harvard su un Mac o un PC. 1043 00:58:50,000 --> 00:58:53,970 C'è questo comando chiamato nslookup, ricerca del nome del server. 1044 00:58:53,970 --> 00:58:59,960 Se alzo gli occhi www.cnn.com, si scopre che la CNN ha - oh, interessante. 1045 00:58:59,960 --> 00:59:03,180 CNN ha iniziato ad usare Amazon Web Services. 1046 00:59:03,180 --> 00:59:06,380 Si potrebbe sapere di cloud computing, uno di Amazon dei grandi giocatori in cloud computing. 1047 00:59:06,380 --> 00:59:10,240 Quello che ho fatto è stato solo, ho detto, 'Dammi l'indirizzo del server web della CNN,' 1048 00:59:10,240 --> 00:59:14,090 ma si scopre che il server Web della CNN è gestito da Amazon, 1049 00:59:14,090 --> 00:59:16,030 Amazon Web Services, questo suggerisce. 1050 00:59:16,030 --> 00:59:19,680 E l'indirizzo del server è questo qui. 1051 00:59:19,680 --> 00:59:22,350 Quindi non sono sicuro se questo funziona, perché non usava Amazon. 1052 00:59:22,350 --> 00:59:32,830 Ma proviamo questo: http://, l'indirizzo IP, immettere, e - 1053 00:59:32,830 --> 00:59:35,690 sta andando a lavorare? 1054 00:59:35,690 --> 00:59:39,280 Sì. Si sta andando a lavorare. Internet è super-lento oggi. 1055 00:59:39,280 --> 00:59:43,680 Ma, in un attimo, si vedrà un po 'di notizia. 1056 00:59:43,680 --> 00:59:48,360 Ecco fatto. Bank of America è stato citato in giudizio. Bene. 1057 00:59:48,360 --> 00:59:54,000 >> Questo perché questo indirizzo IP sembra appena da sinonimo di www.cnn.com. 1058 00:59:54,000 --> 00:59:59,920 Naturalmente, sarebbe di marketing orribile da dire, visitare il sito Web all'indirizzo 50.112.94.127. 1059 00:59:59,920 --> 01:00:02,370 Non avresti mai ricordare. Quindi, anche in questi giorni si potrebbe ricordare le cose 1060 01:00:02,370 --> 01:00:07,210 come 1-800-COLLECT o mnemonica il mondo si avvicinò con i numeri di telefono. 1061 01:00:07,210 --> 01:00:09,540 Che, prima di telefoni cellulari, erano piuttosto difficile da ricordare 1062 01:00:09,540 --> 01:00:11,800 fino a quando si può semplicemente digitare e non pensarci più. 1063 01:00:11,800 --> 01:00:15,730 Così il Web, anche, ha questa convenzione di nomi e indirizzi IP, 1064 01:00:15,730 --> 01:00:17,770 e ci sono queste cose là fuori chiamato server DNS, 1065 01:00:17,770 --> 01:00:23,870 sistemi di dominio nome server, che traducono gli indirizzi IP in nomi e viceversa. 1066 01:00:23,870 --> 01:00:26,340 Quindi questo è quello che sta succedendo sotto il cofano. 1067 01:00:26,340 --> 01:00:29,540 Alla fine, abbiamo il protocollo TCP / IP, che è il protocollo di livello molto basso 1068 01:00:29,540 --> 01:00:32,570 che, in realtà, ottiene solo 0 e di 1 su Internet, 1069 01:00:32,570 --> 01:00:36,030 e lo fa mettendoli in una busta virtuale, 1070 01:00:36,030 --> 01:00:38,820 se si vuole, e scrivere all'esterno della busta 1071 01:00:38,820 --> 01:00:43,930 l'indirizzo IP di destinazione, così come il numero di porta numerica 1072 01:00:43,930 --> 01:00:47,520 del servizio su tale destinazione che si vuole parlare. 1073 01:00:47,520 --> 01:00:51,060 Nel frattempo, sulla busta c'è anche qualcosa di noto come l'indirizzo del mittente, 1074 01:00:51,060 --> 01:00:55,600 che è il vostro indirizzo IP, in modo che quando la CNN ottiene un pacchetto di informazioni da voi, 1075 01:00:55,600 --> 01:00:58,710 apre questa busta virtuale, vede che si desidera che la home page, 1076 01:00:58,710 --> 01:01:04,630 sa dalla parte mittente di questa busta virtuale a chi inviare la schiena HTML. 1077 01:01:04,630 --> 01:01:07,470 Quindi diamo un'occhiata a questo in dettaglio un po 'di più. 1078 01:01:07,470 --> 01:01:11,370 Si tratta da una società denominata Ericson, da qualche anno fa. 1079 01:01:11,370 --> 01:01:14,780 E hanno preso qualche libertà con come funziona Internet in realtà, 1080 01:01:14,780 --> 01:01:18,920 ma dipinge un quadro molto più visiva che semplice gesso qui. 1081 01:01:18,920 --> 01:01:26,690 Quindi vi do "Un po 'di Internet." 1082 01:02:26,660 --> 01:02:29,840 >> [Narratore] Per la prima volta nella storia, 1083 01:02:29,840 --> 01:02:35,260 le persone e le macchine lavorano insieme, realizzando un sogno. 1084 01:02:35,260 --> 01:02:38,910 Una forza unificante che non conosce confini geografici. 1085 01:02:38,910 --> 01:02:43,230 Senza distinzione di razza, credo o colore. 1086 01:02:43,230 --> 01:02:47,770 Una nuova era in cui la comunicazione porta veramente le persone. 1087 01:02:47,770 --> 01:02:50,070 Questo è 1088 01:02:50,070 --> 01:02:54,980 L'alba della rete. 1089 01:02:54,980 --> 01:03:04,640 Vuoi sapere come funziona? Clicca qui per iniziare il vostro viaggio in rete. 1090 01:03:04,640 --> 01:03:07,890 Ora, esattamente quello che è successo quando hai cliccato su quel link? 1091 01:03:07,890 --> 01:03:10,150 Hai iniziato un flusso di informazioni. 1092 01:03:10,150 --> 01:03:13,310 Queste informazioni viaggiano in giù nella tua mailroom personale 1093 01:03:13,310 --> 01:03:18,500 dove i pacchetti IP Sig. esso, etichetta, e lo invia sulla sua strada. 1094 01:03:18,500 --> 01:03:20,960 Ogni pacchetto è limitato nelle sue dimensioni. 1095 01:03:20,960 --> 01:03:23,880 La camera posta deve decidere come dividere le informazioni 1096 01:03:23,880 --> 01:03:26,070 e come confezionarlo. 1097 01:03:26,070 --> 01:03:29,550 Ora, il pacchetto richiede un'etichetta contenente informazioni importanti 1098 01:03:29,550 --> 01:03:35,570 come l'indirizzo del mittente, l'indirizzo del destinatario, e il tipo di pacchetto è. 1099 01:03:51,700 --> 01:03:54,980 Perché questo particolare pacchetto è di uscire su Internet, 1100 01:03:54,980 --> 01:03:57,720 si ottiene anche un indirizzo per il server proxy, 1101 01:03:57,720 --> 01:04:01,520 che ha una funzione speciale, come vedremo più avanti. 1102 01:04:01,520 --> 01:04:06,650 Il pacchetto viene ora lanciato su rete locale, o LAN. 1103 01:04:06,650 --> 01:04:10,160 La rete è utilizzata per collegare tutti i computer locali ' 1104 01:04:10,160 --> 01:04:15,900 router, stampanti, eccetera, per lo scambio di informazioni tra le mura fisiche dell'edificio. 1105 01:04:15,900 --> 01:04:20,290 La LAN è un posto abbastanza incontrollato, e, purtroppo, 1106 01:04:20,290 --> 01:04:23,950 gli incidenti possono accadere. 1107 01:04:31,190 --> 01:04:34,710 La strada della LAN è dotato di tutti i tipi di informazioni. 1108 01:04:34,710 --> 01:04:38,900 Si tratta di pacchetti IP, Novell pacchetti, i pacchetti AppleTalk. 1109 01:04:38,900 --> 01:04:41,270 Stanno andando contro il traffico, come al solito. 1110 01:04:41,270 --> 01:04:44,260 Il router locale legge l'indirizzo e, se necessario, 1111 01:04:44,260 --> 01:04:48,520 alza il pacchetto a un'altra rete. 1112 01:04:48,520 --> 01:04:54,270 Ah, il router. Un simbolo di controllo in un mondo apparentemente disorganizzata. 1113 01:04:54,270 --> 01:05:05,480 [Router borbottando e parlando a se stesso] 1114 01:05:05,480 --> 01:05:10,030 >> [Narratore] Eccolo, sistematica, incurante, metodico, 1115 01:05:10,030 --> 01:05:14,150 conservatore, a volte non del tutto a regime. 1116 01:05:14,150 --> 01:05:17,680 Ma almeno è esatto, per la maggior parte. 1117 01:05:32,270 --> 01:05:36,820 Come i pacchetti lasciano il router, si fanno strada in Internet aziendale 1118 01:05:36,820 --> 01:05:40,830 e la testa per lo switch del router. 1119 01:05:40,830 --> 01:05:46,250 Un po 'più efficiente del router, lo switch router gioca a tira e molla con i pacchetti IP, 1120 01:05:46,250 --> 01:05:48,920 abilmente loro instradamento lungo il loro cammino. 1121 01:05:48,920 --> 01:05:52,130 Un digitale 'mago del flipper,' se volete. 1122 01:05:52,130 --> 01:06:04,270 [Interruttore Router parlando a se stesso] 1123 01:06:09,830 --> 01:06:12,150 [Narratore] Come i pacchetti arrivano a destinazione, 1124 01:06:12,150 --> 01:06:14,740 stanno raccolto dalla interfaccia di rete, 1125 01:06:14,740 --> 01:06:18,040 pronto per essere inviato al livello successivo. 1126 01:06:18,040 --> 01:06:21,010 In questo caso, il proxy. 1127 01:06:21,010 --> 01:06:25,040 Il proxy è usato da molte aziende come una sorta di un uomo di mezza 1128 01:06:25,040 --> 01:06:27,630 al fine di ridurre il carico sulla connessione Internet 1129 01:06:27,630 --> 01:06:32,240 e per motivi di sicurezza, come pure. 1130 01:06:32,240 --> 01:06:38,750 Come si può vedere, i pacchetti sono tutti di dimensioni diverse a seconda del loro contenuto. 1131 01:06:55,210 --> 01:07:01,890 Il proxy si apre il pacchetto e cerca l'indirizzo Web o l'URL. 1132 01:07:01,890 --> 01:07:04,950 A seconda se l'indirizzo è accettabile, 1133 01:07:04,950 --> 01:07:08,000 il pacchetto viene inviato a Internet. 1134 01:07:13,890 --> 01:07:19,630 Vi sono, tuttavia, alcuni indirizzi che non rispondono con l'approvazione della delega. 1135 01:07:19,630 --> 01:07:25,680 Vale a dire, le linee guida aziendali o di gestione. 1136 01:07:25,680 --> 01:07:30,580 Questi sono sommariamente trattati. 1137 01:07:30,580 --> 01:07:32,410 Avremo niente di tutto questo. 1138 01:07:32,410 --> 01:07:36,350 Per coloro che lo fanno, è di nuovo sulla strada. 1139 01:07:46,850 --> 01:07:53,310 >> Il prossimo, il firewall. 1140 01:07:53,310 --> 01:07:57,410 Il firewall aziendale serve a due scopi. 1141 01:07:57,410 --> 01:08:02,420 Previene alcune cose piuttosto brutte da Internet di entrare in alla Intranet, 1142 01:08:02,420 --> 01:08:10,280 e può anche impedire che le informazioni sensibili vengano inviati su Internet. 1143 01:08:10,280 --> 01:08:12,980 Una volta attraverso il firewall, un router preleva il pacchetto 1144 01:08:12,980 --> 01:08:18,180 e lo colloca su una strada molto più stretta, o larghezza di banda, come si dice. 1145 01:08:18,180 --> 01:08:23,720 Ovviamente, la strada non è sufficientemente ampio per prenderli tutti. 1146 01:08:23,720 --> 01:08:29,319 Ora, ci si potrebbe chiedere che cosa succede a tutti quei pacchetti che non ce la fanno lungo la strada. 1147 01:08:29,319 --> 01:08:32,270 Beh, quando il signor IP non riceve un riconoscimento 1148 01:08:32,270 --> 01:08:35,000 che un pacchetto è stato ricevuto in tempo utile, 1149 01:08:35,000 --> 01:08:39,890 manda semplicemente un pacchetto sostitutivo. 1150 01:08:39,890 --> 01:08:44,760 Siamo ora pronti per entrare nel mondo di Internet. 1151 01:08:44,760 --> 01:08:49,370 Una ragnatela di reti interconnesse che abbracciano il nostro globo. 1152 01:08:49,370 --> 01:08:56,050 Qui, router e switch stabilire collegamenti tra le reti. 1153 01:08:56,050 --> 01:08:59,200 Ora, la Rete è un ambiente completamente diverso che troverete 1154 01:08:59,200 --> 01:09:01,569 entro le mura protettive della propria LAN. 1155 01:09:01,569 --> 01:09:04,060 Qui fuori, è il selvaggio West. 1156 01:09:04,060 --> 01:09:06,359 Un sacco di spazio, un sacco di opportunità, 1157 01:09:06,359 --> 01:09:09,760 un sacco di cose da esplorare e luoghi da visitare. 1158 01:09:09,760 --> 01:09:12,760 Grazie ad un controllo molto poco e regolazione, 1159 01:09:12,760 --> 01:09:18,300 nuove idee trovano terreno fertile per spingere la busta delle loro possibilità. 1160 01:09:18,300 --> 01:09:22,330 Ma a causa di questa libertà, anche certi pericoli in agguato. 1161 01:09:22,330 --> 01:09:27,000 Non saprai mai quando si incontra il ping temuta della morte, 1162 01:09:27,000 --> 01:09:29,890 una versione speciale di un ping normale richiesta, 1163 01:09:29,890 --> 01:09:35,720 che qualche idiota pensato per rovinare host ignari. 1164 01:09:35,720 --> 01:09:39,130 Il percorso dei pacchetti può essere prendere via satellite, 1165 01:09:39,130 --> 01:09:43,090 linee telefoniche, wireless o via cavo, anche transoceanica. 1166 01:09:43,090 --> 01:09:46,520 Non prendere sempre le rotte più veloci o più breve possibile, 1167 01:09:46,520 --> 01:09:50,290 ma ci arriveremo alla fine. 1168 01:09:50,290 --> 01:09:55,230 Forse è per questo che a volte è chiamato "Il World Wide Wait." 1169 01:09:55,230 --> 01:09:57,980 Ma quando tutto funziona senza problemi, 1170 01:09:57,980 --> 01:10:03,800 è possibile aggirare il mondo cinque volte alla goccia di un cappello, letteralmente. 1171 01:10:03,800 --> 01:10:08,230 E tutto al costo di una chiamata locale o meno. 1172 01:10:08,230 --> 01:10:15,070 Verso la fine della nostra destinazione, troveremo un altro firewall. 1173 01:10:15,070 --> 01:10:18,420 >> A seconda del punto di vista come un pacchetto di dati, 1174 01:10:18,420 --> 01:10:23,730 il firewall potrebbe essere un baluardo di sicurezza o un avversario temuto. 1175 01:10:23,730 --> 01:10:28,530 Tutto dipende da che parte stai e quali le vostre intenzioni sono. 1176 01:10:28,530 --> 01:10:34,990 Il firewall è stato progettato per far entrare solo i pacchetti che soddisfano i criteri. 1177 01:10:34,990 --> 01:10:39,360 Questo firewall è in funzione sulle porte 80 e 25. 1178 01:10:39,360 --> 01:10:46,630 Tutti i tentativi di entrare attraverso altre porte sono chiuse per le imprese. 1179 01:10:57,660 --> 01:11:03,480 La porta 25 è utilizzata per i pacchetti di posta, 1180 01:11:03,480 --> 01:11:10,720 mentre la porta 80 è l'ingresso per i pacchetti da Internet al server web. 1181 01:11:10,720 --> 01:11:15,080 All'interno del firewall, i pacchetti vengono proiettati in modo più approfondito. 1182 01:11:15,080 --> 01:11:17,970 Alcuni pacchetti di farlo facilmente attraverso la dogana, 1183 01:11:17,970 --> 01:11:21,420 mentre altri cercano solo un po 'dubbioso. 1184 01:11:21,420 --> 01:11:24,060 Ora, l'ufficiale firewall non è facilmente ingannare, 1185 01:11:24,060 --> 01:11:32,120 ad esempio quando questo ping pacchetto di morte cerca di travestirsi come un pacchetto ping normale. 1186 01:11:32,120 --> 01:11:37,520 [Ufficiale Firewall parlando con i pacchetti] 1187 01:11:37,520 --> 01:11:40,510 [Narratore] Per i pacchetti la fortuna di arrivare fin qui, 1188 01:11:40,510 --> 01:11:45,730 il viaggio è quasi finita. 1189 01:11:45,730 --> 01:11:52,130 E 'solo una line up sull'interfaccia da prendere fino al server web. 1190 01:11:52,130 --> 01:11:55,440 Al giorno d'oggi, un server web può essere eseguito su molte cose, 1191 01:11:55,440 --> 01:11:59,230 da un mainframe a una web cam al computer sulla scrivania. 1192 01:11:59,230 --> 01:12:01,720 Perché non è il tuo frigorifero? 1193 01:12:01,720 --> 01:12:04,870 Con la configurazione corretta, è possibile scoprire se si ha la stoffa 1194 01:12:04,870 --> 01:12:08,390 per Chicken Cacciatore, o se dovete andare a fare shopping. 1195 01:12:08,390 --> 01:12:11,760 Ricordate, questa è l'alba della rete. 1196 01:12:11,760 --> 01:12:17,310 Quasi tutto è possibile. 1197 01:12:17,310 --> 01:12:20,440 Uno per uno, i pacchetti vengono ricevuti, 1198 01:12:20,440 --> 01:12:26,320 aperto, e disfatto. 1199 01:12:26,320 --> 01:12:31,200 Le informazioni che contengono, cioè, la tua richiesta di informazioni, 1200 01:12:31,200 --> 01:12:34,830 viene inviato all'applicazione server web. 1201 01:12:41,540 --> 01:12:47,140 Pacchetto stesso è riciclato, 1202 01:12:47,140 --> 01:12:57,570 pronto per essere usato di nuovo, e riempito con le informazioni richieste, 1203 01:12:57,570 --> 01:13:03,340 affrontato, e inviato sulla via del ritorno a te. 1204 01:13:03,340 --> 01:13:13,250 Indietro oltre il firewall, router, e attraverso l'Internet. 1205 01:13:13,250 --> 01:13:21,020 Indietro attraverso il firewall aziendale 1206 01:13:21,020 --> 01:13:24,180 e sulla vostra interfaccia, 1207 01:13:24,180 --> 01:13:31,180 pronti a fornire il vostro browser web con le informazioni che hai richiesto. 1208 01:13:31,180 --> 01:13:39,840 Cioè, questa pellicola. 1209 01:13:39,840 --> 01:13:43,550 Soddisfatto con i loro sforzi, e confidando il mondo migliore, 1210 01:13:43,550 --> 01:13:50,250 i nostri pacchetti di dati fidato cavalcare beatamente nel tramonto di un altro giorno, 1211 01:13:50,250 --> 01:13:56,880 sapendo pienamente hanno servito i loro padroni bene. 1212 01:13:56,880 --> 01:14:02,560 Ora, non è che un lieto fine? 1213 01:14:02,560 --> 01:14:07,040 [Malan] Ok, adesso basta. Ci vediamo la prossima settimana. 1214 01:14:07,040 --> 01:14:10,040 [CS50.TV]