1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [RIPRODUZIONE DI BRANI MUSICALI] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Questo è CS50, e questo è l'inizio di otto settimane. 5 00:00:13,350 --> 00:00:17,510 E siamo così entusiasti di accogliere indietro, grande sorpresa, proprio Ramon del CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, un anziano in aumento che è stato trascorso gli ultimi mesi 7 00:00:22,160 --> 00:00:26,190 da luglio a Los Angeles, a Hollywood, letteralmente lavorando su un televisore nuovo di zecca 8 00:00:26,190 --> 00:00:31,930 show chiamato Colony, il creatore dei quali è in realtà un allume Harvard stesso. 9 00:00:31,930 --> 00:00:36,610 E quindi siamo molto entusiasti di vedere questo debutto sulla rete USA questo mese di gennaio. 10 00:00:36,610 --> 00:00:40,370 Quindi rimanete sintonizzati per questo, e per più Ramon per le settimane a venire. 11 00:00:40,370 --> 00:00:42,550 >> Ora so che la fine è vicina. 12 00:00:42,550 --> 00:00:47,400 E questo significa che non c'è tutto che molto resta di CS50, triste a dirsi. 13 00:00:47,400 --> 00:00:49,400 Abbiamo solo tre problema set sinistra- c'è 14 00:00:49,400 --> 00:00:52,510 problema impostato six-- che è in le mani ora o lo saranno presto, 15 00:00:52,510 --> 00:00:56,080 dovuto entro la fine week-- è destinata a colmare nostri mondi della riga di comando, dove 16 00:00:56,080 --> 00:00:59,450 abbiamo passato la maggior parte del nostro tempo utilizzando C, e il mondo della programmazione web. 17 00:00:59,450 --> 00:01:02,350 Beh, vedrete un sacco di idee preso in prestito dal lavoro linea di comando, 18 00:01:02,350 --> 00:01:04,560 ma anche un sacco di nuova e idee interessanti 19 00:01:04,560 --> 00:01:07,929 che sono anche andando a essere germano per applicazioni mobili e per la tecnologia, 20 00:01:07,929 --> 00:01:10,470 più in generale, con il quale si ragazzi sono tutti conosciamo al giorno d'oggi 21 00:01:10,470 --> 00:01:12,090 su computer portatili e telefoni e simili. 22 00:01:12,090 --> 00:01:15,220 >> Così sarete implementare non una pagina web, o un sito web 23 00:01:15,220 --> 00:01:17,620 di per sé, ma un vero e proprio web server. 24 00:01:17,620 --> 00:01:21,590 Potrai scrivere il resto di un server web scritto in C, il cui scopo nella vita 25 00:01:21,590 --> 00:01:25,410 è quello di ricevere le richieste HTTP, quelle buste virtuali Continuiamo a parlare 26 00:01:25,410 --> 00:01:29,780 su, e in realtà rispondere o con alcuni content-- statiche come un puntino HTML 27 00:01:29,780 --> 00:01:32,310 file o un punto JPEG o qualsiasi altro numero di file, 28 00:01:32,310 --> 00:01:37,070 o anche un file PHP per cui il vostro web server sta per interpretare che PHP 29 00:01:37,070 --> 00:01:38,332 codice e sputare fuori i risultati. 30 00:01:38,332 --> 00:01:40,540 Ora, vi abbiamo fornito un po 'di quadro 31 00:01:40,540 --> 00:01:43,100 per it-- infatti la codice di distribuzione per il problema 32 00:01:43,100 --> 00:01:47,496 set sei è lunga oltre 1.000 linee, un molti dei quali è commenti, per essere fair-- 33 00:01:47,496 --> 00:01:49,370 ma questo è veramente destinata essere un'opportunità 34 00:01:49,370 --> 00:01:52,570 per mettere le mani sporche di immersione in una piuttosto grande progetto 35 00:01:52,570 --> 00:01:55,570 che abbiamo molto particolare scavate pezzi di per voi, 36 00:01:55,570 --> 00:01:59,046 in modo che in realtà quando si esce e CS50 entrare nel mondo reale di programmazione 37 00:01:59,046 --> 00:02:00,920 e vogliono dilettarsi in qualsiasi numero di progetti, 38 00:02:00,920 --> 00:02:03,253 avrete molto più grande la comodità di scaricare qualche fonte 39 00:02:03,253 --> 00:02:05,020 codice, alcuni open source proiettare sul web, 40 00:02:05,020 --> 00:02:08,174 e le immersioni e fare le modifiche che si vede in forma. 41 00:02:08,174 --> 00:02:11,340 Problema impostare sette sta per essere su rendere la propria applicazione web-based 42 00:02:11,340 --> 00:02:14,140 che prende input dinamico e produce output dinamico in forma 43 00:02:14,140 --> 00:02:16,920 di un sito web etrade.com-like. 44 00:02:16,920 --> 00:02:20,800 E problema set eight si concentrerà su ancora un'altra lingua conosciuta come JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Nel frattempo, la finale progetto è all'orizzonte. 46 00:02:24,170 --> 00:02:26,800 La cosiddetta pre-proposta è dovuta una settimana a partire da oggi. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- secondo la specifica, che si trova sulla website-- di CS50 48 00:02:29,930 --> 00:02:33,260 è un'opportunità piuttosto informale per di inviare una e-mail piuttosto succinto 49 00:02:33,260 --> 00:02:35,170 sul tuo insegnamento compagno solo per avvertire lui 50 00:02:35,170 --> 00:02:38,250 o lei di cosa stai pensando, a lui o lei usare come cassa di risonanza. 51 00:02:38,250 --> 00:02:40,980 E hanno un buon senso check-- se stai pensando 52 00:02:40,980 --> 00:02:43,210 circa mordere troppo tanto o forse troppo poco, 53 00:02:43,210 --> 00:02:46,480 o forse non avete idea di sorta e vogliono impegnarsi in una conversazione. 54 00:02:46,480 --> 00:02:48,480 >> Successivamente è una proposta e rapporto di stato, 55 00:02:48,480 --> 00:02:51,860 il cosiddetto CS50 Hackathon qui a Cambridge per Harvard e Yale studenti 56 00:02:51,860 --> 00:02:52,362 allo stesso modo. 57 00:02:52,362 --> 00:02:54,320 La finale del progetto implementazione è poi dovuto. 58 00:02:54,320 --> 00:02:59,290 E poi una fiera CS50 qui, a Cambridge, così come un altro a New Haven. 59 00:02:59,290 --> 00:03:02,500 Quindi la proposta, dare un'occhiata a il sito web per tali indicazioni. 60 00:03:02,500 --> 00:03:06,530 >> Ma più eccitante, anche, è un opportunità di mettere le mani sporche, 61 00:03:06,530 --> 00:03:09,350 e le vostre menti aperte a tutta una mucchio di argomenti e gli strumenti 62 00:03:09,350 --> 00:03:12,920 e tecniche che sono accessorie al core programma del corso, 63 00:03:12,920 --> 00:03:14,810 ma comunque correlate. 64 00:03:14,810 --> 00:03:18,400 E anche pietre miliari meraviglioso per facendo progetti finali davvero cool che 65 00:03:18,400 --> 00:03:22,020 vanno ben oltre il materiale abbiamo coperto formalmente nel problema imposta o in conferenza. 66 00:03:22,020 --> 00:03:24,446 Quindi, andare al sito web del CS50 per l'intero roster di seminari. 67 00:03:24,446 --> 00:03:26,070 Se non si è registrato ancora, va bene. 68 00:03:26,070 --> 00:03:29,860 Vai avanti e firmare ancora e lo faremo follow-up con un collegamento in diretta streaming, 69 00:03:29,860 --> 00:03:31,844 il giorno e l'ora è sul sito web. 70 00:03:31,844 --> 00:03:33,760 E tutto sarà registrato e messo on-line 71 00:03:33,760 --> 00:03:35,800 se non è possibile effettuare il particolari giorni e orari. 72 00:03:35,800 --> 00:03:39,380 >> Per quanto riguarda quello che ci aspetta thereafter-- bene, naturalmente, c'è il Hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Questa foto, richiamo, di settimana a zero presi intorno a 4:00 una sera negli anni passati. 74 00:03:43,560 --> 00:03:46,900 La fiera CS50, che ancora una volta si terrà in entrambe le città. 75 00:03:46,900 --> 00:03:49,760 E poi, giusto per piantare il seme, anche se abbiamo ancora 76 00:03:49,760 --> 00:03:54,080 un mese più a sinistra di semestre, se si desidera partecipare proprio l'insegnamento di CS50 77 00:03:54,080 --> 00:03:56,770 personale, e si desidera iniziare pensando di diventare una CA, 78 00:03:56,770 --> 00:03:59,550 o insegnamento compagno, sapere che inizieremo a parlare di più che 79 00:03:59,550 --> 00:04:00,630 entro la fine semestre. 80 00:04:00,630 --> 00:04:03,470 Ma nella foto qui è la maggior parte della squadra di quest'anno. 81 00:04:03,470 --> 00:04:06,950 >> E così, PHP-- ed ero così triste la settimana scorsa che [? Allyse?] Gentilmente 82 00:04:06,950 --> 00:04:09,370 è andato allo sforzo di ottenere noi questi meravigliosi oggetti di scena 83 00:04:09,370 --> 00:04:11,720 che io non finire di utilizzare, in modo da in realtà solo guardato un po 'stupido 84 00:04:11,720 --> 00:04:15,160 che abbiamo avuto una pala seduto qui tutto giorno Mercoledì scorso, e un cucchiaino. 85 00:04:15,160 --> 00:04:17,709 Ma questa era la mia metaforica modo di cercare di dipingere 86 00:04:17,709 --> 00:04:21,600 l'immagine del perché stiamo transizione da C a un linguaggio come PHP. 87 00:04:21,600 --> 00:04:25,480 E lo stesso si potrebbe dire di qualsiasi numero di languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 o mazzi di others-- ma mentre in C, per esempio, scrivere un programma in C 89 00:04:31,270 --> 00:04:34,050 potrebbe essere tipicamente come prendere un cucchiaio come questo 90 00:04:34,050 --> 00:04:36,770 e scavando un buco nel terra, nella sabbia o sporcizia. 91 00:04:36,770 --> 00:04:39,770 PHP permette di prendere molto morsi più grandi fuori del problema, 92 00:04:39,770 --> 00:04:42,842 scrivere molto meno codice utilizzando uno strumento molto minore, 93 00:04:42,842 --> 00:04:45,050 perché c'è molto di più funzionalità ricostruito in. 94 00:04:45,050 --> 00:04:47,633 >> Ora, se fossimo davvero drammatico, avremmo qualcosa da spalare 95 00:04:47,633 --> 00:04:48,760 qui, ma così sia. 96 00:04:48,760 --> 00:04:51,370 Nel frattempo, l'altra metafora ci siamo inventati 97 00:04:51,370 --> 00:04:53,770 è, naturalmente, si potrebbe usare qualcosa come una chiave inglese 98 00:04:53,770 --> 00:04:56,610 a martellare in qualcosa di simile a un chiodo. 99 00:04:56,610 --> 00:04:58,980 Ma naturalmente, il diritto strumento per uso sta andando 100 00:04:58,980 --> 00:05:01,360 di essere non tanto la linguaggio chiamato C-- 101 00:05:01,360 --> 00:05:03,590 e ora ho solo infastidito [? Sanders,?] Probabilmente, 102 00:05:03,590 --> 00:05:07,890 ripareremo che later-- così lo strumento giusto da utilizzare spesso 103 00:05:07,890 --> 00:05:09,640 non sta per essere questo strumento più basso livello. 104 00:05:09,640 --> 00:05:13,720 E infatti, C non è un linguaggio che la maggior parte di voi sono mai intenzione di usare, 105 00:05:13,720 --> 00:05:15,590 o dovrebbe necessariamente usare di nuovo. 106 00:05:15,590 --> 00:05:18,350 >> Ed infatti, un po ' secret-- l'unica volta 107 00:05:18,350 --> 00:05:23,160 Io uso C mi è più o meno tra Settembre e dicembre di ogni caduta 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 E questo perché noi usarlo come un'opportunità 110 00:05:25,790 --> 00:05:27,852 per insegnare i fondamentali di programmazione, 111 00:05:27,852 --> 00:05:29,810 e con essa calcolatore fondamenti scientifici, i dati 112 00:05:29,810 --> 00:05:32,435 strutture, algoritmi e la like-- ma sarà molto rapidamente 113 00:05:32,435 --> 00:05:35,010 vedere ora che la sintassi e le idee alla base C 114 00:05:35,010 --> 00:05:37,530 sono così meravigliosamente trasferibili a più moderno 115 00:05:37,530 --> 00:05:41,130 linguaggi di livello superiore, come PHP e Python e Perl e Java 116 00:05:41,130 --> 00:05:46,750 e Objective-C-- in realtà, non tanto Objective-C-- ma Swift, questi recenti 117 00:05:46,750 --> 00:05:50,010 lingue che molti di voi poi dilettarsi con voi progetto finale. 118 00:05:50,010 --> 00:05:55,070 >> Quindi, senza ulteriori indugi, andiamo in realtà utilizzare PHP per risolvere alcuni problemi. 119 00:05:55,070 --> 00:06:00,230 Ricordiamo che nella fase iniziale, l'ultima settimana, abbiamo usato solo CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 abbiamo scritto un piccolo programma dinky che appena detto, "Ciao mondo". 121 00:06:02,990 --> 00:06:05,680 E poi ho salvato in un file chiamato hello.php. 122 00:06:05,680 --> 00:06:07,280 E poi ho eseguito questo comando. 123 00:06:07,280 --> 00:06:08,080 >> E perché? 124 00:06:08,080 --> 00:06:09,900 In inglese, cosa sta succedendo qui? 125 00:06:09,900 --> 00:06:12,760 Che cosa stavo facendo quando Ho eseguito questo comando? 126 00:06:12,760 --> 00:06:13,405 >> Sì? 127 00:06:13,405 --> 00:06:16,572 >> PUBBLICO: C'è qualche funzione PHP che legge ciò che è consapevole che dentro--. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bene, c'è qualche funzione PHP-- e mi permetta di essere più precisi, 129 00:06:19,696 --> 00:06:21,810 c'è un programma chiamato PHP, pseudonimo 130 00:06:21,810 --> 00:06:25,872 Un interprete, che comprende il contenuto di ciao.php, 131 00:06:25,872 --> 00:06:27,830 e interpreta superiore a basso, da sinistra a destra, 132 00:06:27,830 --> 00:06:29,590 e fa quello che dicono i comandi. 133 00:06:29,590 --> 00:06:33,320 I comandi hello.php, naturalmente, è solo fonte code-- funzioni 134 00:06:33,320 --> 00:06:35,750 e variabili e loop e simili, che noi stessi 135 00:06:35,750 --> 00:06:37,460 hanno iniziato a scrivere in PHP. 136 00:06:37,460 --> 00:06:40,240 >> Ma a differenza di C, che è un linguaggio compilato, 137 00:06:40,240 --> 00:06:42,810 PHP è sufficiente scriverlo, ed eseguirlo. 138 00:06:42,810 --> 00:06:46,420 Si salta questo passo intermediario di convertendolo in zero e uno, 139 00:06:46,420 --> 00:06:47,790 e poi eseguirlo. 140 00:06:47,790 --> 00:06:50,510 E così quello che è un aspetto positivo di questo? 141 00:06:50,510 --> 00:06:52,690 Perché stiamo saltando il passo? 142 00:06:52,690 --> 00:06:55,238 Perché linguaggi più moderni tendono a saltare questo passaggio? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Qual è stato il beneficio? 145 00:07:01,220 --> 00:07:02,080 >> O solo intuitivamente? 146 00:07:02,080 --> 00:07:04,200 Anche se non abbiamo scritto molto prima di PHP, 147 00:07:04,200 --> 00:07:07,210 ciò che è vantaggioso di non compilazione del codice ne pensi? 148 00:07:07,210 --> 00:07:08,520 No? 149 00:07:08,520 --> 00:07:09,610 Non commettere? 150 00:07:09,610 --> 00:07:11,350 Graffiare la testa? 151 00:07:11,350 --> 00:07:12,614 Già. 152 00:07:12,614 --> 00:07:13,600 >> PUBBLICO: più dinamico. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: più dinamico? 154 00:07:14,683 --> 00:07:16,032 Cosa vuoi dire? 155 00:07:16,032 --> 00:07:17,000 >> PUBBLICO: [incomprensibile] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bene, così seconda dell'ingresso, 158 00:07:22,390 --> 00:07:23,470 non c'è bisogno di compilare ogni volta. 159 00:07:23,470 --> 00:07:24,990 Ed è davvero così semplice come quello che-- 160 00:07:24,990 --> 00:07:26,990 è il punto di continuare per compilare il codice? 161 00:07:26,990 --> 00:07:29,480 Questo è solo un passo che è making-- questo sta richiedendo, 162 00:07:29,480 --> 00:07:31,900 Negli ultimi settimane, due volte più numerosi passi 163 00:07:31,900 --> 00:07:33,820 come solo in esecuzione il programma. 164 00:07:33,820 --> 00:07:36,940 E 'stato utile nel vedere che si vedere alcuni messaggi di errore e così via, 165 00:07:36,940 --> 00:07:38,720 ma è ancora solo un passo fastidioso. 166 00:07:38,720 --> 00:07:41,810 >> E così i programmatori realizzati nel corso del tempo, perché non è vero 167 00:07:41,810 --> 00:07:45,327 iniziare a scrivere le lingue che non lo fanno bisogno di questo passo abbastanza meccanico, 168 00:07:45,327 --> 00:07:47,160 in modo che può solo scrivere il codice ed eseguirlo. 169 00:07:47,160 --> 00:07:48,920 Ma quello che era il prezzo che abbiamo visto che abbiamo pagato 170 00:07:48,920 --> 00:07:50,910 Settimana scorsa, con un esempio particolare? 171 00:07:50,910 --> 00:07:51,650 Sì? 172 00:07:51,650 --> 00:07:52,370 >> Velocità. 173 00:07:52,370 --> 00:07:54,690 Così [? che cosa è?] interpreti un po 'più lento, 174 00:07:54,690 --> 00:07:57,330 in tale zero e uno sono bello e veloce per un computer 175 00:07:57,330 --> 00:08:00,070 capire, perché la CPU Intel, o qualunque cosa sia, 176 00:08:00,070 --> 00:08:03,070 solo capisce quello che sta succedendo con tali modelli di bit. 177 00:08:03,070 --> 00:08:05,370 Considerando che un interprete è un programma che realmente 178 00:08:05,370 --> 00:08:07,980 deve leggere il sorgente Ascii codice che hai scritto, 179 00:08:07,980 --> 00:08:12,700 e convertirlo, per così dire, o capire come converte in ultima analisi, 180 00:08:12,700 --> 00:08:13,525 a zero e uno. 181 00:08:13,525 --> 00:08:15,650 Quindi ci vuole solo un po ' po 'di un calo di prestazioni. 182 00:08:15,650 --> 00:08:16,858 Quindi è un po 'di un trade-off. 183 00:08:16,858 --> 00:08:21,570 Ora, se facciamo questo qui, mi permetta andare avanti e fare un esempio come segue. 184 00:08:21,570 --> 00:08:26,610 Se vado qui, nuovo file, vado per salvare questo nuovo è ciao.php. 185 00:08:26,610 --> 00:08:31,450 E ora ho intenzione di andare avanti e dire, "print ciao mondo" - 186 00:08:31,450 --> 00:08:35,130 e ricordo che posso usare di stampa, non lo faccio è necessario utilizzare la stampa-F. E ora qui, 187 00:08:35,130 --> 00:08:42,039 se faccio PHP hello.php, io huh-- non sembrano aver interpretato. 188 00:08:42,039 --> 00:08:43,412 Che cosa ho fatto di sbagliato? 189 00:08:43,412 --> 00:08:44,710 >> PUBBLICO: I braccialetti angolati. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Sì, è necessario che top parentesi angolare su. 191 00:08:47,015 --> 00:08:49,390 Quindi è seccante, ma ci si abitua in fretta. 192 00:08:49,390 --> 00:08:53,500 Se devo scrivere codice PHP, io generalmente bisogno di dire al programma, 193 00:08:53,500 --> 00:08:56,950 o dire all'interprete, hey PHP, ecco che arriva un po 'di codice PHP. 194 00:08:56,950 --> 00:09:00,440 E poi, per buona misura, vorrei chiudere questo non con questo, ma piuttosto 195 00:09:00,440 --> 00:09:03,740 con un solo angolo di domanda marchio staffa, così che ora qui, 196 00:09:03,740 --> 00:09:06,840 se corro di nuovo, ora Ottengo il risultato desiderato. 197 00:09:06,840 --> 00:09:09,820 >> Ora facciamo una leggera ottimizzazione, solo in modo che hai visto prima. 198 00:09:09,820 --> 00:09:14,040 Questa è una specie di fastidioso che io necessario eseguire PHP spazio ciao.php, 199 00:09:14,040 --> 00:09:16,060 perché in passato ho potrebbe solo scrivere barra puntino 200 00:09:16,060 --> 00:09:17,560 nome del programma, che è una specie di piacevole. 201 00:09:17,560 --> 00:09:19,420 E 'una specie di una migliore esperienza utente. 202 00:09:19,420 --> 00:09:24,160 >> Così si scopre che si può fare questo in PHP con l'io following-- 203 00:09:24,160 --> 00:09:28,780 può utilizzare questo abbastanza criptica incantation in alto qui, 204 00:09:28,780 --> 00:09:31,740 che è generalmente chiamato shebang, per cui questo è un simbolo tagliente, 205 00:09:31,740 --> 00:09:34,270 per così dire, si tratta di un botto o un punto esclamativo. 206 00:09:34,270 --> 00:09:38,490 E questo ora è il percorso di un programma su un tipico sistema Linux 207 00:09:38,490 --> 00:09:41,500 è chiamato ambiente o env. 208 00:09:41,500 --> 00:09:43,920 E questa line-- lunga storia short-- una linea solo 209 00:09:43,920 --> 00:09:48,710 dice, hey computer trovare il PHP interprete per me nell'ambiente, 210 00:09:48,710 --> 00:09:50,610 trovare nella vostra memoria, per così dire. 211 00:09:50,610 --> 00:09:54,130 >> E cosa c'è di bello ora, è che se io scendo qui, 212 00:09:54,130 --> 00:09:57,750 Posso fare puntino barra ciao puntino php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permesso negato. 214 00:09:59,000 --> 00:10:02,350 Beh, si vedrà ancora di più di questo con il problema di set di sette, se si 215 00:10:02,350 --> 00:10:04,060 non hanno già, con le autorizzazioni. 216 00:10:04,060 --> 00:10:06,510 Si scopre che ho bisogno per eseguire questo comando 217 00:10:06,510 --> 00:10:10,779 chiamato [? chamod?] per il cambiamento mode-- un plus x ciao.php. 218 00:10:10,779 --> 00:10:13,820 Ho bisogno di [incomprensibile] questo un ulteriore passo che sta dicendo il mio computer, 219 00:10:13,820 --> 00:10:16,400 rendere eseguibile ciao.php. 220 00:10:16,400 --> 00:10:21,310 E ora guarda cosa happens-- puntino taglio su hello.php, funziona solo. 221 00:10:21,310 --> 00:10:23,310 Non ho bisogno di specificare l'interprete più. 222 00:10:23,310 --> 00:10:26,680 E posso rendere ancora più bella, ancora, se a rinominare questa cosa. 223 00:10:26,680 --> 00:10:30,570 Se mi muovo ciao.php a solo Hello-- così notare in alto a sinistra, 224 00:10:30,570 --> 00:10:32,860 il nome del programma è infatti ora solo Ciao. 225 00:10:32,860 --> 00:10:37,300 Ora posso farlo sembrare un programma in C, anche se è scritto in PHP-- 226 00:10:37,300 --> 00:10:39,210 o francamente qualsiasi numero di altre lingue. 227 00:10:39,210 --> 00:10:41,480 >> Così miglioramento marginale, alcuna differenza funzionale. 228 00:10:41,480 --> 00:10:44,460 Ma è solo un po 'di curiosità ora, in modo da poter scrivere programmi 229 00:10:44,460 --> 00:10:48,989 in qualsiasi lingua, e l'utente non fa devono sapere o cura che cosa questi sono. 230 00:10:48,989 --> 00:10:51,030 Bene, diamo un'occhiata a un altro esempio convincente ora 231 00:10:51,030 --> 00:10:52,850 che ho montata in anticipo. 232 00:10:52,850 --> 00:10:54,955 E questo si chiama quote.php. 233 00:10:54,955 --> 00:10:56,740 Ed è disponibile on-line. 234 00:10:56,740 --> 00:11:00,299 E si noti che è piuttosto short-- ma è un programma a riga di comando che è 235 00:11:00,299 --> 00:11:02,840 andando a guardare in alto i prezzi delle azioni per me, che è in realtà andando 236 00:11:02,840 --> 00:11:04,230 essere pertinente al problema impostare sette. 237 00:11:04,230 --> 00:11:05,396 >> Quindi cerchiamo di vedere quello che sto facendo. 238 00:11:05,396 --> 00:11:08,640 Nella parte superiore ho la aperto staffa punto interrogativo PHP. 239 00:11:08,640 --> 00:11:13,372 Poi ho questa linea, per cui io sono che richiede un file chiamato functions.php-- 240 00:11:13,372 --> 00:11:15,080 stiamo andando a vedere più su questo in un po, 241 00:11:15,080 --> 00:11:17,340 ma questo è come C di versione di sharp includono, 242 00:11:17,340 --> 00:11:19,090 dove vuoi andare includere un altro file. 243 00:11:19,090 --> 00:11:23,720 PHP chiama richiedono, anche se ha anche una funzione di includere. 244 00:11:23,720 --> 00:11:26,861 E si scopre che è function.php solo qualcosa che ho scritto prima della lezione. 245 00:11:26,861 --> 00:11:29,860 L'ho messo nella stessa directory, perché Volevo fattore fuori del codice 246 00:11:29,860 --> 00:11:31,800 che potremmo desiderare di utilizzare altrove. 247 00:11:31,800 --> 00:11:34,560 >> Nel frattempo, si può probabilmente dedurre quello che sta succedendo qui. 248 00:11:34,560 --> 00:11:39,200 Questo è un po 'diverso da C-- ma quello che intendo per assicurare un uso corretto? 249 00:11:39,200 --> 00:11:41,180 Tradurre questo più tecnicamente. 250 00:11:41,180 --> 00:11:45,950 In quali circostanze sono io chiudere il programma, o uscire? 251 00:11:45,950 --> 00:11:47,074 Sì? 252 00:11:47,074 --> 00:11:47,990 >> PUBBLICO: Quando non si dispone di due argomenti della riga di comando. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: quando non ho di comandare gli argomenti della riga. 254 00:11:49,480 --> 00:11:52,396 E ricorda che uno di quelli argomento è il nome del programma stesso. 255 00:11:52,396 --> 00:11:55,340 E il secondo sta per essere un'altra parola digito dopo il prompt. 256 00:11:55,340 --> 00:11:57,460 Così, proprio come C, questo è il mio modo di controllare, 257 00:11:57,460 --> 00:12:00,022 ha l'utente cooperare e eseguire il programma come ho inteso? 258 00:12:00,022 --> 00:12:01,730 Ora, c'è qualcosa un po 'diverso 259 00:12:01,730 --> 00:12:04,020 con C-- prima di tutto avere questo segno del dollaro, 260 00:12:04,020 --> 00:12:07,710 e cosa un dollaro accedi indicare in PHP? 261 00:12:07,710 --> 00:12:08,440 Basta una variabile. 262 00:12:08,440 --> 00:12:11,731 Questo è tutto-- solo una variabile seguita da tutto quello che si desidera chiamare realtà. 263 00:12:11,731 --> 00:12:14,000 Si noti che c'è qualcosa manca dal mio programma PHP, 264 00:12:14,000 --> 00:12:18,210 proprio come mancava scorso settimana, contro C, che è quello che? 265 00:12:18,210 --> 00:12:21,620 >> A tipi, ma anche qualcosa d'altro. 266 00:12:21,620 --> 00:12:26,409 Non c'è qualcosa function-- funzione principale. 267 00:12:26,409 --> 00:12:27,450 Non c'è alcuna funzione principale. 268 00:12:27,450 --> 00:12:29,680 Devi solo iniziare a scrivere il codice senza avere 269 00:12:29,680 --> 00:12:32,790 di cui preoccuparsi abbastanza arbitrario convenzione di nominare qualche difetto 270 00:12:32,790 --> 00:12:33,880 funzione principale. 271 00:12:33,880 --> 00:12:36,720 Così arg C è solo molto una variabile globale 272 00:12:36,720 --> 00:12:39,049 che l'interprete mette a disposizione per me. 273 00:12:39,049 --> 00:12:40,090 Ora, questo è interessante. 274 00:12:40,090 --> 00:12:41,140 Quindi cercare roba. 275 00:12:41,140 --> 00:12:43,370 Segno del dollaro Stock è sul a sinistra, che è la mia variabile. 276 00:12:43,370 --> 00:12:45,120 Sul lato destro, c'è a quanto pare 277 00:12:45,120 --> 00:12:50,270 una funzione in PHP chiamata di ricerca che Sto passando la mia ultima riga di comando 278 00:12:50,270 --> 00:12:51,902 argomento a-- qualunque sia la parola è. 279 00:12:51,902 --> 00:12:53,610 E vedremo come questo lavora in un attimo. 280 00:12:53,610 --> 00:12:55,380 >> E poi, infine sto segnalato il prezzo. 281 00:12:55,380 --> 00:12:58,650 Sto stampando uno quota di così e così. 282 00:12:58,650 --> 00:13:02,082 E ricordate, questo è il modo in PHP-- un modo PHP-- 283 00:13:02,082 --> 00:13:04,290 dove non si ha a che fare il simbolo del dollaro S più. 284 00:13:04,290 --> 00:13:06,782 Si può solo usare le parentesi graffe e collegare una variabile. 285 00:13:06,782 --> 00:13:09,240 Non dovete preoccuparvi di utilizzando printf nello stesso modo. 286 00:13:09,240 --> 00:13:13,530 >> E per inciso, quando si mette una variabile all'interno di doppi apici come questo, 287 00:13:13,530 --> 00:13:17,370 si utilizza una tecnica di fantasia chiamato interpolazione variabile. 288 00:13:17,370 --> 00:13:20,380 Significa solo collegare la variabile qui. 289 00:13:20,380 --> 00:13:23,760 E per inciso, alcuni di voi che venite da altri ambienti di programmazione, 290 00:13:23,760 --> 00:13:26,960 Non è possibile utilizzare le virgolette singole intorno stringhe per fare questo. 291 00:13:26,960 --> 00:13:30,290 È necessario utilizzare le virgolette doppie per interpolazione variabile al lavoro. 292 00:13:30,290 --> 00:13:32,740 Altrimenti si letteralmente vedere quelle parentesi graffe. 293 00:13:32,740 --> 00:13:34,500 >> Così, infine, andiamo avanti ed eseguire questo. 294 00:13:34,500 --> 00:13:36,690 Mi permetta di fare il mio terminale un po 'più grande. 295 00:13:36,690 --> 00:13:41,940 Lasciami andare avanti e correre interno del mio elenco preventivo. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? preventivo?] citazione PHP dot PHP, 297 00:13:46,950 --> 00:13:50,290 e ho intenzione di cercare qualcosa come GOOG, che ne è il simbolo ticker, 298 00:13:50,290 --> 00:13:55,510 e una azione del suo nuovo nome, Alfabeto Inc, costa $ 717, a partire da oggi. 299 00:13:55,510 --> 00:13:58,680 Va bene, se vogliamo eseguire di nuovo, chiunque 300 00:13:58,680 --> 00:14:02,600 avere un altro ticker vogliono guardare in alto? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft credo sia questo, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Credo che Yahoo è forse quello. 303 00:14:09,720 --> 00:14:12,130 E Facebook è che. 304 00:14:12,130 --> 00:14:13,740 >> Allora, qual è il programma che fa? 305 00:14:13,740 --> 00:14:16,306 La magia sembra essere incorporato in quella funzione di ricerca. 306 00:14:16,306 --> 00:14:17,430 Quindi, diamo un rapido sguardo. 307 00:14:17,430 --> 00:14:21,815 >> Si scopre che non arriva con PHP, è in functions.php. 308 00:14:21,815 --> 00:14:23,690 E non passare attraverso questo in grande dettaglio, 309 00:14:23,690 --> 00:14:28,040 a meno di notare la parola chiave qui è che on line sei di functions.php-- 310 00:14:28,040 --> 00:14:29,440 Ho letteralmente dico funzione. 311 00:14:29,440 --> 00:14:31,050 A specificare il nome della mia funzione. 312 00:14:31,050 --> 00:14:34,330 Ho poi specificare qualsiasi argomenti, o parametri, 313 00:14:34,330 --> 00:14:36,480 Voglio che la funzione di take-- nessun tipo. 314 00:14:36,480 --> 00:14:37,580 E poi ho attuarlo. 315 00:14:37,580 --> 00:14:39,240 >> E io cenno la mia mano all'implementazione, 316 00:14:39,240 --> 00:14:42,115 perché è proprio piuttosto avanzata ora, ma vedremo di nuovo in realtà 317 00:14:42,115 --> 00:14:44,700 in una settimana in problema impostare sette. 318 00:14:44,700 --> 00:14:47,490 Ma posso pulire questo, anche. 319 00:14:47,490 --> 00:14:49,590 Ho incluso anche in il codice di oggi una versione 320 00:14:49,590 --> 00:14:52,340 di citazione, che non ha dot file PHP. 321 00:14:52,340 --> 00:14:57,270 Perché ciò che è presumibilmente al superiore del programma chiamato semplicemente citare? 322 00:14:57,270 --> 00:15:00,140 Che la cosiddetta shebang-- il incantesimo abbastanza criptico 323 00:15:00,140 --> 00:15:04,590 che dice trovano PHP e poi eseguirlo sul mio codice qui. 324 00:15:04,590 --> 00:15:07,360 >> Va bene, allora che porta noi dove abbiamo lasciato 325 00:15:07,360 --> 00:15:09,560 ultima tempo-- anche se con alcuni esempi più avanzati. 326 00:15:09,560 --> 00:15:13,980 Tutte le domande finora su PHP o cosa stiamo facendo? 327 00:15:13,980 --> 00:15:15,570 No-- tutto bene. 328 00:15:15,570 --> 00:15:16,180 Sì? 329 00:15:16,180 --> 00:15:19,610 >> AUDIENCE: All'interno del I file HTML, fanno you-- 330 00:15:19,610 --> 00:15:22,226 [? Fai ?] [? basta chiamarlo?] un [incomprensibile] file PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Bella domanda. 332 00:15:23,350 --> 00:15:26,070 In un contesto web, che siamo letteralmente su di transizione verso, 333 00:15:26,070 --> 00:15:28,028 non si utilizza la cosiddetta shebang in alto, 334 00:15:28,028 --> 00:15:31,980 perché la server-- web spesso una programma chiamato Apache o Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, o un numero qualsiasi di altri software del server Web, 336 00:15:37,470 --> 00:15:40,636 sa che quando vede un file puntino PHP, che 337 00:15:40,636 --> 00:15:42,010 dovrebbe eseguire l'interprete su di esso. 338 00:15:42,010 --> 00:15:43,468 Non sembra che in prima linea. 339 00:15:43,468 --> 00:15:45,580 Quindi questa prima presa linea è solo quando sei 340 00:15:45,580 --> 00:15:48,330 scrivendo a riga di comando programs-- che non faremo eccellente spesso, 341 00:15:48,330 --> 00:15:52,510 ma è il nostro modo di colmare nostri esempi C a ora il nostro PHP. 342 00:15:52,510 --> 00:16:00,680 >> Quindi cerchiamo di colmare davvero questo mondo dal mondo riga di comando per il web 343 00:16:00,680 --> 00:16:02,230 facendo quanto segue. 344 00:16:02,230 --> 00:16:05,090 Lasciami andare avanti e disegnare qui solo per un momento. 345 00:16:05,090 --> 00:16:09,940 Quindi, se abbiamo un server web, o meglio, se abbiamo il mio portatile qui, 346 00:16:09,940 --> 00:16:11,280 che io traggo come questo. 347 00:16:11,280 --> 00:16:14,250 E qui abbiamo la internet in qualche forma. 348 00:16:14,250 --> 00:16:18,210 E poi qui, abbiamo un server in una building-- 349 00:16:18,210 --> 00:16:20,760 questo è il modo in internet works-- e qui 350 00:16:20,760 --> 00:16:23,120 è un server con alcune luci forse. 351 00:16:23,120 --> 00:16:27,530 Che cosa sta realmente succedendo tra queste due connessioni? 352 00:16:27,530 --> 00:16:29,240 >> Quindi, in questo edificio è un web server. 353 00:16:29,240 --> 00:16:31,420 Questo è solo un computer che è l'uso di alcuni operativo 354 00:16:31,420 --> 00:16:34,561 system-- forse il software gratuito chiamato Apache, che CS50 IDE è in esecuzione. 355 00:16:34,561 --> 00:16:36,310 Così si può effettivamente pensare a questo edificio 356 00:16:36,310 --> 00:16:38,579 come la costruzione in che CSt0 IDE è memorizzato. 357 00:16:38,579 --> 00:16:40,870 Questo è dove tutti voi avete conti, dove tutti voi 358 00:16:40,870 --> 00:16:43,130 avere un proprio server web in esecuzione, tutti voi 359 00:16:43,130 --> 00:16:45,730 avere il proprio URL unici, come abbiamo iniziato a discutere, 360 00:16:45,730 --> 00:16:47,280 e vedrete più in P. definito sei. 361 00:16:47,280 --> 00:16:49,450 >> Ecco il mio computer portatile da qualche parte altro su Internet. 362 00:16:49,450 --> 00:16:54,550 E così quando visito un URL che appartiene a me, che il traffico Internet sta andando 363 00:16:54,550 --> 00:16:58,360 verso il server, il server del riceve un HTTP richiesta-- 364 00:16:58,360 --> 00:17:02,900 come ottenere index.html ed è rispondendo a quella pagina web. 365 00:17:02,900 --> 00:17:04,280 Ecco, questo è il paradigma generale. 366 00:17:04,280 --> 00:17:07,089 Mentre tutto in su fino ad ora oggi, tutto 367 00:17:07,089 --> 00:17:09,660 stava accadendo solo nel confini di questo edificio. 368 00:17:09,660 --> 00:17:12,910 Stavo usando il mio portatile, ma Sono stato collegato a CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 così tutti quei programmi stavo correndo era dentro di quel server, in sé. 370 00:17:17,369 --> 00:17:22,660 >> Ma ora, cominciamo riutilizzo di PHP di scrivere alcuni programmi reali che 371 00:17:22,660 --> 00:17:24,230 sono serviti da un server web. 372 00:17:24,230 --> 00:17:30,320 E per fare questo, ho intenzione di andare in un sacco di esempi 373 00:17:30,320 --> 00:17:33,710 che introducono questa idea qui. 374 00:17:33,710 --> 00:17:38,500 Quindi questo è una specie di un modo elegante per descrivendo un paradigma di programmazione. 375 00:17:38,500 --> 00:17:41,540 >> E infatti, come si esce CS50 o lavorare su progetti finali, 376 00:17:41,540 --> 00:17:43,520 o prendere un po 'seguire in classe, potrai iniziare 377 00:17:43,520 --> 00:17:45,740 per vedere che il world-- specialmente essendo cresciuto 378 00:17:45,740 --> 00:17:48,300 con linguaggi come C che sono super low level-- 379 00:17:48,300 --> 00:17:51,290 si rendono conto che non c'è più modi di software di scrittura. 380 00:17:51,290 --> 00:17:53,290 Ci sono certi modelli è possibile seguire, 381 00:17:53,290 --> 00:17:57,640 certi modi di organizzazione dei file e modi di nominare le funzioni, 382 00:17:57,640 --> 00:18:00,300 in modo che per farla breve, il mondo ha messo a punto 383 00:18:00,300 --> 00:18:04,340 con un sacco di sigle e nomi per modi di programmazione. 384 00:18:04,340 --> 00:18:06,260 Queste sono solo le tecniche si possono utilizzare. 385 00:18:06,260 --> 00:18:09,660 >> E uno di loro si chiama MVC, per Model View Controller. 386 00:18:09,660 --> 00:18:12,270 E questo è solo, per ora, una troppo complicato 387 00:18:12,270 --> 00:18:18,960 modo di dire come si dovrebbe tracciare un sito web basato su PHP, nel nostro caso. 388 00:18:18,960 --> 00:18:22,140 Come organizzate i vostri file, come si fa a organizzare la vostra logica, 389 00:18:22,140 --> 00:18:26,220 in un modo che rende più facile scrivere i siti web più complessi? 390 00:18:26,220 --> 00:18:28,550 E in effetti, ci prende subito arrivare con p-set sette. 391 00:18:28,550 --> 00:18:32,020 >> Così nel mondo di MVC, si sta andando per vedere che il nostro codice può generalmente 392 00:18:32,020 --> 00:18:38,290 caratterizzato sia come modello di codice, o il codice di controllo, o il codice di vista. 393 00:18:38,290 --> 00:18:40,200 E ho intenzione di semplificare eccessivamente come follows-- 394 00:18:40,200 --> 00:18:42,074 il controllore è il cervello del vostro programma, 395 00:18:42,074 --> 00:18:44,100 è dove tutti i logica interessante accade. 396 00:18:44,100 --> 00:18:46,110 Quindi tutto quello che abbiamo scrivendo finora in classe, 397 00:18:46,110 --> 00:18:48,210 è un po 'come controllore code-- sta controllando 398 00:18:48,210 --> 00:18:50,585 il programma, i loop, il vostro le condizioni, le funzioni 399 00:18:50,585 --> 00:18:52,100 e variabili e tutto il resto. 400 00:18:52,100 --> 00:18:56,160 >> Vista, ora, stanno per essere un po ' più evidente nel mondo del web. 401 00:18:56,160 --> 00:18:59,360 Una vista è l'estetica del tuo sito web. 402 00:18:59,360 --> 00:19:04,080 E 'ciò che l'utente sees-- le immagini, le tabelle HTML, i tag HTML, e tutti 403 00:19:04,080 --> 00:19:08,220 di questo, tutto dell'estetica lanuginoso roba che non è così difficile da scrivere, 404 00:19:08,220 --> 00:19:11,380 ma è proprio quello che si sta generando, è la cosiddetta vista, l'estetica. 405 00:19:11,380 --> 00:19:13,880 E il modello, in ultima analisi, sta andando essere banca dati che stuff-- 406 00:19:13,880 --> 00:19:16,510 inizieremo tuffarsi tutto tanto più questo Mercoledì. 407 00:19:16,510 --> 00:19:19,740 Così è la logica di controllo, vista è la roba estetica, 408 00:19:19,740 --> 00:19:23,500 e il modello sta per essere dove archiviamo i nostri dati effettivi. 409 00:19:23,500 --> 00:19:26,410 >> Quindi diamo un'occhiata a questo più concretamente con il seguente esempio. 410 00:19:26,410 --> 00:19:34,700 Ho intenzione di andare nel mio elenco qui di fonte odierna code-- tutte 411 00:19:34,700 --> 00:19:35,770 è disponibile online. 412 00:19:35,770 --> 00:19:37,800 E ho intenzione di andare in versione zero. 413 00:19:37,800 --> 00:19:41,500 E qui è-- chiamiamolo il versione zero del sito web di CS50. 414 00:19:41,500 --> 00:19:43,010 Non c'è molto qui a tutti. 415 00:19:43,010 --> 00:19:46,810 E 'una semplice pagina web che è probabilmente utilizzando ciò che HTML tags-- solo 416 00:19:46,810 --> 00:19:48,970 intuire dal esempi passati? 417 00:19:48,970 --> 00:19:49,890 >> Che cos'è? 418 00:19:49,890 --> 00:19:53,920 H1-- probabilmente per quel grande grassetto titolo, che il logo sulla parte superiore, CS50. 419 00:19:53,920 --> 00:19:55,080 E che altro è in gioco? 420 00:19:55,080 --> 00:19:55,799 Sì? 421 00:19:55,799 --> 00:19:56,840 PUBBLICO: Elenco non ordinato. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: list-- non ordinato in modo che il Tag UL e forse un paio di tag LI. 423 00:19:59,990 --> 00:20:01,840 E se non ti ricordi questi, onestamente non importa. 424 00:20:01,840 --> 00:20:04,170 Si tratta di una sorta di soffice dettagli di implementazione di HTML 425 00:20:04,170 --> 00:20:06,378 che rapidamente guardi in alto e sei di nuovo sulla buona strada. 426 00:20:06,378 --> 00:20:10,040 Ci concentreremo di più sulla programmazione idee che sono i pezzi più succosa. 427 00:20:10,040 --> 00:20:12,890 >> Così facciamo solo un rapido guardare il HTML-- e in effetti 428 00:20:12,890 --> 00:20:16,880 se apro la fonte vista qui, yup, Questo è esattamente quello che sta succedendo qui. 429 00:20:16,880 --> 00:20:18,440 C'è un tag UL. 430 00:20:18,440 --> 00:20:20,630 Nidificato all'interno di ciò che è per i tag LI. 431 00:20:20,630 --> 00:20:24,470 E poi ho preso in prestito l'URL del programma vero e proprio qui. 432 00:20:24,470 --> 00:20:27,570 >> E poi nel lectures.php è apparentemente 433 00:20:27,570 --> 00:20:31,640 un'altra pagina generata dinamicamente che sta per avere, diciamo see-- ah, 434 00:20:31,640 --> 00:20:33,170 le prime due settimane di lezione. 435 00:20:33,170 --> 00:20:36,600 Così settimana zero e prima settimana, diamo guardare questo-- se visualizzo sorgente della pagina, 436 00:20:36,600 --> 00:20:38,120 anche super semplice. 437 00:20:38,120 --> 00:20:42,430 Questi stanno portando a due pagine chiamato week0.php, e week1.php. 438 00:20:42,430 --> 00:20:44,040 Quindi prendere in considerazione ora che cosa sta accadendo. 439 00:20:44,040 --> 00:20:50,630 >> Quando clicco su week0.php, il mio computer portatile sta facendo una richiesta di week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Il web server, pseudonimo, CS50 IDE, sta ricevendo quella busta virtuale. 442 00:20:58,110 --> 00:21:01,040 È vedere un messaggio come, ottenere week0.php. 443 00:21:01,040 --> 00:21:05,060 Viene quindi interpretare il file, in alto in basso, da sinistra a destra- sopra il file 444 00:21:05,060 --> 00:21:07,720 chiamato week0.php-- e sputando il risultato. 445 00:21:07,720 --> 00:21:10,510 Quindi all'interno di questo file, week0.php, deve essere 446 00:21:10,510 --> 00:21:15,410 la logica di controllo che sta generando questo HTML, e ci sarà presto vedere che. 447 00:21:15,410 --> 00:21:19,340 >> Ma per ora, lascia che clicco su settimana a zero, e ora abbiamo Mercoledì e Venerdì, 448 00:21:19,340 --> 00:21:25,260 e ora abbiamo le diapositive lentamente di settimana zero. 449 00:21:25,260 --> 00:21:27,400 E si potrebbe ricordare questo da via del ritorno quando. 450 00:21:27,400 --> 00:21:29,340 Ecco, questo è tutto questo sito sta facendo. 451 00:21:29,340 --> 00:21:31,120 >> Quindi prendiamo in considerazione come si sta facendo questo. 452 00:21:31,120 --> 00:21:34,290 Ho intenzione di tornare in il codice sorgente qui, in CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 e ho intenzione di aprire index.php. 454 00:21:36,660 --> 00:21:38,910 Nella parte superiore di questo file è un po 'di commenti. 455 00:21:38,910 --> 00:21:43,000 E poi in mezzo a questo file, risulta, non è codice PHP sorta. 456 00:21:43,000 --> 00:21:47,380 Perché se non hai nessuna delle staffa aperto tag punto interrogativo PHP, 457 00:21:47,380 --> 00:21:49,180 sei libero di mettere solo HTML. 458 00:21:49,180 --> 00:21:51,480 >> Perché ciò che il PHP interprete deve fare, 459 00:21:51,480 --> 00:21:53,938 è quando si legge questo file-- dall'alto verso il basso, da sinistra a destra- sopra 460 00:21:53,938 --> 00:21:59,100 interpreta solo il codice che vede tra quelle parentesi angolari punto interrogativo. 461 00:21:59,100 --> 00:22:02,380 E qualsiasi altra cosa che non è così riconoscere come PHP, sputa appena fuori. 462 00:22:02,380 --> 00:22:05,080 E HTML è tra le cose sarà solo sputare. 463 00:22:05,080 --> 00:22:09,090 >> Quindi questo file potrebbe avere stato chiamato index.html, 464 00:22:09,090 --> 00:22:11,690 ma sto nominando tutto dot PHP come un trampolino di lancio. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- simile deludente, è solo un po 'di HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, allo stesso modo solo alcuni HTML. 467 00:22:19,840 --> 00:22:22,300 >> Ma ora mettiamola sul cappello di ingegneria proverbiale, 468 00:22:22,300 --> 00:22:24,400 e consideriamo come possiamo migliorare questo. 469 00:22:24,400 --> 00:22:28,541 Non è difficile fare questo, ma io tipo di devoluto in copia e incolla. 470 00:22:28,541 --> 00:22:31,540 E infatti, se faccio settimana due, So quello che sto probabilmente intenzione di fare? 471 00:22:31,540 --> 00:22:34,940 Ho intenzione di andare a week1.php, io sono andando a evidenziare tutto. 472 00:22:34,940 --> 00:22:39,110 Ho intenzione di copiarlo, incollarlo in un nuovo file chiamato week2.php, 473 00:22:39,110 --> 00:22:42,440 modificare alcuni URL, e per la mia strada. 474 00:22:42,440 --> 00:22:45,240 >> Quindi, sulla base di ciò che abbiamo visto in C già, 475 00:22:45,240 --> 00:22:46,860 questo non si sente bene, si spera. 476 00:22:46,860 --> 00:22:49,610 Copia, incolla raramente la soluzione giusta. 477 00:22:49,610 --> 00:22:51,429 Che cosa possiamo iniziare di fare per migliorare questo? 478 00:22:51,429 --> 00:22:53,345 Dove sono le opportunità per una migliore progettazione? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Con il tempo ho per otto settimane, sta andando 481 00:22:58,760 --> 00:23:00,910 per essere davvero fastidioso se voglio cambiare 482 00:23:00,910 --> 00:23:03,930 il carattere di ognuno di le mie pagine, o se voglio 483 00:23:03,930 --> 00:23:06,522 modificare la struttura del layout. 484 00:23:06,522 --> 00:23:08,396 Allora, dove c'è la possibilità per una migliore progettazione? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Bene, prendiamo in considerazione ciò che è condiviso tra tutti questi file. 487 00:23:15,160 --> 00:23:21,696 >> Ecco una settimana, ecco la settimana pari a zero, ecco lectures.php, 488 00:23:21,696 --> 00:23:25,790 ecco index.php-- che è lo stesso e ciò che è diverso, grosso modo, 489 00:23:25,790 --> 00:23:26,760 in ciascuno di questi file? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Sì? 492 00:23:32,060 --> 00:23:34,560 >> PUBBLICO: [incomprensibile] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bene. 495 00:23:42,160 --> 00:23:46,115 Quindi c'è un modello, sicuramente, per cui ogni volta che ho scelto io lezione, 496 00:23:46,115 --> 00:23:48,250 Dovrei essere la generazione di un molto simile pagina cercando. 497 00:23:48,250 --> 00:23:50,375 E così forse posso sfruttare il fatto che in realtà, 498 00:23:50,375 --> 00:23:53,060 abbiamo volutamente numericamente indicizzato nostro lectures-- 499 00:23:53,060 --> 00:23:55,290 se posso mettere ancora di più parole la risposta. 500 00:23:55,290 --> 00:23:59,984 E qual è l'unica cosa che, in realtà, che sta cambiando tra settimana tra-- 501 00:23:59,984 --> 00:24:02,400 e mi permetta di scorrere verso il basso in modo che sia più o meno nello stesso posto-- 502 00:24:02,400 --> 00:24:05,480 ecco settimana pari a zero, all'incirca in alto. 503 00:24:05,480 --> 00:24:12,370 Ecco una settimana, la settimana pari a zero, prima settimana, la settimana a zero. 504 00:24:12,370 --> 00:24:14,370 OK, letteralmente se sai nessun programma di sorta, 505 00:24:14,370 --> 00:24:16,286 questo è ora come un modello gioco di abbinamento. 506 00:24:16,286 --> 00:24:17,200 Quindi cosa c'è di diverso? 507 00:24:17,200 --> 00:24:18,765 Sì? 508 00:24:18,765 --> 00:24:19,777 >> PUBBLICO: [incomprensibile] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bene, così il titolo sta cambiando, sempre leggermente. 510 00:24:22,360 --> 00:24:24,010 Zero sta, naturalmente, a uno. 511 00:24:24,010 --> 00:24:25,570 Stessa cosa sta accadendo nel tag H1. 512 00:24:25,570 --> 00:24:28,790 E noi non vediamo abbastanza come facilmente, perché gli URL sono un po 'lungo. 513 00:24:28,790 --> 00:24:30,670 Ma tali URL cambiano leggermente. 514 00:24:30,670 --> 00:24:34,490 >> Ma ciò che non sta cambiando è, oserei dire, la maggior parte dei contenuti della page-- 515 00:24:34,490 --> 00:24:38,530 il tag HTML è lo stesso, la testa è lo stesso, il titolo è quasi la stessa, 516 00:24:38,530 --> 00:24:40,659 il corpo è lo stesso, e quasi tutto il resto 517 00:24:40,659 --> 00:24:42,450 è la stessa tranne quei piccoli ritocchi. 518 00:24:42,450 --> 00:24:45,310 Quindi, come possiamo fare per factoring alcuni di questo fuori? 519 00:24:45,310 --> 00:24:48,740 >> Ebbene vorrei proporre esattamente che nella versione successiva. 520 00:24:48,740 --> 00:24:53,890 Quindi, qui in versione uno, ho l'esatto stessi file, più un paio di altri. 521 00:24:53,890 --> 00:24:59,730 Ecco index.php-- e anche se non hai mai visto prima PHP, 522 00:24:59,730 --> 00:25:05,511 quello che sto facendo, probabilmente per risolvere questo problem-- in base a ciò che si vede qui? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Sì, è che una leggera l'impegno? 525 00:25:12,760 --> 00:25:13,450 No? 526 00:25:13,450 --> 00:25:16,020 Sì, andare avanti. 527 00:25:16,020 --> 00:25:17,380 >> PUBBLICO: [incomprensibile] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Sì. 529 00:25:18,380 --> 00:25:20,380 >> PUBBLICO: [incomprensibile] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Ho bisogno di te per parlare solo un po 'più forte. 532 00:25:28,669 --> 00:25:31,084 >> PUBBLICO: [incomprensibile] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bene. 535 00:25:36,660 --> 00:25:38,620 E io think-- era difficile sentire you-- ma io 536 00:25:38,620 --> 00:25:42,690 pensare a cosa vuoi arrivare è che i tag che erano comuni sulla parte superiore, 537 00:25:42,690 --> 00:25:47,710 ei tag che erano comuni sulla fondo, ora sono stati presi fuori, 538 00:25:47,710 --> 00:25:51,140 o relegati a quali file? 539 00:25:51,140 --> 00:25:53,476 Header.php e footer.php-- e stiamo andando 540 00:25:53,476 --> 00:25:55,600 di fare alcune modifiche per affrontare il problema che hai appena 541 00:25:55,600 --> 00:25:59,370 raccolto circa il cambiamento numeri, per esempio, se ho capito bene. 542 00:25:59,370 --> 00:26:02,060 >> Ma che sembra essere l'essenza di esso. 543 00:26:02,060 --> 00:26:04,820 Se ci fosse un enorme quantità di ridondanza nella parte superiore della pagina, 544 00:26:04,820 --> 00:26:06,736 e una quantità enorme di ridondanza a fondo, 545 00:26:06,736 --> 00:26:09,280 diamo letteralmente clou e tagliare fuori che il contenuto, 546 00:26:09,280 --> 00:26:13,270 metterlo in una file-- separato solo come l'idea di CSS, dove abbiamo fattorizzato 547 00:26:13,270 --> 00:26:16,710 estetica molto simili presentati in un file di punti PHP separato, 548 00:26:16,710 --> 00:26:20,340 utilizzare il richiedono mechanism-- che è come C include-- tagliente che 549 00:26:20,340 --> 00:26:23,570 è essenzialmente come dire andare afferrare i contenuti di header.php, 550 00:26:23,570 --> 00:26:25,370 e copiare e incollare qui. 551 00:26:25,370 --> 00:26:29,490 >> Ma che cosa questo significa è che ora in index.php, ho queste due righe. 552 00:26:29,490 --> 00:26:32,130 In lectures.php, ho anche avere quelle due righe. 553 00:26:32,130 --> 00:26:35,230 In week0.php, ho anche avere quelle due righe. 554 00:26:35,230 --> 00:26:38,380 >> Così ora, se voglio cambiare il titolo di tutte le mie pagine, 555 00:26:38,380 --> 00:26:40,530 o Voglio cambiare la struttura fondamentale, 556 00:26:40,530 --> 00:26:44,380 Posso cambiare ora in un solo luogo, o due intestazione e piè di pagina places--, 557 00:26:44,380 --> 00:26:45,429 rispettivamente. 558 00:26:45,429 --> 00:26:47,970 Ora di partenza del codice a guardare un po 'più criptico, giusto? 559 00:26:47,970 --> 00:26:53,590 Ma se si pensa a ciò che la pagina è doing-- se sto chiedendo week0.php, 560 00:26:53,590 --> 00:26:59,880 proprio come sul disegno sopra qui-- quando è richiesta week0.php, 561 00:26:59,880 --> 00:27:00,960 che cosa significa? 562 00:27:00,960 --> 00:27:04,410 >> Letteralmente, questo file è richiesta dal browser. 563 00:27:04,410 --> 00:27:06,240 Pseudonimo Il web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- afferra questo file week0.php, e legge 565 00:27:09,250 --> 00:27:10,780 che verso il basso, da sinistra a destra. 566 00:27:10,780 --> 00:27:15,400 Sulla linea uno, che incontra subito Staffa aperto punto interrogativo PHP, richiedere 567 00:27:15,400 --> 00:27:17,872 intestazione dot PHP, e così ciò che l'interprete PHP 568 00:27:17,872 --> 00:27:20,580 does-- che è costruito nella rete Server, perché abbiamo preconfigurati 569 00:27:20,580 --> 00:27:24,580 per you-- va automaticamente in header.php, copia i contenuti, 570 00:27:24,580 --> 00:27:25,640 li incolla qui. 571 00:27:25,640 --> 00:27:28,790 >> Ma poi gli incontri interprete punto interrogativo chiudere la parentesi, 572 00:27:28,790 --> 00:27:30,320 così è tutto fatto pensare. 573 00:27:30,320 --> 00:27:33,400 Ora sputa ciecamente le linee di due a sette, 574 00:27:33,400 --> 00:27:35,240 perché è solo HTML grezzo. 575 00:27:35,240 --> 00:27:38,470 Ottiene alla linea di otto, e fa quel stessa magia again-- l'apertura del file, 576 00:27:38,470 --> 00:27:41,460 afferrando il contenuto, e richiedendo loro o incollandoli 577 00:27:41,460 --> 00:27:42,480 in quel momento o là. 578 00:27:42,480 --> 00:27:44,210 >> Ma ho appena accennato un bug. 579 00:27:44,210 --> 00:27:48,610 Si tratta di un passo parzialmente indietro, perché se guardiamo in header.php, 580 00:27:48,610 --> 00:27:50,850 Ho tipo di taglio un angolo. 581 00:27:50,850 --> 00:27:56,250 Quale caratteristica ho dato in ordine per ottenere questo disegno discutibile meglio? 582 00:27:56,250 --> 00:27:57,305 Sì? 583 00:27:57,305 --> 00:27:58,180 PUBBLICO: [incomprensibile] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Sì, io tipo di tagliare un angolo non banale. 585 00:28:00,570 --> 00:28:04,489 Lei ha sottolineato che quello che stava cambiando è il titolo, il numero nel titolo, 586 00:28:04,489 --> 00:28:05,530 e il numero nel H1. 587 00:28:05,530 --> 00:28:08,170 Quindi la mia soluzione era, OK, facciamo solo rinominare la pagina, 588 00:28:08,170 --> 00:28:10,080 e non fare con quel problema di sorta. 589 00:28:10,080 --> 00:28:12,130 Quindi questo è un parziale di passo indietro di sicuro. 590 00:28:12,130 --> 00:28:14,300 >> Ma ciò che è degno di nota qui è che quello che ho fatto 591 00:28:14,300 --> 00:28:17,200 altrimenti ceduti fuori tutta la roba comune. 592 00:28:17,200 --> 00:28:21,520 E in footer.php, accorgo io presi tutto questo, anche se minore, 593 00:28:21,520 --> 00:28:22,790 roba comune. 594 00:28:22,790 --> 00:28:26,070 Così ho bisogno di qualche ora in grado di fare un altro passo in avanti, e fissare 595 00:28:26,070 --> 00:28:27,160 che i problemi del titolo. 596 00:28:27,160 --> 00:28:28,180 Allora, facciamo così. 597 00:28:28,180 --> 00:28:35,060 >> Lasciami andare nella mia seconda versione qui, che, ancora una volta, ha gli stessi file 598 00:28:35,060 --> 00:28:36,825 tranne una nuova aggiunta. 599 00:28:36,825 --> 00:28:38,950 Ed è un po 'più verbose, ma vediamo se ci 600 00:28:38,950 --> 00:28:40,550 può prendere in giro a parte quello che sta succedendo qui. 601 00:28:40,550 --> 00:28:45,370 Così, invece di richiedere header.php, e footer.php, 602 00:28:45,370 --> 00:28:50,180 Mi sembra di essere che richieda un solo file-- chiamato, naturalmente, helpers.php. 603 00:28:50,180 --> 00:28:52,560 E mi permetta di stipula le ora, cosa c'è dentro di helpers.php 604 00:28:52,560 --> 00:28:55,330 è solo un mucchio di funzioni che ho scritto, proprio come prima. 605 00:28:55,330 --> 00:28:57,550 Ma ho chiamato helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Ora a quanto pare, in linea tre e 10, sono 607 00:29:00,370 --> 00:29:02,840 chiamando due functions-- render intestazione, il rendering piè di pagina. 608 00:29:02,840 --> 00:29:05,040 Quelli non sono dotati di PHP, ho scritto quelle me stesso. 609 00:29:05,040 --> 00:29:07,880 E li ho messi in helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Ora, abbiamo visto solo questa sintassi una volta, ed era super breve. 611 00:29:11,210 --> 00:29:15,330 Ma questo è apparentemente un argomento rendere intestazione, la funzione. 612 00:29:15,330 --> 00:29:16,450 Perché so che? 613 00:29:16,450 --> 00:29:18,522 Bene ecco una stretta parentesi tonda, ecco una parentesi tonda aperta. 614 00:29:18,522 --> 00:29:21,230 E, naturalmente, proprio come in C, qualcosa tra quei parentesi 615 00:29:21,230 --> 00:29:23,350 è un input-- o argomento della funzione. 616 00:29:23,350 --> 00:29:26,710 >> Qual è il tipo di dati di questo argomento, sulla base di quello che ho evidenziato? 617 00:29:26,710 --> 00:29:30,820 Che cosa fanno quelle parentesi quadre indicare, sulla base di settimana scorsa? 618 00:29:30,820 --> 00:29:33,390 Sì, è un array-- in particolare un array associativo. 619 00:29:33,390 --> 00:29:35,700 E questa sintassi per ammissione è un po 'eccentrico, 620 00:29:35,700 --> 00:29:38,860 ma questo è solo di passaggio in una coppia di valori chiave. 621 00:29:38,860 --> 00:29:43,530 La chiave è, tra virgolette titolo, e il valore è CS50. 622 00:29:43,530 --> 00:29:46,220 >> Se avessimo fatto questo in C, potrebbe invece 623 00:29:46,220 --> 00:29:49,400 più simile a questo, solo tra virgolette CS50-- 624 00:29:49,400 --> 00:29:52,460 o addirittura sarebbe ricci bretelle, o qualcosa del genere in C, 625 00:29:52,460 --> 00:29:55,580 dove la chiave è zero, e il valore è CS50. 626 00:29:55,580 --> 00:29:59,840 Ma di nuovo, in PHP, anche se la sintassi è, di nuovo, un po 'strano, 627 00:29:59,840 --> 00:30:02,860 esso consente di passare in parole al posto dei numeri 628 00:30:02,860 --> 00:30:05,120 per associare i tasti con i valori. 629 00:30:05,120 --> 00:30:06,390 >> Che cosa significa tutto questo? 630 00:30:06,390 --> 00:30:09,750 Se vado in helpers.php, diamo un'occhiata a questa funzione. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, piuttosto renderHeader è la mia funzione, 632 00:30:13,620 --> 00:30:16,220 e so che perché vedo la parola chiave function qui. 633 00:30:16,220 --> 00:30:19,450 Questa è una novità da C-- apparentemente prende un argomento chiamato data-- 634 00:30:19,450 --> 00:30:22,400 ma ho potuto chiamare questa niente, ma ho chiamato i dati, 635 00:30:22,400 --> 00:30:25,090 solo per essere un po 'e clean-- basta prendere una supposizione, soprattutto 636 00:30:25,090 --> 00:30:28,173 se avete già programmato in qualche altro linguaggio di alto livello prima, qualcosa 637 00:30:28,173 --> 00:30:29,820 sopra C, concettualmente. 638 00:30:29,820 --> 00:30:33,820 >> Che cosa è uguale parentesi aperta parentesi quadra probabilmente significa? 639 00:30:33,820 --> 00:30:35,540 O che cosa potrebbe significare? 640 00:30:35,540 --> 00:30:39,660 Noi non abbiamo visto questo in C. Sì? 641 00:30:39,660 --> 00:30:40,480 >> Un array vuoto. 642 00:30:40,480 --> 00:30:45,440 In particolare, ciò significa che se l'utente non chiama renderHeader 643 00:30:45,440 --> 00:30:49,340 con un argomento, sono ancora in corso ad avere un argomento chiamato dati, 644 00:30:49,340 --> 00:30:52,327 ma il suo valore predefinito è sta per essere un array vuoto. 645 00:30:52,327 --> 00:30:53,660 Quindi è solo una bella comodità. 646 00:30:53,660 --> 00:30:56,493 Io non devo urlare presso l'utente, o dire che hai usato la mia funzione errata. 647 00:30:56,493 --> 00:30:59,849 Posso solo dare all'utente un default valore, se non mi interessa particolarmente. 648 00:30:59,849 --> 00:31:01,890 Ora questa funzione, sono andando a sventolare le mani in. 649 00:31:01,890 --> 00:31:07,620 Ma questa funzione permette estratto noi di passare queste variabili nei dati 650 00:31:07,620 --> 00:31:10,360 in header.php nel modo seguente. 651 00:31:10,360 --> 00:31:13,100 E questo è l'ultimo pezzo, Penso, della sintassi funky. 652 00:31:13,100 --> 00:31:15,860 Ecco la mia nuova versione di header.php-- esso 653 00:31:15,860 --> 00:31:20,140 diceva, letteralmente, aperto Staffa titolo CS50, e che è stato. 654 00:31:20,140 --> 00:31:21,766 E stessa cosa per l'H1. 655 00:31:21,766 --> 00:31:24,310 >> Ora si dice a quanto pare qualcosa di molto funky. 656 00:31:24,310 --> 00:31:28,030 E lasciatemi semplificare questo per un momento come segue. 657 00:31:28,030 --> 00:31:31,020 Questo è quello che ho cambiato il mio titolo di essere. 658 00:31:31,020 --> 00:31:35,140 Tuttavia, si sta facendo un po 'brutto alle staffe costantemente aperte con PHP, 659 00:31:35,140 --> 00:31:36,610 e quindi utilizzare la funzione di stampa. 660 00:31:36,610 --> 00:31:40,810 Si scopre che il PHP ha una scorciatoia notazione per questo, che è solo 661 00:31:40,810 --> 00:31:45,050 un segno di uguale, che è tecnicamente un funzione chiamata echo al posto di stampa, 662 00:31:45,050 --> 00:31:46,800 ma è la stessa cosa, in modo efficace. 663 00:31:46,800 --> 00:31:48,440 >> Che sembra proprio meglio. 664 00:31:48,440 --> 00:31:50,510 E 'solo un sintattico zucchero, se si vuole, 665 00:31:50,510 --> 00:31:52,260 che fa il mio codice aspetto un po 'meglio. 666 00:31:52,260 --> 00:31:54,010 Ma si scopre, e vedremo di nuovo 667 00:31:54,010 --> 00:31:57,420 in poco tempo, dobbiamo chiamare questa fastidiosamente funzione di lunga chiamata 668 00:31:57,420 --> 00:32:00,582 HTML caratteri speciali in PHP, perché si scopre 669 00:32:00,582 --> 00:32:02,790 ci sono alcuni ingressi che l'utente potrebbe darci, 670 00:32:02,790 --> 00:32:05,160 o che gli utenti ci potrebbe dare, che stanno per rompere il nostro sito. 671 00:32:05,160 --> 00:32:07,035 Ma staremo a vedere che il prossimo Settimana con JavaScript. 672 00:32:07,035 --> 00:32:10,740 Ma per ora, è sufficiente sapere che questo file, headers.php, semplicemente 673 00:32:10,740 --> 00:32:13,040 prende il titolo che Ho passato in, ne fanno 674 00:32:13,040 --> 00:32:17,380 che sia sicuro per essere iniettato in una rete pagina e sputa come il mio titolo 675 00:32:17,380 --> 00:32:18,640 e come il mio H1. 676 00:32:18,640 --> 00:32:24,440 Quindi, se vado in questa versione ora, notare che le lezioni ha il suo titolo di nuovo, 677 00:32:24,440 --> 00:32:28,630 Settimana zero ha il suo titolo di nuovo, e infatti, il codice HTML sto generando 678 00:32:28,630 --> 00:32:32,110 è identico a quello che la mia prima versione era-- tranne che per il mio spazio, 679 00:32:32,110 --> 00:32:35,150 perché ho iniziato la formattazione il mio codice un po 'diverso. 680 00:32:35,150 --> 00:32:38,082 Ma ho generato tutto il codice mi interessa. 681 00:32:38,082 --> 00:32:39,790 Così mi permetta di pausa per solo un attimo e vedere 682 00:32:39,790 --> 00:32:42,200 se ci sono delle domande o confusione ho creato. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Va bene, quindi cerchiamo di torcere un po 'più difficile qui 685 00:32:48,150 --> 00:32:51,500 per vedere se c'è un possibilità di miglioramento. 686 00:32:51,500 --> 00:32:56,130 Helpers.php ha avuto anche questo funzione, chiamata renderFooter. 687 00:32:56,130 --> 00:32:59,652 E ciò che è degno di nota renderHeader, e renderFooter? 688 00:32:59,652 --> 00:33:02,610 E ancora, per finalità di oggi, conoscere che la funzione estratto è solo 689 00:33:02,610 --> 00:33:08,280 il mio modo di passaggio di argomenti in header.php e footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Scusate? 692 00:33:11,780 --> 00:33:13,056 >> PUBBLICO: [incomprensibile] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Sì, ho solo cambiato il richiede la linea. 694 00:33:15,180 --> 00:33:19,410 Così letteralmente, ho commesso il peccato di copia e incolla, ancora una volta. 695 00:33:19,410 --> 00:33:21,920 Non è un numero enorme di linee, ma venire on-- 696 00:33:21,920 --> 00:33:25,220 se sto copiando e incollando tutto solo per cambiare una piccola parola, 697 00:33:25,220 --> 00:33:28,610 e quella parolina che punta Alan out è piè di pagina qui, contro intestazione qui. 698 00:33:28,610 --> 00:33:30,670 Altrimenti, tutto è identici, tranne, 699 00:33:30,670 --> 00:33:32,180 Naturalmente, i nomi della funzione. 700 00:33:32,180 --> 00:33:33,690 Che cosa potremmo fare di meglio? 701 00:33:33,690 --> 00:33:39,810 >> Ebbene vorrei aprire questa versione qui, per cui in helpers.php, 702 00:33:39,810 --> 00:33:42,300 perché non ottengo solo un po 'più intelligente di questo? 703 00:33:42,300 --> 00:33:46,410 Scrivere un po 'più complicato codice, ma lo chiamano render? 704 00:33:46,410 --> 00:33:48,470 Quindi che cosa ho cambiato radicalmente? 705 00:33:48,470 --> 00:33:51,770 >> Ci vuole un argomento now-- due argomenti, i dati ancora. 706 00:33:51,770 --> 00:33:54,444 E allora qual è la prima nome probabilmente utilizzato per, 707 00:33:54,444 --> 00:33:55,860 sulla base di ciò che stai leggendo qui? 708 00:33:55,860 --> 00:33:58,452 Anche se alcuni di sintassi è ancora nuova. 709 00:33:58,452 --> 00:33:59,660 Che cosa è il dollaro modello di segno? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Scusate? 712 00:34:03,016 --> 00:34:03,710 >> PUBBLICO: intestazione o piè di pagina. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: intestazione o piè di pagina. 714 00:34:04,510 --> 00:34:07,134 Quindi, apparentemente, ho deciso che se l'unica cosa che sta cambiando 715 00:34:07,134 --> 00:34:10,159 è quello del modello che voglio a print-- e modello 716 00:34:10,159 --> 00:34:13,100 Voglio dire questo è modello per codice che voglio uscita, 717 00:34:13,100 --> 00:34:16,350 ma voglio collegare in qualche values-- quindi se è solo un colpo di testa 718 00:34:16,350 --> 00:34:20,440 o piè di pagina, perché non ho parametrizzare che e chiamare il simbolo del dollaro argomento 719 00:34:20,440 --> 00:34:21,409 modello? 720 00:34:21,409 --> 00:34:26,250 E poi questa sintassi funky mi permette per creare un percorso in una variabile qui. 721 00:34:26,250 --> 00:34:28,030 >> Così sentiero simbolo del dollaro è una variabile. 722 00:34:28,030 --> 00:34:31,120 Che cosa significa questa sintassi fare, se si ha familiarità? 723 00:34:31,120 --> 00:34:32,512 Sì? 724 00:34:32,512 --> 00:34:34,065 >> PUBBLICO: [incomprensibile] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Esattamente. 726 00:34:34,940 --> 00:34:37,600 Se template è, tra virgolette, intestazione, o se è template, 727 00:34:37,600 --> 00:34:41,170 tra virgolette, piè di pagina, quella linea lì che ho evidenziato, linea di otto, 728 00:34:41,170 --> 00:34:46,330 è semplicemente prendendo quel nome, come intestazione, e concatenando con PHP punto. 729 00:34:46,330 --> 00:34:49,750 Quindi non abbiamo avuto questo operatore in C. Questo operatore punto è 730 00:34:49,750 --> 00:34:54,520 una cosa incredibile in PHP-- se siete familiarità con JavaScript o Java, 731 00:34:54,520 --> 00:34:56,949 è possibile utilizzare il segno più Entra a fare concatenazione. 732 00:34:56,949 --> 00:34:59,974 >> In C, è un dolore nel neck-- e mi dispiace tanto, in p-set di sei, 733 00:34:59,974 --> 00:35:02,390 si sta andando ad avere a che fare questo-- si tratta di un dolore al collo 734 00:35:02,390 --> 00:35:03,930 per concatenare le stringhe. 735 00:35:03,930 --> 00:35:04,670 Come mai? 736 00:35:04,670 --> 00:35:06,580 Beh, perché se hai una stringa che è così a lungo, 737 00:35:06,580 --> 00:35:09,538 e un'altra stringa che è così a lungo, non si può semplicemente collegarli insieme. 738 00:35:09,538 --> 00:35:11,070 Che cosa invece deve fare in C? 739 00:35:11,070 --> 00:35:11,680 Sì? 740 00:35:11,680 --> 00:35:12,380 >> PUBBLICO: [incomprensibile] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Devi malloc memoria, o utilizzare un array in pila. 742 00:35:15,090 --> 00:35:17,214 E in realtà hanno a rendere tale matrice abbastanza grande 743 00:35:17,214 --> 00:35:20,940 per adattarsi a questo, più questo, più il backslash zero. 744 00:35:20,940 --> 00:35:24,994 Poi concatenare insieme con mescolate gatto o manualmente con un ciclo for, 745 00:35:24,994 --> 00:35:26,160 o qualsiasi numero di tecniche. 746 00:35:26,160 --> 00:35:27,760 E vi mostriamo un paio di p-set di sei. 747 00:35:27,760 --> 00:35:29,080 >> E 'un dolore al collo. 748 00:35:29,080 --> 00:35:34,190 E questo è veramente quello che voglio dire su questo contro questo-- come C contro PHP. 749 00:35:34,190 --> 00:35:36,870 Basta avere molto di più funzionalità per libero, 750 00:35:36,870 --> 00:35:39,030 in modo da poter mettere a fuoco, idealmente, sul divertimento 751 00:35:39,030 --> 00:35:41,190 parte della codifica, la progetto che si desidera risolvere, 752 00:35:41,190 --> 00:35:43,190 piuttosto che le minuzie di basso livello. 753 00:35:43,190 --> 00:35:49,840 >> Quindi questo genera solo header.php o footer.php in base al quale un io chiamo. 754 00:35:49,840 --> 00:35:52,280 E in effetti se vado in index.php, avviso 755 00:35:52,280 --> 00:35:56,230 tutto ciò che è changed-- Invece di chiamando rendere intestazione o piè di pagina di rendering, 756 00:35:56,230 --> 00:36:00,230 Chiamo il rendering, seguito dal il nome del modello che voglio fare. 757 00:36:00,230 --> 00:36:02,370 E vedrai anche questo, nel problema set di sette, 758 00:36:02,370 --> 00:36:05,530 per cui permettiamo di utilizzare la stessa funzione per fare grappoli 759 00:36:05,530 --> 00:36:07,550 e mazzi di diverse pagine web. 760 00:36:07,550 --> 00:36:10,570 >> Quindi, piuttosto che soffermarsi troppo molto di più su questi details-- 761 00:36:10,570 --> 00:36:13,210 che si vedrà di nuovo in set problema seven-- diamo un'occhiata 762 00:36:13,210 --> 00:36:16,850 a oggi l'inizio di una soluzione ad un problema più interessante. 763 00:36:16,850 --> 00:36:19,310 Finora, nulla abbiamo fatto ha dati salvati. 764 00:36:19,310 --> 00:36:22,920 In realtà, l'unica volta che abbiamo mai risparmiato qualcosa che abbiamo fatto in questa classe 765 00:36:22,920 --> 00:36:31,030 è quando abbiamo avuto una semplice demo per un po ' indietro, per cui abbiamo utilizzato il file IO in C, 766 00:36:31,030 --> 00:36:34,520 e penso che ho digitato il mio nome, e Il nome di Hannah, e il nome di Maria, 767 00:36:34,520 --> 00:36:37,610 o forse il nome di Andy, e allora abbiamo risparmiato un file-- CSV 768 00:36:37,610 --> 00:36:39,430 virgole file di valori separati. 769 00:36:39,430 --> 00:36:43,530 >> E abbiamo usato fopen-- penso abbiamo usato fprintf come ricordo, 770 00:36:43,530 --> 00:36:44,910 e abbiamo salvato un file. 771 00:36:44,910 --> 00:36:46,920 Ora, che è il più semplice sotto forma di un database. 772 00:36:46,920 --> 00:36:50,230 Se si vuole fare un sito web per la Programma Frosh messaggi istantanei, in base alle quali matricole 773 00:36:50,230 --> 00:36:53,390 possono registrarsi per uno sport, è in posizione ideale voler fare qualcosa con quei dati. 774 00:36:53,390 --> 00:36:55,370 La scorsa settimana, non abbiamo fatto niente con il data-- abbiamo appena detto, 775 00:36:55,370 --> 00:36:56,661 siete registrati, non proprio. 776 00:36:56,661 --> 00:36:58,950 O forse Ho contattato il Proctor, e che è stato. 777 00:36:58,950 --> 00:37:02,110 >> Ma sarebbe bello se potessi dare che Proctor un file CSV, 778 00:37:02,110 --> 00:37:03,340 come un file di Excel. 779 00:37:03,340 --> 00:37:05,090 O meglio ancora, sarebbe bello se potessi 780 00:37:05,090 --> 00:37:08,830 mettere i nomi di quegli utenti e dormitorio nomi e tutto questo 781 00:37:08,830 --> 00:37:11,740 in un database che solo vive per sempre, 782 00:37:11,740 --> 00:37:13,530 fino a quando ho scelto di cancellare i dati. 783 00:37:13,530 --> 00:37:15,645 Un database che permette me per richiedere informazioni. 784 00:37:15,645 --> 00:37:18,070 E in effetti, questo è ciò che un database. 785 00:37:18,070 --> 00:37:20,470 >> Introduciamo oggi, e la prossima settimana, anche, una tecnologia 786 00:37:20,470 --> 00:37:25,020 chiamato SQL-- una Structured Query Lingua, che è un altro linguaggio. 787 00:37:25,020 --> 00:37:28,750 E 'essenzialmente una programmazione lingua, ma per i database. 788 00:37:28,750 --> 00:37:31,760 E un database per ora, solo pensare come una versione super di fantasia 789 00:37:31,760 --> 00:37:35,710 di Microsoft Excel o Google Fogli di calcolo, o numeri di Apple. 790 00:37:35,710 --> 00:37:39,950 È generalmente un programma che permette di memorizzare un intero gruppo di dati 791 00:37:39,950 --> 00:37:43,960 in righe e colonne, piuttosto come si potrebbe in Excel. 792 00:37:43,960 --> 00:37:47,100 >> Ma ciò che è bello, soprattutto se non siamo super-familiarità con Excel, 793 00:37:47,100 --> 00:37:52,040 quello che SQL permette di fare è interrogare questo informazioni scrivendo righe di codice 794 00:37:52,040 --> 00:37:55,220 dove è possibile, anche se il database ha un milione di righe in esso, 795 00:37:55,220 --> 00:37:57,190 si possono trovare le cose super veloce. 796 00:37:57,190 --> 00:37:59,950 In realtà, è particolarmente Excel male a grandi insiemi di dati. 797 00:37:59,950 --> 00:38:02,460 Ed infatti, fino a qualche anni fa, si è rivelato 798 00:38:02,460 --> 00:38:08,890 Excel non farebbe che consente di memorizzare fino a 65.535 righe di data-- che 799 00:38:08,890 --> 00:38:12,020 suona come un sacco, ma al tempo ero uno studente laureato, 800 00:38:12,020 --> 00:38:14,920 e mi ricordo inciampare su questo perché stavo generando 801 00:38:14,920 --> 00:38:17,900 File CSV per la mia ricerca e ho voleva analizzarli rapidamente 802 00:38:17,900 --> 00:38:19,530 semplicemente aprendo in Excel. 803 00:38:19,530 --> 00:38:23,730 Naturalmente, il mio computer si è bloccato, perché ho avuto più di 65.000 righe. 804 00:38:23,730 --> 00:38:27,210 >> Ma dove ha fatto il 65.535 provengono da? 805 00:38:27,210 --> 00:38:29,670 Che cosa stava facendo Microsoft, presumibilmente? 806 00:38:29,670 --> 00:38:32,430 Se sei bravo con le potenze di due? 807 00:38:32,430 --> 00:38:37,160 Sì, stavano usando un 16 bit il valore per rappresentare il numero di riga. 808 00:38:37,160 --> 00:38:41,310 E due a 16 è 65,536-- meno uno, perché se si 809 00:38:41,310 --> 00:38:45,414 indice zero significa che è stata la maggior numero di righe avrei potuto. 810 00:38:45,414 --> 00:38:46,830 Ed era solo una decisione di progettazione. 811 00:38:46,830 --> 00:38:52,760 Salvando 16 bit, mi hanno limitato a 16.000 righe, invece di 4 miliardi di euro, 812 00:38:52,760 --> 00:38:54,322 che ho potuto avere una posizione ideale. 813 00:38:54,322 --> 00:38:57,030 Ma per ora, stiamo andando a introdurre questo più in un contesto web. 814 00:38:57,030 --> 00:39:00,390 E cosa c'è di bello su SQL è che anche anche se è abbastanza potente e abbastanza 815 00:39:00,390 --> 00:39:04,050 sofisticato, bolle davvero fino a quattro operazioni fondamentali, quattro 816 00:39:04,050 --> 00:39:08,060 funzioni chiave, se si seleziona, will-- per il recupero dei dati, la ricerca 817 00:39:08,060 --> 00:39:12,510 per i dati; cancellare o eliminare dati inserto per l'aggiunta di righe al database; 818 00:39:12,510 --> 00:39:13,410 e l'aggiornamento. 819 00:39:13,410 --> 00:39:17,010 Quindi, se avete mai utilizzato Google Fogli di calcolo, numeri Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, è stato eseguito, molto probabilmente, tutte 821 00:39:19,310 --> 00:39:22,530 di queste operazioni come un essere umano di usando solo la tastiera e mouse-- 822 00:39:22,530 --> 00:39:26,050 l'inserimento dei dati, utilizzando i tuoi occhi per selezionare o cercare i dati, 823 00:39:26,050 --> 00:39:28,360 o aggiornare i dati o eliminare dati. 824 00:39:28,360 --> 00:39:29,870 >> Che cosa significa questo? 825 00:39:29,870 --> 00:39:34,300 Beh, pre-installato in CS50 IDE è un programma chiamato MySQL. 826 00:39:34,300 --> 00:39:37,050 Si tratta di un libero, open-source database che è super popolare. 827 00:39:37,050 --> 00:39:40,590 Facebook, ad esempio, utilizza per questo giorno, tra gli altri strumenti che usano. 828 00:39:40,590 --> 00:39:44,300 E un sacco di siti web molto popolari usa in gran parte perché è veloce, 829 00:39:44,300 --> 00:39:45,230 e perché è gratis. 830 00:39:45,230 --> 00:39:46,820 Anche se certamente esistono alternative. 831 00:39:46,820 --> 00:39:49,580 E alcuni di voi potrebbero dilettarsi con alternative per progetti finali. 832 00:39:49,580 --> 00:39:55,330 >> Questo è uno screenshot, nel frattempo, di uno strumento basato sul web denominato phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 E 'una coincidenza che questo strumento web-based è anche 834 00:39:58,260 --> 00:40:01,720 scritto in un linguaggio, PHP, ma quello che ha significato fare 835 00:40:01,720 --> 00:40:04,620 è di darci una web-based interfaccia a un database. 836 00:40:04,620 --> 00:40:07,180 Perché MySQL è tipicamente qualcosa, storicamente voi, 837 00:40:07,180 --> 00:40:08,770 sarebbe interagire con solo con una riga di comando. 838 00:40:08,770 --> 00:40:10,811 E sarebbe super- fastidioso e arcana di avere 839 00:40:10,811 --> 00:40:14,487 digitare i comandi testuali per selezionare dati, inserire i dati, e cancellare i dati. 840 00:40:14,487 --> 00:40:16,820 Così alcune persone su internet ha scritto un programma basato su Web 841 00:40:16,820 --> 00:40:18,900 che solo di farci gestire i dati in nostro database. 842 00:40:18,900 --> 00:40:23,040 E 'come un doppio clic su Excel, e che esegue una versione web-based della stessa. 843 00:40:23,040 --> 00:40:26,370 >> E che cosa avete intenzione di usare questo per in definitiva la prossima settimana, non nel p-set di sei, 844 00:40:26,370 --> 00:40:28,680 ma è quello di costruire qualcosa chiamato CS50 Finance, che 845 00:40:28,680 --> 00:40:32,630 sta per avere un database di gli utenti, con nomi utente e password, 846 00:40:32,630 --> 00:40:34,860 dollaro importi che hanno in loro conti bancari. 847 00:40:34,860 --> 00:40:37,280 Esso sarà qualcosa che si usa per memorizzare 848 00:40:37,280 --> 00:40:39,910 i simboli e le quantità di azioni che gli utenti 849 00:40:39,910 --> 00:40:42,567 hanno acquistato utilizzando virtuale dollari che darai a loro. 850 00:40:42,567 --> 00:40:44,900 E sta andando per consentire agli utenti per registrarsi per il tuo sito, 851 00:40:44,900 --> 00:40:47,190 in modo che anche i tuoi amici può entrare in sintonia con il vostro sito web 852 00:40:47,190 --> 00:40:49,360 ed effettivamente registrati, log in, e giocare 853 00:40:49,360 --> 00:40:52,807 e cercare di trovare un difetto nel codice, e cercare di trovare bug nel tuo sito web. 854 00:40:52,807 --> 00:40:55,390 E faranno semplicemente registrarsi per aggiungendosi, efficace, 855 00:40:55,390 --> 00:40:58,120 tramite codice scritto al database. 856 00:40:58,120 --> 00:41:02,470 >> Per esempio, questo è un rapido schermata di quello che una banca dati potrebbe essere simile. 857 00:41:02,470 --> 00:41:05,190 Questo è stato da una delle solutions-- dello scorso anno 858 00:41:05,190 --> 00:41:07,760 questo è come un mini Excel su file, memorizzati nel nostro database, 859 00:41:07,760 --> 00:41:09,950 memorizzati in questo software chiamato MySQL. 860 00:41:09,950 --> 00:41:13,260 Sul lato sinistro, ho a quanto pare dato ogni utente un numero univoco. 861 00:41:13,260 --> 00:41:16,200 Nella seconda colonna, ho dato tutti un utente nome-- mia 862 00:41:16,200 --> 00:41:16,880 tra di loro. 863 00:41:16,880 --> 00:41:21,430 E sul lato destro, Ho dato loro un hash. 864 00:41:21,430 --> 00:41:26,760 >> Ora questo è in realtà una password, ma non è una password di testo normale. 865 00:41:26,760 --> 00:41:30,160 Si tratta di una password crittografata, se si vuole, o di una password hash. 866 00:41:30,160 --> 00:41:32,000 Che torneremo a non molto. 867 00:41:32,000 --> 00:41:34,340 >> Ma se hai mai letto un articolo su come 868 00:41:34,340 --> 00:41:37,950 la password in qualche banca o qualche sito web potrebbe essere stata compromessa, 869 00:41:37,950 --> 00:41:39,630 può generalmente significare due cose. 870 00:41:39,630 --> 00:41:42,780 Quindi questo è solo un estratto di sei utenti. 871 00:41:42,780 --> 00:41:45,460 Tutti voi ora riesco a capire tramite hacking o di cracking 872 00:41:45,460 --> 00:41:47,690 ciò che le password nostri sei delle persone sono. 873 00:41:47,690 --> 00:41:49,720 Ma se hai mai ottenuto un avviso o una scusa 874 00:41:49,720 --> 00:41:52,803 da una società o un sito web dice, scusate, un hacker ha rotto nel nostro database, 875 00:41:52,803 --> 00:41:56,360 probabilmente si dovrebbe cambiare la vostra password, cosa potrebbe significare? 876 00:41:56,360 --> 00:41:59,670 >> Beh, si, potrebbe significare la società è stata più idiota, 877 00:41:59,670 --> 00:42:03,630 ed è stato l'archiviazione la password in una colonna come questo, in chiaro. 878 00:42:03,630 --> 00:42:05,840 Il che significa che l'avversario, che ha rubato il database, 879 00:42:05,840 --> 00:42:07,440 conosce letteralmente il vostro username e password. 880 00:42:07,440 --> 00:42:08,960 Questo è il peggior scenario possibile. 881 00:42:08,960 --> 00:42:11,710 E, come vedrete in p-set sette, così facile da evitare. 882 00:42:11,710 --> 00:42:15,624 Non c'è assolutamente nessuna scusa per quello sotto forma di stupidità in Internet di oggi. 883 00:42:15,624 --> 00:42:18,540 Two-- e troveremo alcuni articoli a testimoniare il fatto che questo ancora 884 00:42:18,540 --> 00:42:21,710 accade, nonetheless-- due, forse l'avversario 885 00:42:21,710 --> 00:42:23,840 ha rubato questa versione del database. 886 00:42:23,840 --> 00:42:27,110 Che è ancora un po 'male, perché ora sanno che ho sei clienti, 887 00:42:27,110 --> 00:42:29,270 Io so i nomi di utente di queste sei clienti, 888 00:42:29,270 --> 00:42:32,910 e so che la crittografato versioni, o le versioni hash, 889 00:42:32,910 --> 00:42:34,340 delle password quei sei clienti. 890 00:42:34,340 --> 00:42:37,010 Ma qualcuno di voi che potrebbe aver fatto [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 dove è incrinato password, o preso uno sguardo a quella versione del problema 892 00:42:41,150 --> 00:42:46,280 insieme, perché è ancora un po 'preoccupante se l'avversario conosce il vostro hash 893 00:42:46,280 --> 00:42:47,435 le password? 894 00:42:47,435 --> 00:42:49,732 >> PUBBLICO: perché potrebbero inserire l'intero dizionario 895 00:42:49,732 --> 00:42:50,690 nella funzione di hash. 896 00:42:50,690 --> 00:42:54,520 E se la password è un dizionario parola, [? si può solo match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Esattamente, l'avversario può solo scrivere codice, come alcuni di voi 898 00:42:57,640 --> 00:43:00,526 ha fatto per [? Hacker?] 2, per cui eseguire iterazioni su 899 00:43:00,526 --> 00:43:03,400 tutte le parole del dizionario, o tutte le possibili combinazioni di A 900 00:43:03,400 --> 00:43:06,610 a Z e uno attraverso nine-- che suona come un sacco, ed è. 901 00:43:06,610 --> 00:43:08,361 Ma per un computer, è maledettamente veloce. 902 00:43:08,361 --> 00:43:10,610 E infatti, che è stato il punto di [? Hacker 2,?] Era 903 00:43:10,610 --> 00:43:12,540 a prendere roba che sembra letteralmente come questo, 904 00:43:12,540 --> 00:43:14,900 e reverse engineering che cosa è in realtà. 905 00:43:14,900 --> 00:43:17,270 >> Quindi vedremo come possiamo memorizzare in modo più efficiente. 906 00:43:17,270 --> 00:43:20,210 Risulta, per fortuna in MySQL, ci stanno per essere tipi di dati. 907 00:43:20,210 --> 00:43:22,800 E una delle parti divertenti di progettazione di database, ad essere onesti, 908 00:43:22,800 --> 00:43:25,810 è in realtà decidere per te stesso come si dovrebbe rappresentare i dati? 909 00:43:25,810 --> 00:43:29,630 In caso di rappresentare un numero di telefono come un int, come un numero grande, o un lungo? 910 00:43:29,630 --> 00:43:31,630 O si fa realmente fa come una sequenza di caratteri? 911 00:43:31,630 --> 00:43:33,780 E non ci può essere molto impatti non banali di questo. 912 00:43:33,780 --> 00:43:36,714 >> Infatti, uno dei prime, divertenti storie germano 913 00:43:36,714 --> 00:43:39,880 è quando Mark Zuckerberg stava costruendo Facebook, è stato scritto in, 914 00:43:39,880 --> 00:43:42,300 e ancora in gran parte è scritto in PHP. 915 00:43:42,300 --> 00:43:45,400 E uno dei più grandi sfide hanno affrontato nella fase iniziale è stato il ridimensionamento. 916 00:43:45,400 --> 00:43:48,820 Quando hanno continuato ad aggiungere scuola dopo la scuola dopo la scuola, a mia conoscenza, 917 00:43:48,820 --> 00:43:51,639 una delle soluzioni originali era essenzialmente di copiare e incollare 918 00:43:51,639 --> 00:43:53,430 alcuni dei database e parte del codice, 919 00:43:53,430 --> 00:43:55,346 in modo che Harvard era in esecuzione sul proprio server, 920 00:43:55,346 --> 00:43:56,995 e il MIT era in esecuzione sul proprio server. 921 00:43:56,995 --> 00:43:59,120 E questo è stato il motivo per cui, per qualche di voi che potrebbe ricordare, 922 00:43:59,120 --> 00:44:01,510 Non si potrebbe avere amici in altre reti. 923 00:44:01,510 --> 00:44:05,050 >> Probabilmente non avete amici a MIT Harvard o 10 di anni fa, 924 00:44:05,050 --> 00:44:07,467 ma non si poteva estendersi su reti per questo motivo in parte. 925 00:44:07,467 --> 00:44:10,550 E una delle più grandi sfide per Marco e per le aziende come Facebook 926 00:44:10,550 --> 00:44:13,460 è in realtà la manipolazione centinaia e migliaia e milioni 927 00:44:13,460 --> 00:44:14,460 di richieste al secondo. 928 00:44:14,460 --> 00:44:16,501 Quindi le cose che inizieremo parlando di questa settimana 929 00:44:16,501 --> 00:44:19,860 sono davvero intenzione di essere pertinente scrittura di un buon software, e popolarmente 930 00:44:19,860 --> 00:44:23,040 strumenti efficaci che in grado di gestire un sacco di utenti. 931 00:44:23,040 --> 00:44:25,460 >> Quindi parleremo di cose come l'indicizzazione e la ricerca, 932 00:44:25,460 --> 00:44:26,910 ma questo è tutto per oggi. 933 00:44:26,910 --> 00:44:28,780 Ci vedremo per più di Mercoledì. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSICA - TEMA "Seinfeld"] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: il possibile per , e sottrarre da esso. 937 00:44:35,943 --> 00:44:38,859 E non c'è bisogno di attaccare con certa quantità predeterminata della memoria. 938 00:44:38,859 --> 00:44:40,580 Beh, cosa c'è che andare a essere chiamato? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Beh, che cosa sta succedendo? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Che vuoi dire? 941 00:44:43,535 --> 00:44:44,451 Sta dando una lezione. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: E siamo in grado di utilizzare un funzione chiamata malloc per memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Perché non sono le sue braccia in movimento? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Be that's-- si sa, è normale. 945 00:44:52,450 --> 00:44:57,162 E 'proprio come ha appena grandi salsicce appeso lì. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: E 'normale? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Sì, penso che solo presumere che accidentalmente 948 00:45:03,096 --> 00:45:06,840 sostituito il suo deodorante con supercolla. 949 00:45:06,840 --> 00:45:07,608