[Speel van musiek] David J. Malan Hello. Kom ons neem 'n wandeling deur Probleem Stel 8 Datavleg, wat gaan jy uit te daag om vestig op elemente vir Google Maps met elemente van Google Nuus en mash hulle saam in 'n web applet dat kan 'n gebruiker om te soek 'n kaart vir nuus plaaslike spesifieke dorpe, stede, en zip kodes. Om dit te doen, gaan ons sommige HTML integreer, CSS, PHP, SQL, JavaScript, en 'n tegniek algemeen bekend as AJAX om hierdie meeslepende te skep gebruikers ervaring. Kom ons kyk eers vir Google Maps self. Dit, natuurlik, is dalk 'n bekende interface. Maar dit blyk dat Google Maps bied ook 'n API-- aansoek programmering interface-- via wat jy elemente van Google Maps kan neem en integreer dit in jou eie programme. Inderdaad, in hierdie proses, jy gaan 'n paar van URLs te vind veral nuttig dat is in die genoemde spesifikasie vir Probleem Stel 8, spesifiek hierdie slag Lei of die ontwikkelaar se Guide Google Maps API weergawe 3 asook as die Google Maps JavaScript API v3 verwysing, wat 'n bietjie meer arcane te lees maar eintlik het al van die laer vlak besonderhede oor watter funksies of metodes en voorwerpe en eienskappe gebeure eintlik kom met die API, baie soortgelyk in gees te [onhoorbaar] bladsye. Nou as ons neem 'n blik op Google News, sal jy miskien sien 'n bekende interface hier. Maar dit blyk jy kan ook soek Google Nuus vir spesifieke geografiese via 'n HTTP parameter genoem geo. In werklikheid, as ek zoom in hier, sal jy sien dat Ek is op news.google.com/news/section?geo=02138. En, inderdaad, as ek zoom uit, sal jy sien dat ek op soek na 'n bladsy met 'n hele klomp van die uitsig oor Cambridge, Massachusetts. Intussen, as ek eintlik verander die URL nie 'n kode soos hierdie te wees, maar iets 'n bietjie morsig soos Cambridge, + Massachusetts, waar die plus is die manier waarop jy enkodeer 'n ruimte karakter in 'n URL en druk Enter, jy sal sien dat ek eintlik sien byna dieselfde nuus. Miskien is dit 'n bietjie anders omdat Cambridge eintlik het verskeie rits kodes. Nou hoe sal ek weet dat en, in werklikheid, hoe kon ek een of ander manier bind stede en dorpe te rits kodes in geval ek die gebruiker wil toelaat om te kyk of? Wel, dit blyk dat daar 'n webwerf daar genoem geonames.org wat 'n inisiatief te hê 'n vrylik beskikbaar databasis van alle vorme van geografiese inligting, nie net vir die VSA, maar ook vir ander lande. In werklikheid, as ek gaan na hierdie URL hier, wat ook in die probleem stel genoem spesifikasie, sal jy dit sien drie notering van 'n hele klomp van die zip-lêers enige van wat kan afgelaai word deur jou. Trouens, vir hierdie probleem stel jy gaan om af te laai us.zip. Nou in hierdie lêer is 'n hele n klomp van die data in teks formaat. Die lêers is baie soortgelyk aan 'n CSV-- Comma Separated Values ​​file-- maar dit eintlik gebruik tabs velde te baken. Nou, intussen, as jy kyk hier by wat ek uitgelig, Die velde in hierdie lêer gaan dinge soos land kodes te wees, poskodes, plekname, en dan, in een of ander vorm of ander state en provinsies, gemeenskappe, en nog baie meer. Trouens, ek het reeds hierdie lêer in advance afgelaai. Laat my gaan voort en maak dit oop here-- us.text-- en, inderdaad, sal jy sien as ek gaan na die lyn 16792 jy sal sien 'n paar rekords vir Cambridge, Massachusetts en sy verskillende zip kodes. Wat jy sien daar is ook die land, sommige getalle wat ek doen nie regtig verstaan ​​nie, maar ook al die pad aan die regterkant, sommige GPS coordinates-- breedtegraad en lengtegraad. Dit is groot, want een van die funksies van Google Maps API is die vermoë om op te spoor waar jy geografies in terme van GPS koördinate. Nou laat ons begin om uit te vind hoe om te begin vasmaak hierdie dinge saam. Ons het vir jou 'n hele n klomp van die verspreiding kode, sowel as MySQL databasis. In werklikheid, as ek trek 'n phpMyAdmin met reeds ingevoer, as jy gou sal, pset8.SQL, sal jy 'n MySQL tabel sien dat lyk soos hierdie, 'n ID-veld, land kode, poskode, plek naam en nog baie meer. Die tipes al daardie kolomme ek afgelei eenvoudig deur die lees van die readme.text lêer hier dat gespesifiseerde of 'n veld is 'n heelgetal, of varchar of die wil. Dus het ons geskep daardie tafel vir jy en jou gegee die SQL opdragte uit te voer wat aan die skep van tabel in jou eie databasis, maar daar is eintlik geen data in dit nog nie. Inteendeel, jy gaan te hê aflaai us.zip of enige land se ritssluiter lêer van die URL daar. En dan is jy gaan hê om te skryf 'n command line script in PHP dit is gaan om oop te maak dat die teks lêer, Itereer oor sy lyne, en dan vir elkeen van die lyne doen 'n insetsel in daardie plaas tafel in jou MySQL databasis. So aan die einde van hierdie proses, sal jy het dat script uiteindelik hardloop net een keer in teorie. In werklikheid sal jy waarskynlik loop dit 'n klomp van die tye terwyl hy probeer om verskeie foute op te los. Uiteindelik, jy gaan 'n te hê werklik 'n groot databasis met duisende en duisende geografiese rye. Dan is jy gaan om dit invoer te sit script opsy nadat dit werk en jou databasis is lekker en korrek is, en dan jy gaan om te beweeg op om werklik die implementering van die mashup self. Die mashup gaan om te kyk 'n bietjie iets soos hierdie. Op mashup.cs50.net, ons het 'n personeel oplossing wat lyk 'n bietjie iets soos hierdie. Inderdaad, as ek op die koerant ikoon vir Cambridge, Massachusetts, jy sal 'n spin sien ikoon kortliks en dan 'n geordende lys, 'n kolpuntlys artikels verwant aan Cambridge, Massachusetts. As ek op Charlestown, Massachusetts, Ek sal dieselfde vir daardie dorp sien. En as ek op Watertown, Massachusetts, daar dalk nie wees nie nuus van van Watertown, sodat jy iets sien soos stadige nuus dag. Nou, intussen, op top links is 'n paar bekende Google Maps kontroles om jou te laat zoom uit, pan op, af, links en regs, maar ook 'n soekkassie dat ons sit daar. So as ek soek vir die waarheid te sê, Die enigste ander poskode ek weet, 90210, sal ons eintlik sien Beverly Hills, Kalifornië. Wanneer gebruik dit lei my na Kalifornië en 'n hele klomp van die nuus oor Beverly Hills. Let nou ook, wat daar gebeur het. As ek hierdie tyd soek vir 02138 of selfs Cambridge komma Massachusetts of 'n variant daarvan, kry jy ' bietjie outovoltooiing dropdown. Nou hierdie is die gebruik van 'n prop vir 'n biblioteek genoem jQuery, en dat plugin genoem typeahead. Ons het eenvoudig deur te lees die dokumentasie, afgelaai van die Js lêer geïntegreerde in die verspreiding kode sodat jy uiteindelik kan die kode skryf dat vul daardie dropdown menu met die motor keuses of die motor voorstelle. Nou is die verspreiding kode, al is, dat jy ontvang dit nie doen nie naastenby so baie. Jy kry die Google Map ingebed, en jy die kontroles die top links, en jy kry die soekkassie. Maar as ek tik iets soos 02138, daar is geen plekke gevind nie. So wat gaan wees Een van ons doelwitte hier. Verder, as jy 'n stap rug en kyk na die kaart, daar is geen nuus hoegenaamd nie. Selfs as ek kliek en sleep, geen merkers eintlik verskyn vir nuus, want dit uitdaging word gelaat vir jou so goed. Kom ons neem 'n blik dan by die verspreiding kode. Sodra jy afgelaai pset8.zip en uitgeryk in jou vhost gids in die CS50 Appliance, jy sal sien hierdie dopgehou hier binne. Bin-- wat oor die algemeen staan ​​vir binêre vir uitvoerbare programs-- sluit, soos in pset7, sommige PHP lêers wat ander lêers insluit, dan publiek, wat is die lêers wat nodig om in die openbaar toeganklik wees aan 'n gebruiker met 'n leser. Kom ons neem 'n blik in die bin gids, en ons sal sien dat daar 'n lêer daar reeds genoem Invoer. As ons oop dit met gedit, sal ons sien wat, ongelukkig, is daar nie veel daar. Al wat daar is, al is, is 'n kaboedel op top wat bepaal wat interpreter-- in hierdie geval PHP-- moet gebruik word om werklik voer hierdie lêer. Maar dan waar dit sê TODO is waar jy is gaan 'n paar kode te skryf wat waarskynlik vereis dat die config lêer wat in die sluit gids Soos ons reeds gedoen met PHP lêers. En dan gaan jy moet een of ander manier oopmaak us.text wat jy vermoedelik het reeds oopgemaak. Dan gaan jy te hê Itereer oor die lyne in die lêer, dalk deur sommige van die funksies voorgestel in die spesifikasie. Dan voeg elk van dié lyne in MySQL databasis deur die gebruik van die navraag funksie, wat ons het julle weer voorsien with-- of ten minste 'n variant daarvan in functions.php, wat ons sal sien in net 'n oomblik. Nou laat sluit invoer en gaan terug na ons gids en hierdie keer gaan in sluit. En as ek doen ls daar is, sal jy sien drie lêers hou Probleem Stel 7. En laat ons neem 'n vinnige blik, byvoorbeeld by config.php. Daar is minder lyne as voorheen, en dit lyk hierdie lêer sluit constants.php en functions.php. Ons gebruik 'n effens verskillende tegniek hierdie keer om werklik spesifiseer dat hierdie lêers is relatief aan die huidige gids __ DIR__ verteenwoordig wat gids hierdie lêer, config.php, is self in. So, dit is 'n meer eksplisiete manier spesifiseer wat ander lêers wat jy wil om te vereis. Nou as ek sluit hierdie lêer en oopmaak constants.php plaas, jy sal 'n lêer te sien baie herinner vir Probleem Stel 7 se so goed, al is dit met 'n ander databasis genaamd pset8. Ten slotte, in functions.php, ons sal net een funksie te sien hierdie tyd genoem navraag. Dit is byna dieselfde, behalwe ons hanteer foute hierdie keer 'n bietjie anders, maar dit is die gebruik is dieselfde as in die probleem stel sewe. Nou laat ons gaan terug na ons pset8 gids, gaan in die openbaar, en daar as ek dit doen ls, sal jy sien this-- articles.php, index.html, search.php, en update.php-- alle lêers. En dan is die css fonts, img, en JS gids hou pset7. Kom ons neem 'n blik op index.html, wat is gaan regtig die wees inskrywing punt aan die smashup. Nou in index.html, sal jy 'n hele sien n klomp van die skakel elemente in die kop, spesifiek vir bootstrap vir ons eie CSS gevolg deur 'n hele klomp van die script tags vir dinge soos die kaarte, API self, 'n spesiale merker met die etiket nut wat ons in die genoemde spesifikasie is beskikbaar vir jou, jQuery self, bootstrap self, en 'n ander biblioteek genoem underscore wat ons praat oor in die spec. Underscore.js soos jquery.js is 'n JavaScript-biblioteek wat 'n hele klomp van die funksie dat baie van die mense in die wêreld wens bestaan ​​in JavaScript self. So al hierdie is eintlik baie gewild. Ons het ook genoem typeahead wat is die biblioteek wat doen dit outovoltooiing dropdown en uiteindelik 'n skakel na ons eie JavaScript. Intussen, en miskien Gelukkig, hierdie mashup word aangedryf deur relatief min HTML hier aan die onderkant. Kennis dat ons gespesifiseerde n div in ons liggaam van die klas-houer vloeistof. Dit, per bootstrap se dokumentasie, net beteken dat hierdie div gaan die te vul vertoonvenster of venster ten volle die leser. Intussen, onder dat ons 'n div dit is geopen en onmiddellik gesluit met die unieke ID van kaart doek. Dit is nou van Google Kaarte dokumentasie vir sy API, waardeur ek net nodig het om te 'n leë div waarin te spuit, Uiteindelik, 'n werklike Google Maps. Maar meer oor dit in net 'n bietjie. Ten slotte, daar is 'n vorm binnekant van hier wat implemente die teks boks aan links bo in ons koppelvlak vir die soek. Kennis dat ons gebruik 'n bietjie van 'bootstrap hier too-- dinge soos vorm-inline en vorm-groep. Ons het die voormalige gegee unieke ID vorm. En dan, uiteindelik, ek het eintlik ' 'n inset tipe, wat is redelik vertroud, wie ID is q. Net 'n konvensie. Q vir query-- kan hê is iets genoem. En dan is die plekhouer, Intussen is stad, provinsie, en poskode wat jy kan onthou sien in ons mashup demo vroeër. Kom ons sluit hierdie lêer. Nou neem 'n blik op die PHP lêers wat wag en dan die JavaScript-lêers. In ons PHP lêers, ons het reeds vir jou geïmplementeer word, byvoorbeeld updates. Update.php-- sal ons nie spandeer 'n groot bedrag van die tyd op here-- in 'n neutedop is die lêer wat ons JavaScript-kode gaan te kontak via AJAX dat asynchrone tegniek wat gebou in JavaScript hierdie dae wat gaan toelaat om ons te vra update.php vir meer inligting. Spesifiek, enige tyd die gebruiker sleep die kaart of 'n soektog wat spring die gebruiker na 'n ander plek, ons JavaScript-kode, soos ons sal gou sien, is gaan update.php te roep en vra vir 10 of so merkers binne die vertoonvenster gebaseer op die GPS koördinate van die boonste en onderste hoeke van die kaart. Ons kan dan repopulate die kaart nou dat die gebruiker die skerm om verhuis om te sien 10 waarskynlik nuwe merkers vir verskillende dorpe. Intussen hierdie lêer is uiteindelik gaan 'n SQL navraag uit te voer teen ons databasis tabel genaamd plekke wat gaan diegene om terug te keer 10 of minder plekke. Intussen, in articles.php, is 'n ander lêer ons in sy geheel geskryf het. Dit is baie soortgelyk in gees Probleem Stel 7 se funksie ZOEKEN, wat gekontak Yahoo Finansies vir jou. Hierdie lêer kontakte Google Nuus vir jou, uiteindelik gryp 'n masjien-leesbare version-- in iets genoem RSS lêerformaat van die nuus Cambridge of Beverly Hills of wat ook al dorp wat jy het gesoek vir wat gebaseer is op wat geoparameter. Ons ontleed wat RSS, wat net 'n tipe opmaak taal genoem XML, en dan moet ons eintlik stuur dit terug aan die leser en na jou JavaScript-kode, spesifiek, in 'n formaat genoem Into JavaScript Object notasie. Nou sal jy sien in die specification-- wys ons jou hoe jy kan eintlik sien sommige van die into koms back-- dat hierdie funksie uiteindelik kan jy die opspring kieslyste vul so dat wanneer jy kliek op 'n merker op die kaart sien jy eintlik 'n hele klomp van die koeëls, wat elk skakels na 'n artikel. Nou kom ons neem 'n blik op 'n laaste PHP lêer wat gelukkig nie veel gaan on-- net 'n mooi groot TODO. Nou hierdie lêer verklaar 'n skikking met die naam plekke. En dan uiteindelik afdrukke wat opgestel in into lêerformaat mooi-druk dit net so dat dinge is makliker om te ontfout. Ongelukkig, in die middel is daar hierdie TODO, waarin gevra word vir jou die soek databasis vir plekke wat ooreenstem met 'n geo HTTP parameter. En, inderdaad, dit gaan een van jou challenges-- hierdie funksie om hier te implementeer sodat wanneer jy kontak hierdie lêer met 'n URL soos search. php? geo = iets, jou kode sal uiteindelik terug 'n into verskeidenheid van al die plekke in jou databasistabel wat ooreenstem dat insette. So as die gebruiker in Cambridge, jou lêer hier search.php moet uiteindelik teruggaan n into verskeidenheid vir al die wedstryde vir Cambridge, wat dalk in Massachusetts maar kan selfs nêrens anders wees. Laastens, laat ons neem 'n blik op twee lêers wat statiese ultimately-- jou CSS-lêer en jou JavaScript-lêer. As ek gaan in ons CSS gids, daar is 'n hele klomp van die lêers daar, maar die meeste van hulle is biblioteke. Ek gaan 'n blik te neem, spesifiek op styles.css, wat is ons eie globale CSS dit is gaan hierdie hele mashup te stileer. Ek sal laat dit aan jou deur te lees die kommentaar hierin, maar in 'n neutedop, dit is die CSS wat verseker dat ons mashup, by verstek uit die boks, lyk presies die manier waarop ons wil it-- met die kaart in te vul die oog hawe en met die soek boks by die top links. Ons het ook die vryheid van geneem stylizing dat typeahead dropdown spyskaart 'n bietjie so goed. Die belangrikste lêer miskien vir hierdie probleem stel is hierdie laaste een, scripts.js. Binnekant van jou JS gids is selfs meer lêers. Almal van hulle is die biblioteek lêers behalwe vir hierdie een, scripts.js. As ons oop hierdie up, laat ons ons finale toer deur die funksies wat is gebou in die lêer vir jou en oproep aandag aan die Todos wat voorlê. Op die top van hierdie lêer, is drie globale veranderlikes. Een vir 'n kaart, wat gaan 'n verwysing na ons Google kaart. Jy kan dink dit soort van soos 'n wyser. Intussen het ons 'n ander globale veranderlike genoem inligting, wat blyk te wees, stoor die terugkeer waarde van 'n oproep nuwe google.maps.InfoWindow. JavaScript ondersteun voorwerpe wat is baie soortgelyk in gees stutte. En wat hierdie lyn vir ons doeleindes doen is 'n nuwe inligting venster in die geheue en dan hou om 'n verwysing daartoe in 'n veranderlike genoem Info. En in tussen daardie, Intussen is wat blyk te wees om 'n leë JavaScript skikking met die naam merkers. Al dié koerant ikone, of jy dalk 'n ander ikoon heeltemal kies, gaan gestoor moet word uiteindelik in hierdie reeks sodat ons kan baie maklik voeg die kaart en verwyder hulle uit die kaart. Nou laat rol af 'n bietjie en gefluit deur die kode wat gaan wees uitgevoer sodra die DOM of dokument voorwerp model of die bladsy self is gereed. Onthou dat hierdie sintaksis hier eenvoudig spesifiseer dat die volgende kode moet slegs uitgevoer word wanneer die leser het klaar laai alles anders. Ons eerste verklaar hele klomp van style, wat uiteindelik stylizing die kaart soos per die spec. Ons het toe verklaar hele klomp van opsies, wat verder aan te pas die Google kaart dat ons oor te sluit. Ons gebruik dan 'n bietjie van jQuery kode, wat in 'n bietjie meer detail verduidelik word in die spec, aan te gryp daardie element, kaart-doek dat ons so uniek geïdentifiseer. En dan hierdie lyn hier is wat blyk te mettertyd gee ons 'n Google kaart binnekant van ons eie aansoek, stoor 'n verwysing daarna in daardie veranderlike genoem kaart. Ten slotte, hier is ons registreer wat is bekend as 'n luisteraar. Dink back-- manier, manier back-- te week nul in CS50 wanneer ons kyk na Scratch en sy steun deur 'n wandeling deur vir dinge genoem gebeure en uitsendings. Jy kan nie gebruik het dit self, maar dit is 'n meganisme waardeur 'n leser in hierdie geval kan ons aandag kry wanneer dit gereed om te eintlik 'n paar kode voer. In hierdie geval, dit gaan om te luister na die kaart vir 'n gebeurtenis genaamd idle. Dit beteken dat die leser het klaar laai die Google kaart. Op hierdie punt 'n funksie genoem instel moet uiteindelik word uitgevoer. Daardie funksie, instel, ons sal sien, is geskryf deur ons. Nou hier is 'n funksie wat, ongelukkig, is net 'n TODO add merker. Per die spec. jy gaan nodig die kode wat eintlik skryf voeg 'n marker-- of dit lyk soos 'n koerant, of 'n duim ryg, of iets else-- die Google kaart. Hier is nou dat funksie genoem instel. Ek sal laat dit aan jou om te lees deur dit in meer detail, maar besef dat ons by te voeg 'n klomp meer Luisteraars sodat ons kan kode voer wanneer die gebruiker kliek op en sleep die kaart. Ons het ook 'kode hier dat initialisatie dat typeahead plugin sodat die dropdown spyskaart werk eintlik. Maar laat ons fokus op net 'n paar plekke hierin. Spesifiek, om dit te doen hier. Ek sal stel om die aanlyn dokumentasie en die spesifikasie hoe om in hierdie TODO vul. Maar in 'n neutedop, hierdie biblioteek typeahead kan jy om te slaag in wat algemeen bekend staan ​​as 'n sjabloon, wat het 'n paar veranderlike plekhouers baie soortgelyk in gees printf se%. * s. Maar in hierdie geval, die sjabloon per die spec kan u spesifiseer wat veranderlikes wat jy wil hê te spuit uit data wat kom terug van iets soos die PHP lêers wat jy geskryf het wat afgee into uitset. Nou hier besef dat ons luister vir typeahead keuses wanneer die gebruiker eintlik doen 'n soektog en kies 'n waarde. Dit is hoe ons is eintlik gaan luister vir daardie en 'n paar kode voer as 'n resultaat. Toe ons voortgaan om te instel die mashup net 'n bietjie. En, uiteindelik, ons noem hierdie funksie update. Dit updates die merkers op die skerm. Meer oor wat in net 'n oomblik. Intussen is daar 'n paar klein funksies in hier. Waarvan een is hideInfo wat eenvoudig sluit die InfoWindow. 'N Ander funksie hier, wat uiteindelik sal nie te lank wees nie, verwyder merkers. Dit gaan ongedaan te maak wat jou add merker funksie doen. En dan hier is soek. En hierdie een is interessant, want ons het die JavaScript-kode wat geskryf gaan om te praat met search.php op die bediener en kry terug wat reaksie. Jy, natuurlik, sal steeds moet search.php te implementeer, maar ons het geïmplementeer om die JavaScript-kode wat gaan eintlik hanteer presteer soek van dié teks boks. In die besonder, kennisgewing dat hierdie funksie hier, soek, nie noem search.php deur 'n metode genoem kry into, wat ons gesien het in lesing. En die sintaksis hier is 'n bietjie anders vanaf lesing in dat ons met behulp van jQuery sogenaamde belofte koppelvlak. Meer oor wat in die spec. Dit beteken eenvoudig vir ons doeleindes nou dat daar is twee spesiale funksies wat ons nodig het om te bel met dot-notasie hier onmiddellik na die roeping kry into. Een gedoen genoem. Een is genoem misluk. Jy kan dink van hierdie as die sukses hanteerder en die mislukking hanteerder net in geval iets verkeerd gaan. Nou laat ons kyk na die laaste paar funksies in hierdie lêer. Hier is 'n funksie genoem showInfo, wat toon inligting in een van daardie bietjie info vensters wat verskyn wanneer die gebruiker 'n merker kliek. Hier is verder dat update funksie dat ons vir jou geïmplementeer. Dit bepaal die grense van die kaart. Wat is die GPS koördinate van sy noordooste en suidweste hoeke hier. Ons het voorberei sommige HDP parameters hier en dan verby hulle uiteindelik te update.php, wat ons het ook geïmplementeer vir jou. Wat kry uiteindelik terug sommige into uit die lêer genaamd update.php en verwyder dan enige merkers op die skerm en dan herhaal oor die data wat is terug te kom van update.php, wat weer is net 'n into skikking. En dan is dit uiteindelik voeg 'n merker vir elk van die plekke, hantering mislukking of foute wat dalk baie goed gebeur. Nou net om te gee jou 'n voorsmakie van hoe jy kan gaan oor die opsporing van hierdie projek, besef dat ek in oopgemaak het bevorder hierdie blad hier om hierdie URL, pset8 / articles.php? geo = 02138. Nou, weer, artikels oor PHP ons geïmplementeer vir jou so dit is nie soseer wat jy sal gebruik word om te ontfout, maar eerder die tegniek. Kennis dat ek gesoek Cambridge se poskode hier, en ek het terug gekry, inderdaad, 'n into verskeidenheid van into voorwerpe binnekant van wat is twee keys-- skakel en titel. So hierdie funksie werk reeds vir jou. Maar hierdie tegniek van die hand gaan na 'n URL soos hierdie vir iets soos search.php? geo = Cambridge of 02138 of wat die gebruiker getik in behoort bewys van onskatbare waarde as jy self probeer om uit te vind presies of waarom search.php werk of nie. Uiteindelik dan, jy het 'n paar Todos voor jou. Jy gaan na die eerste implemente dat die invoer script wat lees in us.text in jou databasis. Jy dan gaan nodig search.php te implementeer sodat dit optree presies soos gespesifiseer. Jy dan gaan wil om te fokus op scripts.js en uiteindelik implemente diegene paar Todos, insluitend instel en dat sjabloon, voeg, opsieners verwyder, en dan laaste, maar nie die minste nie, die een persoonlike touch. Sodra jy jou mashup werk baie soos ons s'n, is die doel aan die hand is vir jou om by te voeg 'n persoonlike raak aan jou mashup, of dit nou estetiese of funksionele. Neem die mashup ooit so effens na die volgende vlak. So lank as wat jy druk jouself buite jou bekendheid met die spec self en haal een tegniek nuwe, selfs al is dit net iets estetiese soos die verandering van die uitleg van die kaart wat jy gebruik, die omvang wat ons verwag tevrede sal wees. Dit is dan Probleem Stel 8 Datavleg. Bly ingeskakel vir meer in die spesifikasie en die beste van geluk aanpak van hierdie, jou laaste CS50 probleem stel ooit. [Speel van musiek]