1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Semana 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Esta é CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Benvido de volta. 5 00:00:09,000 --> 00:00:11,000 Este é CS50, e este é o inicio da semana 8. 6 00:00:11,000 --> 00:00:14,000 Un par de oportunidades, esta semana, 7 00:00:14,000 --> 00:00:17,000 entre eles esa conversa aquí, en que algúns alimentos será servido. 8 00:00:17,000 --> 00:00:20,000 Para máis detalles confía os slides que están en liña. 9 00:00:20,000 --> 00:00:24,000 E tamén outro evento esta semana polo noso propio Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 El é un dos compañeiros CS50 do ex xefe de ensino que está agora no Dropbox, 11 00:00:27,000 --> 00:00:29,000 e é a cara que se entusiasmem por US co que vostede sabe o que, 12 00:00:29,000 --> 00:00:36,000 por iso, se quere máis que a cabeza da súa conversa esta tarde para Dropbox e moito máis. 13 00:00:36,000 --> 00:00:38,000 CS50 xantar é este venres. 14 00:00:38,000 --> 00:00:41,000 Facer unirse a nós, se vostede é capaz, 01:15, como de costume, no lume e xeo. 15 00:00:41,000 --> 00:00:45,000 >> E agora nós mergullo en algo chamado de Seminarios. 16 00:00:45,000 --> 00:00:49,000 Os nosos CS50 Seminarios, Recall, son esas clases opcionais liderados polos compañeiros de ensino 17 00:00:49,000 --> 00:00:51,000 e asistentes do curso e amigos do curso, 18 00:00:51,000 --> 00:00:55,000 persoas dun grupo do campus chamado ABCD, que é un grupo de 19 00:00:55,000 --> 00:00:58,000 tecnófilos no campus, así como un grupo chamado HCS, 20 00:00:58,000 --> 00:01:02,000 a Harvard Computer Society, alumnos de graduación que están similarmente interesados ​​en computación. 21 00:01:02,000 --> 00:01:08,000 A programación deste ano inclúe seminarios de seminarios sobre Android e IOS e JavaScript 22 00:01:08,000 --> 00:01:13,000 e PHP, Unix, Vin, e máis, para entender que estes seminarios están chegando. 23 00:01:13,000 --> 00:01:16,000 Se desexa RSVP para calquera deles ir a URL alí. 24 00:01:16,000 --> 00:01:20,000 Nós, entón, publicaremos na web do curso os tempos e lugares, xa que son finalizados. 25 00:01:20,000 --> 00:01:26,000 Pero sei que paga a pena alí de 5 anos de seminarios anteriores dispoñíbeis en liña, 26 00:01:26,000 --> 00:01:29,000 moitos dos cales aínda están moi actual en termos de tecnoloxías pode 27 00:01:29,000 --> 00:01:36,000 quero xogar con para os seus proxectos finais, así que a cabeza alí para algúns vídeos dispoñibles da mesma. 28 00:01:36,000 --> 00:01:39,000 >> CSS, aqueles de vostedes que está familiarizado coa CSS xa, 29 00:01:39,000 --> 00:01:42,000 o que é iso en poucas palabras? 30 00:01:42,000 --> 00:01:45,000 O que é CSS? 31 00:01:45,000 --> 00:01:48,000 É CSS, eo que significa isto? 32 00:01:48,000 --> 00:01:53,000 O que iso fai para nós, CSS? 33 00:01:53,000 --> 00:01:57,000 Todo ben, imos quentar con un máis doado, HTML, linguaxe de marcado de hipertexto. 34 00:01:57,000 --> 00:02:01,000 O que iso fai para nós? 35 00:02:01,000 --> 00:02:04,000 Calquera persoa en todo? 36 00:02:04,000 --> 00:02:07,000 Está quedando realmente difícil facer estas preguntas. 37 00:02:07,000 --> 00:02:11,000 HTML, linguaxe de marcado de hipertexto. 38 00:02:11,000 --> 00:02:14,000 Si? Non? 39 00:02:14,000 --> 00:02:17,000 [Resposta do alumno inaudível] 40 00:02:17,000 --> 00:02:20,000 Ok, bo, que nos permite marcar texto para amosar nun navegador web. 41 00:02:20,000 --> 00:02:22,000 Non é unha linguaxe de programación. 42 00:02:22,000 --> 00:02:25,000 É de feito unha linguaxe de marcado, o que significa que instrúe o navegador como amosar 43 00:02:25,000 --> 00:02:28,000 información, de xeito que o máis simple encarnación deste, como vimos 44 00:02:28,000 --> 00:02:32,000 é algo super simples, como negritar, aberto soporte b soporte pechado, di 45 00:02:32,000 --> 00:02:36,000 facer este texto en negriña, e que en realidade é só unha das moitas formas 46 00:02:36,000 --> 00:02:39,000 no que podemos facer, e, de feito, estes días unha visión mellor 47 00:02:39,000 --> 00:02:42,000 para estilizar a súa páxina web, facendo as cousas en negriña e cursiva 48 00:02:42,000 --> 00:02:47,000 e centrado e xustificaba e semellantes, non é feito por medio de etiquetas HTML só 49 00:02:47,000 --> 00:02:51,000 senón cunha técnica chamada CSS, follas de estilo en cascada. 50 00:02:51,000 --> 00:02:53,000 Esta é unha linguaxe en si. 51 00:02:53,000 --> 00:02:55,000 Ela tamén non é unha linguaxe de programación, pero- 52 00:02:55,000 --> 00:02:58,000 todos, este é o Dan, que mantén unirse a nós hoxe. 53 00:02:58,000 --> 00:03:01,000 Algunhas dificultades técnicas. Non é un problema. 54 00:03:01,000 --> 00:03:04,000 >> CSS nos permite estilizar unha páxina 55 00:03:04,000 --> 00:03:07,000 definindo o que son chamados de propiedades, así que imos dar un ollo niso 56 00:03:07,000 --> 00:03:09,000 por medio de exemplos básicos. 57 00:03:09,000 --> 00:03:12,000 Deixe-me ir ao aparello hoxe. 58 00:03:12,000 --> 00:03:15,000 Eu teño a fonte de 8 directorio luns en aquí, 59 00:03:15,000 --> 00:03:18,000 e eu estou indo para ir en un directorio chamado CSS, onde temos unha morea 60 00:03:18,000 --> 00:03:21,000 Arquivos esperando por nós aquí, 61 00:03:21,000 --> 00:03:27,000 e neste cartafol que temos, por exemplo search0.html, a última vez. 62 00:03:27,000 --> 00:03:31,000 Agora, recordar con search0 deixamos esta nota 63 00:03:31,000 --> 00:03:35,000 por tipo de aplicación do Google ou realmente só o fin da fronte para el unha semana, 64 00:03:35,000 --> 00:03:38,000 e entender que tivemos algunhas novas etiquetas alí. 65 00:03:38,000 --> 00:03:41,000 Tivemos h1 a un título grande, en negra, 66 00:03:41,000 --> 00:03:45,000 forma, o que nos permitiu realmente ten un formulario HTML entrada do usuario. 67 00:03:45,000 --> 00:03:48,000 Acción, cal era o significado dun atributo action 68 00:03:48,000 --> 00:03:52,000 na etiqueta de forma HTML? 69 00:03:52,000 --> 00:03:58,000 Cal foi o significado desta acción,? 70 00:03:58,000 --> 00:04:00,000 Eu só vou facer iso hoxe. 71 00:04:00,000 --> 00:04:03,000 Acción é o destino onde o formulario vai ser sometido. 72 00:04:03,000 --> 00:04:07,000 O feito de que a acción que se = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 significa que cando o usuario fai clic no botón de envío ou equivalente 74 00:04:10,000 --> 00:04:14,000 calquera que sexa a forma que campos cubertos van ser enviados para o noso servidor non 75 00:04:14,000 --> 00:04:17,000 ou o noso aparello, senón para que URL específica en Google. 76 00:04:17,000 --> 00:04:19,000 E o método que vai empregar é chamado de obter, 77 00:04:19,000 --> 00:04:25,000 e, polo de agora, só unha técnica para pasar información xunto a un servidor web 78 00:04:25,000 --> 00:04:29,000 por medio da URL, por iso imos dar unha rápida ollada para atrás en como funciona isto. 79 00:04:29,000 --> 00:04:31,000 >> Teña en conta que hai unha entrada cuxo nome é q 80 00:04:31,000 --> 00:04:35,000 cuxo tipo é texto e, a continuación, unha segunda entrada do tipo presentar 81 00:04:35,000 --> 00:04:39,000 cuxo valor é CS50 Investigación, e de feito, se abrirmos este ficheiro aquí, 82 00:04:39,000 --> 00:04:42,000 search0.html, é unha forma super sinxelo, 83 00:04:42,000 --> 00:04:45,000 e se eu buscar algo como ciencia da computación 84 00:04:45,000 --> 00:04:50,000 e escriba Intro ou faga clic en Buscar CS50 85 00:04:50,000 --> 00:04:53,000 entender que o que pasa é ademais de obter en Google 86 00:04:53,000 --> 00:04:56,000 Eu especificamente rematou no URL na parte superior, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = ordenador + ciencia 88 00:05:01,000 --> 00:05:04,000 e ciencia da computación é, obviamente, o que eu escriba dentro 89 00:05:04,000 --> 00:05:06,000 O + significa só que é onde un carácter de espazo foi, 90 00:05:06,000 --> 00:05:10,000 e é feito polo navegador só para asegurarse de que non hai 91 00:05:10,000 --> 00:05:13,000 confusión e espazo en branco na URL real. 92 00:05:13,000 --> 00:05:15,000 E, a continuación, q, por suposto, é o nome do parámetro. 93 00:05:15,000 --> 00:05:20,000 Nós non vimos coma nós, o programador, realmente pode acceder q aínda. 94 00:05:20,000 --> 00:05:23,000 Podemos supoñer que Google sabe o que facer con iso aquí, 95 00:05:23,000 --> 00:05:25,000 pero nós imos chegar alí no debido tempo hoxe. 96 00:05:25,000 --> 00:05:30,000 >> Pero deixe-me dar un ollo en vez de search1.html, 97 00:05:30,000 --> 00:05:34,000 que se parece un pouco diferente, porque eu decidín que este formulario aquí foi un pouco manco. 98 00:05:34,000 --> 00:05:36,000 Quero dicir, é na esquina superior esquerda. 99 00:05:36,000 --> 00:05:40,000 Non hai realmente ningunha estética a el, e así que eu quero para estilizar este 100 00:05:40,000 --> 00:05:43,000 un pouco máis como Google, cuxa páxina de inicio, recall, 101 00:05:43,000 --> 00:05:47,000 aínda que non pode visita-lo que, moitas veces, parece que iso hoxe en Halloween. 102 00:05:47,000 --> 00:05:53,000 Se en vez abrir unha versión deste arquivo, 1.html investigación, eu centrado lo. 103 00:05:53,000 --> 00:05:57,000 , Menos mal feo, pero polo menos agora eu comece a controlar a estética desta páxina 104 00:05:57,000 --> 00:06:00,000 non só a reserva de feito. 105 00:06:00,000 --> 00:06:04,000 Imos dar un ollo a unha procura, e non hai realmente só unha diferenza aquí, 106 00:06:04,000 --> 00:06:06,000 que pode ir para fóra para vostede, ou quizais non, 107 00:06:06,000 --> 00:06:11,000 pero o que é a liña de un ou tramo de diferencia? 108 00:06:11,000 --> 00:06:14,000 >> Hai este atributo de estilo, entón dedúcese que en HTML 109 00:06:14,000 --> 00:06:19,000 a maioría dos elementos, a maioría das etiquetas pode ter un atributo estilo sobre eles, 110 00:06:19,000 --> 00:06:23,000 e dentro dese atributo de estilo é unha cadea, 111 00:06:23,000 --> 00:06:26,000 e que cadea e CSS. 112 00:06:26,000 --> 00:06:29,000 Podes poñer follas de estilo en cascada alí 113 00:06:29,000 --> 00:06:32,000 especificando-lo como un nome de propiedade 114 00:06:32,000 --> 00:06:34,000 seguida de dous puntos, seguido por un valor. 115 00:06:34,000 --> 00:06:37,000 Esta é unha especie de decisión de proxecto infeliz, hai algúns anos 116 00:06:37,000 --> 00:06:40,000 que CSS é unha linguaxe en si mesma, 117 00:06:40,000 --> 00:06:43,000 pero sintaticamente é moi diferente de HTML. 118 00:06:43,000 --> 00:06:46,000 Neste caso, vemos que dentro do meu sitio, que é escrito en HTML, 119 00:06:46,000 --> 00:06:51,000 Eu teño CSS dentro desas citas, e do Convenio para CSS 120 00:06:51,000 --> 00:06:55,000 é que ten o que se chama unha propiedade seguido, novamente, dous puntos, 121 00:06:55,000 --> 00:06:58,000 seguido polo valor da propiedade, por iso non hai signo igual. 122 00:06:58,000 --> 00:07:00,000 Non hai citas adicional. 123 00:07:00,000 --> 00:07:03,000 É só iso colonos par valor separado clave, 124 00:07:03,000 --> 00:07:05,000 e liña de texto fai exactamente o que di. 125 00:07:05,000 --> 00:07:09,000 El aliñar o texto no corpo da páxina, que é realmente o valor da páxina, 126 00:07:09,000 --> 00:07:11,000 no centro. 127 00:07:11,000 --> 00:07:13,000 >> Ok, entón o resultado final, para quedar claro, é esta. 128 00:07:13,000 --> 00:07:17,000 Non todos os máis sexy iso, pero polo menos é centrado e un pouco máis como Google real. 129 00:07:17,000 --> 00:07:21,000 Pero e se eu, no canto abrir versión 2 do presente 130 00:07:21,000 --> 00:07:25,000 e apuntar aquí unha marca totalmente nova? 131 00:07:25,000 --> 00:07:30,000 Agora na cabeza da miña páxina, que anteriormente só tiña que etiqueta 132 00:07:30,000 --> 00:07:32,000 en todos os exemplos anteriores? 133 00:07:32,000 --> 00:07:34,000 El só tiña ese, o título. 134 00:07:34,000 --> 00:07:38,000 Un momento detrás da marca de cabeza ollou coma este. 135 00:07:38,000 --> 00:07:40,000 Agora, en vez ten unha marca de estilo dentro dela, 136 00:07:40,000 --> 00:07:44,000 e iso tamén, eu pido desculpas, sintaticamente parece moi distinto do HTML, 137 00:07:44,000 --> 00:07:47,000 pero se acostuma, que dentro da marca de estilo 138 00:07:47,000 --> 00:07:50,000 Agora podo fatorar o que era un momento atrás 139 00:07:50,000 --> 00:07:54,000 un atributo, o atributo de estilo, e podo poñelas na parte superior da miña páxina. 140 00:07:54,000 --> 00:07:56,000 >> Por que? 141 00:07:56,000 --> 00:08:00,000 Ben, este é un paso para limpar as cousas, así como en escribir código C 142 00:08:00,000 --> 00:08:04,000 nós, ás veces, escribir funcións para fatorar funcionalidade común. 143 00:08:04,000 --> 00:08:07,000 É só un pouco máis limpo para comezar a fatoração de cousas como a estética 144 00:08:07,000 --> 00:08:11,000 para unha localización central, en vez de ter todo intercalan en todo o seu HTML. 145 00:08:11,000 --> 00:08:14,000 Isto tamén fai o que di, aínda que non haxa un pouco de novo sintaxe. 146 00:08:14,000 --> 00:08:19,000 Iso aquí é un selector, e do corpo significa só seleccionar o elemento do corpo 147 00:08:19,000 --> 00:08:21,000 e aplicar as seguintes propiedades para el. 148 00:08:21,000 --> 00:08:23,000 Ben, a propiedade é exactamente o mesmo. 149 00:08:23,000 --> 00:08:25,000 Para unha boa medida que eu engade un punto e coma ao final, 150 00:08:25,000 --> 00:08:29,000 que tende a ser de convencións, e envolto esa propiedade toda 151 00:08:29,000 --> 00:08:33,000 entre chaves, porque eu podería realmente ter cousas distintas aquí. 152 00:08:33,000 --> 00:08:39,000 Eu podería realmente dicir algo así como color: blue; 153 00:08:39,000 --> 00:08:42,000 >> Agora iso non vai ser un paso para nada todo o que máis fermosa, 154 00:08:42,000 --> 00:08:47,000 pero se eu volver agora a versión 2 que eu polo menos xa fixo o corpo do meu 155 00:08:47,000 --> 00:08:49,000 texto páxina toda azul. 156 00:08:49,000 --> 00:08:51,000 O botón permanece o mesmo porque é un insumo. Non é texto normal. 157 00:08:51,000 --> 00:08:56,000 Pero todo o que é texto, como CS50 Busca encima, é en azul feito. 158 00:08:56,000 --> 00:09:01,000 Unha vez máis, todo o que fixemos agora é eliminar a marca do corpo, previo aviso, 159 00:09:01,000 --> 00:09:04,000 o atributo de estilo, e nós temos consignado iso aquí. 160 00:09:04,000 --> 00:09:08,000 Isto non é unha gran mellora, pero se tomamos un paso adiante 161 00:09:08,000 --> 00:09:10,000 entender o que podemos facer nesta terceira versión aquí. 162 00:09:10,000 --> 00:09:14,000 >> En search3.html páxina web é case idéntico 163 00:09:14,000 --> 00:09:17,000 excepto para o novo tag agora? 164 00:09:17,000 --> 00:09:20,000 Enlace, entón esta non é moi apropiadamente chamado 165 00:09:20,000 --> 00:09:24,000 porque non está ligando, no sentido dun hiperenlace previsión. 166 00:09:24,000 --> 00:09:28,000 En vez diso, vostede é medio de facer o equivalente a # include C 167 00:09:28,000 --> 00:09:31,000 cal a marca de enlace con un atributo href 168 00:09:31,000 --> 00:09:34,000 é un atributo rel di dalle 169 00:09:34,000 --> 00:09:39,000 e copia e pega o contido de un arquivo chamado search3.css aquí, esencialmente. 170 00:09:39,000 --> 00:09:42,000 El non chega a facelo, pero ese é o espírito da cousa. 171 00:09:42,000 --> 00:09:45,000 El di que vai abrir o ficheiro, search3.css, 172 00:09:45,000 --> 00:09:49,000 e trata-lo como se o usuario tivese ingresaran iso aquí na cabeza da páxina 173 00:09:49,000 --> 00:09:51,000 así como eu fixen no exemplo anterior. 174 00:09:51,000 --> 00:09:54,000 Search3.css, mentres, é moi sinxelo. 175 00:09:54,000 --> 00:09:58,000 É realmente só contén exactamente o que foi un momento atrás 176 00:09:58,000 --> 00:10:03,000 na marca de estilo, pero eu teño consignado aquí fóra no seu propio arquivo. 177 00:10:03,000 --> 00:10:07,000 >> Aínda que non pase moito tempo a todos HTML ou programación web 178 00:10:07,000 --> 00:10:11,000 só intuitivamente cal é a motivación, quizais, por fatoração 179 00:10:11,000 --> 00:10:14,000 este pequeno tramo ata de CSS no seu propio arquivo 180 00:10:14,000 --> 00:10:19,000 e incluíndo o con esta etiqueta enlace aquí? 181 00:10:19,000 --> 00:10:21,000 [Resposta do alumno inaudível] 182 00:10:21,000 --> 00:10:25,000 Ok, é máis fácil de ler no sentido de que ten o seu CSS nun arquivo CSS. 183 00:10:25,000 --> 00:10:28,000 Ten o seu código HTML no seu arquivo HTML, por iso é máis lexible nese sentido. 184 00:10:28,000 --> 00:10:30,000 O que máis pode ser atractivo? Si 185 00:10:30,000 --> 00:10:32,000 [Resposta do alumno inaudível] 186 00:10:32,000 --> 00:10:35,000 Si, para que poida inclui-lo moitas veces, entón agora nós estamos facendo estes 187 00:10:35,000 --> 00:10:38,000 exemplos básicos con arquivos individuais, pero imos supor que está realmente facendo 188 00:10:38,000 --> 00:10:42,000 un sitio de verdade, como vai a pset 7 ou o seu proxecto final, quizais, 189 00:10:42,000 --> 00:10:45,000 e quere ter varias páxinas web, como é certamente común en 190 00:10:45,000 --> 00:10:48,000 á rede mundial real Xeral, e que sería unha especie de coxo 191 00:10:48,000 --> 00:10:52,000 ter que copiar e pegar a mesma cor azul 192 00:10:52,000 --> 00:10:56,000 e mesmo texto aliñado centro en cada unha desas páxinas. 193 00:10:56,000 --> 00:10:59,000 En vez diso, fai máis sentido para fatorar, así como temos feito en C 194 00:10:59,000 --> 00:11:02,000 co arquivo h., poñelas nun lugar central, 195 00:11:02,000 --> 00:11:06,000 neste search3.css caso, e entón permitir que calquera arquivo 196 00:11:06,000 --> 00:11:11,000 no seu sitio web para realmente incluír este ficheiro a través de esa marca aquí na liña 16. 197 00:11:11,000 --> 00:11:14,000 Como é tipicamente o caso, que comezou coa versión 0, que tipo de obras 198 00:11:14,000 --> 00:11:18,000 pero non é necesariamente o mellor, e con cada etapa, 199 00:11:18,000 --> 00:11:21,000 busca 1, busca 2, e agora busca 3 tivemos estes pasos de bebé 200 00:11:21,000 --> 00:11:26,000 para os proxectos que son un pouco máis limpo e máis preparatorio 201 00:11:26,000 --> 00:11:30,000 para as páxinas máis complexas que podemos facer na estrada. 202 00:11:30,000 --> 00:11:33,000 >> Deixe-me abrir un último exemplo aquí só para amosar 203 00:11:33,000 --> 00:11:36,000 páxina aínda máis estilizado, pero primeiro imos ollar para o código HTML. 204 00:11:36,000 --> 00:11:41,000 Este é search4.html, e notar que estruturalmente é case o mesmo 205 00:11:41,000 --> 00:11:44,000 excepto para a introdución dunha nova marca, DIV. 206 00:11:44,000 --> 00:11:48,000 Div é unha marca que presenta unha división da páxina. 207 00:11:48,000 --> 00:11:51,000 Podes pensar niso como un rectángulo invisible. 208 00:11:51,000 --> 00:11:54,000 É unha especie de crea unha franxa de zona na web 209 00:11:54,000 --> 00:11:56,000 que pode estilizar todos dunha vez. 210 00:11:56,000 --> 00:11:58,000 O que eu teño feito aquí é a seguinte. 211 00:11:58,000 --> 00:12:01,000 Dentro do meu corpo tag, que foi alí todo o tempo, 212 00:12:01,000 --> 00:12:05,000 Eu estou dicindo crear unha división da páxina aquí a través de liñas de 45 a 47, 213 00:12:05,000 --> 00:12:09,000 o que significa, esencialmente, dar-me un rectángulo invisible na parte superior da páxina. 214 00:12:09,000 --> 00:12:14,000 Entón me dea un segundo rectángulo, aínda invisible, a continuación diso, 215 00:12:14,000 --> 00:12:16,000 e identifica-lo polo contido de nome, e logo, por último, 216 00:12:16,000 --> 00:12:19,000 dáme unha terceira división da páxina na parte inferior 217 00:12:19,000 --> 00:12:21,000 chamado ID. 218 00:12:21,000 --> 00:12:23,000 Imos ver por que eu fixen iso en só un momento, 219 00:12:23,000 --> 00:12:26,000 pero conceptualmente Teño unha división de cabeceira. 220 00:12:26,000 --> 00:12:30,000 Eu teño unha división de contidos, e eu teño unha división rodapé da páxina 221 00:12:30,000 --> 00:12:32,000 aínda que estes sexan só na reserva. 222 00:12:32,000 --> 00:12:35,000 O usuario non vai ver tres rectángulos, 223 00:12:35,000 --> 00:12:37,000 pero unha especie de estructuralmente hai detrás das escenas 224 00:12:37,000 --> 00:12:39,000 son realmente presente. 225 00:12:39,000 --> 00:12:41,000 >> Agora, quen se importa? Por que realmente facer isto? 226 00:12:41,000 --> 00:12:43,000 Todo o máis na páxina é o mesmo que xa vimos antes. 227 00:12:43,000 --> 00:12:47,000 Aquí está a miña forma. Aquí está a miña entrada, a miña entrada, unha quebra de liña e así por diante. 228 00:12:47,000 --> 00:12:50,000 Aquí está a imaxe, no entanto, entón imos ver de onde veu iso en só un momento. 229 00:12:50,000 --> 00:12:52,000 Aquí está o pé, que é novo, só porque eu quería introducir 230 00:12:52,000 --> 00:12:54,000 contido un pouco máis aquí. 231 00:12:54,000 --> 00:12:58,000 Se rolar ata entender que ID desta div é cabeceira. 232 00:12:58,000 --> 00:13:02,000 O ID deste div é o contido, eo ID dun presente é de rodapé. 233 00:13:02,000 --> 00:13:05,000 E, como o nome suxire, cando ten un atributo ID 234 00:13:05,000 --> 00:13:09,000 HTML, por definición, debe identificarse 235 00:13:09,000 --> 00:13:12,000 un dos elementos, un dos tags na súa páxina. 236 00:13:12,000 --> 00:13:16,000 O fardo é totalmente en que se lembre que ten un ID cabeceira xa. 237 00:13:16,000 --> 00:13:19,000 Tes un rodapé. Tes un ID de contido xa. 238 00:13:19,000 --> 00:13:22,000 O ordenador non vai descubrir o que un ID dispoñible é para ti, 239 00:13:22,000 --> 00:13:27,000 así pode accidentalmente dar 2 tags un ID de cabeceira, 240 00:13:27,000 --> 00:13:29,000 e que sería só mal. 241 00:13:29,000 --> 00:13:31,000 >> Ten que ter en conta o que creou, 242 00:13:31,000 --> 00:13:34,000 pero unha vez que tes feito isto observe o que podemos facer aquí. 243 00:13:34,000 --> 00:13:38,000 Agora podo especificar na miña marca de estilo na parte superior 244 00:13:38,000 --> 00:13:41,000 ou equivalentemente no meu arquivo CSS, se eu aínda estaba a usar esta versión, 245 00:13:41,000 --> 00:13:46,000 Eu podo dicir # header, eo que iso significa que, independentemente tag 246 00:13:46,000 --> 00:13:49,000 neste sitio ten unha identificación de cabeceira 247 00:13:49,000 --> 00:13:53,000 e #, só por convención humana, representa ID. 248 00:13:53,000 --> 00:13:56,000 O sinal de sostido ou libra signo representa ID. 249 00:13:56,000 --> 00:13:58,000 Cabeceira é o nome que eu dei. 250 00:13:58,000 --> 00:14:01,000 Isto significa aplicar esta propiedade CSS 251 00:14:01,000 --> 00:14:04,000 para calquera tag nesta páxina ten un ID de cabeceira. 252 00:14:04,000 --> 00:14:06,000 Mesmo aquí. 253 00:14:06,000 --> 00:14:09,000 Aplicar esta propiedade, que pasa a ser o mesmo, a calquera elemento 254 00:14:09,000 --> 00:14:11,000 cuxo ID é o contido, e despois aquí 255 00:14:11,000 --> 00:14:14,000 notar que eu teño un pouco máis sofisticado, con rodapé. 256 00:14:14,000 --> 00:14:18,000 Calquera elemento cuxo ID e rodapé, de que non pode haber só un, por definición, 257 00:14:18,000 --> 00:14:21,000 vai adiante e faga o seu tamaño de fonte menor, 258 00:14:21,000 --> 00:14:24,000 súa ousada peso da fonte, a súa marxe de 20 píxeles. 259 00:14:24,000 --> 00:14:26,000 >> O que significa isto? 260 00:14:26,000 --> 00:14:28,000 É só unha marxe na parte superior, parte inferior, e á esquerda e á dereita. 261 00:14:28,000 --> 00:14:31,000 Isto significa dar-me unha marxe de 20 píxeles invisible en torno a el 262 00:14:31,000 --> 00:14:35,000 só para empuxar todo máis lonxe del un pouco, como se pode facer en Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word ou Pages ou similar. 264 00:14:37,000 --> 00:14:39,000 E entón o texto aliñar centro. 265 00:14:39,000 --> 00:14:43,000 Imos ver o resultado final, e despois imos volver ata o tramo de un remanescente de CSS alí. 266 00:14:43,000 --> 00:14:48,000 Esta é a versión 4, o noso pasado para os exemplos de investigación, e é máis sexy, moi, moi. 267 00:14:48,000 --> 00:14:54,000 Agora, con xustiza, eu só Googled "Google xerador de logotipo da fonte." 268 00:14:54,000 --> 00:14:58,000 E o que me permitiu crear un GIF, un formato de imaxe, que parece que non. 269 00:14:58,000 --> 00:15:00,000 En realidade, pode facelo tamén. 270 00:15:00,000 --> 00:15:03,000 Temos "Google xerador de logotipo fontes." 271 00:15:03,000 --> 00:15:05,000 >> Imos ver se podemos facelo. 272 00:15:05,000 --> 00:15:07,000 Ok, creo que este é o sitio que eu usei. 273 00:15:07,000 --> 00:15:11,000 Podemos dicir Ec 10, por exemplo, e facerlles a súa propia. 274 00:15:11,000 --> 00:15:13,000 Podes xogar con iso o día enteiro e, a continuación, prema co botón dereito sobre el 275 00:15:13,000 --> 00:15:16,000 e despois baixar o GIF real, que é todo o que eu fixen. 276 00:15:16,000 --> 00:15:19,000 E, de feito, é por iso que no meu HTML, lembre, aquí 277 00:15:19,000 --> 00:15:22,000 Eu tiña unha etiqueta de imaxe, o que vimos brevemente a semana pasada 278 00:15:22,000 --> 00:15:24,000 cuxa fonte é logo.gif. 279 00:15:24,000 --> 00:15:28,000 E o que unha vez foi a motivación para ter ese atributo alt, 280 00:15:28,000 --> 00:15:31,000 este atributo alternativa? 281 00:15:31,000 --> 00:15:33,000 Si 282 00:15:33,000 --> 00:15:35,000 [Resposta do alumno inaudível] 283 00:15:35,000 --> 00:15:37,000 Bo, para dúas razóns moi, se o navegador non pode puxar arriba a imaxe 284 00:15:37,000 --> 00:15:40,000 porque ten unha conexión de rede lenta ou a imaxe está danada 285 00:15:40,000 --> 00:15:44,000 ou algo así, polo menos, o ser humano pode ver "CS50 busca" 286 00:15:44,000 --> 00:15:46,000 e, a continuación, tamén por razóns de accesibilidade. 287 00:15:46,000 --> 00:15:48,000 Se vostede ten un usuario que é cego e está a usar un lector de pantalla 288 00:15:48,000 --> 00:15:50,000 e, polo tanto, obviamente, non pode ver as imaxes poden polo menos 289 00:15:50,000 --> 00:15:52,000 escoitar texto se o seu ordenador fala a eles. 290 00:15:52,000 --> 00:15:56,000 >> En xeral, esta é a mellor práctica, cando se trata da accesibilidade das páxinas 291 00:15:56,000 --> 00:16:00,000 para que os usuarios, mesmo nesa situación pode escoitar ou ver, por así dicir, 292 00:16:00,000 --> 00:16:03,000 que é o que está na súa páxina. 293 00:16:03,000 --> 00:16:05,000 Hai outra cousa que eu fixen aquí 294 00:16:05,000 --> 00:16:09,000 que é un pouco interesante, e imos ver máis sobre isto en conxunto de problemas 7 295 00:16:09,000 --> 00:16:12,000 a través dun dos curtas liderados por un dos compañeiros de ensino. 296 00:16:12,000 --> 00:16:15,000 Pero # contidos refírese a etiqueta 297 00:16:15,000 --> 00:16:20,000 cuxo ID é o contido, pero despois hai un espazo en branco, e entón hai a entrada de palabra. 298 00:16:20,000 --> 00:16:25,000 Ben, o que é interesante sobre CSS é que pode 299 00:16:25,000 --> 00:16:29,000 refírense a marcas nunha especie de páxina xerarquicamente, 300 00:16:29,000 --> 00:16:33,000 e que ese tramo de vía CSS é atopar a etiqueta 301 00:16:33,000 --> 00:16:37,000 cuxo ID é o contido, e despois aplicar as seguintes propiedades 302 00:16:37,000 --> 00:16:42,000 para todas as marcas de entrada que son descendentes de contidos, 303 00:16:42,000 --> 00:16:44,000 é dicir, que son recuadas no interior do mesmo. 304 00:16:44,000 --> 00:16:48,000 Retirada, de novo, é só importante para o equipo, e non ao humano, 305 00:16:48,000 --> 00:16:51,000 pero por convención que guión cousas como nós ir máis fondo nunha páxina, 306 00:16:51,000 --> 00:16:54,000 así, isto significa aplicar unha marxe de 5 píxeles a calquera elemento de entrada 307 00:16:54,000 --> 00:16:57,000 que está en algún lugar dentro ou aninhado dentro 308 00:16:57,000 --> 00:16:59,000  o elemento cuxo ID é o contido. 309 00:16:59,000 --> 00:17:01,000 >> Quen é que iso se aplica? 310 00:17:01,000 --> 00:17:03,000 Ben, non hai realmente só esas dúas caras aquí. 311 00:17:03,000 --> 00:17:05,000 Teña en conta que dentro da forma hai dúas entradas, 312 00:17:05,000 --> 00:17:07,000 como ten habido para todos estes exemplos. 313 00:17:07,000 --> 00:17:11,000 Pero aviso que estas dúas entradas ocorrer de ser aniñados dentro, 314 00:17:11,000 --> 00:17:13,000 aínda que un pouco profundamente, un par de capas de retirada, 315 00:17:13,000 --> 00:17:16,000 dentro da etiqueta cuxo ID é o contido. 316 00:17:16,000 --> 00:17:18,000 O que significa isto? 317 00:17:18,000 --> 00:17:21,000 Ou tamén para o navegador aquí podes ver sempre así lixeiramente- 318 00:17:21,000 --> 00:17:23,000 deixe-me aproximarse que hai un pouco de recheo entre o botón 319 00:17:23,000 --> 00:17:25,000 e entre o campo de texto. 320 00:17:25,000 --> 00:17:27,000 >> Deixe-me temporalmente desactivar isto. 321 00:17:27,000 --> 00:17:30,000 Deixe-me ir para o meu CSS, e deixe-me ir adiante e só 322 00:17:30,000 --> 00:17:34,000 cambiar esa marxe de 5 píxeles para 0 píxeles. 323 00:17:34,000 --> 00:17:37,000 Deixe-me ir á fronte e, a continuación, gardar o ficheiro, volva para o motor de procura 324 00:17:37,000 --> 00:17:40,000 e recargar, e ve no medio da páxina. 325 00:17:40,000 --> 00:17:43,000 Todo quedou comprimido xuntos, e cando chicoteado este exemplo 326 00:17:43,000 --> 00:17:46,000 Eu penso que parecía parvo co campo de texto e, a continuación, o botón inmediatamente debaixo dela. 327 00:17:46,000 --> 00:17:50,000 Eu quería almofada-lo un pouco, entón eu presentei marxes. 328 00:17:50,000 --> 00:17:55,000 O que non imos facer é ir na aula a través da varias decenas 329 00:17:55,000 --> 00:17:58,000 Propiedades CSS que existen porque, de novo, hai cousas como o tamaño da fonte, 330 00:17:58,000 --> 00:18:02,000 peso da fonte, marxe, texto aliñar, e unha ducia de outros poucos, 331 00:18:02,000 --> 00:18:06,000 e imos encamiñar-lo no conxunto de problemas 7 a varios tutoriais online 332 00:18:06,000 --> 00:18:08,000 e as referencias que lle permiten escoller esas cousas. 333 00:18:08,000 --> 00:18:10,000 Pero o que é realmente importante ao final do día 334 00:18:10,000 --> 00:18:12,000 >> é entender como estas cousas son aplicadas. 335 00:18:12,000 --> 00:18:15,000 De novo, se temos a marca de estilo dentro da cal 336 00:18:15,000 --> 00:18:19,000 poden ir os seletores, o tipo de identificadores que especifican 337 00:18:19,000 --> 00:18:21,000 para quen queira aplicar esas propiedades, 338 00:18:21,000 --> 00:18:24,000 e despois se pon as propiedades como par valor-chave 339 00:18:24,000 --> 00:18:28,000 separados por dous puntos e terminou cun punto e coma, 340 00:18:28,000 --> 00:18:32,000 ou pode copiar todos os que e poñelas nun arquivo CSS separado 341 00:18:32,000 --> 00:18:35,000 en si mesmo. 342 00:18:35,000 --> 00:18:39,000 Todo ben, todas as preguntas sobre os conceptos 343 00:18:39,000 --> 00:18:41,000 ou a gran figura da CSS? 344 00:18:41,000 --> 00:18:43,000 Vai ver de novo máis do mesmo en pset 7, 345 00:18:43,000 --> 00:18:47,000 pero imos mantelo xeralmente moi sinxelo. 346 00:18:47,000 --> 00:18:49,000 Non? Todo ben. 347 00:18:49,000 --> 00:18:51,000 É hora de unha linguaxe de programación real, 348 00:18:51,000 --> 00:18:54,000 e imos volver un pouco de CSS na forma dun exemplo. 349 00:18:54,000 --> 00:18:58,000 PHP é realmente unha linguaxe marabillosas accesibles 350 00:18:58,000 --> 00:19:02,000 na medida en que é case equivalente ao sintaticamente C. 351 00:19:02,000 --> 00:19:06,000 Noutras palabras, se sabe C, vostede sabe o PHP maior parte, 352 00:19:06,000 --> 00:19:08,000 polo menos sintaticamente, a pesar de existiren algunhas novas funcionalidades 353 00:19:08,000 --> 00:19:10,000 e algúns novos conceptos que imos ter de ollar. 354 00:19:10,000 --> 00:19:13,000 >> Pero para a maior parte, agora que a transición de C para PHP 355 00:19:13,000 --> 00:19:16,000 a maior parte do novo material é realmente a gran figura, 356 00:19:16,000 --> 00:19:19,000 como usa unha linguaxe de programa na web en vez de 357 00:19:19,000 --> 00:19:23,000 na liña de comandos ou nun ventá piscando como temos benvida a facer ata agora. 358 00:19:23,000 --> 00:19:27,000 Para referencia, especialmente con pset 7 eo proxecto final en diante, 359 00:19:27,000 --> 00:19:31,000 non aproveitar esa URL aquí se desexa ler sobre as formalidades de PHP. 360 00:19:31,000 --> 00:19:34,000 É realmente como un libro en liña de balde de forma eficaz, 361 00:19:34,000 --> 00:19:37,000 e tamén vai descubrir que o que é realmente agradable sobre PHP 362 00:19:37,000 --> 00:19:41,000 é que hai centos de funcións que veñen con el, 363 00:19:41,000 --> 00:19:44,000 mentres que en C non necesariamente teñen acceso a 364 00:19:44,000 --> 00:19:47,000 máis funcións que estaban na biblioteca de matemáticas, a biblioteca CS50. 365 00:19:47,000 --> 00:19:51,000 En PHP e unha morea de linguas modernas, Python e Ruby entre eles, 366 00:19:51,000 --> 00:19:54,000 ten acceso a tantas máis funcións, o que significa que comeza a escribir 367 00:19:54,000 --> 00:19:57,000 moito menos código, pois pode estar sobre os ombreiros de outras persoas 368 00:19:57,000 --> 00:19:59,000 que xa teña escrito algunhas cousas para ti. 369 00:19:59,000 --> 00:20:03,000 >> Imos dar un rápido paseo da sintaxe do PHP e logo escribir algúns exemplos. 370 00:20:03,000 --> 00:20:06,000 O que é legal sobre o PHP en primeiro lugar 371 00:20:06,000 --> 00:20:08,000 é que non hai función principal. 372 00:20:08,000 --> 00:20:10,000 Se queres escribir un programa en PHP que acaba de comezar a escribir código, 373 00:20:10,000 --> 00:20:12,000 e non ten que se preocupar de inicio. 374 00:20:12,000 --> 00:20:14,000 Non hai int. Non hai retorno. 375 00:20:14,000 --> 00:20:17,000 Non hai argv, argc o que é necesario cando escribe o programa. 376 00:20:17,000 --> 00:20:20,000 En vez diso pode simplemente comezar a escribir código, e iso é, en parte, 377 00:20:20,000 --> 00:20:23,000 porque o PHP é o que se chama unha linguaxe interpretada. 378 00:20:23,000 --> 00:20:26,000 C foi compilado, e foi compilado no sentido de que comeza 379 00:20:26,000 --> 00:20:29,000 con código fonte, executa-lo través Clang, que é un compilador, 380 00:20:29,000 --> 00:20:33,000 e, finalmente, tras un certo número de pasos que obter o código obxecto, 0s e 1s. 381 00:20:33,000 --> 00:20:36,000 PHP e Python e Ruby e Pearl e outros 382 00:20:36,000 --> 00:20:39,000 diferentes tipos de linguas en que non recompila-los. 383 00:20:39,000 --> 00:20:42,000 Non é preciso ir a partir do código fonte para 0s e 1s. 384 00:20:42,000 --> 00:20:45,000 Basta con executar o código fonte, e corre o código fonte 385 00:20:45,000 --> 00:20:49,000 escribindo nun ficheiro de texto normal, que remata en. php, neste caso, 386 00:20:49,000 --> 00:20:53,000 en vez de. c, e que o programa fai no seu ordenador 387 00:20:53,000 --> 00:20:57,000 é literalmente interpreta o seu código liña por liña por liña. 388 00:20:57,000 --> 00:21:00,000 >> Noutras palabras, no canto de escribir un programa e executar o programa 389 00:21:00,000 --> 00:21:04,000 directamente ti, en vez de escribir un programa con un arquivo con extensión. php. 390 00:21:04,000 --> 00:21:09,000 Entón executar un programa real chamado php.exe, se está en Windows, 391 00:21:09,000 --> 00:21:12,000 ou só PHP, se está en Mac OS ou Linux, 392 00:21:12,000 --> 00:21:17,000 e proporcionar como entrada para o programa PHP seu propio código fonte, 393 00:21:17,000 --> 00:21:20,000 eo seu propósito na vida é ler o seu cume código para abaixo, de esquerda a dereita, 394 00:21:20,000 --> 00:21:23,000 e facer o que dixo a el facer. 395 00:21:23,000 --> 00:21:25,000 >> Imos ver o que iso vai significar sintaticamente. 396 00:21:25,000 --> 00:21:27,000 No PHP temos condicións. 397 00:21:27,000 --> 00:21:29,000 Este slide é idéntico ao que viu a semana 1 398 00:21:29,000 --> 00:21:33,000 porque sintaticamente condicións, IFS e else IFS e else en PHP 399 00:21:33,000 --> 00:21:35,000 exactamente así. 400 00:21:35,000 --> 00:21:38,000 Cando se trata de expresións booleanas que van exactamente así. 401 00:21:38,000 --> 00:21:43,000 Cando se trata de anding cousas xuntos como boleanos que vai exactamente así. 402 00:21:43,000 --> 00:21:46,000 Cambia a mesma aparencia, e terá a vantaxe en PHP 403 00:21:46,000 --> 00:21:51,000 que os interruptores en C só podería cambiar nun char ou int. 404 00:21:51,000 --> 00:21:53,000 Vostede non pode conectar un valor de cadea. 405 00:21:53,000 --> 00:21:55,000 No PHP pode realmente ter unha expresión 406 00:21:55,000 --> 00:21:58,000 que é unha variable cuxo contido é unha cadea, 407 00:21:58,000 --> 00:22:01,000 e pode realmente facer comparación de cadea en forma real intuitivo, 408 00:22:01,000 --> 00:22:06,000 Non comparación punteiro, a fin de decidir se a facer caso i ou j ou outra cousa. 409 00:22:06,000 --> 00:22:09,000 Imos ver o que potencialmente antes de tempo. 410 00:22:09,000 --> 00:22:11,000 >> Loops tamén marabillosas son os mesmos. 411 00:22:11,000 --> 00:22:15,000 Para loops ter unha inicialización, unha condición, e un número de actualizacións. 412 00:22:15,000 --> 00:22:18,000 Mentres lazos tamén existen en PHP. 413 00:22:18,000 --> 00:22:21,000 Facer mentres lazos tamén existen en PHP, 414 00:22:21,000 --> 00:22:26,000 e matrices existe no PHP, pero é aquí onde a sintaxe comeza a estar un pouco diferente, 415 00:22:26,000 --> 00:22:29,000 pero os conceptos son os mesmos, e os conceptos son realmente a mesma 416 00:22:29,000 --> 00:22:32,000 como eran en 0 Semana co scratch. 417 00:22:32,000 --> 00:22:34,000 Primeiro e máis importante é o sinal $. 418 00:22:34,000 --> 00:22:37,000 Esta foi unha decisión de proxecto en PHP que calquera variable 419 00:22:37,000 --> 00:22:41,000 en PHP por deseño comeza co signo $. 420 00:22:41,000 --> 00:22:46,000 Non hai máis X, Y, Z. Agora $ X, Y $, $ Z só porque. 421 00:22:46,000 --> 00:22:49,000 É algo para manter presente, e agora no lado dereito 422 00:22:49,000 --> 00:22:52,000 este é semellante a unha matriz, 423 00:22:52,000 --> 00:22:54,000 pero estamos usando corchetes aquí. 424 00:22:54,000 --> 00:22:57,000 En PHP e JavaScript, como vai finalmente ver 425 00:22:57,000 --> 00:23:01,000 declarar unha matriz que fai colchete aberto e pechado colchete, 426 00:23:01,000 --> 00:23:04,000 e entón tes unha lista separada por comas de valores, se ints 427 00:23:04,000 --> 00:23:09,000 ou cordas ou caracteres que quere, dentro do que a expresión de alí. 428 00:23:09,000 --> 00:23:11,000 >> Agora, como fixemos algo como isto en C? 429 00:23:11,000 --> 00:23:16,000 Cal foi a sintaxe para estaticamente declarar unha matriz de números coñecidos? 430 00:23:16,000 --> 00:23:19,000 Foi chaves, diferenza tan pequena aquí, pero en ambos os PHP 431 00:23:19,000 --> 00:23:22,000 e, finalmente, el só usa Javascript corchetes, entón realmente 432 00:23:22,000 --> 00:23:25,000 O único detalle interesante aquí é o sinal $ para o nome da variable 433 00:23:25,000 --> 00:23:28,000 e tamén os corchetes, e hai unha cousa curiosa 434 00:23:28,000 --> 00:23:32,000 que foi omitido, así como sobre o lado esquerdo do sinal de =. 435 00:23:32,000 --> 00:23:36,000 O que falta que estamos esixindo hai semanas? Si 436 00:23:36,000 --> 00:23:38,000 [Resposta do alumno inaudível] 437 00:23:38,000 --> 00:23:41,000 O tamaño, polo que non hai mención ao tamaño da matriz. 438 00:23:41,000 --> 00:23:45,000 Francamente, non hai ningunha mención de corchetes no lado esquerdo 439 00:23:45,000 --> 00:23:47,000 do signo = eo que máis falta na liña? 440 00:23:47,000 --> 00:23:49,000 Si >> [Resposta do alumno inaudível] 441 00:23:49,000 --> 00:23:52,000 O tipo, entón o que é interesante, en especial sobre o PHP 442 00:23:52,000 --> 00:23:56,000 é que non é fortemente tipado como C é, 443 00:23:56,000 --> 00:23:58,000 e que está fortemente ingresaran no sentido de que debe dicir char, 444 00:23:58,000 --> 00:24:00,000 ten que dicir int, debe dicir float. 445 00:24:00,000 --> 00:24:03,000 >> Sempre que sexa unha variable que ten que dicir Clang que o seu tipo é. 446 00:24:03,000 --> 00:24:05,000 PHP é un pouco máis preguiceiro. 447 00:24:05,000 --> 00:24:08,000 É vagamente ingresaran no sentido de que 448 00:24:08,000 --> 00:24:11,000 pode ter coches alegóricos e chars e cordas 449 00:24:11,000 --> 00:24:14,000 e ints e así por diante, pero a propia linguaxe 450 00:24:14,000 --> 00:24:17,000 realmente non lle importa o que pon dentro dunha variable. 451 00:24:17,000 --> 00:24:20,000 Non ten que saber con antelación o tipo de datos 452 00:24:20,000 --> 00:24:22,000 Vai nunha variable. 453 00:24:22,000 --> 00:24:24,000 É enteiramente ata ti, entón iso é bo 454 00:24:24,000 --> 00:24:27,000 en que non ten que se preocupar tanto cos datos escribindo 455 00:24:27,000 --> 00:24:29,000 e se preocupe que os seus argumentos son e así por diante. 456 00:24:29,000 --> 00:24:32,000 Isto tamén significa que, eventualmente, funcións PHP vai ser capaz de retornar 457 00:24:32,000 --> 00:24:36,000 ou un int do tempo e, se cadra, de cando en vez 458 00:24:36,000 --> 00:24:40,000 eles van voltar un bool, un falso boolean, por exemplo, para indicar que algo deu errado. 459 00:24:40,000 --> 00:24:44,000 Iso nos dá algúns upsides, pero tamén nos fará tipo de proxecto por 460 00:24:44,000 --> 00:24:47,000 un pouco máis preguiceiro cando se trata de dixitación de datos. 461 00:24:47,000 --> 00:24:50,000 >> O que máis hai para manter presente aquí? 462 00:24:50,000 --> 00:24:54,000 Variables ollar bastante como este, polo tanto $ s = "Ola, mundo". 463 00:24:54,000 --> 00:24:57,000 Isto é, se cadra, detectada a partir do exemplo anterior, 464 00:24:57,000 --> 00:24:59,000 e nós temos un outro tipo de lazo. 465 00:24:59,000 --> 00:25:02,000 Este nós imos realmente ver de cando en vez, xa que é moi útil, 466 00:25:02,000 --> 00:25:04,000 unha construción foreach. 467 00:25:04,000 --> 00:25:11,000 Neste caso, o loop foreach leva dentro parénteses súas tres palabras normalmente, 468 00:25:11,000 --> 00:25:16,000 $ Algo primeiro, que é o que matriz quere iterar sobre os membros, 469 00:25:16,000 --> 00:25:19,000 entón, literalmente, a palabra clave como, e entón, finalmente, 470 00:25:19,000 --> 00:25:21,000 outro nome de variable que comeza a escoller. 471 00:25:21,000 --> 00:25:23,000 Pode ser foo, bar, ou elemento, 472 00:25:23,000 --> 00:25:26,000 e que esta construción fai 473 00:25:26,000 --> 00:25:29,000 é a matriz $ contén 10 elementos 474 00:25:29,000 --> 00:25:34,000 cada iteração desta matriz, desculpe, cada iteração deste lazo 475 00:25:34,000 --> 00:25:37,000 o elemento variable chamada vai ser actualizado 476 00:25:37,000 --> 00:25:40,000 para ser o primeiro elemento na matriz, a continuación, o segundo elemento da matriz, 477 00:25:40,000 --> 00:25:44,000 a continuación, o terceiro elemento da matriz, obviando así a necesidade 478 00:25:44,000 --> 00:25:46,000 para facer a notación de corchetes lixeiramente irritante cadrado e 479 00:25:46,000 --> 00:25:49,000 $ I, a fin de índice nunha matriz. 480 00:25:49,000 --> 00:25:53,000 PHP fai todo este traballo para ti e en cada iteração 481 00:25:53,000 --> 00:25:55,000 só lle entrega o próximo elemento da matriz 482 00:25:55,000 --> 00:26:01,000 sen ter que saber ou se preocupan co seu lugar de índice numérico. 483 00:26:01,000 --> 00:26:04,000 >> E entón, finalmente, polo momento, hai outra característica do PHP 484 00:26:04,000 --> 00:26:08,000 que vai ser moi útil, especialmente cando comezamos a programación na web, 485 00:26:08,000 --> 00:26:10,000 e que é coñecido como unha matriz asociativa. 486 00:26:10,000 --> 00:26:13,000 As matrices que sabemos ata agora como 20 segundos atrás 487 00:26:13,000 --> 00:26:17,000 e para as últimas 8 semanas son numéricamente indexadas matrices, 488 00:26:17,000 --> 00:26:20,000 tipo de matrices tradicionais, onde os índices son ints, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, todo o camiño cara arriba. 490 00:26:23,000 --> 00:26:25,000 As matrices de asociación son moito máis poderosos. 491 00:26:25,000 --> 00:26:28,000 Eles permiten que teña claves arbitrarias, 492 00:26:28,000 --> 00:26:31,000 índices arbitrarios e valores arbitrarios. 493 00:26:31,000 --> 00:26:34,000 Considerando que, nunha matriz tradicional é 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 nunha matriz asociativa que pode ter un índice 495 00:26:37,000 --> 00:26:41,000 ou unha chave de foo cuxo valor é bar. 496 00:26:41,000 --> 00:26:46,000 Pode entón ter outra clave cuxo nome é Baz e cuxo valor é qux. 497 00:26:46,000 --> 00:26:49,000 >> Unha vez máis, estúpidas informática xenéricos nomes de variables aquí, 498 00:26:49,000 --> 00:26:55,000 pero o punto é que esa matriz non ten soporte 0 ou soporte 1. 499 00:26:55,000 --> 00:26:59,000 É vez vai ter soporte foo e soporte de Baz. 500 00:26:59,000 --> 00:27:03,000 Este é moito máis versátil que nós imos ser capaces de asociar 501 00:27:03,000 --> 00:27:07,000 palabras con outras palabras, as chaves con valores completamente arbitrariamente, 502 00:27:07,000 --> 00:27:12,000 e nós imos ser capaces de obter eses valores de retorno en tempo constante 503 00:27:12,000 --> 00:27:14,000 pois debaixo da capa que unha matriz asociativa 504 00:27:14,000 --> 00:27:16,000 realmente esta é unha táboa hash. 505 00:27:16,000 --> 00:27:20,000 Lembre que unha táboa hash permite que poña en algunha entrada 506 00:27:20,000 --> 00:27:25,000 como poñer a palabra David se quere inserir David nalgún tipo de dicionario, 507 00:27:25,000 --> 00:27:27,000 e despois voltar un valor normalmente. 508 00:27:27,000 --> 00:27:29,000 No caso de Speller, verdadeiro ou falso. 509 00:27:29,000 --> 00:27:33,000 David ou calquera palabra que está ou non está no dicionario. 510 00:27:33,000 --> 00:27:36,000 Unha matriz asociativa é realmente só unha táboa hash, 511 00:27:36,000 --> 00:27:38,000 pero é unha encarnación máis agradable do mesmo. 512 00:27:38,000 --> 00:27:41,000 Como veremos, iso vai permitir facer algunhas cousas 513 00:27:41,000 --> 00:27:43,000 moi, moi facilmente. 514 00:27:43,000 --> 00:27:45,000 >> Imos dar un ollo a algunhas básica do PHP 515 00:27:45,000 --> 00:27:47,000 exemplos para ver o que podemos facer con esta linguaxe. 516 00:27:47,000 --> 00:27:51,000 Deixe-me ir adiante e abrir-se no noso directorio de orixe hoxe 517 00:27:51,000 --> 00:27:54,000 un arquivo chamado hello1.php. 518 00:27:54,000 --> 00:27:57,000 Este ficheiro é un comentario do que é o código real, 519 00:27:57,000 --> 00:28:00,000 entón deixe-me realmente eliminar todos os comentarios a partir do arquivo 520 00:28:00,000 --> 00:28:05,000 e presentar-lle, quizais, o máis sinxelo programa PHP aquí. 521 00:28:05,000 --> 00:28:07,000 5 liñas, e algúns dos que son espazos en branco, 522 00:28:07,000 --> 00:28:09,000 para notar algunhas diferenzas clave aquí. 523 00:28:09,000 --> 00:28:12,000 O ficheiro é chamado hello1.php. 524 00:28:12,000 --> 00:28:16,000 A primeira liña, pero é 00:28:18,000 Similares en espírito á HTML 526 00:28:18,000 --> 00:28:21,000 que a secuencia de caracteres di ao computador 527 00:28:21,000 --> 00:28:25,000 "Ei, ordenador, aí ven un programa en que estamos en PHP." 528 00:28:25,000 --> 00:28:28,000 El asegura que non está confuso que é algunha outra lingua. 529 00:28:28,000 --> 00:28:30,000 A liña 2 é un espazo interesante branco. 530 00:28:30,000 --> 00:28:32,000 A liña 3 é o noso vello amigo printf, 531 00:28:32,000 --> 00:28:34,000 Neste momento, no contexto PHP. 532 00:28:34,000 --> 00:28:37,000 PHP ten a súa propia versión de printf, que se comporta exactamente o mesmo, 533 00:28:37,000 --> 00:28:39,000 de xeito que este é só ir para imprimir "Ola mundo". 534 00:28:39,000 --> 00:28:46,000 E entón esa etiqueta oposto aquí,>, significa que é todo para o meu código PHP. 535 00:28:46,000 --> 00:28:48,000 >> Imos ver como executar tanto. 536 00:28:48,000 --> 00:28:50,000 Eu vou volver para a miña xanela de terminal aquí. 537 00:28:50,000 --> 00:28:52,000 Eu estou indo a ir para o meu directorio PHP. 538 00:28:52,000 --> 00:28:56,000 Teña en conta que temos unha morea de arquivos, o primeiro dos cales é ola.php. 539 00:28:56,000 --> 00:29:01,000 Deixe-me ir adiante e executar este hello1.php, entrar. 540 00:29:01,000 --> 00:29:03,000 Permiso denegado. Okay. 541 00:29:03,000 --> 00:29:06,000 Como temos fixado cousas como esta no pasado? 542 00:29:06,000 --> 00:29:08,000 ¿Que é iso? >> [Resposta do alumno inaudível] 543 00:29:08,000 --> 00:29:11,000 Necesitamos ler e escribir, pero deixe-me facer ls-l. 544 00:29:11,000 --> 00:29:14,000 Teña en conta que esta saída un tanto enigmático polo cal hello1 545 00:29:14,000 --> 00:29:17,000 parece ser lidos e escritos polo me 546 00:29:17,000 --> 00:29:19,000 pero lexible por todos. 547 00:29:19,000 --> 00:29:22,000 Acontece que este realmente non é un paso na dirección certa. 548 00:29:22,000 --> 00:29:25,000 A diferenza, unha vez máis, cunha linguaxe interpretada 549 00:29:25,000 --> 00:29:27,000 é que non executar o programa directamente. 550 00:29:27,000 --> 00:29:30,000 Vostede vez executado un intérprete e entrega-lo o código 551 00:29:30,000 --> 00:29:33,000 que escribiu para que poida interpretala lo liña por liña. 552 00:29:33,000 --> 00:29:36,000 Neste caso, o intérprete ou programa que eu realmente quero correr 553 00:29:36,000 --> 00:29:38,000 chámase literalmente PHP. 554 00:29:38,000 --> 00:29:41,000 >> En algún lugar neste disco duro do aparello hai un programa 555 00:29:41,000 --> 00:29:45,000 alguén escribiu chamado PHP, ou en Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 O que eu vou facer aquí é que eu vou rodar o PHP 557 00:29:48,000 --> 00:29:51,000 pero dá-lo como un argumento de liña de comandos do código que escribín, 558 00:29:51,000 --> 00:29:54,000 e entón eu vou reducir e presione enter. 559 00:29:54,000 --> 00:29:58,000 Córrese o meu programa para min, de arriba abaixo, de esquerda a dereita. 560 00:29:58,000 --> 00:30:01,000 Deixe-me ir á fronte e abrir unha pequena variación desta. 561 00:30:01,000 --> 00:30:05,000 O aviso hello2.php que isto tamén 562 00:30:05,000 --> 00:30:08,000 é principalmente comentarios, entón deixe-me librar-se deles como unha distracción, 563 00:30:08,000 --> 00:30:13,000 eo que é claramente diferente agora sobre este ficheiro? 564 00:30:13,000 --> 00:30:15,000 Hai esa nova liña, un tanto enigmática na parte superior. 565 00:30:15,000 --> 00:30:20,000 Na liña 1 e #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Ben é unha convención sobre Linux e Mac OS para binarios, 567 00:30:24,000 --> 00:30:27,000 así / bin significa que esta é unha carpeta que contén unha chea de binarios 568 00:30:27,000 --> 00:30:29,000 que está programado, un dos cales é o PHP. 569 00:30:29,000 --> 00:30:32,000 O #! é alcumado shebang, 570 00:30:32,000 --> 00:30:35,000 que é a forma máis rápida de dicir isto, eo que iso significa 571 00:30:35,000 --> 00:30:40,000 é que cando executar este programa agora hai unha información na parte superior do arquivo 572 00:30:40,000 --> 00:30:44,000 que di ao computador o intérprete de usar. 573 00:30:44,000 --> 00:30:47,000 >> Queda un pouco aburrido se tivese que dicir aos seus usuarios e os seus clientes 574 00:30:47,000 --> 00:30:50,000 "Ei, escribir este programa chamado hello1.php". 575 00:30:50,000 --> 00:30:54,000 Todo o que tes que facer é para sempre executar o PHP e, a continuación, o nome do programa. 576 00:30:54,000 --> 00:30:58,000 Francamente, sería só máis agradable para realizar hello1.php, 577 00:30:58,000 --> 00:31:00,000 e, de feito, podemos, se faga o seguinte. 578 00:31:00,000 --> 00:31:05,000 Deixe-me ir adiante e facer ls-l, e aviso en hello2 aínda é só ler escribir 579 00:31:05,000 --> 00:31:10,000 e en seguida, ler ler, por iso aínda non podo facer iso, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Pero introduciu esta sempre así momentaneamente última vez, o mando chmod. 581 00:31:15,000 --> 00:31:20,000 Se eu fai un chmod + x, o que significa que todos os executabilidade máis, 582 00:31:20,000 --> 00:31:26,000 e despois hello2.php e despois facer ls-l novo entender o que cambiou. 583 00:31:26,000 --> 00:31:29,000 Un, Linux está me amosando o nome do ficheiro en verde para transmitir a idea de 584 00:31:29,000 --> 00:31:32,000 que é executable, pero, máis importante aínda, no lado da man esquerda 585 00:31:32,000 --> 00:31:36,000 entender que o pouco que representa X para executable xa foi definido. 586 00:31:36,000 --> 00:31:42,000 O que isto significa é agora podo correr ./hello2.php como de costume, 587 00:31:42,000 --> 00:31:45,000 presione enter, e por mor da shebang na parte superior do arquivo 588 00:31:45,000 --> 00:31:48,000 iso é unha información, de novo, a Linux que di 589 00:31:48,000 --> 00:31:51,000 usar este intérprete para executar este ficheiro. 590 00:31:51,000 --> 00:31:54,000 Non se preocupe en facer o usuario a escribir realmente iso. 591 00:31:54,000 --> 00:31:57,000 >> E o que é legal é agora que é medio irrelevante para os meus clientes ou meus amigos 592 00:31:57,000 --> 00:32:01,000 o idioma que eu escribín este programa, para que eu poida ir adiante con mv 593 00:32:01,000 --> 00:32:04,000 e renomear esa cousa de hello2, por exemplo. 594 00:32:04,000 --> 00:32:07,000 E agora eu fai ./hello2 595 00:32:07,000 --> 00:32:10,000 e zoom out meu programa segue a funcionar. 596 00:32:10,000 --> 00:32:13,000 Estas extensións de arquivo son unha convención humana que é necesario 597 00:32:13,000 --> 00:32:15,000 para algo así como Clang e facer que mirar para eles. 598 00:32:15,000 --> 00:32:18,000 Pero para PHP, eu podería chamar iso de nada extensión de arquivo que quero. 599 00:32:18,000 --> 00:32:22,000 Eu podería enganar o mundo a pensar que eu son realmente bo en Ruby, 600 00:32:22,000 --> 00:32:25,000 e eu podería escribir hello2.rb e executa isto, 601 00:32:25,000 --> 00:32:28,000 e listo, agora eu teño a versión Ruby, que é unha mentira completa. 602 00:32:28,000 --> 00:32:30,000 Pero as extensións de arquivo son sen sentido 603 00:32:30,000 --> 00:32:35,000 Se o ficheiro é executable e ten esa información especial no principio do ficheiro. 604 00:32:35,000 --> 00:32:38,000 >> Agora, como un aparte, deixe-me amosar-lle rapidamente a versión 3, 605 00:32:38,000 --> 00:32:40,000 que é unha especie de truco útil saber. 606 00:32:40,000 --> 00:32:45,000 En hello3 eu fixen algo un pouco mal 607 00:32:45,000 --> 00:32:47,000 que eu vou actualizar o código fonte en liña. 608 00:32:47,000 --> 00:32:50,000 Na versión 3 verifícase que na maioría dos ordenadores Linux 609 00:32:50,000 --> 00:32:53,000 hai un programa chamado Estructural para o medio ambiente, 610 00:32:53,000 --> 00:32:56,000 eo que podes facer aquí é se non ten idea de onde o PHP 611 00:32:56,000 --> 00:33:00,000 instalar na unidade de disco duro, porque de feito pode variar con base no ordenador 612 00:33:00,000 --> 00:33:03,000 que alguén está a usar, Estructural di só executa Estructural, 613 00:33:03,000 --> 00:33:07,000 que é na maioría dos sistemas, e descubrir onde o PHP é. 614 00:33:07,000 --> 00:33:11,000 Só un truco común para que non ten que se preocupar en atopar para fóra onde un programa. 615 00:33:11,000 --> 00:33:14,000 Pero se importa para descubrir onde un programa e non ter se importado ata agora 616 00:33:14,000 --> 00:33:16,000 pode utilizar o comando que. 617 00:33:16,000 --> 00:33:19,000 >> Deixe-me afastar e tipo que php, 618 00:33:19,000 --> 00:33:23,000 e entender que me di que é, en realidade, en usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 É unha especie de mentira. Tamén no lixo. 620 00:33:25,000 --> 00:33:27,000 É só me amosando o primeiro hit. 621 00:33:27,000 --> 00:33:31,000 Se xa se preguntas onde é Clang, que Clang, que está en usr / bin / bumbum, 622 00:33:31,000 --> 00:33:34,000 que facer, usr / bin / facer, e iso significa que todo ese tempo 623 00:33:34,000 --> 00:33:38,000 podería ter sido escribindo usr / bin / clang entrar para realizar Clang, 624 00:33:38,000 --> 00:33:41,000 pero é o tipo de tedioso para facelo, entón algunhas carpetas 625 00:33:41,000 --> 00:33:44,000 como usr / bin e bin son consideradas padróns 626 00:33:44,000 --> 00:33:50,000 de xeito que o ordenador sabe mirar para eles para ti. 627 00:33:50,000 --> 00:33:53,000 Calquera dúbida sobre como escribir un super, super sinxelo programa World Ola 628 00:33:53,000 --> 00:33:55,000 en PHP e logo executa-lo? 629 00:33:55,000 --> 00:33:59,000 Porque agora nós imos comezar a introducir a sintaxe máis atractivo. 630 00:33:59,000 --> 00:34:01,000 Todo ben, aquí imos nós. 631 00:34:01,000 --> 00:34:03,000 Estes programas que vimos, en realidade, todos eles antes. 632 00:34:03,000 --> 00:34:07,000 >> Se eu abrir, por exemplo, imos facer beer1.php, 633 00:34:07,000 --> 00:34:09,000 non imos pasar por varias versións deste, pero o que eu fixen 634 00:34:09,000 --> 00:34:13,000 foi eu sentei e derramou ou convertido 635 00:34:13,000 --> 00:34:15,000 meu código C para o código PHP aquí. 636 00:34:15,000 --> 00:34:18,000 A maior parte do inicio do ficheiro e comentarios aquí. 637 00:34:18,000 --> 00:34:20,000 Acontece que hai unha nova función que necesitamos chamado readline. 638 00:34:20,000 --> 00:34:23,000 GetString, recall, a partir Semana 0 foi unha cousa CS50. 639 00:34:23,000 --> 00:34:27,000 PHP vén coa súa función amigable, chamada readline 640 00:34:27,000 --> 00:34:30,000 que leva un argumento que especifica o poder 641 00:34:30,000 --> 00:34:33,000 que quere amosar ao usuario, e que fai readline 642 00:34:33,000 --> 00:34:35,000 é el retorna o que o usuario escribe Pol 643 00:34:35,000 --> 00:34:39,000 Neste caso, eu estou declarando unha variable chamada $ n. 644 00:34:39,000 --> 00:34:42,000 Eu son almacenar nel o valor de retorno de readline 645 00:34:42,000 --> 00:34:44,000 despois de avisar o usuario con esa secuencia. 646 00:34:44,000 --> 00:34:47,000 Só para backup, para realmente executar esa cousa, deixe-me ir adiante 647 00:34:47,000 --> 00:34:50,000 e realizar beer1.php php. 648 00:34:50,000 --> 00:34:53,000 Cantas botellas haberá? Imos facer dous esta vez. 649 00:34:53,000 --> 00:34:55,000 Intro. Isto é todo. 650 00:34:55,000 --> 00:34:59,000 >> O programa é funcionalmente idéntico ao da versión C de semanas. 651 00:34:59,000 --> 00:35:01,000 Pero sintaticamente imos ver o que é diferente. 652 00:35:01,000 --> 00:35:05,000 Despois de que eu recibir un int a partir da notificación do usuario que eu estou facendo algunha comprobación de erros, 653 00:35:05,000 --> 00:35:08,000 e n é menor que 1 me saír e eu imprimir 654 00:35:08,000 --> 00:35:11,000 unha mensaxe moito para o usuario e saída con 1. 655 00:35:11,000 --> 00:35:13,000 Isto tamén é un pouco diferente. 656 00:35:13,000 --> 00:35:16,000  C o que imos facer? C volvemos 1. 657 00:35:16,000 --> 00:35:20,000 No PHP vostede saír con unha, que francamente é que eu creo que un pouco máis intuitiva 658 00:35:20,000 --> 00:35:22,000 porque está literalmente saír do programa. 659 00:35:22,000 --> 00:35:25,000 Todo ben, e entón aquí a música irritante é idéntico sintaticamente 660 00:35:25,000 --> 00:35:29,000 con excepción da variable, entón aquí na liña 24 en diante 661 00:35:29,000 --> 00:35:31,000 notar o meu lazo for é case o mesmo, 662 00:35:31,000 --> 00:35:34,000 pero eu teño R $ diante do I e n, 663 00:35:34,000 --> 00:35:37,000 e que tamén está en falta a partir da liña 26 que tivemos no pasado 664 00:35:37,000 --> 00:35:39,000 cando se declara unha variable i? 665 00:35:39,000 --> 00:35:41,000 Non hai ningún tipo. 666 00:35:41,000 --> 00:35:43,000 É incorrecto en PHP para dicir int. 667 00:35:43,000 --> 00:35:45,000 Vostede simplemente non precisa facer iso. 668 00:35:45,000 --> 00:35:48,000 O ordenador, o intérprete de PHP é intelixente o suficiente para entender 669 00:35:48,000 --> 00:35:51,000 que se pór un número de $ I será tratado 670 00:35:51,000 --> 00:35:53,000 como un número para ti. 671 00:35:53,000 --> 00:35:57,000 E entón aquí estamos na ficha $ i $ i $ i - 1. 672 00:35:57,000 --> 00:36:00,000 Todo isto é o mesmo, e entón aquí nós facemos un "Guau, iso é aburrido" printf 673 00:36:00,000 --> 00:36:02,000 e despois saír (0). 674 00:36:02,000 --> 00:36:05,000 >> Unha vez máis, o takeaway aquí é que aínda que nós imos gastar relativamente 675 00:36:05,000 --> 00:36:09,000 pouco de tempo en PHP, certamente contra o que fixemos en C, 676 00:36:09,000 --> 00:36:12,000 é case o mesmo, e así o que imos facer hoxe e na próxima semana 677 00:36:12,000 --> 00:36:14,000 e ademais é centrar realmente nalgunhas das novas ideas. 678 00:36:14,000 --> 00:36:17,000 Só para ver que outra cousa non traducir máis de C, 679 00:36:17,000 --> 00:36:20,000 Este foi un programa super simples que fixemos a semana 1 680 00:36:20,000 --> 00:36:22,000 ou 2, que un valor de cubos. 681 00:36:22,000 --> 00:36:25,000 Pero o que era interesante no momento sobre este programa é que 682 00:36:25,000 --> 00:36:28,000 introduciu a noción de función personalizada escrito que nós mesmos escribiron. 683 00:36:28,000 --> 00:36:31,000 A sintaxe do PHP é case o mesmo. 684 00:36:31,000 --> 00:36:33,000 Aquí está o meu programa encima. 685 00:36:33,000 --> 00:36:35,000 Teña en conta de novo ausente é calquera noción de inicio. 686 00:36:35,000 --> 00:36:39,000 Comezar a escribir código, e iso é o que vai comezar executado polo intérprete. 687 00:36:39,000 --> 00:36:42,000 Eu imprimir x agora é 2, presuntamente. 688 00:36:42,000 --> 00:36:44,000 Entón eu reclamar cubing ... 689 00:36:44,000 --> 00:36:47,000 Entón eu chamar a función cubo e pasar $ x 690 00:36:47,000 --> 00:36:50,000 e asignar o valor de retorno a $ x. 691 00:36:50,000 --> 00:36:53,000 Entón eu afirmo que é en cubos, e entón eu digo iso, o que espero 692 00:36:53,000 --> 00:36:55,000 vai dicir que x é agora 8. 693 00:36:55,000 --> 00:36:59,000 A sintaxe para a función en PHP é sempre así lixeiramente diferente. 694 00:36:59,000 --> 00:37:01,000 Novo falta é o tipo de retorno. 695 00:37:01,000 --> 00:37:05,000 Novo falta é o tipo de retorno e tamén falta é que outro tipo? 696 00:37:05,000 --> 00:37:07,000 [Resposta do alumno inaudível] 697 00:37:07,000 --> 00:37:10,000 Ben, ok, iso é bo. Imos volver a iso nun segundo. 698 00:37:10,000 --> 00:37:12,000 >> Non temos, por exemplo, int aquí. 699 00:37:12,000 --> 00:37:15,000 Non, por exemplo, ter int aquí porque, unha vez máis, en PHP 700 00:37:15,000 --> 00:37:18,000 simplemente non precisa e non debe facelo, 701 00:37:18,000 --> 00:37:20,000 pero hai esta nova contrasinal chamada función. 702 00:37:20,000 --> 00:37:23,000 O PHP é case un pouco máis claro, porque cando quere unha función 703 00:37:23,000 --> 00:37:26,000 vostede literalmente dicir función, é darlle un nome e, a continuación, unha lista separada por comas 704 00:37:26,000 --> 00:37:28,000 se algún dos seus argumentos. 705 00:37:28,000 --> 00:37:32,000 Non é preciso dicir nula ou algo así, e despois de retorno é o mesmo, 706 00:37:32,000 --> 00:37:35,000 $ A $ * a * $ a. 707 00:37:35,000 --> 00:37:38,000 O que tamén está falta? Sammy apuntou que aquí. 708 00:37:38,000 --> 00:37:43,000 Na parte superior do ficheiro completamente ausente en PHP tamén é un prototipo. 709 00:37:43,000 --> 00:37:45,000 Isto tamén é por deseño. 710 00:37:45,000 --> 00:37:48,000 Linguas e intérpretes como PHP son máis espertos que C sempre foi 711 00:37:48,000 --> 00:37:50,000 en compiladores como Clang. 712 00:37:50,000 --> 00:37:53,000 >> Lembre que Clang, se non dixo a el que existe cubo, 713 00:37:53,000 --> 00:37:56,000 Se non diga a el que printf existe como un prototipo 714 00:37:56,000 --> 00:38:00,000 ou cun # include, así, el estaba indo a berrar con vostede e nin sequera compilar o código. 715 00:38:00,000 --> 00:38:03,000 PHP e linguaxes máis modernas son moito máis intelixentes cando se trata de agasallo. 716 00:38:03,000 --> 00:38:07,000 Eles van encargarase de ler todo o seu código 717 00:38:07,000 --> 00:38:11,000 e entón berrar con vostede só se atopa en ningún lugar cubo. 718 00:38:11,000 --> 00:38:15,000 Non importa se cubo é no fondo ou na parte superior ou mesmo nalgún ficheiro separado. 719 00:38:15,000 --> 00:38:18,000 Linguaxes PHP e similares son agora intelixente o suficiente para ollar fronte 720 00:38:18,000 --> 00:38:26,000 en todo antes de considerar como tendo cometido un erro. 721 00:38:26,000 --> 00:38:28,000 Onde iso nos deixa? 722 00:38:28,000 --> 00:38:32,000 >> Imos facer un último exemplo aquí en condicións, 723 00:38:32,000 --> 00:38:35,000 e se eu abrir aviso conditions2.php tamén 724 00:38:35,000 --> 00:38:37,000 sintaxe aquí é case o mesmo. 725 00:38:37,000 --> 00:38:40,000 Está a usar readline vez de GetString, pero que a liña é a mesma que antes, 726 00:38:40,000 --> 00:38:42,000 "Gustaríame un enteiro por favor." 727 00:38:42,000 --> 00:38:45,000 Eu, entón, ter unha condición que, outra, e logo outra persoa, 728 00:38:45,000 --> 00:38:48,000 pero funcionalmente este programa tamén é idéntico ao que fixemos semanas, 729 00:38:48,000 --> 00:38:51,000 por iso, se eu executar esa cousa, php de conditions2, 730 00:38:51,000 --> 00:38:54,000 e eu dar-lle un número como 23 - 731 00:38:54,000 --> 00:38:57,000 Eu escollín un número positivo. Se eu darlle -1 eu peguei un número negativo. 732 00:38:57,000 --> 00:39:00,000 Se eu dou 0 Eu, en realidade tomou 0. 733 00:39:00,000 --> 00:39:02,000 Entón, quen lle importa todo isto? 734 00:39:02,000 --> 00:39:06,000 Ben, un tipo divertido de exercicios aquí 735 00:39:06,000 --> 00:39:10,000 polo menos para min era ir cara atrás e ver o quão rápido eu podería aplicar pset 5, 736 00:39:10,000 --> 00:39:12,000 o pset erros ortográficos. 737 00:39:12,000 --> 00:39:15,000 Lembre que había un ficheiro chamado speller.c, 738 00:39:15,000 --> 00:39:17,000 e había un ficheiro chamado dictionary.c. 739 00:39:17,000 --> 00:39:20,000 O que eu fixen foi tipo de gasto uns minutos e eu convertinse o código C 740 00:39:20,000 --> 00:39:23,000 para o código PHP, e non imos gastar moito tempo en Speller 741 00:39:23,000 --> 00:39:26,000 porque así como en pset 5, vostede realmente non precisa 742 00:39:26,000 --> 00:39:29,000 gastar moito tempo en Speller en si, porque a súa atención estaba no dicionario. 743 00:39:29,000 --> 00:39:32,000 >> Basta dicir que, se ler Speller, 744 00:39:32,000 --> 00:39:35,000 este ficheiro aquí, que é moi fermoso equivalente ao código C 745 00:39:35,000 --> 00:39:37,000 que lle deu a pset 5. 746 00:39:37,000 --> 00:39:39,000 Acaba engadido preto de US $ nalgúns lugares. 747 00:39:39,000 --> 00:39:43,000 Eu mudei os nomes das funcións determinadas, non existe no PHP. 748 00:39:43,000 --> 00:39:45,000 Hai unha cousa adicional aquí, preg_match, 749 00:39:45,000 --> 00:39:48,000 que é o xeito un pouco máis sofisticado de facer algo, pero imos voltar a iso eventualmente. 750 00:39:48,000 --> 00:39:51,000 Pero en fin, Speller é case idéntica, e se ollar ben no fondo 751 00:39:51,000 --> 00:39:54,000 o que, eventualmente, cospe é este aquí, 752 00:39:54,000 --> 00:39:57,000 palabras con erros ortográficos, palabras de dicionario, palabras no texto. 753 00:39:57,000 --> 00:40:00,000 Todo ben, entón o que é interesante agora é o seguinte. 754 00:40:00,000 --> 00:40:05,000 No cumio do meu arquivo que estou esixindo dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Así como C # include PHP ten unha función especial chamada requiren 756 00:40:09,000 --> 00:40:14,000 que practicamente fai o mesmo, esixen un ficheiro chamado dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Como podo ir sobre a implementación pset 5? 758 00:40:18,000 --> 00:40:21,000 Deixe-me ir adiante e abrir un ficheiro aquí. 759 00:40:21,000 --> 00:40:24,000 Deixe-me dar unha pequena referencia aquí. 760 00:40:24,000 --> 00:40:29,000 E deixe-me crear un novo arquivo e comezar a chamar esta dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Deixe-me poñer en outro cartafol, para que poidamos facelo en directo. 762 00:40:31,000 --> 00:40:33,000 E agora eu vou zoom in 763 00:40:33,000 --> 00:40:37,000 Vou comezar o meu arquivo PHP con soporte aberto php pechado soporte. 764 00:40:37,000 --> 00:40:40,000 E entón aquí había algunhas funcións que eu precisaba para aplicar a pset 5, 765 00:40:40,000 --> 00:40:42,000 entón deixe-me comezar a aplicar algunhas das persoas, 766 00:40:42,000 --> 00:40:47,000 para comprobación de función, que tivo que levar unha palabra en como un argumento. 767 00:40:47,000 --> 00:40:49,000 Nós imos facer isto e volver a el en un momento. 768 00:40:49,000 --> 00:40:53,000 >> Non había carga, función que tivo no que como un argumento? 769 00:40:53,000 --> 00:40:56,000 Dicionario, para que o arquivo que eu realmente quería cargar. 770 00:40:56,000 --> 00:41:00,000 Houbo dimensión, función que non recibe ningún argumento 771 00:41:00,000 --> 00:41:04,000 e había-función que era o outro? 772 00:41:04,000 --> 00:41:06,000 Descargar, que non tomou ningunha argumentación. 773 00:41:06,000 --> 00:41:10,000 Estas son as catro funcións que eu teño agora aplicar en PHP, 774 00:41:10,000 --> 00:41:13,000 eo que eu vou facer é ir adiante e facelo. 775 00:41:13,000 --> 00:41:16,000 Unha morea de que usou unha táboa hash en pset 5, 776 00:41:16,000 --> 00:41:21,000 entón deixe-me ir adiante e crear unha táboa hash en PHP. 777 00:41:21,000 --> 00:41:23,000 Feito. 778 00:41:23,000 --> 00:41:25,000 Tanto me dá unha táboa hash. Ben, por que? 779 00:41:25,000 --> 00:41:30,000 Un deles, a variable é chamada $ táboa, só para evocar a idea dunha táboa de hash. 780 00:41:30,000 --> 00:41:34,000 Os corchetes, con todo, recordar, representan o que? 781 00:41:34,000 --> 00:41:37,000 Unha matriz, pero en matrices PHP non ten que ser indexada numericamente. 782 00:41:37,000 --> 00:41:41,000 Eles poden ser matrices de asociación, 783 00:41:41,000 --> 00:41:44,000 o que significa que pode ter chaves arbitrarias e valores. 784 00:41:44,000 --> 00:41:49,000 >> Así como no pset 5, aqueles de vostedes que fixo implementacións táboa hash 785 00:41:49,000 --> 00:41:53,000 probablemente introducido a palabra e despois inserido nunha cadea de listas ligadas, 786 00:41:53,000 --> 00:41:56,000 ou almacenados en algún lugar valor de verdade ou algo nese sentido. 787 00:41:56,000 --> 00:41:59,000 Vostede de algunha maneira lembrou-se do feito de que a palabra estaba alí. 788 00:41:59,000 --> 00:42:01,000 Por agora, que vai ser a miña táboa hash, 789 00:42:01,000 --> 00:42:06,000 e agora para ir sobre como implementar a función de verificación 790 00:42:06,000 --> 00:42:09,000 Eu só teño mirar para dentro desa táboa hash 791 00:42:09,000 --> 00:42:11,000 e ver se unha palabra está aí. 792 00:42:11,000 --> 00:42:15,000 O que eu vou facer é que eu vou dicir, se 793 00:42:15,000 --> 00:42:20,000 digamos isset, que é unha función de PHP que, literalmente, significa só que é o conxunto de claves, 794 00:42:20,000 --> 00:42:24,000 así isset ($ táboa [$ palabra] 795 00:42:24,000 --> 00:42:29,000 e así volver true. 796 00:42:29,000 --> 00:42:32,000 É iso aí. Isto é pset 5 en PHP. 797 00:42:32,000 --> 00:42:34,000 Ben, con xustiza, todo ben. 798 00:42:34,000 --> 00:42:37,000 Else return false, entón non está alí. 799 00:42:37,000 --> 00:42:39,000 O que realmente está a suceder aquí? 800 00:42:39,000 --> 00:42:42,000 Ben, se a táboa de mesa ou hash aquí máis xeral- 801 00:42:42,000 --> 00:42:46,000 é unha matriz asociativa que significa que pode indexar nel 802 00:42:46,000 --> 00:42:50,000 con unha palabra como "palabra", e ten que volver algún valor. 803 00:42:50,000 --> 00:42:52,000 >> Estamos medio de obter un paso á fronte de nós mesmos. 804 00:42:52,000 --> 00:42:56,000 Sería unha especie de bo realmente cargou o primeiro arquivo, 805 00:42:56,000 --> 00:42:58,000 para carga non é tan sinxelo, pero deixe-me ir adiante e látego 806 00:42:58,000 --> 00:43:00,000  unha implementación moi rápida de carga. 807 00:43:00,000 --> 00:43:07,000 Deixe-me ir adiante e dicir palabras recibe ficheiro de dicionario. 808 00:43:07,000 --> 00:43:10,000 A función de ficheiros en PHP abre un ficheiro 809 00:43:10,000 --> 00:43:12,000 e retorna para unha serie de todas as palabras que o arquivo, 810 00:43:12,000 --> 00:43:14,000 só entrega-los para ti. 811 00:43:14,000 --> 00:43:16,000 Isto foi unha gran dor tamén, non foi? 812 00:43:16,000 --> 00:43:21,000 Agora foreach, esta é a nosa nova construción, foreach ($ palabras $ palabra). 813 00:43:21,000 --> 00:43:25,000 Este ciclo vai comezar a iteração sobre as palabras de matriz 814 00:43:25,000 --> 00:43:30,000 e asignar á variable $ palabra cada palabra no ficheiro 815 00:43:30,000 --> 00:43:32,000 dende o primeiro para o segundo para o terceiro ao cuarto todo o camiño 816 00:43:32,000 --> 00:43:35,000 entón eu non teño que facer o chat [i] notación e similares. 817 00:43:35,000 --> 00:43:38,000 E o que eu estou simplemente vai facer para cada unha desas palabras 818 00:43:38,000 --> 00:43:43,000 e almacena-lo na miña mesa de indexación na táboa 819 00:43:43,000 --> 00:43:47,000 e despois facer realidade, porque para lembrar 820 00:43:47,000 --> 00:43:50,000 que unha palabra no meu dicionario é todo o que eu teño que facer 821 00:43:50,000 --> 00:43:55,000 e tipo de virar un pouco e dicir esta palabra na miña táboa hash é alí, é certo. 822 00:43:55,000 --> 00:43:58,000 E se non está alí, eu non teño que poñer explicitamente falsa, 823 00:43:58,000 --> 00:44:01,000 en caso contrario, eu tería que poñer falsa para todas as palabras posibles no universo. 824 00:44:01,000 --> 00:44:05,000 >> É suficiente para min só para definir un valor de índice 825 00:44:05,000 --> 00:44:09,000 a verdade se unha palabra é, en realidade, na miña táboa hash. 826 00:44:09,000 --> 00:44:12,000 Agora, eu estou cortando un par de cantos aquí que eu vou acenar as mans menos por agora, 827 00:44:12,000 --> 00:44:15,000 , Pero agora a función de carga está feito. 828 00:44:15,000 --> 00:44:18,000 Eu cargar todas as palabras a partir do ficheiro nun array. 829 00:44:18,000 --> 00:44:21,000 Eu iterar desa matriz e para cada palabra na matriz 830 00:44:21,000 --> 00:44:24,000 Eu liga-lo na miña táboa hash cunha liña de código. 831 00:44:24,000 --> 00:44:26,000 Isto é divertido. Vostede sabe como podemos implementar tamaño agora? 832 00:44:26,000 --> 00:44:28,000 Ben, o tamaño é sempre moi doado, na xustiza. 833 00:44:28,000 --> 00:44:32,000 Aquí podemos só facer retornar a conta de mesa. 834 00:44:32,000 --> 00:44:34,000 Isto é moi fácil tamén, contar o número de cousas enriba da mesa. 835 00:44:34,000 --> 00:44:36,000 Isto é realmente o tipo de non máis eficiente. 836 00:44:36,000 --> 00:44:39,000 Eu probablemente debería ter un tamaño variable chamada para que poidamos facelo 837 00:44:39,000 --> 00:44:41,000 en tempo constante, pero que é moi fácil. 838 00:44:41,000 --> 00:44:45,000 Ah, e en seguida, descargar, se realmente queremos ser anal aquí 839 00:44:45,000 --> 00:44:47,000 podemos dicir que é como descargar algo. 840 00:44:47,000 --> 00:44:49,000 Vostede acaba de definir a variable igual a unha matriz baleira, 841 00:44:49,000 --> 00:44:51,000 e se librar de todo o que estaba alí. 842 00:44:51,000 --> 00:44:53,000 Non hai necesidade de conectar de balde. 843 00:44:53,000 --> 00:44:56,000 >> Unha vez máis, eu corte algúns cantos, e pido desculpas para a asignación conxunto de problemas 5 844 00:44:56,000 --> 00:45:00,000 quizais en C, pero agora vai adiante e facer iso, 845 00:45:00,000 --> 00:45:02,000 Vou rodar a versión que escribín con anterioridade 846 00:45:02,000 --> 00:45:05,000 só para que eu non cometa erros sintáticos calquera. 847 00:45:05,000 --> 00:45:08,000 Deixe-me ir adiante e executar Speller. A utilización é a mesma. 848 00:45:08,000 --> 00:45:12,000 Aquí está un arquivo de dicionario que contén só a palabra foo. 849 00:45:12,000 --> 00:45:15,000 Aquí está un arquivo de texto que contén só foo bar. 850 00:45:15,000 --> 00:45:19,000 Imos deletrear comprobar iso, Speller así, usando este ficheiro de dicionario sobre este arquivo de texto. 851 00:45:19,000 --> 00:45:21,000 Non hai unha palabra grafada incorrectamente, bar, e listo. 852 00:45:21,000 --> 00:45:23,000 Feito con pset 5. 853 00:45:23,000 --> 00:45:30,000 Imos dar un intervalo de 5 minutos aquí, e nós imos volver e máis en PHP. 854 00:45:30,000 --> 00:45:32,000 Todo ben, estamos de volta. 855 00:45:32,000 --> 00:45:34,000 Imos facer-me odiar por un tempo. 856 00:45:34,000 --> 00:45:37,000 Imos agora ver si realmente este non era un positivo 857 00:45:37,000 --> 00:45:39,000 realmente implementar isto en PHP. 858 00:45:39,000 --> 00:45:43,000 Concedido, levou 45 segundos para executar. 859 00:45:43,000 --> 00:45:45,000 >> Pero imos adiante agora e executar as cousas. 860 00:45:45,000 --> 00:45:49,000 Deixe-me ir adiante e executar unha versión C 861 00:45:49,000 --> 00:45:52,000 de Speller, e imos executa-lo nun dos maiores arquivos, 862 00:45:52,000 --> 00:45:54,000 que é a Biblia King James. 863 00:45:54,000 --> 00:45:57,000 E iso aquí é en-imos para a nosa carpeta C, 864 00:45:57,000 --> 00:46:01,000 Speller en King James, a 5. 865 00:46:01,000 --> 00:46:03,000 Unha morea de palabras con erros ortográficos. 866 00:46:03,000 --> 00:46:06,000 Ok, entón esta é a saída que probablemente ten aínda que ás veces son un pouco diferentes, 867 00:46:06,000 --> 00:46:09,000 se ten todo funciona correctamente, e así que o tempo en total, para a comprobación ortográfica 868 00:46:09,000 --> 00:46:13,000 a Biblia King James foi 0,38 segundo, de modo moi bo usar esa aplicación. 869 00:46:13,000 --> 00:46:16,000 Agora déixeme ir a versión de PHP, que acaba de escribir. 870 00:46:16,000 --> 00:46:18,000 Déixame correr Speller en King James. 871 00:46:18,000 --> 00:46:21,000 Oops, ignorar este erro. Eu estou no directorio incorrecto. 872 00:46:21,000 --> 00:46:24,000 Speller sobre King James, a 5. 873 00:46:46,000 --> 00:46:48,000 Case listo. 874 00:46:48,000 --> 00:46:51,000 >> Ok, o astuto observador vai entender que foi máis de 3 segundos de alí. 875 00:46:51,000 --> 00:46:54,000 Ese é o verdadeiro tempo en execución. 876 00:46:54,000 --> 00:46:58,000 Acontece que é preciso tempo para cuspir gran cantidade de texto fóra 877 00:46:58,000 --> 00:47:00,000 porque buffer cuestións, pero longa historia curta, 878 00:47:00,000 --> 00:47:04,000 que foi de 3,15 segundos de tempo de máquina, tempo de CPU, 879 00:47:04,000 --> 00:47:07,000 versus o que foi un momento atrás? 880 00:47:07,000 --> 00:47:09,000 Como 0,3. 881 00:47:09,000 --> 00:47:11,000 Quero dicir, é unha orde de magnitude máis lento, entón onde é que 882 00:47:11,000 --> 00:47:14,000 desaceleración ridículo benvida? 883 00:47:14,000 --> 00:47:17,000 Ben, como foi o caso coa maioría todo o proxecto de decisión que fixemos 884 00:47:17,000 --> 00:47:21,000 na clase ao longo dos últimos nove semanas hai case sempre esa compensación. 885 00:47:21,000 --> 00:47:24,000 Ás veces, só un espazo entre, por veces, entre o espazo eo tempo, 886 00:47:24,000 --> 00:47:27,000 espazo, tempo e esforzo de desenvolvemento, e de feito aquí, aínda que 887 00:47:27,000 --> 00:47:31,000 que salvou unha cantidade enorme de tempo, quizais potencialmente 10-20-30 horas 888 00:47:31,000 --> 00:47:34,000 tempo de desenvolvemento aplicar o corrector ortográfico 889 00:47:34,000 --> 00:47:36,000 chicoteando o en só 45 segundos con esta linguaxe 890 00:47:36,000 --> 00:47:40,000 o prezo que pagamos é que é unha orde de magnitude máis lento, como resultado, 891 00:47:40,000 --> 00:47:43,000 e este é xeralmente o caso máis calquera linguaxe interpretada, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl ou outros en que 893 00:47:46,000 --> 00:47:49,000 se está indo a executa-lo a través dun intérprete e que lea o seu código 894 00:47:49,000 --> 00:47:52,000 liña por liña, de arriba abaixo, de esquerda a dereita, 895 00:47:52,000 --> 00:47:55,000 intermedio que vai levar moito tempo propio, 896 00:47:55,000 --> 00:47:59,000 eo que estaba sentindo aquí en 3 segundos en vez de 0,3 segundo 897 00:47:59,000 --> 00:48:02,000 é o feito de non existir este intermediario que ten que literalmente interpretar o noso código 898 00:48:02,000 --> 00:48:05,000 liña por liña, e Deus me libre se está dentro dun loop 899 00:48:05,000 --> 00:48:08,000 cun enorme arquivo contendo centos de miles de palabras. 900 00:48:08,000 --> 00:48:11,000 >> Esta sobrecarga vai sumar e sumar e sumar e sumar. 901 00:48:11,000 --> 00:48:16,000 Para unha ferramenta como esta probablemente non é a mellor linguaxe a empregar para a implementación 902 00:48:16,000 --> 00:48:20,000 un corrector ortográfico se inmediatez é de interese para os seus usuarios e para ti. 903 00:48:20,000 --> 00:48:23,000 Pero o luxo que temos en un momento e se 904 00:48:23,000 --> 00:48:27,000 usar unha linguaxe como PHP ou unha morea de linguaxes interpretadas 905 00:48:27,000 --> 00:48:30,000 no contexto da web, para que o asunto, ten o beneficio 906 00:48:30,000 --> 00:48:34,000 que a Internet é moito máis lento que a maioría dos ordenadores. 907 00:48:34,000 --> 00:48:38,000 Ten unha CPU GHz no seu computador, 2 GHz, talvez aínda máis nos días de hoxe. 908 00:48:38,000 --> 00:48:41,000 Pero a realidade está en internet hai unha cantidade elevada de latencia 909 00:48:41,000 --> 00:48:45,000 que para un navegador para falar con un servidor, aínda que vimos a semana pasada 910 00:48:45,000 --> 00:48:47,000 que iso é moi rápido, metade dun milésimo de segundo ou así, 911 00:48:47,000 --> 00:48:51,000 que tamén engade-se, e se está baixando cousas como unha imaxe 912 00:48:51,000 --> 00:48:54,000 ou unha foto no Facebook ou recibindo mensaxes instantáneas sobre conversacións de Facebook, 913 00:48:54,000 --> 00:48:57,000 Gchat ou similares, todos estes tempos de ida e volta 914 00:48:57,000 --> 00:49:00,000 entre o navegador eo servidor de inicio para sumar, 915 00:49:00,000 --> 00:49:03,000 o que fai a súa escolla particular da linguaxe, en moitos casos 916 00:49:03,000 --> 00:49:07,000 non tan relevante, entón está moi ben usando unha linguaxe un pouco máis lento 917 00:49:07,000 --> 00:49:10,000 como PHP ou Python ou Ruby 918 00:49:10,000 --> 00:49:13,000 pero para os que existen upsides enormes para vostede e os seus compañeiros 919 00:49:13,000 --> 00:49:17,000 e os seus amigos, porque pode aplicar cousas moito máis rápido. 920 00:49:17,000 --> 00:49:20,000 E ademais, ten moito menos risco de fallos de seguridade determinados. 921 00:49:20,000 --> 00:49:22,000 Non hai punteiros en PHP. 922 00:49:22,000 --> 00:49:25,000 Non hai fallos seg que pode facilmente inducir 923 00:49:25,000 --> 00:49:27,000 do mesmo xeito que podería no C. 924 00:49:27,000 --> 00:49:29,000 Con C é super preto do hardware. 925 00:49:29,000 --> 00:49:33,000 Con linguaxes PHP e semellante é unha especie de nivel superior, por así dicir, 926 00:49:33,000 --> 00:49:37,000 con unha morea de defensas entre vostede eo que está realmente a suceder 927 00:49:37,000 --> 00:49:39,000 dentro da máquina, e é só un troco. 928 00:49:39,000 --> 00:49:42,000 >> Temos chegado ao punto de ter esas máis modernas, linguaxes de alto nivel 929 00:49:42,000 --> 00:49:47,000 como PHP por mor das leccións aprendidas en linguaxes como PHP en C. 930 00:49:47,000 --> 00:49:50,000 Pero se non entende o que está a suceder debaixo do capo de todo este tempo 931 00:49:50,000 --> 00:49:53,000 certamente non pode tomar as decisións de deseño apropiadas, 932 00:49:53,000 --> 00:49:56,000 e, por suposto, cando se trata de traballar nun lugar como Facebook ou Google 933 00:49:56,000 --> 00:49:59,000 ou calquera destes lugares que están cada vez máis xogar con grandes conxuntos de datos 934 00:49:59,000 --> 00:50:01,000 mesmo se voltar e facer PREMED e estamos a traballar con algúns MD 935 00:50:01,000 --> 00:50:04,000 nalgúns gran conxunto de datos que inclúen pacientes e médicos 936 00:50:04,000 --> 00:50:08,000 e como usar as ferramentas certas é inmensamente atractiva 937 00:50:08,000 --> 00:50:11,000 porque doutra forma a súa análise dun conxunto de datos pode levar segundos, 938 00:50:11,000 --> 00:50:14,000 ou pode literalmente levar horas. 939 00:50:14,000 --> 00:50:17,000 Este é só un exemplo, para non frustra-lo con esforzo, canto máis 940 00:50:17,000 --> 00:50:21,000 foi en C, pero para axudar a entender que cando implementar algo en C 941 00:50:21,000 --> 00:50:24,000 realmente entender, ou en teoría, realmente comprender 942 00:50:24,000 --> 00:50:28,000 como todo é ou debería estar traballando, e ten o control case total 943 00:50:28,000 --> 00:50:31,000 sobre o que está a suceder debaixo do capó, e con esas linguaxes de alto nivel 944 00:50:31,000 --> 00:50:34,000 ten que abrir man de máis control para as persoas que inventaron 945 00:50:34,000 --> 00:50:37,000 e están suxeitos máis para as súas decisións de deseño que o seu. 946 00:50:37,000 --> 00:50:41,000 Pero se tomamos como certo que o desempeño 947 00:50:41,000 --> 00:50:44,000 non é tan importante na Web por mor destas outras cuestións, 948 00:50:44,000 --> 00:50:47,000 velocidades de rede son só un pouco máis lento que as velocidades de CPU de calquera xeito, 949 00:50:47,000 --> 00:50:50,000 así podemos clasificar de dar ao luxo de usar unha linguaxe un pouco máis lento 950 00:50:50,000 --> 00:50:55,000 os upsides son podemos desenvolver cousas 10 veces máis rápido ou máis. 951 00:50:55,000 --> 00:50:57,000 >> Imos ver como podemos comezar a usar isto. 952 00:50:57,000 --> 00:51:00,000 Deixe-me ir a un cartafol 953 00:51:00,000 --> 00:51:03,000 entre os exemplos de hoxe denominado frosh.ims, 954 00:51:03,000 --> 00:51:06,000 e este foi realmente persoalmente motivado polo feito de que o primeiro 955 00:51:06,000 --> 00:51:10,000 Eu escribín para a web anos despois de tomar CS50 e CS51 956 00:51:10,000 --> 00:51:14,000 era un sitio para o programa de mensaxería instantánea Frosh, deportes Caloiro intramuros, 957 00:51:14,000 --> 00:51:16,000 que na época era bastante anos, que no momento 958 00:51:16,000 --> 00:51:19,000 non había ningún sitio para o programa, aínda que non houbese unha web, 959 00:51:19,000 --> 00:51:22,000 e en canto había un inspector en Wigglesworth en que se quixese 960 00:51:22,000 --> 00:51:26,000 para se rexistrar para VOLEI ou fútbol ou o que queira que cubrir un anaco de papel. 961 00:51:26,000 --> 00:51:28,000 Vostede, entón, atravesar o patio. 962 00:51:28,000 --> 00:51:31,000 Vostede, entón, bater na súa porta e deslize na súa porta ou a man ao Proctor 963 00:51:31,000 --> 00:51:34,000 un anaco de papel co seu nome, se quere ou non que ser un capitán do equipo, 964 00:51:34,000 --> 00:51:37,000 o que o deporte que quería facer, eo que estaba dentro do dormitorio 965 00:51:37,000 --> 00:51:39,000 Era unha especie de unha maneira antiga escola de facer as cousas, e este foi un nobre 966 00:51:39,000 --> 00:51:41,000 oportunidade de automatizar unha gran cantidade de este proceso. 967 00:51:41,000 --> 00:51:43,000 É só ir ao sitio web. Escribe algo dentro 968 00:51:43,000 --> 00:51:46,000 Vostede recibe un correo electrónico de confirmación, e listo, está feito. 969 00:51:46,000 --> 00:51:49,000 >> Esta foi a primeira cousa que eu fixen, aínda que nunha linguaxe chamada Pearl, 970 00:51:49,000 --> 00:51:52,000 pero é relativamente fácil de facer en PHP, e iso é unha especie de representante 971 00:51:52,000 --> 00:51:55,000 dos problemas que pode comezar a resolver cando se pode expresar 972 00:51:55,000 --> 00:51:58,000 programaticamente e non ten que confiar en cousas como sitios de Google 973 00:51:58,000 --> 00:52:01,000 ou Excel ou ferramentas que son entregados a vostede. 974 00:52:01,000 --> 00:52:03,000 Vostedes agora teñen a capacidade de facer cousas como esta. 975 00:52:03,000 --> 00:52:06,000 Esta é unha versión super feo dun formulario, 976 00:52:06,000 --> 00:52:09,000 pero imos usalo para o inicio da conversa en que este é 977 00:52:09,000 --> 00:52:12,000 aproximadamente o que a forma parecía anos para nós 978 00:52:12,000 --> 00:52:14,000 para permitir que as persoas na web para rexistrar para Frosh IMS. 979 00:52:14,000 --> 00:52:18,000 Pedimos a un nome, unha caixa de selección para se ou non quería ser capitán, 980 00:52:18,000 --> 00:52:21,000 home ou muller, e entón o que eles estaban no dormitorio, 981 00:52:21,000 --> 00:52:23,000 e despois irían enviar este formulario. 982 00:52:23,000 --> 00:52:27,000 Imos primeiro ollar debaixo do capó HTML que representa a esta páxina. 983 00:52:27,000 --> 00:52:31,000 Deixe-me ir froshims0, 984 00:52:31,000 --> 00:52:35,000 e como un aparte, para pset 7 Estou levando a concedido 985 00:52:35,000 --> 00:52:37,000 os directorios e os cartafoles que estou poñendo as cousas dentro 986 00:52:37,000 --> 00:52:40,000 Imos leva-lo a través exactamente onde a cousa ten que ir no aparello, 987 00:52:40,000 --> 00:52:43,000 cales comandos mod ten que correr, entón non se preocupe con toda a 988 00:52:43,000 --> 00:52:46,000 detalles estúpidos sincronización desde o get-go aquí. 989 00:52:46,000 --> 00:52:49,000 >> Todo ben, aquí está froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Deixe-me rolar para abaixo, eo que é curioso aquí, 991 00:52:52,000 --> 00:52:56,000 este é un arquivo PHP, mais o que está dentro del, de forma clara? 992 00:52:56,000 --> 00:52:59,000 É un monte de HTML, e de feito, PHP orixes 993 00:52:59,000 --> 00:53:02,000 realmente eran para ser unha linguaxe web-céntrica. 994 00:53:02,000 --> 00:53:04,000 Un momento atrás, usouse para aplicar o exemplo cervexa, 995 00:53:04,000 --> 00:53:07,000 as condicións de exemplo, o exemplo Ola, e iso é bo. 996 00:53:07,000 --> 00:53:11,000 Podes usar o PHP como unha linguaxe de script 997 00:53:11,000 --> 00:53:15,000 onde un script é realmente só unha nomenclatura dada a un programa rápido e sucio 998 00:53:15,000 --> 00:53:19,000 ou algo que escribe en un guión ou, máis xeralmente unha linguaxe interpretada. 999 00:53:19,000 --> 00:53:22,000 PHP é super útil para que, porque xa viu como rapidamente 1000 00:53:22,000 --> 00:53:24,000 relativamente podemos látego de programas en PHP. 1001 00:53:24,000 --> 00:53:27,000 Pero foi realmente deseñado para ser usado para a web, 1002 00:53:27,000 --> 00:53:31,000 e deseñado para a web no sentido de que notar-se aquí no inicio do arquivo 1003 00:53:31,000 --> 00:53:34,000 Eu comezan con 00:53:38,000 Entón eu teño unha morea de comentarios inútiles, concedidos, pero entón eu pechar o modo PHP. 1005 00:53:38,000 --> 00:53:41,000 Pero entón eu caer no modo HTML. 1006 00:53:41,000 --> 00:53:45,000 >> O que é interesante sobre o PHP é mesmo que o ficheiro remata en. PHP 1007 00:53:45,000 --> 00:53:48,000 xeralmente está feito para ser mesturados con HTML, 1008 00:53:48,000 --> 00:53:50,000 algún código PHP, algúns HTML. 1009 00:53:50,000 --> 00:53:53,000 E imos ver que, finalmente, podemos empezar a provocar os separados 1010 00:53:53,000 --> 00:53:56,000 e manter o noso HTML separado do noso PHP en conxunto, 1011 00:53:56,000 --> 00:53:59,000 pero as orixes do PHP realmente eran para darlle esta flexibilidade, 1012 00:53:59,000 --> 00:54:02,000 que se quere un pouco de HTML só escribilo lo, e que será 1013 00:54:02,000 --> 00:54:04,000 cuspir idéntica ao navegador. 1014 00:54:04,000 --> 00:54:07,000 Pero se precisa de técnica de programación, 1015 00:54:07,000 --> 00:54:12,000 algúns códigos de programación, tamén se pode colocar-lo no mesmo arquivo exacto, como veremos en breve. 1016 00:54:12,000 --> 00:54:14,000 Aquí está o meu HTML. 1017 00:54:14,000 --> 00:54:16,000 Eu teño un título deste Frosh para mensaxería instantánea. 1018 00:54:16,000 --> 00:54:20,000 Eu teño unha marca do corpo que ten un pouco de CSS con el para todo centro no medio, 1019 00:54:20,000 --> 00:54:23,000 e aquí eu teño un formulario que, ao parecer, vai ser presentado 1020 00:54:23,000 --> 00:54:27,000 para un novo ficheiro chamado register0.php, por iso imos ver que en un momento. 1021 00:54:27,000 --> 00:54:31,000 Está a usar un método chamado de post, que imos volver tamén. 1022 00:54:31,000 --> 00:54:34,000 Entón eu teño algunhas entradas de formulario, un nome chamado, cuxo tipo é o texto, 1023 00:54:34,000 --> 00:54:37,000 aquel cuxo nome é o capitán, cuxo tipo é opción, 1024 00:54:37,000 --> 00:54:40,000 e iso, nós non vimos isto antes, pero fai exactamente o que di. 1025 00:54:40,000 --> 00:54:42,000 Vai ter unha caixa de verificación en vez de unha caixa de texto. 1026 00:54:42,000 --> 00:54:46,000 Aquí debaixo tes un botón de radio, que é un destes botóns circulares 1027 00:54:46,000 --> 00:54:48,000 que pode escoller un ou outro. 1028 00:54:48,000 --> 00:54:52,000 >> Teña en conta que é deliberado que eu dei os dous botóns de radio o nome do xénero. 1029 00:54:52,000 --> 00:54:55,000 Isto é como comeza a exclusión mutua en que ten que premer 1030 00:54:55,000 --> 00:54:58,000 ou este ou aquel, e premendo o outro 1031 00:54:58,000 --> 00:55:01,000 ela desmarcada o outro, entón ten que darlles o mesmo nome 1032 00:55:01,000 --> 00:55:03,000 se queres que eles sexan mutuamente exclusivos así. 1033 00:55:03,000 --> 00:55:07,000 E entón para dormitorio, eu non creo que vimos que aínda, pero é un menú de selección, un menú desplegable. 1034 00:55:07,000 --> 00:55:09,000 A etiqueta para iso é de selección. 1035 00:55:09,000 --> 00:55:11,000 Vostede, entón, dar o menú desplegable un nome, 1036 00:55:11,000 --> 00:55:13,000 e entón tes unha morea desas opcións. 1037 00:55:13,000 --> 00:55:16,000 O primeiro, só por estética, é unha cadea baleira. 1038 00:55:16,000 --> 00:55:20,000 Eu só quería que o drop down para estar en branco por defecto, 1039 00:55:20,000 --> 00:55:22,000 e despois hai Apley, Canaday, Grays, e así por diante. 1040 00:55:22,000 --> 00:55:24,000 E noten a dicotomía aquí. 1041 00:55:24,000 --> 00:55:27,000 A opción no drop down ten un valor, 1042 00:55:27,000 --> 00:55:30,000 pero, a continuación, que ten un nome humano-friendly, que neste exemplo, 1043 00:55:30,000 --> 00:55:33,000 é idéntica, pero realmente quería ser anal poderiamos ter 1044 00:55:33,000 --> 00:55:36,000 o valor deste suspendido ser só a versión curta, 1045 00:55:36,000 --> 00:55:39,000 Grays, pero podemos realmente dicir Grays Salón de que o ser humano realmente ve, 1046 00:55:39,000 --> 00:55:43,000 pero iso non é tan interesante, entón eu só mantiven simple e fíxolles idéntica. 1047 00:55:43,000 --> 00:55:46,000 A continuación, na parte inferior, temos un botón de envío 1048 00:55:46,000 --> 00:55:49,000 o que vimos antes, pero Repare que eu só lle deu unha palabra diferente. 1049 00:55:49,000 --> 00:55:53,000 En vez de CS50 investigación dei o rótulo de "Rexistrar". 1050 00:55:53,000 --> 00:55:56,000 >> O resultado final é a páxina aquí, e de novo, 1051 00:55:56,000 --> 00:56:00,000 onde é que isto sometido? 1052 00:56:00,000 --> 00:56:04,000 El está sometido a algún arquivo, o valor do atributo de acción, 1053 00:56:04,000 --> 00:56:07,000 que foi register0.php. 1054 00:56:07,000 --> 00:56:09,000 Imos ver o que realmente acontece aquí. 1055 00:56:09,000 --> 00:56:13,000 Deixe-me ir adiante e enche este formulario, di David, 1056 00:56:13,000 --> 00:56:16,000 masculino, Matthews, e entón eu vou dicir se dar de alta. 1057 00:56:16,000 --> 00:56:18,000 Deixe-me afastar e prema en rexistrarse. 1058 00:56:18,000 --> 00:56:22,000 Ok, entón medio inútil, pero imos ver o que está realmente a suceder. 1059 00:56:22,000 --> 00:56:26,000 Teña en conta que a URL cambiou para ser register0.php. 1060 00:56:26,000 --> 00:56:34,000 O que é curiosamente ausente da URL, con todo, aínda que acaba de enviar un formulario? 1061 00:56:34,000 --> 00:56:37,000 [Resposta do alumno inaudível] 1062 00:56:37,000 --> 00:56:39,000 Ok, iso é só un usuario de Chrome ser agradable estes días. 1063 00:56:39,000 --> 00:56:42,000 Isto é realmente alí. Eles só esconde-lo para aforrar espazo. 1064 00:56:42,000 --> 00:56:44,000 Pero o pensamento bo, bo pensamento. 1065 00:56:44,000 --> 00:56:46,000 Cara ao outro lado da dirección, porén, o que falta? Si 1066 00:56:46,000 --> 00:56:48,000 [Estudante] A cadea de consulta. 1067 00:56:48,000 --> 00:56:51,000 A cadea de consulta, de modo lembrar dos nosos exemplos sinxelos de procura de Google. 1068 00:56:51,000 --> 00:56:54,000 Así que eu premer no botón enviar a URL 1069 00:56:54,000 --> 00:57:00,000 levoume a Google, pero despois houbo? q = ciencia da computación ou calquera cousa que eu tiña escrito dentro 1070 00:57:00,000 --> 00:57:04,000 Isto é porque usamos o método get co exemplo de investigación. 1071 00:57:04,000 --> 00:57:06,000 >> Esta vez, estamos usando o método en vez diso? 1072 00:57:06,000 --> 00:57:10,000 Publicar, e unha das distincións inmediatas 1073 00:57:10,000 --> 00:57:14,000 entre get e post é que o post non poñer a entrada do usuario na URL. 1074 00:57:14,000 --> 00:57:16,000 El escóndese. Aínda envía. 1075 00:57:16,000 --> 00:57:19,000 En realidade, o que estamos vendo no navegador aquí, como imos revelar nun momento 1076 00:57:19,000 --> 00:57:22,000 mirando register0, é que eu só estou vendo o contido 1077 00:57:22,000 --> 00:57:25,000 da matriz que foron sometidos desde o navegador ao servidor. 1078 00:57:25,000 --> 00:57:29,000 Pero o URL non ten unha?, Non ten ningún contrasinal 1079 00:57:29,000 --> 00:57:31,000 ou valores, e por que é isto? 1080 00:57:31,000 --> 00:57:35,000 Ben, pos permite enviar os datos do formulario para un servidor, 1081 00:57:35,000 --> 00:57:38,000 pero non poñelas na URL, entón que tipo de información é post 1082 00:57:38,000 --> 00:57:41,000 particularmente apropiado para, se cadra, cando está pedindo que o usuario 1083 00:57:41,000 --> 00:57:44,000 escribir entrada para un formulario? 1084 00:57:44,000 --> 00:57:48,000 Algo así como un contrasinal, algo así como o que máis? 1085 00:57:48,000 --> 00:57:50,000 Números de tarxeta de crédito. 1086 00:57:50,000 --> 00:57:53,000 Todo o que é levemente sensible probablemente non quere acabar na URL 1087 00:57:53,000 --> 00:57:56,000 mesmo porque iso significa que o seu compañeiro de cuarto ou membro da familia pode simplemente vasculham través 1088 00:57:56,000 --> 00:57:59,000 súa historia de internet e, a continuación, literalmente, ver as súas claves, 1089 00:57:59,000 --> 00:58:02,000 literalmente ver os seus números de tarxeta de crédito porque a maioría dos navegadores 1090 00:58:02,000 --> 00:58:05,000 Lembre-se da historia que quere URLs que estivo menos, 1091 00:58:05,000 --> 00:58:09,000 por iso, só porque iso sería unha mala idea. 1092 00:58:09,000 --> 00:58:11,000 Usando esconde mensaxe que detallan do usuario. 1093 00:58:11,000 --> 00:58:14,000 >> Ademais, como é que fai a carga de unha foto no Facebook? 1094 00:58:14,000 --> 00:58:17,000 Así, os únicos dous mecanismos que realmente pode usar, 1095 00:58:17,000 --> 00:58:21,000 aínda que hai algúns outros, máis arcanas, é obter e publicar. 1096 00:58:21,000 --> 00:58:26,000 Como posiblemente subida de unha foto a través dunha URL? 1097 00:58:26,000 --> 00:58:28,000 Pode realmente facelo. 1098 00:58:28,000 --> 00:58:30,000 Pode tomar un JPEG ou bitmap ou GIF e pode representa-lo en hexadecimal 1099 00:58:30,000 --> 00:58:32,000 ou algo chamado de base 64. 1100 00:58:32,000 --> 00:58:35,000 En vez de base 16 usa base 64, que esencialmente se parece 1101 00:58:35,000 --> 00:58:38,000 Caracteres ASCII, e realmente pode subir unha foto a través dunha URL 1102 00:58:38,000 --> 00:58:41,000 despois dun punto de interrogación, pero xeralmente hai límites de tamaño. 1103 00:58:41,000 --> 00:58:44,000 A maioría dos navegadores forzar URLs a non máis que 1.000 caracteres, 1104 00:58:44,000 --> 00:58:47,000 quizais 2.000 caracteres ou similares, de xeito que non pode cargar 1105 00:58:47,000 --> 00:58:50,000 10 MB foto no Facebook. 1106 00:58:50,000 --> 00:58:54,000 Por que usa post, así, entón polo de agora se pon os parámetros na URL, 1107 00:58:54,000 --> 00:58:57,000 o que é bo e útil ás veces, pero para algo sensible ou gran 1108 00:58:57,000 --> 00:58:59,000 post é o camiño a percorrer. 1109 00:58:59,000 --> 00:59:02,000 ¿Que é register0 realmente está facendo aquí? 1110 00:59:02,000 --> 00:59:05,000 Ben, se eu abrir register0 aviso de que esta é unha páxina super sinxelo, 1111 00:59:05,000 --> 00:59:09,000 pero está demostrando o feito de que eu poida co-mesturan-se, para mellor ou para peor, 1112 00:59:09,000 --> 00:59:12,000 HTML con PHP. 1113 00:59:12,000 --> 00:59:15,000 Este arquivo enteiro, excepto para os comentarios na parte superior, son HTML 1114 00:59:15,000 --> 00:59:19,000 excepto por este cara aquí. 1115 00:59:19,000 --> 00:59:22,000 >> Observe no medio do meu código PHP, 1116 00:59:22,000 --> 00:59:26,000 no medio do meu HTML, eu teño sorte de, temporalmente, 1117 00:59:26,000 --> 00:59:28,000 entrou no modo de PHP. 1118 00:59:28,000 --> 00:59:31,000 Eu estou chamando unha función especial chamada de impresión r. 1119 00:59:31,000 --> 00:59:34,000 Isto significa imprimir recursiva eo que fai é recursivamente imprime 1120 00:59:34,000 --> 00:59:38,000 calquera variable que entrega-lo, punto e coma, sae do modo PHP. 1121 00:59:38,000 --> 00:59:40,000 E a etiqueta pre dálle texto pre-formatado, 1122 00:59:40,000 --> 00:59:43,000 mono texto espazo para que cada espazo que realmente velo. 1123 00:59:43,000 --> 00:59:46,000 Ela non desaparece. ¿Que é unha mensaxe? 1124 00:59:46,000 --> 00:59:48,000 Ben, o que é interesante e convincente sobre o PHP 1125 00:59:48,000 --> 00:59:52,000 é que sempre que enviar un formulario usando get ou post 1126 00:59:52,000 --> 00:59:56,000 todo o que é enviado a vostede por un navegador 1127 00:59:56,000 --> 01:00:00,000 PHP-se descobre que os pares de valores clave son, 1128 01:00:00,000 --> 01:00:02,000 descobre que non hai signos de igual, figuras fóra se hai un punto de interrogación. 1129 01:00:02,000 --> 01:00:07,000 El fai todo o traballo duro para ti, e entón el lle entrega unha matriz asociativa 1130 01:00:07,000 --> 01:00:10,000 contén todo o que o usuario introduciu no formulario. 1131 01:00:10,000 --> 01:00:12,000 Ben, o que fixo os campos desta forma ten? 1132 01:00:12,000 --> 01:00:14,000 >> Que tiña 4 campos. 1133 01:00:14,000 --> 01:00:16,000 Un deles era un campo de texto chamado nome. 1134 01:00:16,000 --> 01:00:18,000 Un deles era unha opción chamada capitán. 1135 01:00:18,000 --> 01:00:22,000 Un deles era un botón de radio chamado xénero, 1136 01:00:22,000 --> 01:00:24,000 e un era un menú desplegable chamado dormitorio, 1137 01:00:24,000 --> 01:00:27,000 para notar cando imprimir recursivamente 1138 01:00:27,000 --> 01:00:29,000 O contido desta variable especial. 1139 01:00:29,000 --> 01:00:34,000 Esta é unha variable global especial chamado literalmente $ _POST, todo en maiúsculas. 1140 01:00:34,000 --> 01:00:39,000 Esta é unha variable global especial que o PHP só crea para ti 1141 01:00:39,000 --> 01:00:42,000 e as mans a vostede para que poida acceder todo 1142 01:00:42,000 --> 01:00:45,000 que foi presentada a través dun formulario por un usuario. 1143 01:00:45,000 --> 01:00:48,000 E chamando r impresión sobre el, non faría iso nunha aplicación normal. 1144 01:00:48,000 --> 01:00:50,000 Estamos facendo isto para ver o interior desta variable, 1145 01:00:50,000 --> 01:00:53,000 eo que está dentro del, así, catro chaves, 1146 01:00:53,000 --> 01:00:56,000 4 parámetros http, por así dicir, 1147 01:00:56,000 --> 01:00:59,000 nome, capitán, sexo, dormitorio, e en seguida, os valores que o usuario 1148 01:00:59,000 --> 01:01:01,000 ingresaran cunha excepción. 1149 01:01:01,000 --> 01:01:03,000 Eu fixen tipo D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Eu verifiquei a caixa, porén, para o sexo masculino, que aparentemente presentou un valor 1151 01:01:05,000 --> 01:01:07,000 só m ser sucinto. 1152 01:01:07,000 --> 01:01:10,000 >> Cando selecionei Matthews, que é o valor que foi seleccionado, 1153 01:01:10,000 --> 01:01:12,000 e iso é un pouco parvo, pero é a convención. 1154 01:01:12,000 --> 01:01:17,000 Cando chequei a caixa, un valor de en "on", foi presentado para a caixa de verificación. 1155 01:01:17,000 --> 01:01:21,000 Se eu non tiña comprobado, ningún valor sería enviado calquera. 1156 01:01:21,000 --> 01:01:26,000 Este é só dar insights sobre o que está dentro desta variable global especial, 1157 01:01:26,000 --> 01:01:29,000 e é tan especial que se chama dunha variable super global. 1158 01:01:29,000 --> 01:01:33,000 Existe en todos os lugares para dentro do seu código para que poida acceder a ela de feito. 1159 01:01:33,000 --> 01:01:36,000 Este non é que convincente, entón imos realmente usar o mundial de súper 1160 01:01:36,000 --> 01:01:38,000 e realmente tentar rexistrar a alguén. 1161 01:01:38,000 --> 01:01:41,000 En froshims1 Vou facer un cambio. 1162 01:01:41,000 --> 01:01:44,000 Eu estou cambiando a acción a ser register1.php, 1163 01:01:44,000 --> 01:01:46,000 e eu estou facendo algo. 1164 01:01:46,000 --> 01:01:48,000 Eu estaba medio avergoñado pola calidade da miña páxina alí. 1165 01:01:48,000 --> 01:01:52,000 É moi horrible, honestamente, polo que acaba 1166 01:01:52,000 --> 01:01:56,000 que pode usar moi facilmente na web 1167 01:01:56,000 --> 01:01:59,000 JavaScript outras persoas código CSS outras persoas 1168 01:01:59,000 --> 01:02:02,000 que teño escrito e de código aberto e dispoñible como unha biblioteca, 1169 01:02:02,000 --> 01:02:06,000 por así dicir, e, por exemplo, aquí estou usando unha biblioteca dispoñible libremente, 1170 01:02:06,000 --> 01:02:08,000 unha morea de código que alguén escribiu. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter pasou a escribir este código, e chámase a biblioteca bootstrap, 1172 01:02:11,000 --> 01:02:15,000 e é só unha morea de follas de estilo CSS, un grupo de. css 1173 01:02:15,000 --> 01:02:19,000 que alguén escribiu e descubriu como obter todo de bo e bonito 1174 01:02:19,000 --> 01:02:22,000 para que persoas como nós pode se preocupar un pouco menos coa estética e concentrarse moito máis 1175 01:02:22,000 --> 01:02:24,000 sobre a lóxica ea programación real. 1176 01:02:24,000 --> 01:02:30,000 Ligando-nos con esa etiqueta, que é a mesma marca eu adoitaba lembrar para styles3.css anteriormente, 1177 01:02:30,000 --> 01:02:34,000 Agora teño acceso a un ficheiro chamado bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min significa só que minified-lo e eles se librar de todo o espazo branco e así por diante 1179 01:02:37,000 --> 01:02:40,000 só para asegurarse que non está me mandando máis bytes que realmente precisa. 1180 01:02:40,000 --> 01:02:45,000 Pero alí é unha morea de CSS, entón eu agora abrir a versión 1 do Frosh IMS 1181 01:02:45,000 --> 01:02:49,000 entender que o meu arquivo é sempre máis fermosa. 1182 01:02:49,000 --> 01:02:54,000 Agora aínda é só branco e negro, pero aviso que só usando a súa folla de estilo 1183 01:02:54,000 --> 01:02:58,000 e utilizar determinados recursos de que no meu formulario, non é sorprendente, 1184 01:02:58,000 --> 01:03:01,000 pero é sempre máis limpo do que era antes, e que o proxector non está facendo xustiza. 1185 01:03:01,000 --> 01:03:05,000 Hai pequenas liñas ao redor dos botóns grises e ao redor do campo de texto aquí 1186 01:03:05,000 --> 01:03:07,000 pero é sempre máis limpo do que era antes. 1187 01:03:07,000 --> 01:03:09,000 >> Agora, na xustiza, eu tiven que cambiar a miña reserva un pouco. 1188 01:03:09,000 --> 01:03:12,000 Esta é a versión 1, e entender que eu usei algunhas marcas novas, 1189 01:03:12,000 --> 01:03:17,000 e, honestamente, eu non tiña idea de como facelo ata que eu lea a documentación 1190 01:03:17,000 --> 01:03:20,000 á biblioteca de Twitter bootstrap, e eles me dixeron que se quere utilizar a nosa biblioteca 1191 01:03:20,000 --> 01:03:23,000 usar un elemento fieldset dentro da súa maneira, 1192 01:03:23,000 --> 01:03:27,000 poñer a palabra que quere amosar ao lado dun campo dentro dunha marca de etiqueta, 1193 01:03:27,000 --> 01:03:30,000 a continuación, dar a súa contribución dun nome, como antes, 1194 01:03:30,000 --> 01:03:34,000 e despois para a caixa de verificación, non só envolve-lo en un elemento de etiqueta, 1195 01:03:34,000 --> 01:03:36,000 usar algo chamado de clase, para que nós non vimos isto antes, 1196 01:03:36,000 --> 01:03:39,000 pero vai ver isto en un dos shorts pset 7 de. 1197 01:03:39,000 --> 01:03:43,000 Unha clase en CSS permite que faga algo moi parecido co ID, 1198 01:03:43,000 --> 01:03:46,000 pero antes, cando tivemos unha identificación co símbolo # 1199 01:03:46,000 --> 01:03:48,000 que foi a un e só un elemento. 1200 01:03:48,000 --> 01:03:51,000 O que é legal sobre unha clase que varios elementos poden ter a mesma clase 1201 01:03:51,000 --> 01:03:54,000 ou o material CSS mesma aplicada a el. 1202 01:03:54,000 --> 01:03:57,000 >> Pero, de novo, máis nas persoas que a curto, eo resto diso é só copiar e pegar 1203 01:03:57,000 --> 01:04:00,000 da súa documentación, onde eu engade unha etiqueta aquí e alí. 1204 01:04:00,000 --> 01:04:03,000 E ao final, porque eu inclui a etiqueta ligazón na parte superior, 1205 01:04:03,000 --> 01:04:06,000 todo parece máis bonito automaticamente 1206 01:04:06,000 --> 01:04:10,000 simplemente por ter marcado a miña páxina de forma que 1207 01:04:10,000 --> 01:04:12,000 Twitter espera, e hai moitas maneiras diferentes 1208 01:04:12,000 --> 01:04:14,000 de facelo, e iso é realmente moi apropiado. 1209 01:04:14,000 --> 01:04:17,000 Neste punto, o semestre, como podes ver en especificación pset 7, a 1210 01:04:17,000 --> 01:04:20,000 Buscando por aí, lendo sobre bibliotecas, utilizando CSS doutras persoas 1211 01:04:20,000 --> 01:04:23,000 e JavaScript para resolver problemas auxiliares 1212 01:04:23,000 --> 01:04:26,000 para o conxunto de problemas en si é seguro Recoméndaselle e é a forma 1213 01:04:26,000 --> 01:04:29,000 Web está construída nestes días, por estar sobre os ombreiros de outras persoas 1214 01:04:29,000 --> 01:04:32,000 para que poida realmente concentrarse nos problemas novos e interesantes. 1215 01:04:32,000 --> 01:04:34,000 Pero imos agora concentrar-se, unha vez máis, a lóxica. 1216 01:04:34,000 --> 01:04:38,000 >> Iso foi un desvío rápido na estética só para mostrar a dirección en que pode ir. 1217 01:04:38,000 --> 01:04:40,000 Vou volver para o máis feo un por agora só porque 1218 01:04:40,000 --> 01:04:44,000 non hai distraccións con material Twitter, e deixe-me ir adiante e abrir 1219 01:04:44,000 --> 01:04:51,000 froshims2, o que, unha vez máis, difire só na acción register2.php, 1220 01:04:51,000 --> 01:04:55,000 e imos dar un ollo ao que o efecto é aquí. 1221 01:04:55,000 --> 01:04:57,000 Deixe-me ir adiante e escribe en David. 1222 01:04:57,000 --> 01:04:59,000 Eu non vou ser o capitán desta vez. 1223 01:04:59,000 --> 01:05:01,000 Eu vou dicir masculino, Matthews, rexistro. 1224 01:05:01,000 --> 01:05:05,000 Drogas. Ok, iso é un parafuso ata da miña parte. 1225 01:05:05,000 --> 01:05:07,000 Agarde. 1226 01:05:07,000 --> 01:05:17,000 Register2, liña 22, baleiro ou-non. 1227 01:05:17,000 --> 01:05:19,000 Imos actualizar. 1228 01:05:19,000 --> 01:05:22,000 Ok, ao someter este formulario o que pasou? 1229 01:05:22,000 --> 01:05:25,000 Eu escriba David, comprobada masculino, premendo Matthews, rexistro. 1230 01:05:25,000 --> 01:05:27,000 Vostede está rexistrado. (Ben, en realidade non.) 1231 01:05:27,000 --> 01:05:32,000 Este é claramente un paso alén de só imprimir o contido de algunha variable, 1232 01:05:32,000 --> 01:05:34,000 pero o que é o ficheiro realmente está facendo? 1233 01:05:34,000 --> 01:05:37,000 En register2.php 1234 01:05:37,000 --> 01:05:40,000 entender que eu teño un novo código. 1235 01:05:40,000 --> 01:05:44,000 Dentro do meu corpo tag eu teño esencialmente unha persoa construír, 1236 01:05:44,000 --> 01:05:47,000 senón porque eu estou co-mestura que cun pouco de HTML 1237 01:05:47,000 --> 01:05:51,000 Eu teño que entrar e saír do modo PHP e cara atrás, por iso imos ver o que eu estou facendo. 1238 01:05:51,000 --> 01:05:55,000 >> Na primeira liña aquí estou dicindo se é o caso 1239 01:05:55,000 --> 01:06:00,000 que o posto de super global está baleira para a clave de nome, 1240 01:06:00,000 --> 01:06:04,000 Noutras palabras, se o usuario non me dar un valor ao nome do formulario, 1241 01:06:04,000 --> 01:06:07,000 a continuación, baleirar vai voltar true, pois o valor está baleiro. 1242 01:06:07,000 --> 01:06:11,000 Ou-notar as barrotes verticais, o xénero é baleira 1243 01:06:11,000 --> 01:06:15,000 dentro desta super especial global, o que, unha vez máis, representa o contido do formulario, 1244 01:06:15,000 --> 01:06:19,000 ou o dormitorio é baleiro, entón eu estou indo a ir adiante e berrar co usuario. 1245 01:06:19,000 --> 01:06:22,000 Como? Ben, repare que eu vou dicir que ten que proporcionar o seu nome, xénero e dormitorio. 1246 01:06:22,000 --> 01:06:24,000 Imos realmente inducir ese erro. 1247 01:06:24,000 --> 01:06:27,000 Deixe-me volver á miña maneira. Deixe-me volver cargar para limpa-la. 1248 01:06:27,000 --> 01:06:30,000 E eu só vou dar-lles David, e non precisan saber de onde eu vivo. 1249 01:06:30,000 --> 01:06:33,000 Registre-se. Ao parecer, eu teño que dicir-lles onde eu vivo. 1250 01:06:33,000 --> 01:06:35,000 Debe proporcionar o seu nome, xénero e dormitorio. Volver. 1251 01:06:35,000 --> 01:06:39,000 >> E eu podería clic para voltar á forma, pero por que isto? 1252 01:06:39,000 --> 01:06:43,000 Ben, en que o nome se non estaba baleiro, pero sexo era, e dormitorio foi, 1253 01:06:43,000 --> 01:06:47,000 así que esta expresión enteira avaliado como verdadeiro, e aínda que a sintaxe é un pouco novo, 1254 01:06:47,000 --> 01:06:51,000 novo, entramos PHP xeito, familiar if, 1255 01:06:51,000 --> 01:06:54,000 pero a parte de novo aquí é só esta colonos, e eu estraguei todo, omitindo un paréntese 1256 01:06:54,000 --> 01:06:57,000 por accidente, pero observar o colon, e iso significa 1257 01:06:57,000 --> 01:07:00,000 aínda que nós estamos saíndo PHP todo para 1258 01:07:00,000 --> 01:07:03,000 que segue debe ser cuspido completa para o navegador 1259 01:07:03,000 --> 01:07:07,000 ata que vexa un bloque de outra persoa, como facemos aquí, 1260 01:07:07,000 --> 01:07:10,000 caso en que debería cuspir iso 1261 01:07:10,000 --> 01:07:13,000 ata ver o endif, de ningún xeito sintaxe un pouco nova 1262 01:07:13,000 --> 01:07:16,000 que me permite cambiar entre HTML e PHP. 1263 01:07:16,000 --> 01:07:19,000 Podemos borrar iso eventualmente, pero, por agora, 1264 01:07:19,000 --> 01:07:22,000 é unha especie de unha maneira convincente de verificación de erros no formulario. 1265 01:07:22,000 --> 01:07:25,000 >> Agora, eu digo que non está realmente rexistrado porque obviamente, non fixemos nada, pero os datos, 1266 01:07:25,000 --> 01:07:28,000 entón imos realmente tentar facer algo legal. 1267 01:07:28,000 --> 01:07:33,000 En froshims3 a única diferenza é que eu vou presentar para register3, 1268 01:07:33,000 --> 01:07:35,000 de xeito que o código HTML non é o mesmo. 1269 01:07:35,000 --> 01:07:38,000 En register3 entender iso. 1270 01:07:38,000 --> 01:07:40,000 Este é un tipo de sexy. 1271 01:07:40,000 --> 01:07:44,000 Arriba Estou usando unha declaración esixir, de xeito que este é como # include. 1272 01:07:44,000 --> 01:07:46,000 Esta vez non é stdio.h ou algo así. 1273 01:07:46,000 --> 01:07:50,000 É unha biblioteca PHP, e este é chamado PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Como eu sabía de incluír precisamente esta secuencia citada? 1275 01:07:53,000 --> 01:07:56,000 Lin na documentación, por iso, cando me dixeron que poñer isto na parte superior do arquivo 1276 01:07:56,000 --> 01:08:00,000 Se quere usar unha biblioteca especial chamada PHPMailer que fai o que di. 1277 01:08:00,000 --> 01:08:03,000 El permite enviar correo-e PHP. 1278 01:08:03,000 --> 01:08:05,000 Agora imos rodar máis. 1279 01:08:05,000 --> 01:08:08,000 >> Aviso para comezar Eu estou no modo de PHP ese tempo, 1280 01:08:08,000 --> 01:08:11,000 agora entender ata aquí despois de importar esta biblioteca, 1281 01:08:11,000 --> 01:08:13,000  por así dicir, estou facendo algunhas checagens. 1282 01:08:13,000 --> 01:08:16,000 Se é o caso, que o nome non está baleiro 1283 01:08:16,000 --> 01:08:19,000 e de xénero non é baleiro-notar os puntos de exclamación- 1284 01:08:19,000 --> 01:08:24,000 e dormitorio non é baleira, entón o usuario loxicamente cuberto o formulario, polo menos o suficiente. 1285 01:08:24,000 --> 01:08:28,000 Eu non me importa se eles están capitán ou non. Eu só teño o seu nome, xénero e dormitorio. 1286 01:08:28,000 --> 01:08:31,000 Se eles teñen enchido os para fóra, de xeito que ningún deses campos están baleiros 1287 01:08:31,000 --> 01:08:33,000 esta é lixeiramente nova sintaxe. 1288 01:08:33,000 --> 01:08:36,000 PHP, como un aparte, é unha linguaxe de programación orientada a obxecto 1289 01:08:36,000 --> 01:08:39,000 que algúns de vostedes poden lembrar de APCS ou similares. 1290 01:08:39,000 --> 01:08:42,000 Por agora, non se coñece, só sei que para utilizar esta biblioteca 1291 01:08:42,000 --> 01:08:45,000 ten que escribir unha liña de código coma este cunha palabra nova, 1292 01:08:45,000 --> 01:08:47,000 literalmente unha nova palabra chave chamada nova. 1293 01:08:47,000 --> 01:08:50,000 Pero, ademais, temos unha sintaxe familiar. 1294 01:08:50,000 --> 01:08:54,000 É un operador de frecha, o que é semellante ao que foi utilizado para estruturas no contexto punteiros. 1295 01:08:54,000 --> 01:08:57,000 Para hoxe PHP non ten punteiros, 1296 01:08:57,000 --> 01:09:01,000 pero sei agora que dentro da variable de correo 1297 01:09:01,000 --> 01:09:05,000 é esencialmente un tipo de un punteiro para unha biblioteca especial 1298 01:09:05,000 --> 01:09:08,000 que alguén escribiu, e se eu queira acceder a funcionalidade específica 1299 01:09:08,000 --> 01:09:12,000 dentro da biblioteca que fago, como en C, use o operador frecha, 1300 01:09:12,000 --> 01:09:14,000 aínda que estes non son realmente punteiros. 1301 01:09:14,000 --> 01:09:16,000 É unha especie de versión propia do PHP mesmo. 1302 01:09:16,000 --> 01:09:20,000 Isto significa ir á biblioteca e chamar a función IsSMTP. 1303 01:09:20,000 --> 01:09:23,000 SMTP, recall, dos nosos guerreiros do líquido refírese a enviar correo-e, 1304 01:09:23,000 --> 01:09:28,000 e que só significa usar un servidor de correo-e a este IMS Frosh rexistro. 1305 01:09:28,000 --> 01:09:30,000 >> O anfitrión é que quero usar? 1306 01:09:30,000 --> 01:09:34,000 Ben, Harvard, se Google volta, ten un servidor de correo-e chamado smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Se está xogando xunto na casa ou vostede vive nunha rede Comcast 1308 01:09:37,000 --> 01:09:40,000 que podería ser algo así como smtp.comcast.net. 1309 01:09:40,000 --> 01:09:43,000 É totalmente depende de onde vostede vive e que o seu fornecedor é. 1310 01:09:43,000 --> 01:09:47,000 Despois que eu estou indo para o meu enderezo de arbitrariamente ser jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Estou indo entón para definir a dirixir a jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 A única forma que eu sabía que estas funcións foron chamados SetFrom e AddAddress 1313 01:09:55,000 --> 01:09:57,000 é, unha vez máis, eu li a documentación. 1314 01:09:57,000 --> 01:09:59,000 Isto non é unha especie de pase de máxica coñecida de todos os desenvolvedores. 1315 01:09:59,000 --> 01:10:02,000 Entón eu definir un asunto para "rexistro". 1316 01:10:02,000 --> 01:10:07,000 E agora esta liña é un pouco feo, porque o que o operador punto significa en PHP? 1317 01:10:07,000 --> 01:10:09,000 Alguén sabe? 1318 01:10:09,000 --> 01:10:11,000 Concatenar. 1319 01:10:11,000 --> 01:10:14,000 C, é unha dor no pescozo para concatenar dúas secuencias conxunto. 1320 01:10:14,000 --> 01:10:17,000 Ten que tratar con malloc ou realloc ou todas esas cousas 1321 01:10:17,000 --> 01:10:20,000 só para aumentar a lonxitude dunha corda. 1322 01:10:20,000 --> 01:10:22,000 No PHP, Javascript e noutros idiomas 1323 01:10:22,000 --> 01:10:24,000 xeralmente pode facelo cun único personaxe. 1324 01:10:24,000 --> 01:10:28,000 Neste caso, o punto significa tomar esa cadea aquí 1325 01:10:28,000 --> 01:10:30,000 e engadir a el esa secuencia. 1326 01:10:30,000 --> 01:10:32,000 >> Ah, e por certo, engadir a el esa secuencia, 1327 01:10:32,000 --> 01:10:34,000 que pasa a ser unha variable dentro dese mundo super. 1328 01:10:34,000 --> 01:10:37,000 A continuación, engadir a ela unha nova liña, polo tanto, todos estes puntos significa só 1329 01:10:37,000 --> 01:10:39,000 continuar a facer unha secuencia maior e máis e máis grande, 1330 01:10:39,000 --> 01:10:43,000 e non se preocupe con todo sobre malloc ou similar nunha linguaxe como esta, 1331 01:10:43,000 --> 01:10:46,000 e hai outras formas de facelo, pero este é un dos máis rápidos 1332 01:10:46,000 --> 01:10:48,000 formas de poñer-lo para fóra. 1333 01:10:48,000 --> 01:10:50,000 O que se está facendo? 1334 01:10:50,000 --> 01:10:55,000 É a creación dun corpo de correo-e que vai dicir o nome: Capitán: Xénero: Dormitorio: 1335 01:10:55,000 --> 01:10:58,000 todos en liñas separadas, e entón, finalmente, 1336 01:10:58,000 --> 01:11:00,000 unha liña de código, e eu vou ignorar isto por agora. 1337 01:11:00,000 --> 01:11:02,000 Se == false significa só que algo deu mal, 1338 01:11:02,000 --> 01:11:04,000 pero a maxia acontece aquí. 1339 01:11:04,000 --> 01:11:08,000 Enviar correo-e significa enviar este correo-e. 1340 01:11:08,000 --> 01:11:10,000 Imos ver o que o resultado líquido é. 1341 01:11:10,000 --> 01:11:13,000 Na parte inferior do ficheiro, observe que vai dicir que está realmente rexistrado 1342 01:11:13,000 --> 01:11:15,000 se eu chegar a ese punto. 1343 01:11:15,000 --> 01:11:18,000 Se, porén, o usuario romper, observe que comezamos este 1344 01:11:18,000 --> 01:11:21,000 a condición por aquí, se non está baleiro e non branco 1345 01:11:21,000 --> 01:11:24,000 e non baleirar imos enviar o correo electrónico. 1346 01:11:24,000 --> 01:11:27,000 Se non, imos enviar esta liña de código, 1347 01:11:27,000 --> 01:11:30,000 que vai ter o efecto, como podes ver no pset 7, de redireccionar ao usuario 1348 01:11:30,000 --> 01:11:35,000 de volta cara a onde se viñeron froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Dedos cruzados, se non, este vai ser a demostración máis decepcionante hoxe. 1350 01:11:38,000 --> 01:11:40,000 Aquí imos nós. 1351 01:11:40,000 --> 01:11:42,000 Deixe-me abrir a miña caixa de entrada de correo electrónico para jharvard en Gmail. 1352 01:11:42,000 --> 01:11:44,000 Ningún correo-e agora. Todo ben. 1353 01:11:44,000 --> 01:11:53,000 Agora déixeme abrir froshims3, que é o terceiro e último exemplo, imos ollar para aquí. 1354 01:11:53,000 --> 01:11:55,000 Ok, aquí imos nós. 1355 01:11:55,000 --> 01:12:00,000 Nate, que vai ser macho, capitán de, digamos, Apley. 1356 01:12:00,000 --> 01:12:04,000 Registre-se. Ok, está realmente rexistrado. 1357 01:12:04,000 --> 01:12:07,000 Agora, se eu rolar para o meu correo-e, oh, meu Deus. 1358 01:12:07,000 --> 01:12:09,000 Acabo dinámicamente enviou un correo-e na web. 1359 01:12:09,000 --> 01:12:11,000 >> Imos deixar con esta nota. 1360 01:12:11,000 --> 01:12:16,000 Un vídeo para a próxima charla que perdemos. Ata a próxima semana. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]