[MUSIC JOC] David J. MALAN: Buna ziua. Să aruncăm o plimbare prin Problemă Set 8 Mashup, care este de gând să vă provoc să bazeze pe elemente pentru Google Maps cu elemente din Știri Google și must le împreună într-un applet web care permite unui utilizator pentru a căuta o hartă pentru știri locale la orașe specifice, orașe, și coduri zip. Pentru a face acest lucru, vom integra unele HTML, CSS, PHP, SQL, JavaScript și o tehnică în general, cunoscut sub numele de AJAX în ordine pentru a crea această captivantă experiența utilizatorului. Să primul pentru Google Maps sine. Acest lucru, desigur, este, probabil, o interfață familiară. Dar se pare că Google Maps oferă, de asemenea o cerere API-- programare interface-- prin care puteti elemente de Google Maps și să le integreze în propriile aplicații. Într-adevăr, pe parcursul acestui proces, veti pentru a găsi o pereche de adrese URL deosebit de util ca sunt menționate în caietul de sarcini pentru problema Set 8, în special această Noțiuni de bază Ghid sau Ghidul dezvoltatorului pentru Google Maps API versiunea 3, precum și ca API Hărți Google JavaScript referință v3, care este o bit mai mult arcane de citit dar de fapt, are toate nivelul inferior Detalii despre ce funcții sau metode și obiecte și proprietăți și Evenimente vin de fapt cu API, foarte similare în spirit la [neauzit] pagini. Acum, dacă ne uităm la Știri Google, veți poate vedea o interfata familiara aici. Dar se pare că puteți căuta, de asemenea Știri Google pentru zone geografice specifice prin intermediul unui parametru HTTP numit geo. De fapt, dacă am mări aici, veți vedea că Sunt la news.google.com/news/section?geo=02138. Și, într-adevăr, dacă am mări out, veți vedea că sunt uita la o pagină cu o grămadă de opinii cu privire la Cambridge, Massachusetts. Între timp, dacă am schimba de fapt URL-ul să nu fie un cod poștal acest fel, dar ceva un pic Messier ca Cambridge, Massachusetts +, în cazul în care plusul este modul în care codifica o caracter spațiu într-un URL și apăsați Enter, veți vedea că eu de fapt a se vedea aproape aceeași știri. Poate e un pic diferit deoarece Cambridge de fapt are mai multe coduri poștale. Acum, cum să știu asta și, în fapt, cum ar putea să cumva cravată orașe și localități codurile zip în cazul I doresc să permită utilizatorului să se uite în sus fie? Ei bine, se pare că nu există un site web acolo numit geonames.org care este o inițiativă de a avea o bază de date disponibil gratuit tuturor felul de informații geografice, nu numai pentru Statele Unite, dar, de asemenea, pentru alte țări. De fapt, dacă mă duc la această adresă URL aici, care este, de asemenea, menționat în problema stabilit caietul de sarcini, veți vedea trei lista cu o grămadă de fișiere zip oricare dintre aceștia poate fi descărcat de tine. De fapt, pentru această problemă set ai de gând pentru a descărca us.zip. Acum, în acest dosar, este un întreg buchet de date în format text. Fișierele este foarte asemănătoare cu o CSV-- valori separate prin virgulă file-- dar îl folosește de fapt file a delimita câmpuri. Acum, între timp, dacă te uiți aici la ceea ce am subliniat, câmpurile din acest fișier vor a fi lucruri, cum ar fi coduri de țară, coduri postale, numele de locuri, și apoi, într-o formă sau alte state, si judete, comunități, și mai mult. De fapt, am deja descărcat acest fișier în avans. Lasă-mă să merg mai departe și deschideți-l here-- us.text-- și, într-adevăr, veți să văd dacă defilați în jos la linia de 16792 veți vedea câteva înregistrări pentru Cambridge, Massachusetts și diversele sale coduri poștale. Ceea ce vezi, de asemenea, există județ, unele numere care eu nu prea Înțeleg, dar, de asemenea, toate modul din dreapta, unele GPS coordinates-- latitudine și longitudine. Acest lucru este mare, deoarece una din caracteristicile Google Maps API este abilitatea de a detecta în cazul în care vă aflați geografic în ceea ce privește coordonatele GPS. Acum să începem să dau seama cum să începe leagă aceste lucruri împreună. Ne-am dat un întreg grămadă de cod de distribuție, precum și de baze de date MySQL. De fapt, dacă am trage o phpMyAdmin având deja importat, în timp ce în curând va fi, pset8.SQL, veți vedea un tabel MySQL care arata ca acest, un câmp de identitate, țară cod, cod postal, nume de loc și mai mult. Tipurile de toți cei coloanele I derivat pur și simplu prin citirea readme.text fișier aici cea specificată dacă un câmp este un număr întreg, sau varchar sau altele asemenea. Deci, am creat acel tabel pentru tu și tu dat comenzile SQL pentru a executa pentru a crea acea tabel în baza de date proprie, dar nu e de fapt nu există date în ea încă. Mai degrabă, ai de gând să trebuie să descărca us.zip sau zip orice țară fișier de la acea adresă URL acolo. Si apoi vei avea să scrie un script linie de comandă în PHP care este O să deschidă acest text fișier, itera peste liniile sale, și apoi pentru fiecare dintre aceste linii fac o inserție în care plasează tabel în baza de date MySQL. Deci, la sfârșitul acestui proces, veți au rulat că script în cele din urmă doar o singură dată în teorie. În realitate veți probabil rulați-l o grămadă de ori în timp ce încerca să stabilească diverse bug-uri. În cele din urmă, ai de gând să aibă o bază de date foarte mare cu mii și mii de rânduri geografice. Apoi, ai de gând să pună că de import script deoparte după ce a fost de lucru iar baza de date este frumos și corectă, și apoi ai de gând să se mute la efectiv de punere în aplicare Mashup în sine. Mashup va arata ceva de genul asta. La mashup.cs50.net, noi au o soluție personal care arată ceva de genul asta. Într-adevăr, dacă am faceți clic pe acest ziar icon pentru Cambridge, Massachusetts, veți vedea o filare icon scurt și apoi o lista ordonata, un listă cu marcatori de articole legate de Cambridge, Massachusetts. Dacă faceți clic pe Charlestown, Massachusetts, Voi vedea la fel pentru că a orașului. Și dacă faceți clic pe Watertown, Massachusetts, nu ar putea fi nici o știri de la Watertown, astfel încât veți vedea ceva ca lent zi de știri. Acum, între timp, la stânga sus sunt unele controale familiare Google Maps să vă micșora, pan sus, jos, stânga, și la dreapta, dar, de asemenea o casetă de căutare pe care am pus acolo. Deci, dacă am căuta, sincer, singurul codul poștal știu, 90210, vom vedea de fapt Beverly Hills, California. Când dat click pe acesta mă duce la California si o gramada de stiri despre Beverly Hills. Acum observați, de asemenea, ce sa întâmplat acolo. Dacă această căutare timp de 02138 sau chiar Cambridge virgulă Massachusetts sau unele variantă a acesteia, veți obține o puțin verticală automată. Acum, acest lucru este cu ajutorul unui plugin pentru o bibliotecă numită jQuery, și că plugin se numeste typeahead. Pur și simplu citit prin documentația, descărcat js fișiere integrat în codul de distribuție, astfel încât să în cele din urmă pot scrie codul care umple că meniu vertical cu auto selecții sau sugestiile auto. Acum, codul de distributie, totuși, că ați primit nu face aproape la fel de mult. Ai harta Google încorporat, și te controalele în partea de sus stânga, și veți obține caseta de căutare. Dar dacă tastați ceva de genul 02138, nu locuri sunt găsite încă. Așa că va fi unul dintre obiectivele noastre aici. Mai mult decât atât, dacă luați un pas înapoi și uita-te la hartă în sine, nu exista nici un fel de veste. Chiar dacă am faceți clic și trageți, nu markeri de fapt apar pentru știri, pentru că provocare este lăsat pentru tine, de asemenea. Să aruncăm o privire, atunci la codul de distribuție. După ce ați descărcat pset8.zip și dezarhivat în directorul vhost în CS50 Appliance, veți vedea aceste directoare aici în interiorul. Bin-- care reprezintă, în general, pentru binar executabil pentru programs-- include, ca și în pset7, unele PHP fișierele care alte fișiere includ, apoi public, care este fișierele care au nevoie de să fie accesibile publicului pentru un utilizator cu un browser. Să aruncăm o privire în director bin, și vom a se vedea că există un fișier acolo numit deja Import. Dacă deschidem acest lucru cu gedit, vom vedea că, din păcate, nu prea acolo. Tot ceea ce este acolo, totuși, este o shebang la vârf care precizează care interpreter-- în acest caz PHP-- ar trebui utilizate pentru a efectiv executa acest fișier. Dar atunci unde se spune TODO este locul unde ești Va trebui să scrie un cod că, probabil, necesită configurare fișier care este în include director așa cum am făcut înainte cu fișiere PHP. Si apoi vei trebuie să deschidă cumva în sus us.text pe care le presupune au dezarhivat deja. Apoi, ai de gând să trebuie să itera peste liniile din acest fișier, probabil folosind unele dintre funcțiile sugerat în caietul de sarcini. Apoi, se introduce fiecare dintre cele Liniile în baza de date MySQL prin utilizarea funcției de interogare, care v-am furnizat din nou aplice: sau cel puțin o variantă acestora în functions.php, care vom vedea într-o clipă. Acum sa inchideti import și du-te înapoi la directorul nostru și de această dată intra în include. Și dacă fac E acolo, veți vedea trei fișiere, cum ar fi destul de Problemă Set 7. Și haideți să aruncăm o privire rapidă, de exemplu, la config.php. Acolo, este mai puține linii decât înainte, el și se pare acest fișier include constants.php și functions.php. Suntem folosind un ușor diferită Tehnica de data aceasta în jurul valorii de efectiv precizeze că aceste fișiere sunt relative la directorul curent __ DIR__ reprezintă orice director aceasta fișier, config.php, este ea însăși în. Deci, aceasta este o mai mod explicit de a specifica ce alte fișiere pe care doriți să solicite. Acum, dacă închid acest fișier și deschide constants.php în schimb, veți vedea un fișier foarte amintește Problema a Set 7, precum, chiar dacă cu un alt bază de date numită pset8. În cele din urmă, în functions.php, vom vedea doar o singură funcție acest moment numit interogare. Acest lucru este aproape la fel, cu excepția ne ocupam Erori de data aceasta în jurul valorii de un pic altfel, dar e de utilizare este la fel ca și în problema set de șapte. Acum să ne întoarcem în pset8 nostru director, du-te în public și acolo dacă fac ls, veți vedea astea-- articles.php, index.html, search.php, și update.php-- toate fișierele. Și apoi fonturi CSS, img si Director js destul ca pset7. Să aruncăm o privire la index.html, care este Va fi într-adevăr punct de intrare pentru smashup. Acum in index.html, veți vedea un întreg grămadă de elemente de legătură din cap, în mod special, pentru bootstrap pentru propria noastră CSS urmată de o grămadă de script Tag-uri pentru lucruri cum ar fi hărți, API în sine, un marker special cu eticheta utilitar care am menționat în caietul de sarcini este disponibil pentru tine, jQuery în sine, bootstrap în sine, și o altă bibliotecă numit subliniere care vorbim despre în spec. Underscore.js ca jquery.js este o bibliotecă JavaScript care are o grămadă de funcționalitate că o mulțime de oameni în dorința lume existat în JavaScript sine. Deci toate acestea sunt de fapt destul de popular. Am menționat, de asemenea, typeahead care este biblioteca ce nu că verticală automată și în cele din urmă un link către propria noastră JavaScript. Între timp, și, probabil, din fericire, acest mashup este condus de relativ puțin HTML aici în partea de jos. Observați că ne-am specificat un div în corpul nostru de lichid de clasă-container. Acest lucru, pe bootstrap lui documentație, doar înseamnă că acest div este de gând să umple viewport sau fereastra de navigare complet. Între timp, de mai jos că avem un div care este deschisă și închisă imediat cu ID-ul unic de hartă pânză. Acest lucru acum este de la Google Documentație Harta pentru API sale, prin care pur și simplu am nevoie de au un div gol, în care se injectează, în cele din urmă, un Google Maps reale. Dar, mai mult pe faptul că, în doar un pic. În cele din urmă, există un formular în interiorul de aici care pune în aplicare caseta de text până sus stânga în interfața noastră de căutare. Observați că am folosit un pic de bootstrap aici too-- lucruri, cum ar fi Formularul-inline și forma-grup. Am dat prima ID unic de formă. Și apoi, în cele din urmă, am de fapt un tip de intrare, care este destul de familiar, a căror identitate este q. Doar o convenție. Q pentru query-- ar putea avea fost numit nimic. Și apoi substituent, între timp, este oraș, stat, și codul poștal pe care s-ar putea aminti văzând în mashup nostru demo mai devreme. Să închidem acest fișier. Acum, gasiti fisierele PHP care așteaptă și apoi fișierele JavaScript. În dosarele noastre PHP, ne-am deja puse în aplicare pentru tine, de exemplu, actualizări. Update.php-- nu vom cheltui o mare sumă de timp pe here-- într-o coajă de nucă este fișierul care nostru Cod JavaScript se întâmplă Contactati prin AJAX că Tehnica asincron asta e construit în JavaScript aceste zile, care este O să ne permite să cerem update.php pentru mai multe informații. Mai exact, oricând utilizatorul trage pe harta sau efectuează o căutare care sare utilizatorul în altă locație, codul nostru JavaScript, așa cum vom vedea în curând, este O să sun update.php și să ceară pentru 10 sau cam asa ceva markeri în viewport bazat pe coordonatele GPS de sus și de jos colțuri de care hartă. Putem repopula apoi pe harta acum că utilizatorul a mutat ecranul în ordine pentru a vedea 10 probabil nou markeri pentru diferite orașe. Între timp, acest fisier este în cele din urmă O să execute o interogare SQL împotriva baza noastră de date de masă denumit locuri care este de gând să se întoarcă pe cei 10 sau mai puține locuri. Între timp, în articles.php, este un alt fișier care le-am scris în întregime. Este foarte similară în spirit de Funcția Problema Set 7 de LOOKUP, care a contactat Yahoo Finance pentru tine. Acest fișier Contacte Noutati Google pentru tine, în cele din urmă hapsân o mașină care poate fi citit- version-- în ceva numita RSS format-- de știri pentru Cambridge sau Beverly Hills sau orice oraș care le-ați căutat pentru bazat pe acel geoparameter. Am analiza că RSS, care este doar o tip de limbaj de marcare numit XML, și apoi ne-am de fapt se reveni la browser-ul dvs. și pentru codul JavaScript, în mod specific, într-un format numit JSON, JavaScript Object Notation. Acum veți vedea în specification-- noi vă punctul la cum puteți vedea de fapt o parte din back-- venirii JSON că această funcționalitate în cele din urmă vă permite să populeze aceste meniuri pop-up așa că, atunci când faceți clic pe pe un marker pe hartă vezi de fapt o grămadă de gloanțe, fiecare dintre acestea link-uri către un articol. Acum, haideți să aruncăm o privire la o ultimă Fișier PHP care, din fericire, nu au mult merge on-- doar o TODO destul de mare. Acum acest fișier declară o matrice numita locuri. Și apoi în cele din urmă printuri că matrice în JSON format-- ea destul de imprimare-doar pentru ca lucrurile sunt mai ușor de depanare. Din păcate, în mijloc nu există această TODO, care solicită să căutați bază de date pentru locuri potrivite o geo HTTP parametru. Și, într-adevăr, acest lucru se întâmplă la fi unul din challenges-- dumneavoastră să pună în aplicare această opțiune aici astfel încât, atunci când a contacta această fișier cu un URL ca căutare. php? geo = ceva, codul va reveni în cele din urmă un JSON serie de toate locurile din ta tabel de baze de date care se potrivesc cu acea intrare. Deci, dacă utilizatorilor tipurile din Cambridge, fișierul aici search.php în cele din urmă ar trebui să se întoarcă de o situare JSON pentru toate meciurile de Cambridge, care ar putea fi în Massachusetts dar ar putea fi chiar oriunde în altă parte. În cele din urmă, haideți să aruncăm o privire la două fișiere care sunt ultimately-- statice fișierul CSS și fișierul JavaScript. Dacă mă duc în directorul nostru CSS, există o grămadă de dosare acolo, dar cele mai multe dintre ele sunt biblioteci. Am de gând să ia o privire, în mod specific, la styles.css, care este propria noastră CSS globală, care este O să stiliza tot acest mashup. Voi lăsa să vă pentru a citi prin comentariile aici, dar, într-o coajă de nucă, acesta este CSS care garantează faptul că noastră mashup, implicit din centru, arată exact modul în care ne-o dorim it-- cu harta de umplere portul vedere și cu căutarea caseta de până la partea din stânga sus. Am luat, de asemenea, libertatea de stylizing că verticală typeahead Meniul un pic, de asemenea. Cea mai importantă Fișierul poate pentru această problemă set este aceasta ultima, scripts.js. In interiorul directorul dvs. JS este chiar mai multe fișiere. Toate acestea sunt fișiere bibliotecă cu excepția pentru asta, scripts.js. Dacă deschidem asta, să luăm nostru tur definitivă prin funcțiile pe care sunt construite în acest fișier pentru tine și atenție apel la Todos care stau în față. În partea de sus a acestui fișier, Sunt trei variabile globale. Una pentru o hartă, care va fie o trimitere la harta Google. Vă puteți gândi la ea fel ca un pointer. Între timp, ne-am altă variabilă globală numit informatii, care pare a fi stocarea valoarea de returnare a unui apel la noi google.maps.InfoWindow. JavaScript susține obiecte care sunt foarte similare în spirit de Struts. Și ce această linie pentru scopul nostru este de a face este de a crea un nou info fereastră în memorie și apoi păstrarea în jurul valorii de referință acesta într-o variabilă numită Info. Iar în între cei, între timp, este ceea ce pare a fi gol o de activarea JavaScript- matrice numit markeri. Toate aceste icoane ziare, sau s-ar putea alege un alt pictogramă cu totul, vor fi stocate în cele din urmă în această matrice astfel încât să putem adăuga foarte ușor de harta și a le elimina de pe hartă. Acum, haideți să derulați în jos un pic și bâzâit prin codul care va fi executat de îndată ce DOM sau documentul Modelul obiect sau pagină în sine este gata. Amintiți-vă că această sintaxă aici pur și simplu specifică că următorul cod ar trebui să fie executată numai în cazul în care browser-ul sa terminat încărcarea orice altceva. Noi declarăm în primul rând o grămadă de stiluri, care ajung stylizing harta ca pe spec. Apoi, declara o grămadă de opțiuni, care personaliza și mai mult Google hartă pe care suntem pe cale de a încorpora. Apoi utilizați un pic de cod jQuery, ceea ce se explică într-un pic mai în detaliu în spec, pentru a apuca acel element, harta, panza că am identificat atât de unic. Și apoi această linie de aici este ceea ce pare să ne dea magic o hartă Google interiorul propria noastră aplicație, stocarea o trimitere la acesta că variabilă numită hartă. În cele din urmă, aici avem Inregistrare ceea ce se numește un ascultător. Gândiți-vă mod back--, drum back-- la săptămână la zero în CS50 când ne-am uitat la zero și sprijinul printr-o plimbare prin lucruri numite evenimente și emisiuni. Tu nu ar putea fi folosit singur, dar e un mecanism prin care un Browser-ul în acest caz minim atenția atunci când este gata să execute efectiv unele cod. În acest caz, se va asculta la harta pentru un eveniment numit inactiv. Acest lucru înseamnă că browser-ul are terminat de încărcat harta Google. În acest moment o funcție numită configurare ar trebui în cele din urmă fi executat. Această funcție, configurați, vom vedea, este scris de noi. Acum, aici este o funcție că, din păcate, este doar o TODO adăugare marcator. Per spec. ai de gând să nevoie a scrie codul care de fapt adaugă o marker-- dacă pare ca un ziar, sau un tac degetul mare, sau ceva else-- pentru harta Google. Aici este acum această funcție numit de configurare. Voi lăsa să vă pentru a citi prin aceasta mai detaliat, dar seama că vom adăuga un buchet mai multe Ascultătorii astfel încât să putem executa cod în cazul în care utilizator face clic pe și trage hartă. Avem, de asemenea cod aici că initializeaza că plugin typeahead astfel încât meniul vertical Meniul de fapt funcționează. Dar să se concentreze pe doar o câteva locuri aici. Mai exact, aceasta a face aici. Voi amâna pentru online documentație și caietul de sarcini pentru modul de a completa acest TODO. Dar într-o coajă de nucă, această bibliotecă typeahead vă permite să treci în ceea ce, în general, cunoscut ca un șablon, care are unele substituenți variabile foarte similare în spirit printf lui%. * s. Dar, în acest caz, șablon pe spec vă permite să specificați ceea ce variabile vrei pentru a injecta la date care a venit înapoi de la ceva de genul PHP fișierele pe care le-ați scris care emit ieșire JSON. Acum, aici dăm seama că suntem ascultare pentru selecții typeahead atunci când utilizatorul este administrat efectiv o căutare și selectează o valoare. Acesta este modul în care suntem de fapt O să asculte că și executa unele cod ca un rezultat. Apoi vom continua pentru a configura Mashup doar un pic. Și, în cele din urmă, numim această actualizare funcție. Aceasta actualizează markerii de pe ecran. Mai multe despre faptul că într-o clipă. În același timp, există câteva Funcții mici de aici. Una dintre care este hideInfo care pur și simplu închide InfoWindow. O altă funcție aici, care în cele din urmă nu va fi prea mult timp, scoateți markeri. Asta va anula orice funcția îi trimită add face. Și apoi aici este căutare. Și aceasta este interesant pentru că noi au scris codul JavaScript care este O să vorbesc cu search.php pe de serverul și de a lua înapoi unele măsuri. Tu, desigur, vor în continuare trebuie să pună în aplicare search.php, dar ne-am pus în aplicare Cod JavaScript care este O să se ocupe efectiv efectuarea Cautari de la cutia de text. În special, aviz că această funcție de aici, căutare, nu suna search.php printr-o metodă numită obține JSON, pe care am văzut în curs. Și sintaxa aici este un pic diferit de la curs în care îl utilizăm jQuery așa-numita interfață promisiune. Mai multe despre faptul că, în spec. Acest lucru înseamnă pur și simplu pentru noastră scopuri acum că acolo sunt două funcții speciale noi nevoie pentru a apela cu notație punct aici imediat după apel primi JSON. Un este numit făcut. Un este numit eșua. Vă puteți gândi la aceste ca handler succes și handler eșec doar în cazul în care ceva nu merge bine. Acum, să ne uităm la ultimul două funcții în acest dosar. Aici jos este o funcție numita showInfo, care prezinta informatii intr-unul din cele mici ferestre de informatii care apare atunci când utilizatorul face clic pe un marcator. Aici jos în continuare este această funcție de actualizare care le-am implementat pentru tine. Acesta stabilește limitele pe harta. Care sunt coordonatele GPS ale sale nord-est și sud-vest colțuri aici. Am pregătit niște parametri HDP aici și apoi au trecut în cele din urmă la update.php, care ne-am de asemenea, puse în aplicare pentru tine. Asta în cele din urmă se întoarce unele JSON din fișierul numit update.php și apoi elimină orice markeri de pe ecran și apoi reiterează peste datele care se întoarce din update.php, care din nou, este doar o matrice JSON. Și apoi se adaugă în cele din urmă un marker pentru fiecare dintre aceste locuri, insuficiență manipulare sau erori care ar putea foarte bine întâmpla. Acum doar pentru a vă oferi un gust de modul în care s-ar putea merge despre depanare acest proiect, dau seama că am deschis în avansa această filă aici pentru a această adresă URL, pset8 / articles.php? geo = 02138. Acum, din nou, articolele despre PHP am implementat pentru tine deci acest lucru nu este atât de mult ceea ce veți fi utilizați la depanare, ci mai degrabă tehnica. Observați că am căutat Cod poștal Cambridge aici, și am ajuns înapoi, într-adevăr, un JSON matrice de JSON obiecte în interiorul care sunt două link-keys-- și titlul. Deci, această funcționalitate lucreaza deja pentru tine. Dar aceasta tehnica de manual merge la un URL ca aceasta pentru ceva de genul search.php? geo = Cambridge sau 02138 sau indiferent de utilizatorul a introdus în ar dovedi de neprețuit în timp ce, le încercați să dau seama exact dacă este sau de ce search.php este de lucru sau nu. În cele din urmă, atunci, aveți a todos câteva înainte de voi. Te duci la primele unelte că script import care citește în us.text în baza de date. Te Apoi avea nevoie de să pună în aplicare search.php astfel încât acesta se comportă exact așa cum este specificat. Te apoi merge la anunt să se concentreze asupra scripts.js și în cele din urmă pune în aplicare cele două Todos, inclusiv pentru configurare și că șablon, adăuga markeri, elimina markeri, și atunci dura, dar puțin nu, o notă personală. După ce ați lucru dumneavoastră mashup destul ca a noastră, obiectivul la îndemână este pentru a adauga o personal atingeți pentru a mashup-ul, fie că este vorba estetic sau functional. Ia Mashup vreodată așa ușor la nivelul următor. Atâta timp cât te împinge dincolo de familiarizarea cu spec sine și ridica o tehnică noi, chiar dacă e doar ceva estetice cum ar fi schimbarea aspectul hărții pe care îl utilizați, domeniul de aplicare pe care ne asteptam vor fi îndeplinite. Aceasta este atunci Problemă Set de 8 Mashup. Stay tuned pentru mai multe în caietul de sarcini și cele mai bune de noroc abordarea asta, ultima ta Problemă CS50 stabilit vreodată. [MUSIC JOC]