1 00:00:00,000 --> 00:00:03,388 >> [MUZYKA GRY] 2 00:00:03,388 --> 00:00:09,196 3 00:00:09,196 --> 00:00:10,180 >> David J. MALAN: Witam. 4 00:00:10,180 --> 00:00:12,600 Weźmy na spacer po Problem Zestaw 8 Mashup, 5 00:00:12,600 --> 00:00:15,880 która będzie kwestionować was czerpać elementów do Google Maps 6 00:00:15,880 --> 00:00:20,905 z elementami z Google News i puree je razem do apletu internetowej, 7 00:00:20,905 --> 00:00:24,150 umożliwia użytkownikom wyszukiwanie mapa do wiadomości lokalnych 8 00:00:24,150 --> 00:00:26,780 do poszczególnych miast, miasta i kody pocztowe. 9 00:00:26,780 --> 00:00:31,040 Aby to zrobić, będziemy zintegrować niektóre HTML, CSS, PHP, SQL, 10 00:00:31,040 --> 00:00:34,390 JavaScript i technika Ogólnie wiadomo, Ajax w celu 11 00:00:34,390 --> 00:00:36,850 do stworzenia tego wciągające doświadczenie użytkownika. 12 00:00:36,850 --> 00:00:38,920 >> Niech najpierw dla siebie Google Maps. 13 00:00:38,920 --> 00:00:41,220 To, oczywiście, jest prawdopodobnie Znajomy interfejs. 14 00:00:41,220 --> 00:00:45,070 Ale okazuje się, że Google Maps stanowi również wniosek API-- 15 00:00:45,070 --> 00:00:48,360 programowanie interface-- poprzez które można wziąć elementy Google Maps 16 00:00:48,360 --> 00:00:50,740 i włączenie ich do własne aplikacje. 17 00:00:50,740 --> 00:00:52,650 Rzeczywiście w tym Proces, będziesz 18 00:00:52,650 --> 00:00:55,140 znaleźć kilka adresów URL szczególnie pomocne, że 19 00:00:55,140 --> 00:00:57,820 są wymienione w Specyfikacja Problem Zestaw 8, 20 00:00:57,820 --> 00:01:00,980 Pierwsze kroki to specjalnie Przewodnik lub przewodnik dla programisty 21 00:01:00,980 --> 00:01:07,640 Google Maps API w wersji 3 oraz w Google Maps API JavaScript 22 00:01:07,640 --> 00:01:10,260 Odniesienie v3, który jest nieco bardziej złożoną, aby przeczytać 23 00:01:10,260 --> 00:01:14,600 lecz w rzeczywistości ma wszystkie niższym poziomie Szczegółowe informacje dotyczące funkcji lub metod 24 00:01:14,600 --> 00:01:18,220 oraz obiekty i właściwości oraz wydarzenia rzeczywiście pochodzą z API, 25 00:01:18,220 --> 00:01:20,720 bardzo podobne w duchu do [niesłyszalne] stron. 26 00:01:20,720 --> 00:01:23,480 >> Teraz, jeśli przyjrzymy w Google News, będziesz 27 00:01:23,480 --> 00:01:25,370 może zobaczyć znajomy interfejs tutaj. 28 00:01:25,370 --> 00:01:29,350 Ale okazuje się, można także wyszukiwać Google News dla określonych regionów geograficznych 29 00:01:29,350 --> 00:01:32,000 poprzez parametr HTTP o nazwie geo. 30 00:01:32,000 --> 00:01:35,100 W rzeczywistości, jeśli powiększyć tu, zobaczysz, że 31 00:01:35,100 --> 00:01:41,672 Jestem na news.google.com/news/section?geo=02138. 32 00:01:41,672 --> 00:01:43,630 I rzeczywiście, jeśli powiększyć się, zobaczysz, że jestem 33 00:01:43,630 --> 00:01:47,090 patrząc na stronie z całą bandą poglądy na temat Cambridge, w stanie Massachusetts. 34 00:01:47,090 --> 00:01:50,620 >> Tymczasem, jeśli rzeczywiście zmienić Adres URL, aby nie być kod pocztowy tak, 35 00:01:50,620 --> 00:01:55,580 ale coś trochę bałaganu jak Cambridge, Massachusetts +, 36 00:01:55,580 --> 00:02:00,740 gdzie plusem jest sposób kodowania spacja w adresie URL i naciśnij klawisz Enter, 37 00:02:00,740 --> 00:02:02,907 zobaczysz, że rzeczywiście zobacz prawie taką samą wiadomość. 38 00:02:02,907 --> 00:02:05,489 Być może jest to trochę inaczej bo rzeczywiście w Cambridge 39 00:02:05,489 --> 00:02:06,910 ma wiele kodów pocztowych. 40 00:02:06,910 --> 00:02:09,410 Teraz jak mam wiedzieć, że i, w rzeczywistości, jak można w jakiś sposób 41 00:02:09,410 --> 00:02:12,940 tie miast i miasteczek do kodów pocztowych w przypadku I 42 00:02:12,940 --> 00:02:15,064 Aby zezwolić użytkownikowi patrzeć albo? 43 00:02:15,064 --> 00:02:17,480 Cóż, okazuje się, że jest strona tam nazywa 44 00:02:17,480 --> 00:02:20,060 geonames.org co Inicjatywa ma 45 00:02:20,060 --> 00:02:23,760 swobodnie dostępne w bazie wszystkim rodzaju informacji geograficznych, 46 00:02:23,760 --> 00:02:27,040 Nie tylko w USA, a także w innych krajach. 47 00:02:27,040 --> 00:02:30,430 W rzeczywistości, jeśli pójdę do tego adresu URL tutaj, co jest również wymieniony w podany problem 48 00:02:30,430 --> 00:02:34,510 Specyfikacja, zobaczysz go trzy wykaz całą masę zip 49 00:02:34,510 --> 00:02:36,400 z których każdy może być pobrane. 50 00:02:36,400 --> 00:02:39,900 W rzeczywistości, dla tego problemu ustawić masz zamiar pobrać us.zip. 51 00:02:39,900 --> 00:02:43,790 Teraz w tym pliku, to cała kilka danych w formacie tekstowym. 52 00:02:43,790 --> 00:02:47,760 Pliki są bardzo podobne do CSV-- formacie CSV file-- 53 00:02:47,760 --> 00:02:51,294 ale faktycznie korzysta zakładki wyznaczenie pola. 54 00:02:51,294 --> 00:02:53,710 Teraz, w międzyczasie, jeśli spojrzeć tutaj, w co już podkreślono, 55 00:02:53,710 --> 00:02:56,459 pola w tym pliku będą za takie rzeczy jak kody krajów, 56 00:02:56,459 --> 00:02:58,980 kody pocztowe, nazwy miejscowości, a następnie w jakiejś formie 57 00:02:58,980 --> 00:03:04,230 lub innych, państwa i powiatów, społeczności i wielu innych. 58 00:03:04,230 --> 00:03:06,630 W rzeczywistości, ja już mam pobrać ten plik z góry. 59 00:03:06,630 --> 00:03:09,750 Pozwólcie mi iść do przodu i otworzyć go here-- us.text-- i, rzeczywiście, będziesz 60 00:03:09,750 --> 00:03:16,660 zobaczyć, czy mogę przewinąć w dół do linii 16792 zobaczysz kilka rekordów do Cambridge, 61 00:03:16,660 --> 00:03:19,120 Massachusetts i jego różne kody pocztowe. 62 00:03:19,120 --> 00:03:22,150 Co tam można również zobaczyć to powiat, niektóre numery, które tak naprawdę nie 63 00:03:22,150 --> 00:03:24,500 rozumiem, ale także wszystkich sposobem na prawo, 64 00:03:24,500 --> 00:03:27,170 niektóre GPS coordinates-- długość i szerokość geograficzna. 65 00:03:27,170 --> 00:03:30,440 To jest wielki, ponieważ jeden z funkcje Google Maps API 66 00:03:30,440 --> 00:03:33,670 ma zdolność do wykrywania gdzie jesteś geograficznie 67 00:03:33,670 --> 00:03:36,850 w odniesieniu do współrzędnych GPS. 68 00:03:36,850 --> 00:03:40,210 >> Teraz zaczynają się dowiedzieć się, jak rozpoczęcie wiążąc te rzeczy razem. 69 00:03:40,210 --> 00:03:42,900 Daliśmy wam całe czek kodu dystrybucji, 70 00:03:42,900 --> 00:03:44,970 oraz bazy danych MySQL. 71 00:03:44,970 --> 00:03:49,100 W rzeczywistości, jeśli wyciągnąć phpMyAdmin konieczności już zaimportowane, jak szybko będzie, 72 00:03:49,100 --> 00:03:54,800 pset8.SQL, zobaczysz tabeli MySQL, że wygląda tak, pola ID, kraj 73 00:03:54,800 --> 00:03:57,400 kod, kod pocztowy, nazwa miejsca i więcej. 74 00:03:57,400 --> 00:04:00,490 Rodzaje tych wszystkich Kolumny I pochodzi po prostu 75 00:04:00,490 --> 00:04:03,870 czytając readme.text plik o podanej 76 00:04:03,870 --> 00:04:07,330 czy pole jest liczbą całkowitą lub varchar lub podobne. 77 00:04:07,330 --> 00:04:10,510 >> Dlatego stworzyliśmy tę tabelę dla wy i wam poleceń SQL 78 00:04:10,510 --> 00:04:12,770 wykonać, aby utworzyć, że Tabela w własnej bazy danych, 79 00:04:12,770 --> 00:04:15,290 ale faktycznie żadnych danych w tym jeszcze. 80 00:04:15,290 --> 00:04:19,600 Raczej będziesz musiał pobierz us.zip lub zip żadnego kraju 81 00:04:19,600 --> 00:04:21,500 tam plik z tego adresu URL. 82 00:04:21,500 --> 00:04:24,940 A potem będziesz musiał napisać skrypt z linii poleceń w PHP to 83 00:04:24,940 --> 00:04:28,420 otworzy się ten tekst plik, przejść przez wszystkie swoje linie, 84 00:04:28,420 --> 00:04:31,180 i dla każdego z te linie zrobić wstawkę 85 00:04:31,180 --> 00:04:34,940 się, że umieszcza tabelę w bazie danych MySQL. 86 00:04:34,940 --> 00:04:37,880 Tak więc na koniec tego procesu, będziesz zostały ostatecznie uruchomić ten skrypt 87 00:04:37,880 --> 00:04:39,610 tylko raz w teorii. 88 00:04:39,610 --> 00:04:41,780 W rzeczywistości prawdopodobnie będziesz uruchomienia go kilka razy 89 00:04:41,780 --> 00:04:45,460 starając się naprawić wiele błędów. 90 00:04:45,460 --> 00:04:48,440 >> Ostatecznie, będziesz mieć naprawdę duża baza danych z tysięcy 91 00:04:48,440 --> 00:04:50,139 i tysiące wierszy geograficznych. 92 00:04:50,139 --> 00:04:52,930 Wtedy masz zamiar umieścić ten import Skrypt bok raz to działa 93 00:04:52,930 --> 00:04:55,140 i baza danych jest ładny i prawidłowe, a następnie 94 00:04:55,140 --> 00:04:58,880 masz zamiar przenieść się do rzeczywistości realizacji samego mashup. 95 00:04:58,880 --> 00:05:01,670 Mashup będzie wyglądać Trochę coś takiego. 96 00:05:01,670 --> 00:05:05,165 Na mashup.cs50.net, że ma rozwiązanie pracowników 97 00:05:05,165 --> 00:05:06,990 że wygląda trochę coś takiego. 98 00:05:06,990 --> 00:05:11,070 Rzeczywiście, jeśli klikam na tej gazecie ikona na Cambridge, Massachusetts, 99 00:05:11,070 --> 00:05:13,300 zobaczysz przędzenia ikonę, a następnie na krótko 100 00:05:13,300 --> 00:05:16,370 uporządkowany, wypunktowanie artykułów 101 00:05:16,370 --> 00:05:18,280 związane z Cambridge, w stanie Massachusetts. 102 00:05:18,280 --> 00:05:20,352 Gdybym kliknij Charlestown, Massachusetts, 103 00:05:20,352 --> 00:05:21,685 Zobaczę sama dla tego miasta. 104 00:05:21,685 --> 00:05:24,174 A Gdybym kliknij Watertown, Massachusetts, 105 00:05:24,174 --> 00:05:26,090 nie może nie być każdy news z Watertown, 106 00:05:26,090 --> 00:05:28,630 więc można zobaczyć coś jak powolne dzień prasowej. 107 00:05:28,630 --> 00:05:32,140 >> Teraz, w międzyczasie, na górze po lewej stronie są niektóre znajome kontrole Google Maps 108 00:05:32,140 --> 00:05:34,980 aby można pomniejszyć, pan w górę, w dół, w lewo iw prawo, 109 00:05:34,980 --> 00:05:37,360 ale także pole wyszukiwania, które tam umieścić. 110 00:05:37,360 --> 00:05:40,910 Więc jeśli mogę szukać, szczerze mówiąc, jedynym kod pocztowy wiem, 111 00:05:40,910 --> 00:05:45,020 90210, będziemy rzeczywiście zobaczyć Beverly Hills, Kalifornia. 112 00:05:45,020 --> 00:05:48,550 Po kliknięciu prowadzi mnie do Kalifornia i cała masa 113 00:05:48,550 --> 00:05:50,369 wieści o Beverly Hills. 114 00:05:50,369 --> 00:05:51,910 Zauważcie też, co się tam stało. 115 00:05:51,910 --> 00:05:57,040 Jeśli I szukaj czas na 02138 lub nawet Cambridge przecinek Massachusetts lub niektórych 116 00:05:57,040 --> 00:06:00,300 wariant, można uzyskać Trochę autouzupełniania rozwijana. 117 00:06:00,300 --> 00:06:03,840 Teraz to jest za pomocą wtyczki dla biblioteki o nazwie jQuery, 118 00:06:03,840 --> 00:06:05,732 i że plugin nazywa wpisywanie znaków z wyprzedzeniem. 119 00:06:05,732 --> 00:06:07,440 My po prostu przeczytać dokumentacja, 120 00:06:07,440 --> 00:06:13,150 Ściągnąłem plik js zintegrowane do kodu dystrybucji tak, aby was 121 00:06:13,150 --> 00:06:16,900 ostatecznie może napisać kod, który wypełnia tę rozwijane menu z auto 122 00:06:16,900 --> 00:06:19,350 pozycje lub sugestie auto. 123 00:06:19,350 --> 00:06:23,820 >> Teraz kod dystrybucji jednak, że otrzymaliście nie robi aż tak dużo. 124 00:06:23,820 --> 00:06:26,860 Otrzymasz Google Map osadzone, a masz kontroli lewym górnym, 125 00:06:26,860 --> 00:06:28,240 i masz pole wyszukiwania. 126 00:06:28,240 --> 00:06:32,760 Ale jeśli napiszę coś podobnego 02138, nie ma miejsca są jeszcze znaleźć. 127 00:06:32,760 --> 00:06:34,730 Tak, że będzie jednym z naszych celów tutaj. 128 00:06:34,730 --> 00:06:37,430 Co więcej, jeśli wziąć krok tyłu i spojrzeć na samej mapie, 129 00:06:37,430 --> 00:06:38,950 nie ma wiadomości w ogóle. 130 00:06:38,950 --> 00:06:41,780 Nawet jeśli klikam i przeciągnij, właściwie nie ma znaczników 131 00:06:41,780 --> 00:06:45,560 pojawiają się nowości, ponieważ to Wyzwaniem pozostaje dla Ciebie. 132 00:06:45,560 --> 00:06:48,490 >> Rzućmy okiem następnie na kod dystrybucji. 133 00:06:48,490 --> 00:06:51,460 Po pobraniu pset8.zip i rozpiął go 134 00:06:51,460 --> 00:06:54,430 do katalogu vhost w CS50 Appliance, 135 00:06:54,430 --> 00:06:56,550 zobaczysz je katalogi tutaj w środku. 136 00:06:56,550 --> 00:07:00,200 Bin-- który stoi na ogół na binarne wykonywalnego programs-- 137 00:07:00,200 --> 00:07:04,870 obejmuje, podobnie jak w pset7 niektóre PHP pliki, które obejmują, inne pliki 138 00:07:04,870 --> 00:07:06,710 następnie publicznego, który jest pliki, które muszą 139 00:07:06,710 --> 00:07:09,369 być dostępne publicznie aby użytkownik z poziomu przeglądarki. 140 00:07:09,369 --> 00:07:11,410 Rzućmy okiem na bin, a my będziemy 141 00:07:11,410 --> 00:07:13,890 zobaczyć, że to plik nie wzywał importu. 142 00:07:13,890 --> 00:07:17,591 Jeśli otworzymy to z gedit, zobaczymy że, niestety, nie ma zbyt wiele 143 00:07:17,591 --> 00:07:18,090 nie. 144 00:07:18,090 --> 00:07:20,250 Wszystko to jest, choć jest shebang na górze 145 00:07:20,250 --> 00:07:23,410 która określa, które interpreter-- w tym przypadku PHP-- 146 00:07:23,410 --> 00:07:25,759 powinny być wykorzystywane na wykonanie tego pliku. 147 00:07:25,759 --> 00:07:27,550 Ale gdzie jest napisane TODO jest, gdzie jesteś 148 00:07:27,550 --> 00:07:31,130 będzie trzeba napisać kod że prawdopodobnie wymaga config 149 00:07:31,130 --> 00:07:35,820 Plik, który znajduje się w katalogu includes jak już przedtem z plikami PHP. 150 00:07:35,820 --> 00:07:38,180 A potem będziesz trzeba jakoś otworzyć 151 00:07:38,180 --> 00:07:41,920 us.text które Cię zapewne zostały rozpakowane już. 152 00:07:41,920 --> 00:07:44,690 Następnie będziesz musiał przechodzenia do linii w tym pliku, 153 00:07:44,690 --> 00:07:47,800 być może przy użyciu niektórych funkcji zasugerowane w opisie. 154 00:07:47,800 --> 00:07:51,390 Następnie włóż każdy z tych wiersze do bazy danych MySQL 155 00:07:51,390 --> 00:07:54,940 przy użyciu funkcji zapytań, które my ponownie udostępnił with-- 156 00:07:54,940 --> 00:07:58,010 lub co najmniej wariant ich w functions.php, 157 00:07:58,010 --> 00:07:59,560 które zobaczymy za chwilę. 158 00:07:59,560 --> 00:08:04,430 >> Teraz zamknij import i wrócić do nasz katalog i tym razem pójść do 159 00:08:04,430 --> 00:08:05,300 obejmuje. 160 00:08:05,300 --> 00:08:09,210 A jeśli ja nie ls, zobaczysz trzy pliki dość podobne Problem Zestaw 7. 161 00:08:09,210 --> 00:08:13,760 I rzućmy okiem, Na przykład, na config.php. 162 00:08:13,760 --> 00:08:16,730 Tam, jest mniej linii niż wcześniej, i to 163 00:08:16,730 --> 00:08:20,712 Ten plik zawiera wydaje constans.php i functions.php. 164 00:08:20,712 --> 00:08:23,670 Używamy nieco inaczej Technika tym razem faktycznie 165 00:08:23,670 --> 00:08:30,910 określić, że pliki te są względne do bieżącego katalogu __ DIR__ 166 00:08:30,910 --> 00:08:35,280 Katalog ten stanowi co pliku config.php, jest sama w. 167 00:08:35,280 --> 00:08:37,600 Więc to jest bardziej wyraźny sposób określania 168 00:08:37,600 --> 00:08:40,100 jakie inne pliki, które chcesz wymagają. 169 00:08:40,100 --> 00:08:44,020 >> Teraz jeśli zamknę ten plik i otworzyć constans.php zamiast 170 00:08:44,020 --> 00:08:47,430 zobaczysz plik bardzo przypomina Zestaw do 7 na problem, a także, choć 171 00:08:47,430 --> 00:08:50,050 z innej bazy danych o nazwie pset8. 172 00:08:50,050 --> 00:08:54,020 Wreszcie w functions.php, zobaczymy tylko jedną funkcję 173 00:08:54,020 --> 00:08:55,942 tym razem o nazwie kwerendy. 174 00:08:55,942 --> 00:08:59,150 To jest prawie taki sam, z wyjątkiem załatwiamy Błędy tym razem trochę 175 00:08:59,150 --> 00:09:02,860 inaczej, ale to zastosowanie jest same jak w problemu zestaw siedmiu. 176 00:09:02,860 --> 00:09:08,090 >> Teraz wróćmy do naszego pset8 katalog, przejdź do publicznej wiadomości, a tam 177 00:09:08,090 --> 00:09:14,420 jeśli zrobić ls, zobaczysz this-- articles.php, index.html, search.php, 178 00:09:14,420 --> 00:09:16,940 i update.php-- wszystkie pliki. 179 00:09:16,940 --> 00:09:22,010 A potem czcionki css, img, a katalog js zupełnie jak pset7. 180 00:09:22,010 --> 00:09:24,660 >> Rzućmy okiem na index.html, który jest 181 00:09:24,660 --> 00:09:27,290 będzie bardzo punkt wejścia do smashup. 182 00:09:27,290 --> 00:09:31,820 Teraz w index.html, zobaczysz całe kilka elementów łączących w głowie, 183 00:09:31,820 --> 00:09:36,540 specjalnie dla bootstrap dla naszych własnych CSS, a następnie całą masę skrypcie 184 00:09:36,540 --> 00:09:41,520 Tagi dla rzeczy jak mapy, API Sam, specjalny marker z etykietą 185 00:09:41,520 --> 00:09:44,950 Narzędzie, że wymienione w specyfikacja jest dostępna dla Ciebie, 186 00:09:44,950 --> 00:09:48,420 Sam jQuery, bootstrap sama oraz inną biblioteką 187 00:09:48,420 --> 00:09:50,990 nazywa podkreślenia, które mówimy o w spec. 188 00:09:50,990 --> 00:09:57,031 Underscore.js jak jquery.js jest biblioteką JavaScript 189 00:09:57,031 --> 00:10:00,280 że ma całą masę funkcjonalności , że wiele osób w świecie życzenie 190 00:10:00,280 --> 00:10:02,020 istniały w samej JavaScript. 191 00:10:02,020 --> 00:10:04,560 Więc to wszystko jest całkiem popularne. 192 00:10:04,560 --> 00:10:07,140 Mamy również wspomnieć wpisywanie znaków z wyprzedzeniem która jest biblioteką 193 00:10:07,140 --> 00:10:11,180 nie, że rozwijane i autouzupełniania w końcu link do naszej własnej JavaScript. 194 00:10:11,180 --> 00:10:13,880 >> W tym samym czasie i może Na szczęście, ten mashup 195 00:10:13,880 --> 00:10:17,550 napędzana jest stosunkowo mała HTML tu, na dole. 196 00:10:17,550 --> 00:10:22,330 Zauważ, że mamy określony div w nasz organizm płynu klasy pojemnika. 197 00:10:22,330 --> 00:10:24,610 To, bootstrap na na dokumentacja, po prostu 198 00:10:24,610 --> 00:10:29,840 oznacza, że ​​ten dział będzie wypełnić rzutni lub oknie przeglądarki pełni. 199 00:10:29,840 --> 00:10:33,020 >> Tymczasem, poniżej mamy div który jest otwarty i natychmiast zamknięte 200 00:10:33,020 --> 00:10:34,790 z unikalnym ID mapy płótnie. 201 00:10:34,790 --> 00:10:37,400 To jest teraz z Google Dokumentacja mapy 202 00:10:37,400 --> 00:10:42,490 jego API, dzięki czemu po prostu trzeba ma pusty div do której wstrzyknąć, 203 00:10:42,490 --> 00:10:44,470 ostatecznie rzeczywistą Google Maps. 204 00:10:44,470 --> 00:10:46,310 Ale o tym za chwilę. 205 00:10:46,310 --> 00:10:48,850 >> Wreszcie, nie jest formą Wnętrze o których 206 00:10:48,850 --> 00:10:52,930 implementuje okno się tekst gorny lewy w naszym interfejs do wyszukiwania. 207 00:10:52,930 --> 00:10:54,730 Zauważ, że użyliśmy Trochę bootstrap 208 00:10:54,730 --> 00:10:57,670 tutaj too-- rzeczy jak Formularz-inline i forma grupa. 209 00:10:57,670 --> 00:11:00,080 Daliśmy byłego Unikalny identyfikator formularza. 210 00:11:00,080 --> 00:11:04,510 A potem, w końcu, tak naprawdę mają typ wejścia, które jest dość znane, 211 00:11:04,510 --> 00:11:06,440 którego identyfikator jest q. 212 00:11:06,440 --> 00:11:07,230 Tylko konwencja. 213 00:11:07,230 --> 00:11:09,234 Q za query-- może mieć nazywany niczego. 214 00:11:09,234 --> 00:11:11,400 A potem zastępczy, w międzyczasie, to miasto, województwo, 215 00:11:11,400 --> 00:11:16,200 i kod pocztowy, który można przypomnieć, widząc w naszym mashup demo wcześniej. 216 00:11:16,200 --> 00:11:17,980 Zamknijmy ten plik. 217 00:11:17,980 --> 00:11:24,460 >> Teraz spójrz na pliki PHP, które czekają a pliki JavaScript. 218 00:11:24,460 --> 00:11:27,700 W naszych plików PHP, mamy już wdrożone dla Ciebie, 219 00:11:27,700 --> 00:11:29,960 na przykład, aktualizacje. 220 00:11:29,960 --> 00:11:35,060 Update.php-- nie będziemy wydawać ogromne Czas na here-- w pigułce 221 00:11:35,060 --> 00:11:38,400 to, że nasz plik Kod JavaScript będzie 222 00:11:38,400 --> 00:11:41,610 kontaktować się za pośrednictwem AJAX, że Technika to asynchroniczny 223 00:11:41,610 --> 00:11:45,980 wbudowane w JavaScripcie te dni to pozwoli abyśmy zapytać update.php 224 00:11:45,980 --> 00:11:47,410 aby uzyskać więcej informacji. 225 00:11:47,410 --> 00:11:50,045 >> W szczególności, w każdej chwili użytkownik przeciągnie mapę 226 00:11:50,045 --> 00:11:53,310 lub przeprowadza wyszukiwanie, który skacze użytkownika do innej lokalizacji 227 00:11:53,310 --> 00:11:55,250 nasz kod JavaScript, jak to już wkrótce, jest 228 00:11:55,250 --> 00:11:59,610 zamiar zadzwonić update.php i poprosić o 10 lub więcej markerów 229 00:11:59,610 --> 00:12:02,630 w rzutni na podstawie od współrzędnych GPS 230 00:12:02,630 --> 00:12:06,510 od góry i od dołu rogi tej mapie. 231 00:12:06,510 --> 00:12:10,520 Możemy zaludnić mapę teraz użytkownik został przeniesiony do ekranu w celu 232 00:12:10,520 --> 00:12:14,210 zobaczyć 10 prawdopodobnie nowa markery do różnych miast. 233 00:12:14,210 --> 00:12:18,340 Tymczasem, plik ten jest ostatecznie zamierza wykonać zapytanie SQL 234 00:12:18,340 --> 00:12:21,680 przeciwko naszej bazie danych Tabela o nazwie miejsca, w którym 235 00:12:21,680 --> 00:12:26,380 powróci tych 10 lub mniej miejsc. 236 00:12:26,380 --> 00:12:32,620 >> Tymczasem w articles.php jest innym złożyć pisaliśmy w całości. 237 00:12:32,620 --> 00:12:35,820 Jest bardzo podobny w duchu Funkcja WYSZUKAJ Problem zestaw 7, w 238 00:12:35,820 --> 00:12:39,450 który skontaktował Yahoo Finance dla Ciebie. 239 00:12:39,450 --> 00:12:43,710 Ten plik kontaktów Google News dla Ciebie, ostatecznie chwytając 240 00:12:43,710 --> 00:12:46,050 odczytu maszynowego version-- w coś 241 00:12:46,050 --> 00:12:49,720 nazywa RSS format-- z nowości do Cambridge lub Beverly Hills 242 00:12:49,720 --> 00:12:52,880 lub cokolwiek miasto szukałeś na podstawie tego geoparameter. 243 00:12:52,880 --> 00:12:57,250 My analizować ten RSS, który jest po prostu rodzaj języka znaczników XML o nazwie, 244 00:12:57,250 --> 00:13:00,740 i wtedy rzeczywiście zwrócić go do przeglądarki 245 00:13:00,740 --> 00:13:03,570 i do kodu JavaScript, W szczególności, w formie zwany 246 00:13:03,570 --> 00:13:06,097 JSON, JavaScript Object Notation. 247 00:13:06,097 --> 00:13:08,180 Teraz zobaczysz w specification-- wskażemy ci 248 00:13:08,180 --> 00:13:10,720 w jaki sposób można rzeczywiście zobaczyć niektóre JSON nadchodzącym back-- 249 00:13:10,720 --> 00:13:15,210 że funkcja ta ostatecznie pozwala zapełnić te popup menu, tak 250 00:13:15,210 --> 00:13:16,960 że po kliknięciu na znacznik w mapie 251 00:13:16,960 --> 00:13:19,430 rzeczywiście zobaczyć całą masę kul, z których każda 252 00:13:19,430 --> 00:13:21,020 linki do artykułu. 253 00:13:21,020 --> 00:13:25,000 >> Teraz rzućmy okiem na jeden ostatni Plik PHP, który, na szczęście, nie 254 00:13:25,000 --> 00:13:27,970 mają wiele dzieje on-- po prostu dość duży TODO. 255 00:13:27,970 --> 00:13:32,170 Teraz ten plik oświadcza tablica o nazwie miejsca. 256 00:13:32,170 --> 00:13:35,980 A następnie ostatecznie wydruki że tablica w JSON format-- 257 00:13:35,980 --> 00:13:38,720 ładna, drukowanie tak, że rzeczy są łatwiejsze do debugowania. 258 00:13:38,720 --> 00:13:41,480 Niestety, w środkowa nie jest to zadanie, 259 00:13:41,480 --> 00:13:46,890 który wzywa do wyszukania baza miejsc pasujących geo HTTP 260 00:13:46,890 --> 00:13:47,490 parametrów. 261 00:13:47,490 --> 00:13:49,865 >> I rzeczywiście, to będzie być jednym z challenges-- 262 00:13:49,865 --> 00:13:54,240 do wdrożenia tej funkcji tutaj tak, że gdy kontakt ten plik 263 00:13:54,240 --> 00:14:00,610 URL jak wyszukiwania. php? geo = coś, Twój kod będzie ostatecznie powrócić do JSON 264 00:14:00,610 --> 00:14:05,020 Tablica wszystkich miejscach w tabeli bazy danych, która pasuje do tego wejścia. 265 00:14:05,020 --> 00:14:08,960 Więc jeśli użytkownik wpisze w Cambridge, plik o search.php 266 00:14:08,960 --> 00:14:12,680 powinien ostatecznie powrócić tablicy JSON dla wszystkich meczach Cambridge, 267 00:14:12,680 --> 00:14:16,990 który może być w stanie Massachusetts ale może być jeszcze nigdzie indziej. 268 00:14:16,990 --> 00:14:21,040 >> Wreszcie, rzućmy okiem na dwa Pliki, które są ultimately-- statyczne 269 00:14:21,040 --> 00:14:23,680 Twój plik CSS, a plik JavaScript. 270 00:14:23,680 --> 00:14:26,779 Jeśli pójdę do naszego katalogu, CSS, istnieje cała masa plików tam, 271 00:14:26,779 --> 00:14:28,070 ale większość z nich są biblioteki. 272 00:14:28,070 --> 00:14:31,530 Zamierzam przyjrzeć, specjalnie na styles.css, 273 00:14:31,530 --> 00:14:35,440 co jest nasze własne globalne CSS to będzie stylizować cały ten mashup. 274 00:14:35,440 --> 00:14:38,840 Zostawię go, aby przeczytać komentarze tutaj, ale w skrócie, 275 00:14:38,840 --> 00:14:43,490 to jest CSS, który sprawia, że ​​nasza mashup domyślnie po wyjęciu z pudełka, 276 00:14:43,490 --> 00:14:46,950 Wygląda dokładnie tak jak chcemy it-- z mapą widok portu napełniania 277 00:14:46,950 --> 00:14:49,720 i poszukiwania box się w lewym górnym rogu. 278 00:14:49,720 --> 00:14:52,870 Podjęliśmy również wolność stylizując że wpisywanie znaków z wyprzedzeniem listy rozwijanej 279 00:14:52,870 --> 00:14:55,170 Menu trochę jak również. 280 00:14:55,170 --> 00:14:58,030 >> Najważniejszym pliku Być może dla tego problemu ustawić 281 00:14:58,030 --> 00:15:01,070 Jest to ostatni, scripts.js. 282 00:15:01,070 --> 00:15:03,800 Wewnątrz katalogu JS jest jeszcze więcej plików. 283 00:15:03,800 --> 00:15:08,090 Wszystkie z nich są pliki biblioteki z wyjątkiem tego jednego, scripts.js. 284 00:15:08,090 --> 00:15:11,460 Jeśli otworzymy tę górę, weźmy nasze Ostateczna Wycieczka przez funkcje, które 285 00:15:11,460 --> 00:15:13,820 są zbudowane z tym dokumentem dla Ciebie i zwrócić uwagę 286 00:15:13,820 --> 00:15:16,200 do Todos które stoją przed nami. 287 00:15:16,200 --> 00:15:19,110 >> Na górze tego pliku są trzy zmienne globalne. 288 00:15:19,110 --> 00:15:22,910 Jeden na mapie, które zamierza odniesienie do naszej mapie Google. 289 00:15:22,910 --> 00:15:25,510 Możesz myśleć o tym rodzaj jako wskaźnik. 290 00:15:25,510 --> 00:15:27,710 Tymczasem mamy kolejna zmienna globalna 291 00:15:27,710 --> 00:15:31,500 nazywa informacji, które wydaje się być przechowywania wartości zwracanej rozmowy 292 00:15:31,500 --> 00:15:34,170 do nowego google.maps.InfoWindow. 293 00:15:34,170 --> 00:15:37,835 JavaScript obsługuje obiektów, które są bardzo podobne w duchu do poprzeczne. 294 00:15:37,835 --> 00:15:40,250 A co to za linia nasze cele robi 295 00:15:40,250 --> 00:15:42,820 tworzy nowe informacje Okno w pamięci, a następnie 296 00:15:42,820 --> 00:15:46,330 utrzymywanie wokół zadanej do niego w zmiennej o nazwie Info. 297 00:15:46,330 --> 00:15:48,330 A w między tymi, Tymczasem, jest to, co pojawia się 298 00:15:48,330 --> 00:15:51,060 być pusta JavaScript Tablica nazywa znaczniki. 299 00:15:51,060 --> 00:15:55,392 Wszystkie z tych ikon gazet, albo może wybrać inną ikonę całkowicie, 300 00:15:55,392 --> 00:15:57,350 będą przechowywane ostatecznie w tej tablicy 301 00:15:57,350 --> 00:16:01,570 tak, że można bardzo łatwo dodać do Mapa i usunąć je z mapy. 302 00:16:01,570 --> 00:16:03,990 >> Teraz przejdź na dół trochę i świst 303 00:16:03,990 --> 00:16:07,690 za pomocą kodu, który będzie realizowane tak szybko jak DOM lub dokumentu 304 00:16:07,690 --> 00:16:10,480 model obiektu lub Sama strona jest gotowa. 305 00:16:10,480 --> 00:16:12,942 Przypomnijmy, że tej składni tutaj po prostu określa 306 00:16:12,942 --> 00:16:14,900 że poniższy kod powinny być wykonywane tylko 307 00:16:14,900 --> 00:16:17,840 gdy przeglądarka zakończy loading wszystko. 308 00:16:17,840 --> 00:16:19,750 >> Najpierw zadeklarować cała masa stylów, 309 00:16:19,750 --> 00:16:22,410 która kończy się stylizując Mapa jak na spec. 310 00:16:22,410 --> 00:16:24,790 Następnie zadeklarować cała masa opcji, 311 00:16:24,790 --> 00:16:28,630 co jeszcze bardziej dostosować Google Mapa, że ​​jesteśmy o osadzić. 312 00:16:28,630 --> 00:16:32,090 Następnie używamy trochę kodu jQuery, co wynika w nieco bardziej szczegółowo 313 00:16:32,090 --> 00:16:35,000 w specyfikacji, aby pobrać ten element, map-canvas 314 00:16:35,000 --> 00:16:36,980 że tak identyfikowany. 315 00:16:36,980 --> 00:16:40,640 A potem ta linia tutaj jest co wydaje się nam magicznie 316 00:16:40,640 --> 00:16:43,560 mapa Google wewnątrz nasza aplikacja, 317 00:16:43,560 --> 00:16:47,020 przechowywania odniesienie do nich w tej zmiennej o nazwie mapie. 318 00:16:47,020 --> 00:16:50,550 >> Wreszcie, możemy zarejestrować się tutaj co nazywa słuchaczem. 319 00:16:50,550 --> 00:16:54,690 Pomyśl back-- sposób, sposób back-- do tygodnia zerowej w CS50 320 00:16:54,690 --> 00:16:57,430 kiedy spojrzał na zarysowania i jego wsparcie poprzez spacer 321 00:16:57,430 --> 00:16:59,935 przez rzeczy zwanych imprezy i audycje. 322 00:16:59,935 --> 00:17:01,810 Nie może być stosowany to sam, ale to 323 00:17:01,810 --> 00:17:03,900 mechanizm, dzięki któremu Przeglądarka w tym przypadku 324 00:17:03,900 --> 00:17:07,940 mogą zwrócić naszą uwagę, gdy jest to gotowe by wykonać jakiś kod. 325 00:17:07,940 --> 00:17:12,170 W tym przypadku, to będzie słuchać do mapy na imprezę o nazwie bezczynny. 326 00:17:12,170 --> 00:17:14,930 Oznacza to, że przeglądarce zakończeniu ładowania mapy Google. 327 00:17:14,930 --> 00:17:18,380 W tym momencie funkcja nazywa Configure powinien ostatecznie 328 00:17:18,380 --> 00:17:19,339 wykonania. 329 00:17:19,339 --> 00:17:22,510 To funkcja, konfigurowanie zobaczymy, jest napisane przez nas. 330 00:17:22,510 --> 00:17:24,550 >> Teraz tutaj jest funkcja niestety, że 331 00:17:24,550 --> 00:17:25,871 jest tylko markerem TODO dodatek. 332 00:17:25,871 --> 00:17:28,620 Na spec. będziesz potrzebować do pisania kodu, które faktycznie 333 00:17:28,620 --> 00:17:32,840 dodaje marker-- czy to wygląda jak gazety, lub halsie kciuka, 334 00:17:32,840 --> 00:17:35,360 lub coś else-- na mapie Google. 335 00:17:35,360 --> 00:17:37,720 Tu jest teraz, że funkcja nazywa configure. 336 00:17:37,720 --> 00:17:40,390 Zostawię go do przeczytania przez to bardziej szczegółowo 337 00:17:40,390 --> 00:17:42,600 ale sobie sprawę, że możemy dodać bandą więcej Słuchaczy 338 00:17:42,600 --> 00:17:46,620 tak, że można wykonać kod przy użytkownik kliknie i wyciąga mapę. 339 00:17:46,620 --> 00:17:50,730 Mamy też tutaj, że kod inicjuje ten plugin wpisywanie znaków z wyprzedzeniem 340 00:17:50,730 --> 00:17:53,120 tak, że rozwijana Menu faktycznie działa. 341 00:17:53,120 --> 00:17:55,690 >> Skupmy się jednak na tak Kilka miejsc w niniejszym dokumencie. 342 00:17:55,690 --> 00:17:57,590 Konkretnie, to tutaj zrobić. 343 00:17:57,590 --> 00:18:00,410 Ja odroczyć do on-line dokumentacji i specyfikacji 344 00:18:00,410 --> 00:18:02,530 na jak wypełnić ten TODO. 345 00:18:02,530 --> 00:18:05,890 Ale w skrócie, to biblioteki wpisywanie znaków z wyprzedzeniem pozwala przejść 346 00:18:05,890 --> 00:18:09,790 w jakich jest powszechnie znane jako matrycę która ma pewne zmienne zastępcze 347 00:18:09,790 --> 00:18:13,690 bardzo w duchu podobnym do printf w%. * s. 348 00:18:13,690 --> 00:18:16,030 Jednak w tym przypadku, Szablon na spec 349 00:18:16,030 --> 00:18:18,760 umożliwia określenie co zmienne chcesz 350 00:18:18,760 --> 00:18:24,880 wstrzyknąć z danych, które pochodzą z powrotem z czymś takim jak PHP 351 00:18:24,880 --> 00:18:29,810 Pliki, które zostały napisane które emitują wyjście JSON. 352 00:18:29,810 --> 00:18:35,170 >> Teraz tu sobie sprawę, że jesteśmy nasłuchując wyborów wpisywanie znaków z wyprzedzeniem 353 00:18:35,170 --> 00:18:38,050 gdy użytkownik faktycznie prowadzi wyszukiwać i wybiera wartość. 354 00:18:38,050 --> 00:18:40,270 W ten sposób jesteśmy w rzeczywistości będziemy słuchać, że 355 00:18:40,270 --> 00:18:42,250 i wykonać jakiś kod w wyniku. 356 00:18:42,250 --> 00:18:45,300 Potem nadal skonfigurować mashup tylko trochę. 357 00:18:45,300 --> 00:18:48,000 I, ostatecznie, nazywamy aktualizacja ta funkcja. 358 00:18:48,000 --> 00:18:49,640 Aktualizuje ona znaczniki na ekranie. 359 00:18:49,640 --> 00:18:51,529 Więcej o tym za chwilę. 360 00:18:51,529 --> 00:18:53,570 Tymczasem, istnieje kilka małe funkcje w tutaj. 361 00:18:53,570 --> 00:18:56,820 Z których jeden jest hideInfo które po prostu zamyka InfoWindow. 362 00:18:56,820 --> 00:19:00,020 Inną funkcją jest tutaj co ostatecznie nie będzie zbyt długi, należy usunąć znaczniki. 363 00:19:00,020 --> 00:19:03,580 To będzie cofnąć, co Twoja funkcja Marker dodatek robi. 364 00:19:03,580 --> 00:19:04,960 A potem tu jest wyszukiwarka. 365 00:19:04,960 --> 00:19:08,610 A ten jest interesujący, ponieważ my Napisałem kod JavaScript, który jest 366 00:19:08,610 --> 00:19:13,490 Porozmawiamy z search.php na Serwer i wrócić na pewne postępy. 367 00:19:13,490 --> 00:19:16,110 >> Możesz, oczywiście, będzie nadal należy wdrożyć search.php, 368 00:19:16,110 --> 00:19:18,310 ale już wdrożone Kod JavaScript, który jest 369 00:19:18,310 --> 00:19:22,480 będzie obsługiwać faktycznie wykonujący wyszukuje z tego pola tekstowego. 370 00:19:22,480 --> 00:19:25,340 W szczególności, uprzedzenia że funkcja tutaj 371 00:19:25,340 --> 00:19:29,160 wyszukiwania, zwoła search.php metodą zwaną 372 00:19:29,160 --> 00:19:31,072 uzyskać JSON, który widzieliśmy w wykładzie. 373 00:19:31,072 --> 00:19:32,780 I tu składni jest trochę inaczej 374 00:19:32,780 --> 00:19:37,110 z wykładu, że używamy jQuery tak zwany interfejs obietnica. 375 00:19:37,110 --> 00:19:38,479 Więcej na ten temat w specyfikacji. 376 00:19:38,479 --> 00:19:40,520 To oznacza dla naszych cele, teraz, że istnieją 377 00:19:40,520 --> 00:19:43,870 Są dwie funkcje specjalne my trzeba zadzwonić z notacji z kropkami 378 00:19:43,870 --> 00:19:46,230 tutaj natychmiast po wywołaniu uzyskać JSON. 379 00:19:46,230 --> 00:19:47,510 Jeden nazywa się zrobić. 380 00:19:47,510 --> 00:19:49,870 Jeden nazywa się niepowodzeniem. 381 00:19:49,870 --> 00:19:51,790 Można myśleć o nich jako przewodnika sukcesu 382 00:19:51,790 --> 00:19:54,960 i obsługi awarii wystarczy w przypadku gdyby coś poszło nie tak. 383 00:19:54,960 --> 00:19:57,760 >> Teraz spójrzmy na ostatnie Kilka funkcji w tym pliku. 384 00:19:57,760 --> 00:20:00,180 Tutaj jest funkcja nazywa showInfo, które 385 00:20:00,180 --> 00:20:03,090 pokazuje informacje w jednym z tych, małe okna informacyjne, które 386 00:20:03,090 --> 00:20:05,380 pojawia się, gdy użytkownik kliknie znacznik. 387 00:20:05,380 --> 00:20:08,470 Tu dalej jest że funkcja aktualizacji 388 00:20:08,470 --> 00:20:10,510 które wdrożyliśmy dla Ciebie. 389 00:20:10,510 --> 00:20:15,250 To określa granice mapie. 390 00:20:15,250 --> 00:20:19,360 Jakie są współrzędne GPS z jego na północny wschód, a rogi na południowy zachód tutaj. 391 00:20:19,360 --> 00:20:22,780 Przygotowaliśmy kilka parametrów HDP tu, a następnie przepuszczono je ostatecznie 392 00:20:22,780 --> 00:20:26,160 do update.php, które mamy również realizowane dla Ciebie. 393 00:20:26,160 --> 00:20:31,390 Że ostatecznie wróci trochę JSON z pliku o nazwie update.php 394 00:20:31,390 --> 00:20:34,050 a następnie usuwa wszelkie markery na ekranie 395 00:20:34,050 --> 00:20:36,650 i następnie przechodzi nad Dane, które się wrócić 396 00:20:36,650 --> 00:20:40,350 z update.php, które znowu jest tylko tablicą JSON. 397 00:20:40,350 --> 00:20:45,130 A następnie ostatecznie dodaje marker każde z tych miejsc, brak obsługi 398 00:20:45,130 --> 00:20:47,750 lub błędy, które mogą bardzo dobrze się stało. 399 00:20:47,750 --> 00:20:51,550 >> Teraz po prostu dać ci smaku, w jaki sposób może przejść o debugowanie tego projektu, 400 00:20:51,550 --> 00:20:55,420 sobie sprawę, że mam otwarty w przejść tę kartę, żeby tego adresu URL, 401 00:20:55,420 --> 00:21:01,320 pset8 / articles.php? geo = 02138. 402 00:21:01,320 --> 00:21:04,050 Teraz, ponownie, artykuły o PHP wdrożyliśmy dla Ciebie 403 00:21:04,050 --> 00:21:06,320 więc to nie jest tak dużo co będziesz przy użyciu 404 00:21:06,320 --> 00:21:08,190 do debugowania, ale raczej z techniką. 405 00:21:08,190 --> 00:21:10,590 Uwaga, rozglądałem się za Cambridge kod tutaj, zip, 406 00:21:10,590 --> 00:21:15,260 i stałam powrotem, rzeczywiście, JSON Tablica JSON obiektów wewnątrz której 407 00:21:15,260 --> 00:21:17,640 są dwa keys-- Link i tytuł. 408 00:21:17,640 --> 00:21:19,860 >> Więc ta funkcjonalność pracuje już dla Ciebie. 409 00:21:19,860 --> 00:21:24,330 Ale ta technika będzie ręcznie do adresu URL, jak to coś jak 410 00:21:24,330 --> 00:21:31,710 search.php? geo = Cambridge lub 02138 lub co użytkownik wpisane powinny 411 00:21:31,710 --> 00:21:35,770 okazać się bezcenne, jak ty sam, spróbuj dowiedzieć się dokładnie, czy i dlaczego 412 00:21:35,770 --> 00:21:38,510 search.php działa lub nie. 413 00:21:38,510 --> 00:21:41,720 >> Ostatecznie więc, masz Kilka TODO przed tobą. 414 00:21:41,720 --> 00:21:44,250 Idziesz do pierwszych narzędzi że skrypt import, że 415 00:21:44,250 --> 00:21:46,520 Czytamy w us.text do bazy danych. 416 00:21:46,520 --> 00:21:48,760 Jesteś wtedy będzie trzeba do wdrożenia search.php 417 00:21:48,760 --> 00:21:51,320 tak, że zachowuje się dokładnie tak, jak podano. 418 00:21:51,320 --> 00:21:54,170 Jesteś wtedy będzie chciał skupić się na scripts.js 419 00:21:54,170 --> 00:21:57,520 i ostatecznie realizuje tych kilka todos, 420 00:21:57,520 --> 00:21:59,950 w tym do skonfigurowania i że szablon, 421 00:21:59,950 --> 00:22:03,220 dodawanie znaczników, usuń znaczniki, a to trwało, ale nie najmniej, jeden 422 00:22:03,220 --> 00:22:04,330 osobisty kontakt. 423 00:22:04,330 --> 00:22:07,477 >> Po Twojej pracy mashup zupełnie jak nasza, celem pod ręką 424 00:22:07,477 --> 00:22:09,560 jest, aby dodać osobisty dotykać do mashup, 425 00:22:09,560 --> 00:22:11,290 czy to estetyczne i funkcjonalne. 426 00:22:11,290 --> 00:22:13,950 Weź mashup kiedykolwiek tak nieznacznie do następnego poziomu. 427 00:22:13,950 --> 00:22:18,330 Tak długo, jak wcisnąć się poza Twoja znajomość samej specyfikacji 428 00:22:18,330 --> 00:22:20,840 i odebrać jedną technikę nowe, nawet jeśli jest to tylko 429 00:22:20,840 --> 00:22:25,610 coś estetycznego jak zmiana Układ mapie, że używasz, 430 00:22:25,610 --> 00:22:28,070 Zakres, że oczekujemy będą zadowoleni. 431 00:22:28,070 --> 00:22:30,260 Że to jest problem Zestaw 8 Mashup. 432 00:22:30,260 --> 00:22:33,070 Czekajcie na więcej w Specyfikacja i powodzenia 433 00:22:33,070 --> 00:22:36,400 zaradzenie temu, Twoja ostatnia Problem CS50 ustawić kiedykolwiek. 434 00:22:36,400 --> 00:22:39,750 >> [MUZYKA GRY] 435 00:22:39,750 --> 00:22:43,542