[REPRODUCCIÓ DE MÚSICA] DAVID Malan: Aquest és CS50, i aquest és el començament de la setmana 8. I estem tan emocionats de donar la benvinguda esquena, gran sorpresa, el mateix Ramon CS50 Galván, estudiant d'últim any en ascens que ha estat passar els últims mesos des de juliol a Los Angeles, a Hollywood, literalment treballant en un nou televisor de marca espectacle anomenat Colònia, el creador dels quals és en realitat un alum de Harvard si mateix. I així que estem molt contents de veure aquest debut a la xarxa EUA aquest mes de gener. Així que estigueu atents per això, i per més Ramón per a les setmanes per venir. Ara sé que el final és a prop. I el que això significa és que no hi ha gairebé res queda d'CS50, és trist dir-ho. Tenim només tres problemes conjunts esquerra- hi ha problema estableix six-- que està en les seves mans ara o aviat seran, a finals d'aquest week-- està destinat a salvar els nostres mons de la línia d'ordres, on hem passat la major part del nostre temps utilitzant C, i el món de la programació web. Bé, veuràs un munt d'idees pres de l'obra de línia d'ordres, sinó també una gran quantitat de nou i idees interessants que també van a ser afí a aplicacions mòbils i la tecnologia, més en general, amb el qual es nois són tots coneixem avui en dia en els ordinadors portàtils i els telèfons i similars. Pel que vostè no implementa una pàgina web o una pàgina web per se, però un servidor web real. Vostè haurà d'escriure la resta d'un servidor web escrit en C, el propòsit en la vida és rebre peticions HTTP, aquests sobres virtuals seguim parlant sobre i respondre realitat ja sigui amb alguns content-- estàtics com un punt HTML arxiu, o un punt JPEG o qualsevol altre nombre d'arxius, o fins i tot un arxiu PHP amb el que la teva web servidor va a interpretar que PHP codi i escopir els resultats. Ara, li hem proporcionat amb una mica de marc per it-- fet l' codi de distribució per al problema estableix sis és més de 1.000 línies de llarg, una molts dels quals són els comentaris, per ser fair-- però això és realment significava ser una oportunitat per aconseguir les seves mans brutes de busseig en un projecte bastant gran que hem molt específica tallades en peces de per a vostè, pel que realment en sortir de CS50 i entrar en el món real de la programació i volen incursionar en qualsevol nombre de projectes, tindràs molt més gran confort descàrrega d'alguna font codi, alguns de codi obert projectar a la web, i el busseig en i fer canvis que s'hi assembli. Problema fixar 07:00 serà sobre fer la seva pròpia aplicació basada en la web que pren l'entrada dinàmica i produeix sortida dinàmica en la forma d'un lloc web de etrade.com similars. I un problema fixar 08:00 se centrarà en encara un altre idioma conegut com JavaScript. Mentrestant, la final projecte està a l'horitzó. L'anomenat pre-proposta es deu a la setmana a partir d'avui. Pre-proposal-- per l'especificació, que està en website-- de CS50 és una oportunitat bastant casual per que vostè enviï un correu electrònic molt succinta al seu company de l'ensenyament només per informar o ella del que estàs pensant, a ell o ella utilitzi com a caixa de ressonància. I tenir un seny check-- si vostè està pensant sobre mossegar massa molt o potser massa poc, o potser vostè no té cap idea i vol participar en una conversa. A partir de llavors és una proposta i l'informe d'estat, l'anomenat aquí a hackathon CS50 Cambridge per a estudiants de Harvard i Yale per igual. Del projecte final aplicació és llavors cal. I després una fira CS50 aquí, a Cambridge, així com un altre a New Haven. Així que la proposta, mireu la pàgina web d'aquestes mencions. Però el més emocionant, també, és un oportunitat de embrutar-se les mans, i les seves ments obertes a un tot munt de temes i eines i tècniques que són auxiliars al pla d'estudis bàsic del curs, però no obstant relacionats. I també meravellosa graons per fent projectes finals molt interessants que van molt més enllà de material que hem cobert formalment en problema fixa o en conferència. Així que anar a la pàgina web del CS50 per tota la llista de seminaris. Si no es registra, però, això està bé. Vagi per davant i registra't quiet i ho farem seguiment amb un enllaç en viu, el dia i hora és al lloc web. I tot serà gravat i posat en línia si vostè no pot fer que el dies i horaris determinats. Quant al que s'acosta thereafter-- així, per descomptat, hi ha el hackathon CS50. Aquesta foto, recordo, des de la setmana zero presa al voltant de les 4 am una nit en anys anteriors. La fira CS50, que de nou es durà a terme a les dues ciutats. I llavors, per plantar la llavor, tot i que encara tenir un mes més a l'esquerra del semestre, si desitja unir-se a la pròpia ensenyament de CS50 personal, i vol iniciar pensant en convertir-se en una CA, o company d'ensenyament, saber que començarem a parlar més sobre això a finals d'aquest semestre. Però aquí està la foto la major part de l'equip d'aquest any. I així, PHP-- i jo estava tan trist la setmana passada que [? Allyse?] Amablement va ser l'esforç d'arribar nosaltres aquests meravellosos accessoris que jo no les fem servir, de manera que en realitat només semblava una mica estúpid que teníem una pala assegut aquí tot dia dimecres passat, i una mica de cullera. Però aquesta va ser la meva metafòrica manera de tractar de pintar la imatge de per què estem en transició de C a un llenguatge com PHP. I el mateix podria dir-se de qualsevol nombre de les Llengües Java, Python, Ruby o raïms de altres--, però mentre que en C, per exemple, escriure un programa en C normalment podria ser com tenint una cullera com aquesta i l'excavació d'un forat en el terra, a la sorra o la brutícia. PHP li permet ser molt mossos més grans fora del problema, escriure codi molt menys utilitzant una eina molt més petit, perquè hi ha molt més funcionalitat reconstruït en. Ara, si ens vam quedar molt dramàtica, tindríem alguna cosa per palejar aquí, però que així sigui. Mentrestant, l'altre metàfora se'ns va ocórrer és, per descomptat, vostè podria servir alguna cosa com una clau a martellejar en una cosa així com un clau. Però, és clar, el dret eina per al seu ús va que no és tant la llenguatge anomenat C-- i ara només molest [? Sanders ,?] Probablement, ho arreglarem el que tarda- l'eina adequada per utilitzar amb freqüència No serà aquesta eina de nivell més baix. I, en efecte, C no és un llenguatge que la majoria de vostès mai va a utilitzar, o necessàriament han d'utilitzar de nou. I de fet, una mica secret-- l'única vegada Jo ús C mi és més o menys entre Setembre i desembre de cada tardor semestre. I això es deu al fet que utilitzar-lo com una oportunitat per ensenyar els fonaments de la programació, i amb ella l'ordinador fonaments científics, dades les estructures, els algoritmes i la com-- però molt ràpidament oi veure ara que la sintaxi i les idees que subjau C són tan meravellosament transferible a més modern llenguatges d'alt nivell, com PHP i Python i Perl i Java i Objective-C en realitat, no tant Objectiu-C- però Swift, aquests nous llenguatges que molts de vostès després incursionar amb vostès projecte final. Així que sense més preàmbuls, anem a realitat utilitzar PHP per resoldre alguns problemes. Recordem que des del principi, l'última setmana, només fem servir CS50 IDE, vam escriure un petit programa dinky que acaba de dir, "Hola món". I després ho vaig guardar en un arxiu anomenat hello.php. I llavors em vaig trobar amb aquesta comanda. I per què? En Anglès, què està passant aquí? Què estava fent quan Vaig córrer aquesta comanda? Sí? AUDIÈNCIA: Hi ha una mica de PHP funció que diu el que està en-- entén això. DAVID Malan: Bé, hi ha alguna funció PHP-- i m'ho dius a mi ser més específics, hi ha un programa anomenat PHP, àlies L'intèrpret, que entén el contingut de hello.php, i ho interpreta dalt baix, d'esquerra a dreta, i fa el que diuen aquests ordres. Les ordres de hello.php, per descomptat, és només la font code-- funcions i variables i bucles i similars, que nosaltres mateixos han començat a escriure en PHP. Però a diferència de C, la qual és un llenguatge compilat, PHP que acaba d'escriure, i executar-lo. Es salta aquest pas intermediari de convertint-la en zeros i uns, i després executar-lo. I així, el que és un avantatge d'això? Per què estem ometent el pas? Per què els llenguatges més moderns tendeixen a ometre aquest pas? Quin va ser el benefici? O simplement intuïtivament? Fins i tot si no has escrit molt abans de PHP, el que és beneficiós per no compilar el codi què et sembla? No? No cometre? Gratar-se el cap? Sí. AUDIÈNCIA: Més dinàmica. DAVID Malan: Més dinàmica? Que vols dir? AUDIÈNCIA: [inaudible] DAVID Malan: OK, bé, per la qual depenent de l'entrada, vostè no ha de compilar cada vegada. I realment és tan simple com ho que-- és el punt de continuar per compilar el codi? Això és només un pas que és making-- això està requerint, Durant els últims setmanes, el doble dels passos com s'acaba d'executar el seu programa. Ha estat útil per veure que veure alguns missatges d'error i així successivament, però segueix sent només un pas molest. I així, els programadors es van adonar amb el temps, per què no ho fem començar a escriure els idiomes que no ho fan necessitarà aquest pas bastant mecànic, de manera que amb prou feines pot escriure el seu codi i executar-lo. Però el que era el preu que vam veure que paguem última setmana, amb un exemple concret? Sí? Velocitat. Així [? el que és?] intèrprets una mica més lent, en aquest zeros i uns són agradable i ràpid per a un ordinador d'entendre, a causa de que la Intel CPU, o el que sigui, només entén el que està passant amb aquells patrons de bits. Mentre que un intèrpret és un programa que realment ha de llegir la font Ascii codi que vostè ha escrit, i la converteixen, per així dir-ho, o esbrinar com es converteix en última instància, de zeros i uns. Així que només es necessita una mica de mica d'un impacte en el rendiment. Així que és una mica d'un trade-off. Ara bé, si ho fem aquí, deixa seguir endavant i fer un exemple de la següent manera. Si vaig aquí, arxiu nou, vaig per guardar aquesta vegada és hello.php. I ara vaig a seguir endavant i dir: "print hola món" - i recordo que puc usar d'impressió, no ho faig d'utilitzar la impressió-F. I ara aquí, si ho faig de PHP de hello.php, em huh-- no semblen haver interpretat. Què vaig fer malament? AUDIÈNCIA: Les polseres en angle. DAVID Malan: Sí, vostè necessita que la part superior de l'angle suport cap amunt. Així que és una mica molest, però t'acostumes a ella ràpidament. Si he d'escriure codi PHP, I general haurà de dir-li al programa, o dir-li a l'intèrpret, hey PHP, aquí ve una mica de codi PHP. I a continuació, per si de cas, ho faria tancar aquesta no amb això, sinó amb angle de marca simplement pregunta suport, de manera que ara aquí baix, si em quedo això una altra vegada, ara Em surt el resultat desitjat. Ara anem a fer una lleugera optimització, només perquè ho has vist abans. Això és una mica molest que em ha d'executar PHP espai hello.php, perquè en el passat I podria simplement escriure slash dot nom del programa, el qual és una espècie d'agradable. És una espècie d'una millor experiència d'usuari. Així que resulta que vostè pot fer això en PHP amb el I following-- pot utilitzar aquesta força críptica encantament a la part superior aquí, que generalment es diu un shebang, mitjançant el qual es tracta d'un símbol fort, per dir-ho així, això és una explosió o un signe d'exclamació. I això ara és la ruta d'accés a un programa en un típic sistema Linux que es diu medi ambient, o env. I això line-- llarga història línia short-- 1 just diu, hey equip, trobar el PHP intèrpret per a mi en el medi ambient, trobar en la seva memòria, per així dir-ho. I el que és agradable ara, es que si vaig per aquí, Jo puc fer slash dot hola php punt, o-- hmm. Permís denegat. Bé, veuràs encara més d'aquesta amb el problema d'establir 07:00, si tenir no ja amb els permisos. Resulta que necessito per executar aquesta comanda anomenat [? chamod?] per al canvi mode-- un plus x hello.php. Necessito [inaudible] aquest addicional pas que està dient al meu equip, fer executable hello.php. I ara veure el happens-- dot slash hello.php, simplement s'executa. Jo no necessito especificar l'intèrpret més. I puc fer-ho encara més bonica, tot i així, si puc canviar el nom d'aquesta cosa. Si em mut hello.php només Hello-- ho noten en la part superior esquerra, El nom del programa és de fet ara només Hola. Ara puc fer que es vegi com un programa en C, tot i que està escrit en PHP-- o francament qualsevol nombre d'altres idiomes. Així millora marginal, cap diferència funcional. Però és només una mica de curiositat ara, perquè vostè pugui escriure programes en qualsevol idioma, i l'usuari no ho fa ha de saber o tenir cura del que són. Bé, donem una ullada a una més exemple convincent ara que van assotar per avançat. I això es diu quote.php. I està disponible en línia. I es va adonar que és bastant short-- però és un programa de línia de comandes que és anar a buscar preus de les accions per a mi, el que és en realitat va ser afí al problema establert set. Així que anem a veure el que estic fent. A la part superior Tinc la obert brida signe d'interrogació PHP. Llavors jo tinc aquesta línia, amb el que sóc que requereix un arxiu anomenat functions.php-- veurem més sobre això en una mica, però això és com C de versió d'aguda inclouen, on vols anar incloure un altre arxiu. PHP crida requereix, encara que També té un include funció. I resulta que és function.php només una cosa que va escriure abans de la classe. El vaig posar en el mateix directori, perquè Volia factoritzar algun codi que el que es vol utilitzar en altres llocs. Mentrestant, vostè pot probablement inferir el que està passant aquí. Això és una mica diferent de C-- però el que vull dir amb el seu ús apropiat? Traduir aquesta més tècnic. En quines circumstàncies són jo sortir del programa, o de sortir? Sí? AUDIÈNCIA: Quan vostè no té dos arguments de la línia d'ordres. DAVID Malan: Quan no tinc per ordenar els arguments de línia. I recorda que un dels arguments és en si mateix el nom del programa. I el segon serà una altra paraula que escric després de la sol·licitud. Així que igual que C, aquesta és la meva manera de comprovar, cooperar l'usuari i executar el programa com era la meva intenció? Ara, hi ha alguna cosa una mica diferent amb C-- primer de tot el que tenir aquesta mostra de dòlar, i el que $ 1 signar denotar en PHP? Només una variable. Això és tot-- simplement una variable seguida de el que vulguis en realitat cridar-ho. Observi que hi ha alguna cosa que falta del meu programa PHP, de la mateixa manera que havia desaparegut el passat setmana, enfront de C, que és el que? A tipus, però també alguna cosa més. No hi ha alguna cosa function-- funció principal. No hi ha funció principal. Vostè acaba de començar a escriure el seu codi sense tenir de preocupar bastant arbitrària convenció de nomenar algun incompliment principal funció. Així arg C és realment una variable global que l'intèrpret posa a disposició de mi. Ara, això és interessant. Així que busqui coses. Signe de dòlar de valors és a la a l'esquerra, que és el meu variable. A la part dreta, hi ha pel que sembla una funció en PHP crida de recerca que Estic passant la meva última línia d'ordres argument A-- qualsevol que sigui la paraula és. I veurem com això funciona en un moment. I després, finalment, estic informar el preu. Estic imprimint un sol participació en tal i tal. I recordi, aquest és el forma en PHP-- manera en PHP-- en el qual no has de fer el signe del dòlar S més. Vostè només pot usar claus i connecti d'alguna variable. Vostè no ha de preocupar de usant printf de la mateixa manera. I com un a part, quan es posa una variable dins de cometes dobles com aquest, utilitzeu una tècnica de fantasia anomenat interpolació de variables. Només vol dir connectar la variable aquí. I com un a part, alguns de vostès que vénen d'altres fons de programació, vostè no pot utilitzar cometes simples al voltant de les cordes per fer això. Ha d'utilitzar cometes dobles per interpolació de variables per treballar. Altrament et literalment veure aquestes claus. Així que, finalment, seguirem endavant i executar això. Vull deixar el meu terminal una mica més gran. Déjame anar endavant i corro dins del meu directori de cotització. [? CDsource?] [? AM?] [? cotització?] dot cotització PHP PHP, i jo vaig a buscar alguna cosa com GOOG, que és el seu símbol, i una acció del seu nou nom, Alfabet Inc, un cost de $ 717, a partir d'avui. Molt bé, si volem executar aquest nou, ningú tenir un altre tauler de cotitzacions volen mirar cap amunt? Microsoft crec que és aquest, MSFT-- 53 $. Crec que Yahoo és potser això. I és que Facebook. Llavors, què és aquest programa fent? La màgia sembla estar incrustat en que la funció de cerca. Així que anem a fer una ullada ràpida. Resulta que no ve amb PHP, està en functions.php. I no anem a anar a través de això en gran detall, notar la paraula clau aquí és que en la línia 6 de functions.php-- Jo, literalment, dic funció. Puc especificar el nom de la meva funció. Llavors puc especificar cap arguments o paràmetres, Vull aquesta funció a take-- cap tipus. I després posar-ho en pràctica. I vaig a agito la meva mà en la implementació, ja que està just bastant avançada ara, però veurem de nou en realitat en una setmana al problema plantejat 07:00. Però puc netejar això, també. També vaig incloure en el codi d'avui una versió de la cita, que no té arxiu PHP punt. Perquè el que és, presumiblement, al part superior del programa anomenat simplement citar? Que l'anomenat shebang-- la encantament bastant críptica que diu trobar PHP i després executar al meu codi aquí. Molt bé, així que porta nosaltres on ho vam deixar última temps-- encara que amb alguns exemples més avançats. Per a qualsevol dubte fins al moment sobre PHP o el que estem fent? No-- bé. Sí? AUDIÈNCIA: Dins de la Arxius HTML, fan usted-- [? Oi?] [? simplement dir-?] 1 [inaudible] arxiu PHP? DAVID Malan: Bona pregunta. En un context web, que estem literalment a punt de transició a, no utilitza l'anomenada tinglado a la part superior, perquè el server-- web sovint una programa anomenat Apache o Microsoft IIS, Internet Information Server o qualsevol nombre d'un altre programari de servidor web, Sap que quan veu un arxiu PHP punt, que ha d'executar l'intèrpret en ella. No es veu en aquesta primera línia. Així que aquest primer truc línia és només quan estàs línia d'ordres escrivint programs-- que no farem molt sovint, però és la nostra forma de pont els nostres exemples C a ara la nostra PHP. Així que anem a efecte Bridge Aquesta món Del món de la línia d'ordres al web fent el següent. Déjame anar per davant i dibuixar aquí només per un moment. Així que si tenim un servidor web, o millor dit, si tenim el meu portàtil per aquí, que vaig a dibuixar així. I aquí tenim el Internet en alguna forma. I després aquí, tenim un servidor en un building-- així és com l'internet works-- i aquí és un servidor amb algunes llums potser. El que realment està passant entre aquestes dues connexions? Així que en aquest edifici és un servidor web. Això és només un ordinador que s'està executant alguna operació system-- potser el programari lliure anomenat Apache, que CS50 IDE està en marxa. Així que en realitat es pot pensar en aquest edifici com a l'edifici que s'emmagatzema CSt0 IDE. Aquí és on tots vostès tenen comptes, on tots vostès tenir el seu propi servidor web córrer, tots vostès tenir les seves pròpies adreces URL úniques, quan vam començar a discutir, i veuràs més en P. estableix sis. Aquí està el meu portàtil en algun lloc una altra cosa a Internet. I així, quan visito un URL que pertany a mi, que el tràfic d'Internet va al servidor, el servidor de rebre una HTTP request-- com arribar index.html i és responent a aquesta pàgina web. Així que aquest és el paradigma general. Mentre que tot el que fins fins ara avui en dia, tot que estava passant només en el confins d'aquest edifici. Jo estava usant el meu portàtil, però Em vaig connectar amb CS50 IDE, de manera que tots els programes que s'executen estava dins d'aquest servidor, si. Però ara, anem a començar la reutilització de PHP escriure alguns programes reals que són servits per un servidor web. I per fer això, em vaig a anar en un munt d'exemples d'introduir aquesta idea aquí. Així que això és una espècie d'una forma elegant de que descriu un paradigma de programació. I de fet, en sortir CS50 o treballar en projectes finals, o prendre alguns segueixen a classe, començaràs al veure que el món-- especialment després d'haver crescut amb llenguatges com C que són súper sota level-- s'adonen que no hi ha millor formes de programari d'escriptura. Hi ha certa patrons que vostè pot seguir, certes formes d'organitzar els seus arxius i formes de nomenar a les seves funcions, de manera que conte llarg, el món ha arribat amb un munt de sigles i els noms de les formes de programació. Aquests són només tècniques que podria utilitzar. I un d'ells es diu MVC, per al Model Vista Controlador. I això és només, per Ara, una excessivament complicat manera de dir com s'ha de dissenyar un lloc web basat en PHP, en el nostre cas. Com organitzar els fitxers, Com organitzar la seva lògica, d'una manera que fa que sigui més fàcil escriure pàgines web més complicades? I, en efecte, ens dóna gust arribar amb p-establert set. Així que en el món de la MVC, vas a veure que el nostre codi pot general caracteritzar-se com sigui codi del model, o codi del controlador, o la vista de codi. I jo vaig a simplificar en excés com follows-- el controlador és el cervell del seu programa, que és on tot el lògica interessant succeeix. Així que tot el que he estat escrit fins ara a la classe, és una espècie de controlador code-- està controlant el seu programa, els seus bucles, la seva condicions, les seves funcions i variables i tot això. Vistes, ara, van a ser una mica més evident en el món de la web. Un punt de vista és l'estètica del seu lloc web. És el que l'usuari sees-- les imatges, les taules HTML, les etiquetes HTML, i tots que, tota l'estètica esponjós coses que no és tan difícil d'escriure, però és just el que està generant, és el punt de vista de la trucada, l'estètica. I el model, en última instància, va ser stuff-- base de dades que començarem a bussejar en tot com més aquest dimecres. Així controlador és la lògica, vista és la matèria estètica, i el model serà on emmagatzemem les nostres dades reals. Així que donem una ullada a això més concretament amb el següent exemple. Vaig a entrar en el meu directori aquí de la font d'avui code-- tots els quals està disponible en línia. I jo vaig a anar a la versió zero. I aquí és-- anem a anomenar el versió zero de la pàgina web de l'CS50. No hi ha molt aquí en absolut. És una pàgina web molt simple que és probablement usant el HTML tags-- només endevinar per exemples anteriors? Què és això? H1-- probablement per aquest gran negreta títol, que el logotip en la superior, CS50. ¿I què més està en joc? Sí? AUDIÈNCIA: Llista sense endreçar. DAVID Malan: pel·lícules-- desordenada de manera que el Etiqueta de UL i potser un parell d'etiquetes LI. I si no te'n recordes d'ells, honestament no importa. Aquests són una mena de suau i esponjosa detalls d'implementació d'HTML que es mira ràpidament i que està de tornada en el seu camí. Ens centrarem més en la programació idees que són les peces més sucoses. Així que anem a fer un ràpid mirar el HTML-- i de fet si obro la font de la vista aquí, yup, Això és exactament el que està passant aquí. Hi ha una etiqueta de UL. Niat dins d'això és que les etiquetes LI. I llavors vaig prendre prestat de la URL del pla d'estudis real aquí. I després en el lectures.php és aparentment una altra pàgina generat dinàmicament això va a tenir, anem a veure- ah, les dues primeres setmanes de la conferència. Així que la setmana zero i la setmana un, anem a mira això- si veig font de la pàgina, també és súper simple. Aquests estan donant lloc a dues pàgines week0.php trucada, i week1.php. Així que considera ara el que està succeint. Quan faig clic a week0.php, el meu portàtil està fent una sol·licitud de week0.php. El servidor web, àlies, CS50 IDE, està rebent el sobre virtual. És veure un missatge com, obtenir week0.php. Després hi interpretant l'arxiu, la part superior a baix, d'esquerra a dreta- l'arxiu anomenada week0.php-- i escopint els resultats. Així que dins d'aquest arxiu, week0.php, ha de ser la lògica del controlador que està generant aquest codi HTML, i aviat veurem això. Però per ara, permetin-me clic a la setmana zero, i ara tenim els dimecres i divendres, i ara tenim les diapositives lentament de setmana zero. I es pot recordar això des de camí de tornada quan. Així que això és tot el que aquest lloc web està fent. Així que considerarem com es fa això. Vaig a tornar a la codi font aquí, a CS50 IDE, i vaig a obrir index.php. A la part superior d'aquest arxiu és un munt de comentaris. I després, al mig d'aquest arxiu, Resulta, no és codi PHP que sigui. Perquè si vostè no té cap dels etiquetes signe d'interrogació PHP suport obert, vostè és lliure de posar només HTML. Perquè el que el PHP intèrpret se suposa que ha de fer, és quan es llegeix aquest file-- dalt a baix, d'esquerra a dreta- només interpreta el codi que veu entre els parèntesis angulars qüestionen marca. I qualsevol altra cosa que no és així reconèixer com PHP, només escup. I HTML està entre les coses s'acaba d'escopir. Així que aquest arxiu pot tenir ha cridat index.html, però estic nomenant tot dot PHP com un trampolí. Lectures.php-- similar decebedor, és només una mica d'HTML. Week0.php, de manera similar només algunes HTML. Però ara anem a posar al barret de l'enginyeria proverbial, i considerar com podem millorar això. No és difícil de fer això, però jo tipus de degenerat en copiar i enganxar. I de fet, si faig la setmana dues, Sé el que estic probablement va a fer? Vaig a anar a week1.php, estic posarà en relleu tot. Vaig a copiar, enganxar en un nou arxiu anomenat week2.php, ajustar algunes adreces URL, i estar en el meu camí. Així que en base al que hem vist en C ja, aquest no se sent bé, és d'esperar. Copiar, enganxar rarament la solució correcta. Llavors, què podem començar de fer per millorar això? On són les oportunitats per a un millor disseny? De moment tinc l'oportunitat de setmana 8, que va per ser realment molest si vull canviar la font de cada un les meves pàgines, o si vull per canviar l'estructura de la distribució. Llavors, on està l'oportunitat per a un millor disseny? Bé, anem a considerar el que és compartida a través de tots aquests arxius. Heus aquí la setmana un, aquí està setmana zero, aquí hi lectures.php, aquí està index.php-- el que és el mateix i El que és diferent, en termes generals, en cada un d'aquests arxius? Sí? AUDIÈNCIA: [inaudible] DAVID Malan: OK, bo. Així que hi ha un patró, sens dubte, pel qual cada vegada que trio conferència que, Que hauria d'estar generant un pàgina d'aspecte molt similar. I així potser pugui aprofitar el fet que en realitat, deliberadament numèricament indexats nostra lectures-- si puc posar encara més paraules en la seva resposta. I el que és l'única cosa que, de veritat, això està canviant entre setmana un-- i m'ho dius a mi desplaceu-vos cap avall per la qual cosa és més o menys en el mateix lloc-- així que aquí hi ha setmanes zero, més o menys en la part superior. Aquí està la primera setmana, setmana zero, la primera setmana, la setmana zero. OK, literalment, si vostè sap hi ha un programa que sigui, això és ara com un joc de correspondències patró. Llavors, ¿quina és la diferència? Sí? AUDIÈNCIA: [inaudible] DAVID Malan: Bé, de manera que el títol està canviant, molt lleugerament. Zero va, per descomptat, a un. El mateix està succeint en l'etiqueta H1. I ni bé ho veiem amb la mateixa facilitat, pel fet que les URL són una mica llarg. Però aquestes URL estan canviant lleugerament. Però el que no canvia és, m'atreveixo dir, la major part dels continguts de la page-- l'etiqueta HTML és el mateix, el cap és el mateix, el títol és gairebé el mateix, el cos és la mateixa, i gairebé tota la resta que és el mateix a excepció de aquests petits retocs. Llavors, com podem anar sobre factoring una mica d'això a terme? Doncs m'ho dius a mi proposo exactament que en la propera versió. Així que aquí a la versió un, tinc l'exacte mateixos arxius, a més d'un parell dels altres. Heus aquí index.php-- i fins i tot si que mai has vist abans de PHP, ¿Què estic fent, probablement, per resoldre aquest problema-- basat en el que veus aquí? Sí, és que un lleu compromís? No? Sí, seguir endavant. AUDIÈNCIA: [inaudible] DAVID Malan: Sí. AUDIÈNCIA: [inaudible] DAVID Malan: et necessito a parlar només una mica més fort. AUDIÈNCIA: [inaudible] DAVID Malan: OK, bo. I jo think-- era difícil d'escoltar usted-- però pensa en el que vols dir és que les etiquetes que eren comuns en la superior, i les etiquetes que eren comuns en el baix, ara han estat un factor fora, o relegat a quins arxius? Header.php i footer.php-- i anem fer alguns ajustaments per abordar la preocupació que acaba de plantejat sobre el canvi nombres, per exemple, si t'he sentit correctament. Però això sembla ser l'essència de la mateixa. Si hi havia una enorme quantitat de redundància en la part superior de la pàgina, i una enorme quantitat de redundància en la part inferior, anem a literalment a més destacat i tallar aquest contingut a terme, posar-lo en un file-- separat de la mateixa manera que la idea de la CSS, on un factor fora estètica molt similars, presentats en un arxiu PHP punt a part, utilitzeu la requereixen mechanism-- que és com incloent-hi sostingut que és essencialment com dir anar agafar el contingut de header.php, i copiar i enganxar aquí. Però el que això significa és que ara en index.php, tinc aquestes dues línies. En lectures.php, jo també tenir aquestes dues línies. En week0.php, jo també tenir aquestes dues línies. Així que ara, si vull canviar el títol de totes les meves pàgines, o vull canviar la estructura fonamental, Puc canviar ara en un sol lloc, o dues de capçalera i peu de pàgina places--, respectivament. Ara partida del codi que ha de buscar una mica més críptica, oi? Però si es pensa en el que la pàgina es doing-- si estic demanant week0.php, de la mateixa manera que en el dibuix més aquí-- quan se sol·licita week0.php, què vol dir això? Literalment, aquest arxiu és sol·licitada pel navegador. L'àlies web server-- CS50 ID-- agafa aquest arxiu, week0.php, i llegeix es dalt a baix, d'esquerra a dreta. En la línia un, troba immediatament claudàtor obert signe d'interrogació PHP, requereixen encapçalat punt PHP, etc. el que l'intèrpret de PHP does-- que es construeix al web servidor, perquè preconfigurat per usted-- passa automàticament en header.php, copia el contingut, les pega aquí. Però llavors les trobades d'intèrpret signe d'interrogació prop del suport, de manera que tot es fa pensant. Ara que escup a cegues les línies del dos al set, perquè és només HTML pur. S'obté a la línia 8, i fa que mateixa màgia nou-- obrir l'arxiu, l'acaparament dels continguts, i exigint-los o pegant en aquest moment o no. Però jo només al·ludia a un error. Aquest és un pas parcial cap enrere, perquè si ens fixem en header.php, He espècie de tallar un cantó. Quina característica li dono fins a la fi per guanyar això millor disseny discutible? Sí? AUDIÈNCIA: [inaudible] DAVID Malan: Sí, tipus de tallar un cantó no trivial. Vostè ha assenyalat que el que estava canviant va ser el títol, el nombre en el títol, i el nombre en el H1. Així que la meva solució va ser, està bé, canviarem el nom de la pàgina, i no lluitar amb això cap problema. Així que això és un parcial de pas cap enrere amb seguretat. Però el que és digne de menció aquí és que el que he fet apareix com un factor d'una altra manera tota la cosa comuna. I en footer.php, noto que factorizada fora de tot això, encara que sigui menor, coses comunes. Així que he de d'alguna manera ara podran fer un pas més, i fixar que les qüestions de títol. Així que anem a fer això. Déjame anar a la meva segona versió aquí, que, de nou, té els mateixos arxius a excepció d'una nova addició. I és una mica més detallat, però veurem si ens pot esmicolar el que està passant aquí. Així que en lloc d'exigir header.php i footer.php, Sembla que estic només requereixen un file-- trucada, per descomptat, helpers.php. I permetin-me estipulo ara, el que hi ha dins de helpers.php és només un munt de funcions que em va escriure, igual que abans. Però el vaig trucar helpers.php. Ara, aparentment, en línia de tres i 10, estic trucar dues functions-- render capçalera, render peu de pàgina. Aquells no vénen amb PHP, vaig escriure aquells mi mateix. I jo els vaig posar en helpers.php. Ara, només hem vist aquesta sintaxi una vegada, i va ser molt breu. Però això és pel que sembla un argument per fer de capçalera, la funció. Per què ho sé? Bé aquí hi ha un tancament parin, vet aquí un parin oberta. I, per descomptat, igual que en C, qualsevol cosa entre els parèntesis és un input-- o argument de la funció. Quin és el tipus de dades d'aquest argument, basant-me en el que he destacat? Què fan els claudàtors indicar, sobre la base de la setmana passada? Sí, és una array-- específicament una matriu associativa. I aquesta sintaxi és cert és una mica estrany, però això és només passant en un parell de valors clau. La clau és, entre cometes títol, i el valor és CS50. Si haguéssim fet això en C, pot ser que en lloc mira més bé això, simplement entre cometes CS50-- o en realitat seria arrissat claus, o alguna cosa per l'estil en C, on la clau és zero, i el valor és CS50. Però, de nou, en PHP, encara que el sintaxi és, de nou, una mica estrany, que li permet passar de paraules en lloc de nombres associar tecles amb els valors. Llavors, què significa tot això? Si entro a helpers.php, donem una ullada a aquesta funció. renderHeader.php, en comptes renderHeader és la meva funció, i sé que perquè veig la paraula clau function aquí. Això és nou des C-- aparentment pren un argument anomenat data-- però podria haver cridat a aquest res, però el vaig trucar de dades, només per ser una mica clean-- i simplement prendre una conjectura, especialment si vostè ha programat en alguna altra alt nivell de llenguatge d'abans, una cosa per sobre de C, conceptualment. Què suport obert iguals claudàtor probablement significa? O què pot significar? No hem vist això en C. Sí? Una matriu buida. Específicament, això vol dir que si l'usuari no diu renderHeader amb un argument, encara vaig tenir una discussió trucada de dades, però el seu valor per defecte és serà una matriu buida. Així que és només un bonic conveniència. Jo no he de cridar en l'usuari, o dir que va utilitzar la meva funció equivocada. Jo només puc donar a l'usuari una forma predeterminada valor, si no sobretot importa. Ara aquesta funció, estic va a agitar les mans en. Però aquesta funció extracte permet que passem aquestes variables en les dades en header.php de la següent manera. I aquesta és l'última peça, Crec que, de la sintaxi funky. Aquí està la meva nova versió de header.php-- que solia dir, literalment, oberta títol suport CS50, i això va ser tot. I el mateix per l'H1. Ara, pel que sembla, diu alguna cosa bastant covard. I permetin-me simplificar aquest per un moment de la següent manera. Això és el que tinc canviat la meva títol de ser. No obstant això, s'està fent una mica lletja als suports permanentment oberts amb PHP, i aleshores utilitzar la funció d'impressió. Resulta que PHP té una taquigrafia notació per això, que és just un signe igual, que és tècnicament una funció anomenada ressò en lloc d'impressió, però és la mateixa cosa, amb eficàcia. Això només es veu millor. És només una sintàctica sucre, si es vol, això fa que el meu codi de mirar una mica millor. Però resulta, i anem a veure això de nou en poc temps, hem de trucar a aquest molestament funció a llarg flama HTML caràcters especials en PHP, perquè resulta que hi ha certs inputs que l'usuari podria donar-nos, o que els usuaris ens poden donar, que trencaran nostre lloc. Però anem a veure que el pròxim setmana amb JavaScript. Però, per ara, només sé que aquest arxiu, headers.php, simplement pren el títol que Vaig passar a, que fan assegurar-se que és segur per a ser injectada en un web pàgina, i ho escup com el meu títol i com el meu H1. Així que si entro en aquesta versió ara, notar que les conferències té el seu títol de nou, setmana zero té el seu títol de nou, i de fet, l'HTML estic generant és idèntic al que la meva primera versió era-- excepció del meu espai en blanc, perquè jo he començat a formatar el meu codi una mica diferent. Però he generat tot el codi que m'importa. Així que permetin-me fer una pausa per un moment i veure si hi ha alguna pregunta o confusió que he creat. Molt bé, així que anem a torçar una mica més difícil aquí per veure si hi ha una oportunitat de millora. Helpers.php també tenia aquest funció, anomenada renderFooter. I el que és digne de menció sobre renderHeader, i renderFooter? I de nou, per als propòsits d'avui, saber que la funció extracte és només la meva manera de passar arguments en header.php i footer.php. Ho sentim? AUDIÈNCIA: [inaudible] DAVID Malan: Sí, jo només van canviar la requereixen línia. Així que, literalment, he comès el pecat de copiar i enganxar, una vegada més. No és un nombre enorme de línies, però vénen en-- si estic copiant i enganxant tot només per canviar una petita paraula, i la petita paraula que assenyala Alan out és peu de pàgina aquí, davant de la capçalera aquí. En cas contrari, tot és idèntica, a excepció de, per descomptat, els noms de la funció. Llavors, què podríem fer millor? Doncs m'ho dius a mi obro aquesta versió aquí, pel que en helpers.php, ¿Per què no acaba d'obtenir un poc més intel·ligent sobre això? Escriure una mica més complicat codi, però en diuen render? Així que què he canviat fonamentalment? Es necessita un argument ara-- dos arguments, les dades encara. I llavors, què és el primer nom probablement s'utilitza per, sobre la base del que estàs llegint aquí? Fins i tot si alguns de la sintaxi és encara nou. Què és el dòlar plantilla de senyal? Ho sentim? AUDIÈNCIA: Capçalera o peu de pàgina. DAVID Malan: Capçalera o peu de pàgina. Així que pel que sembla, vaig decidir que si l'única cosa que està canviant és el que la plantilla que vull a print-- i per la plantilla Vull dir que és model per codi que vull de sortida, però vull connectar d'alguna values-- pel que si és només la capçalera o peu de pàgina, per què no parametritzar això i anomenar el signe argument dòlar plantilla? I després aquesta sintaxi covard em permet per crear un camí en una variable aquí. Així senda signe del dòlar és una variable. Què significa aquesta sintaxi fer, si està familiaritzat? Sí? AUDIÈNCIA: [inaudible] DAVID Malan: Exactament. Si la plantilla és, entre cometes, capçalera, o si la plantilla és, entre cometes, peu de pàgina, aquesta línia no que jo he destacat, la línia 8, és simplement prendre aquest nom, com a capçalera, i concatenar amb PHP punt. Així que no teníem aquest operador en C. Aquest operador punt és una cosa increïble en PHP-- si estàs familiaritzat amb JavaScript o Java, pot utilitzar el signe més signar fer concatenació. En C, que és un dolor al neck-- i ho sento molt, en el set-p 6, vostè va a haver de fer esto-- és un dolor al coll per concatenar cadenes. Per què? Bé, perquè si tens una cadena que és aquest llarg, i una altra cadena que és aquest llarg, no es pot simplement connectar junts. Quin lloc ha de fer en C? Sí? AUDIÈNCIA: [inaudible] DAVID Malan: Has de malloc memòria, o utilitza una matriu a la pila. I de fet has de fer aquesta sèrie prou gran per adaptar-se a això a més d'això, a més de la barra invertida zero. Llavors concatenar junts utilitzant regiri gat o de forma manual amb un bucle for, o qualsevol nombre de tècniques. I et mostrem un parell de p-6 set. És un dolor al coll. I això és realment el que vull dir sobre aquest front esto-- com C en comparació amb PHP. Vostè acaba d'aconseguir molt més funcionalitat de forma gratuïta, de manera que vostè pugui centrar-se, idealment, a la diversió part de codificació, el projecte que vol resoldre, més que el baix nivell de minúcies. Així que això només genera header.php o footer.php basat en quin em dic. I de fet si em vaig en index.php, previ avís tot el que es transformats, en lloc de trucant render capçalera o peu de pàgina render, Vaig a trucar a rendir, seguit pel nom de la plantilla que jo vull fer. I veuràs això, també, al problema d'establir 7, pel qual permetem que li permet utilitzar el mateixa funció per fer raïms i raïms de diferents pàgines web. Així que en lloc d'insistir massa molt més en aquests details-- que veurà de nou en conjunt de problemes seven-- vegem en ara el començament d'una solució de a un problema més interessant. Fins aquí, res que hem fet té dades guardades. De fet, l'única vegada que he mai va salvar cosa que hem fet en aquesta classe és quan vam tenir una demostració molt simple estona esquena, pel qual es va utilitzar l'arxiu IO en C, i crec que he escrit en el meu nom, i El nom d'Hannah, i el nom de Maria, o potser el nom d'Andy, i llavors ens estalviem una file-- CSV separats per comes arxiu de valors. I utilitzem fopen-- Crec utilitzem fprintf pel que recordo, i ens estalviem un arxiu. Ara, que és el més simple forma d'una base de dades. Si vostè vol fer un lloc web per a la Programa Frosh missatges instantanis, mitjançant el qual estudiants de primer any pot inscriure en un esport, l'ideal voler fer alguna cosa amb aquestes dades. La setmana passada, no vam fer res amb el data-- que acabem de dir, està registrat, no realment. O potser em escrit el supervisor, i això va ser tot. Però seria bo si pogués donar aquest supervisor un arxiu CSV, com un arxiu d'Excel. O millor encara, que ho faria seria bo si pogués posar els noms dels usuaris i dorm noms i tot això en una base de dades que Només viu per sempre, fins que jo decideixi eliminar les dades. Una base de dades que permet mi per consultar informació. I de fet, això és el que és una base de dades. Introduïm avui, i la setmana que ve, també, una tecnologia anomenada SQL-- una consulta estructurat El llenguatge, que és una altra llengua. Bàsicament es tracta d'una programació idioma, però per a bases de dades. I una base de dades per ara, només pensar com una versió super luxós de Microsoft Excel o Google Els fulls de càlcul, o números d'Apple. En general és un programa que permet que li permet emmagatzemar un munt de dades en files i columnes, força com vostè pot ser que en Excel. Però el que és bo, especialment si no estem molt familiaritzats amb Excel, el SQL li permet fer és aquesta consulta informació escrivint línies de codi on es pot, fins i tot si el seu base de dades té un milió de files al mateix, es poden trobar coses molt ràpid. De fet, Excel és particularment dolent en grans conjunts de dades. I de fet, fins a uns pocs Fa anys, va resultar Excel només permetrà emmagatzemar fins 65.535 files de data-- que sona com a molt, però al temps jo era un estudiant de postgrau, i recordo ensopegar això perquè m'estava generant Arxius CSV per a la meva investigació i em volgut analitzar de forma ràpida amb només obrir en Excel. Per descomptat, el meu equip simplement es va estavellar, perquè tenia més de 65.000 files. Però d'on la 65535 ve? Què estava fent Microsoft, és de suposar? Si ets bo amb les potències de dos? Sí, ells estaven usant una de 16 bits valor per representar el nombre de fila. I dos a 16 és 65,536-- menys un, perquè si índex zero significa que va ser el major nombre de files que pogués tenir. I va ser una decisió de disseny. A l'estalviar 16 bits, em limiten 16.000 files, en lloc de 4 mil milions, que podria haver tingut idealment. Però per ara, anem a introduir aquesta més en un context web. I el que és bo de SQL és que fins i tot encara que és bastant potent i bastant sofisticat, que realment es redueix fins a quatre operacions fonamentals, quatre funcions clau, si voluntat-- seleccioni, per a la recuperació de dades, la recerca per a les dades; esborrar o eliminar dades; inseriu per afegir files a la base de dades; i actualització. Així que si alguna vegada has fet servir Google Fulls de càlcul, nombres d'Apple, Microsoft Excel, s'ha executat, el més probable, tot d'aquestes operacions com un ésser humà per simplement usant el teclat i mouse-- la inserció de dades, l'ús dels seus ulls per seleccionar o buscar dades, o les dades d'actualització o supressió de dades. Llavors, què vol dir això? Bé, pre-instal lat en CS50 IDE és un programa anomenat MySQL. És una, lliure de codi obert base de dades que és súper popular. Facebook, per exemple, la fa servir per a aquest dia, entre altres eines que utilitzen. I un munt de llocs web molt populars utilitzi en gran part perquè és ràpid, i perquè és gratis. Encara que sens dubte ha alternatives. I alguns de vostès podrien incursionar amb alternatives per als projectes finals. Aquesta és una captura de pantalla, per la seva banda, de una eina basada en la web anomenada phpMyAdmin. És una coincidència que aquesta eina basada en web és també escrit en un llenguatge, PHP, però, què se suposa que ha de fer és donar-nos una basada en la web interfície a una base de dades. A causa que MySQL és típicament alguna cosa, històricament, es seria interactuar amb només amb una línia de comandes. I seria fantàstic molest i arcana tenir teclejar ordres de text per seleccionar dades, inserir dades i eliminar dades. Així que algunes persones en la internet va escriure un programa basat en la web que només feu-nos gestionem les dades a la nostra base de dades. És com fer doble clic en Excel i que executa una versió basada en la web de la mateixa. ¿I què vas a utilitzar això per en última instància, la setmana que ve, no en p-set de sis, sinó que és per construir alguna cosa anomenada CS50 Finances, que va a tenir una base de dades usuaris, amb els noms d'usuari i contrasenyes, quantitats de diners que tenen en els seus comptes bancaris. Serà cosa que s'utilitza per emmagatzemar els símbols i les quantitats de les poblacions que els usuaris de han comprat usant virtuals dòlars que li vas a donar a ells. I que va permetre als usuaris per registrar al seu lloc, per la qual cosa fins i tot els seus amics pot sintonitzar al seu lloc web i en realitat inscriure, has d'entrar i jugar i tractar de trobar errors en el seu codi, i tractar de trobar errors en el seu lloc web. I ells simplement van a registrar per afegint-se a si mateixos, de manera efectiva, a través de codi que s'escriu a la base de dades. Per exemple, aquesta és una captura de pantalla ràpida del que una base de dades podria ser similar. Això era d'una de solutions-- de l'any passat això és com un mini Excel presentar, emmagatzemada a la nostra base de dades, emmagatzemada en aquest programari anomenat MySQL. Pel costat de la mà esquerra, tinc aparentment donat a cada usuari un nombre únic. A la segona columna, m'he donat tots un usuari nom-- la meva pròpia entre ells. I en el costat dret, Jo els he donat un hash. Ara bé, això és en realitat una contrasenya, però no és una contrasenya de text sense format. És una contrasenya encriptada, si es vol, o un hash de la contrasenya. Què anem a tornar al poc temps. Però si alguna vegada has llegit un article sobre com la contrasenya en algun banc o alguna pàgina web podria haver estat compromesa, en general, pot significar una de dues coses. Així que això és només un extracte de sis usuaris. Tots vostès poden ara calcular a terme a través de la pirateria o formació d'esquerdes el contrasenyes nostres sis de la gent són. Però si alguna vegada has aconseguit un avís o una disculpa d'una empresa o lloc web refrany, ho sento, un hacker va entrar a la nostra base de dades, probablement hauria de canviar la seva contrasenya, el que podria significar això? Bé, un, podria significar la empresa ha estat més estúpid, i ha estat l'emmagatzematge de la contrasenya en una columna d'aquest tipus, sense xifrar. El que significa adversari, que va robar la base de dades, sap, literalment, la seva nom d'usuari i contrasenya. Aquest és el pitjor escenari possible. I com es veurà en el p-setembre 07:00, tan fàcil d'evitar. No hi ha absolutament cap excusa perquè forma d'estupidesa a l'Internet d'avui. Dos-- i el trobarem alguns articles per donar testimoni del fet que això encara succeeix, nonetheless-- 2, potser l'adversari va robar aquesta versió de la base de dades. Que encara està una mica malament, perquè ara ells saben que jo tinc 6 clients, Conec els noms d'usuari d'aquests sis clients, i sé que el xifrat versions, o les versions hash, de contrasenyes aquests sis dels clients. Però qualsevol de vostès que podria haver fet [? Hacker 2?] on esquerdat contrasenyes, o vas prendre Una mirada a aquesta versió del problema set, ¿per què és encara una mica preocupant si l'adversari sap la seva picada contrasenyes? AUDIÈNCIA: A causa de que van poder entrar a tot el diccionari en la funció de hash. I si la contrasenya és un diccionari paraula, [? que només pot match--?] DAVID Malan: Exactament, l'adversari pot simplement escriure codi, igual que alguns de vostès va fer per [? Hacker?] 2, pel qual vostè iterar sobre totes les paraules en el diccionari, o totes les possibles combinacions d'A a la Z i un a través nine-- que sona a molt, i ho és. Però per a un equip, és bastant maleït ràpid. I, de fet, aquesta va ser la punt de [? Hacker 2 ,?] Era prendre les coses que es veu literalment així, i tècniques d'enginyeria inversa el que realment era. Així que anem a veure com podem emmagatzemar aquesta manera més eficient. Resulta que, per sort en MySQL, no van a ser els tipus de dades. I una de les parts divertides sobre disseny de base de dades, per ser honest, és en realitat decidir per si mateix Com ha de representar les dades? En el cas que representen un nombre de telèfon com 1 int, igual que un nombre gran, o un llarg? O és que en realitat ho fa com una seqüència de caràcters? I no pot ser molt impactes no trivials d'aquest. De fet, una de les primers, històries divertides germànic és quan Mark Zuckerberg estava construint Facebook, que va ser escrit originalment en, i tot i així està escrit principalment en PHP. I un dels majors reptes es van enfrontar des del principi va ser l'ampliació. Quan van seguir afegint escola després l'escola després de l'escola, que jo sàpiga, una de les solucions originals era essencialment per copiar i enganxar algunes de les bases de dades i una part del codi, de manera que era Harvard que s'executa en el seu propi servidor, i el MIT s'executa en el seu propi servidor. I aquesta era la raó, per a alguns de vostès que puguin recordar, no es podia tenir amics en altres xarxes. És probable que no té amics a MIT o Harvard fa 10 anys més o menys, però no es podia abastar xarxes per part aquesta raó. I un dels majors reptes per Mark i per a empreses com Facebook és en realitat el maneig de centenars i milers i milions de sol·licituds per segon. Així les coses començarem parlant d'aquesta setmana són realment va a ser afí a escriure bon programari, i popularment eines reeixides que pot manejar una gran quantitat d'usuaris. Així que anem a parlar de les coses com la indexació i recerca, però això és tot per avui. Veurem per més dimecres tu. [MÚSICA - TEMA "Seinfeld"] DAVID Malan: Vostè pot a , I restar d'ella. I vostè no ha de pegar-se amb una certa quantitat predeterminada de memòria. Bé, què és això va a trucar? ALTAVEU 1: Bé, què està passant? ALTAVEU 2: Què vols dir? Ell està donant una conferència. DAVID Malan: I podem utilitzar un funció anomenada malloc a memory-- ALTAVEU 1: Per què no s'estan movent els seus braços? ALTAVEU 2: Bé Això és-- ja saps, això és normal. És igual que ell acaba de grans salsitxes penjant allà. ALTAVEU 1: Això és normal? ALTAVEU 2: Sí, crec que simplement assumir que accidentalment reemplaçat el seu desodorant amb superglue.