1 00:00:00,000 --> 00:00:02,405 >> [MUZYKI] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 DAVID MALAN: Dobrze, to jest CS50. 4 00:00:11,980 --> 00:00:13,740 To jest koniec tygodnia osiem. 5 00:00:13,740 --> 00:00:15,887 A dzisiaj, zaczynamy wypełnić w niektórych kawałkach 6 00:00:15,887 --> 00:00:17,720 jeśli chodzi o budynku rzeczy w sieci. 7 00:00:17,720 --> 00:00:20,020 Tak, pamiętam, że w poniedziałek spędzamy dużo więcej czasu 8 00:00:20,020 --> 00:00:22,530 na PHP, co jest ten dynamiczny język programowania, który 9 00:00:22,530 --> 00:00:26,872 umożliwia nam wyjście, m.in. rzeczy, HTML i inne takie treści 10 00:00:26,872 --> 00:00:27,830 że my chcemy zobaczyć. 11 00:00:27,830 --> 00:00:30,871 Ale tak naprawdę nie wyglądało na to, jak będziemy przechowywać informacje. 12 00:00:30,871 --> 00:00:34,477 Rzeczywiście, prawie nic z tego super ciekawe strony internetowe odwiedzasz dziś 13 00:00:34,477 --> 00:00:36,560 mieć jakieś bazy danych na tylnym końcu, prawda? 14 00:00:36,560 --> 00:00:39,540 Facebook na pewno przechowuje dużo danych o nas wszystkich i sklepach Gmail wszystkie 15 00:00:39,540 --> 00:00:40,210 e-maile. 16 00:00:40,210 --> 00:00:44,150 >> I tak, wiele innych miejsc nie tylko statyczny to informacyjny. 17 00:00:44,150 --> 00:00:45,640 To rzeczywiście w jakiś sposób dynamiczny. 18 00:00:45,640 --> 00:00:48,480 Podać wejście aktualizuje strony dla innych ludzi. 19 00:00:48,480 --> 00:00:50,620 Otrzymasz wiadomości, wysyłanie wiadomości i tak dalej. 20 00:00:50,620 --> 00:00:54,250 Więc dzisiaj, przyjrzymy się bliżej podbudow z projektu 21 00:00:54,250 --> 00:00:57,330 że będziesz nurkować w przyszłym tygodniu, CS50 Finanse, które 22 00:00:57,330 --> 00:01:00,509 faktycznie będzie musiał budować coś nie w C, ale w PHP. 23 00:01:00,509 --> 00:01:02,550 Strona internetowa, która wygląda Trochę coś takiego 24 00:01:02,550 --> 00:01:05,810 która pozwala kupować i sprzedawać zapasy, które są rzeczywiście 25 00:01:05,810 --> 00:01:09,044 będzie czerpać czasie rzeczywistym Dane stock Yahoo Finance. 26 00:01:09,044 --> 00:01:11,960 I tak w końcu będziesz mieć iluzja dla siebie i dla użytkowników 27 00:01:11,960 --> 00:01:14,550 że jesteś rzeczywiście kupna i sprzedaży akcje i uzyskanie czasu prawie prawdziwe 28 00:01:14,550 --> 00:01:16,800 aktualizacje, zarządzanie portfel, z których wszystkie 29 00:01:16,800 --> 00:01:20,310 będzie wymagać posiadania, ostatecznie, baza użytkowników. 30 00:01:20,310 --> 00:01:23,330 >> Tak, własnymi słowami, zwłaszcza jeśli nie jesteś 31 00:01:23,330 --> 00:01:25,670 bardzo obeznany z komputerem nauki lub bazy danych, co 32 00:01:25,670 --> 00:01:30,790 wiesz, bazy danych, aby być teraz, w kategoriach nietechnicznych? 33 00:01:30,790 --> 00:01:32,300 Co to jest? 34 00:01:32,300 --> 00:01:36,882 Jak można to opisać do współlokatora lub przyjaciela? 35 00:01:36,882 --> 00:01:40,100 >> PUBLICZNOŚCI: [niesłyszalne] informacje [niesłyszalne] 36 00:01:40,100 --> 00:01:44,430 >> DAVID MALAN: Tak, wykaz informacji, lub store-- listę informacji 37 00:01:44,430 --> 00:01:47,160 które warto przechowywać o czymś, jak użytkownik. 38 00:01:47,160 --> 00:01:50,190 A co zrobić, użytkownicy mają z nimi związane? 39 00:01:50,190 --> 00:01:53,160 Jeżeli jesteś użytkownikiem na Facebook lub Gmail, jakie są właściwości 40 00:01:53,160 --> 00:01:54,940 że wszyscy użytkownicy? 41 00:01:54,940 --> 00:01:58,530 Podobnie jak to, co może być jednymi z kolumny w arkuszu kalkulacyjnym, na które 42 00:01:58,530 --> 00:01:59,390 nawiązywał ostatni raz? 43 00:01:59,390 --> 00:02:01,140 Bo znowu, można myślę o bazie danych 44 00:02:01,140 --> 00:02:05,810 naprawdę tak fantazyjny pliku Excel lub Google Jabłko plik arkusza kalkulacyjnego lub numery. 45 00:02:05,810 --> 00:02:08,280 >> Więc, co o tym myślisz kiedy myślisz użytkownika? 46 00:02:08,280 --> 00:02:11,290 Co oni mają? 47 00:02:11,290 --> 00:02:11,790 Co to? 48 00:02:11,790 --> 00:02:12,470 >> PUBLICZNOŚCI: Nazwa. 49 00:02:12,470 --> 00:02:13,303 >> DAVID MALAN: Nazwa. 50 00:02:13,303 --> 00:02:16,840 Więc jeśli nazwa, podobnie jak David Malan będzie nazwa jakiegoś użytkownika. 51 00:02:16,840 --> 00:02:17,980 Co jeszcze robi użytkownik ma? 52 00:02:17,980 --> 00:02:18,770 >> PUBLICZNOŚCI: Identyfikator. 53 00:02:18,770 --> 00:02:19,561 >> DAVID MALAN: Identyfikator. 54 00:02:19,561 --> 00:02:23,320 Tak, jak numer identyfikacyjny, jak twój Harvard ID lub twój Yale Net ID lub podobne. 55 00:02:23,320 --> 00:02:24,923 Co jeszcze może użytkownik ma? 56 00:02:24,923 --> 00:02:25,890 >> PUBLICZNOŚCI: Hasło. 57 00:02:25,890 --> 00:02:29,240 >> DAVID MALAN: Hasło, może adres, numer telefonu, być może, być może 58 00:02:29,240 --> 00:02:30,050 adres e-mail. 59 00:02:30,050 --> 00:02:32,640 Tak, tam pęki pól i to może jakby wymknąć się spod kontroli 60 00:02:32,640 --> 00:02:34,760 szybko, jak tylko zacząć zdając sobie sprawę, no, powiedzmy, przechowywania tego 61 00:02:34,760 --> 00:02:36,190 i niech to zapisać to i to. 62 00:02:36,190 --> 00:02:37,657 >> Ale jak właściwie zrobić? 63 00:02:37,657 --> 00:02:39,740 Więc jeszcze raz, model psychicznego mieć na dzisiaj jak my 64 00:02:39,740 --> 00:02:42,320 nurkować w rzeczywistej SQL, Structured Query Language, 65 00:02:42,320 --> 00:02:44,186 Jest to baza danych, która wygląda tak. 66 00:02:44,186 --> 00:02:45,310 To tylko wiersze i kolumny. 67 00:02:45,310 --> 00:02:48,309 I można sobie wyobrazić Arkusze Google lub dowolną liczbą innych programów. 68 00:02:48,309 --> 00:02:52,130 Ale to, co jest kluczem o MySQL, która jest oprogramowanie bazy danych będziemy używać, 69 00:02:52,130 --> 00:02:54,920 swobodnie otwarcie available-- Facebooka zastosowań 70 00:02:54,920 --> 00:02:59,200 to i wielu innych websites-- Baza danych przechowuje rzeczy relacyjnie. 71 00:02:59,200 --> 00:03:01,770 I relacyjnej bazy danych oznacza po prostu taki, który dosłownie 72 00:03:01,770 --> 00:03:03,672 przechowuje dane w wierszach i kolumnach. 73 00:03:03,672 --> 00:03:04,630 To takie proste. 74 00:03:04,630 --> 00:03:07,230 >> Tak więc, nawet coś takiego jak Oracle, które mogłeś zwykle słyszał 75 00:03:07,230 --> 00:03:08,271 jest relacyjna baza danych. 76 00:03:08,271 --> 00:03:10,929 A pod maską go, przechowuje dane w wierszach i kolumnach. 77 00:03:10,929 --> 00:03:12,970 I Oracle pobiera opłaty w dużo pieniędzy, aby to zrobić, 78 00:03:12,970 --> 00:03:15,550 natomiast opłat MySQL masz nic do tego samego. 79 00:03:15,550 --> 00:03:18,790 Więc, SQL ma dać nam co najmniej cztery operacje. 80 00:03:18,790 --> 00:03:23,190 Możliwość wyboru danych, jak przeczytane danych, wstawianie, usuwanie i aktualizacji danych. 81 00:03:23,190 --> 00:03:25,525 Innymi słowy, są to naprawdę cztery kluczowe operacje 82 00:03:25,525 --> 00:03:28,950 że będziemy pozwalają nam zmienić rzeczy w tych wierszach i kolumnach. 83 00:03:28,950 --> 00:03:33,250 >> Narzędzie, które użyjemy dziś szczególnie do nauki języka SQL i bawić się z nim 84 00:03:33,250 --> 00:03:34,627 PHP jest ponownie wezwał MyAdmin. 85 00:03:34,627 --> 00:03:35,460 Jest to narzędzie oparte internetowej. 86 00:03:35,460 --> 00:03:38,200 Całkowity przypadek, że jest napisane w PHP. 87 00:03:38,200 --> 00:03:42,400 Ale to się nam graficzny interfejs użytkownika, tak, że możemy właściwie 88 00:03:42,400 --> 00:03:46,054 utworzyć te wiersze i kolumny i rozmawiać z nimi za pomocą kodu. 89 00:03:46,054 --> 00:03:47,970 Tak, niech teraz zacząć co myślę jest szczerze 90 00:03:47,970 --> 00:03:51,000 rodzaj procesu zabawy z budowy tylny koniec stronach internetowych, 91 00:03:51,000 --> 00:03:54,580 części, które użytkownicy nie zobaczyć, ale na pewno nie obchodzi, 92 00:03:54,580 --> 00:03:56,170 bo to raczej dane dzieje. 93 00:03:56,170 --> 00:03:59,570 Tak więc, podobnie jak w C i A Nieco mniej takich jak PHP, 94 00:03:59,570 --> 00:04:04,954 SQL lub bazy danych, która obsługuje SQL, ma przynajmniej te typy danych 95 00:04:04,954 --> 00:04:05,870 i kiście innych. 96 00:04:05,870 --> 00:04:08,107 CHAR, VARCHAR, INT, BIGINT, Po przecinku, a DATETIME. 97 00:04:08,107 --> 00:04:09,940 I jest cała kilka innych funkcji, 98 00:04:09,940 --> 00:04:11,940 ale niech to zrobić sposób rzeczywisty przykład. 99 00:04:11,940 --> 00:04:16,450 >> Mam zamiar iść do CS50 IDE gdzie z góry, ja zalogowany 100 00:04:16,450 --> 00:04:19,372 a ja również odwiedził URL PHP to narzędzie o nazwie MyAdmin. 101 00:04:19,372 --> 00:04:22,580 I problemu ustawić siedem, powiemy dokładnie, jak dostać się do tego interfejsu 102 00:04:22,580 --> 00:04:23,200 równie dobrze. 103 00:04:23,200 --> 00:04:25,640 Na górnym rogu, zauważyć, że mówi wykład. 104 00:04:25,640 --> 00:04:27,610 A to po prostu oznacza, że z góry, stworzyłem 105 00:04:27,610 --> 00:04:31,360 Wykład pusta baza danych o nazwie że nie posiada arkuszy kalkulacyjnych w nim. 106 00:04:31,360 --> 00:04:32,600 Nie ma żadnych wierszy i kolumn. 107 00:04:32,600 --> 00:04:34,308 Ponieważ pierwsza co zamierzamy zrobić 108 00:04:34,308 --> 00:04:37,100 jest rozpoczęcie tworzenia tabeli że będzie przechowywać naszych użytkowników. 109 00:04:37,100 --> 00:04:39,100 >> Tak, dosłownie w ciągu tutaj, w prawo, jestem 110 00:04:39,100 --> 00:04:42,070 powie bazy danych Chcę tabeli o nazwie Users. 111 00:04:42,070 --> 00:04:44,845 Tak, to jest tak, jak plik, że Aby zapisać wszystkie moje dane w. 112 00:04:44,845 --> 00:04:45,720 A ile kolumn? 113 00:04:45,720 --> 00:04:47,740 No cóż, keep it simple teraz. 114 00:04:47,740 --> 00:04:51,855 Chcę tylko, aby zapisać się jak Nazwa użytkownika i nazwę użytkownika. 115 00:04:51,855 --> 00:04:53,020 Zaczniemy małe. 116 00:04:53,020 --> 00:04:55,370 Tak, chcę dwóch kolumn łącznie. 117 00:04:55,370 --> 00:04:57,360 I mam zamiar iść do przodu i kliknij przycisk Przejdź. 118 00:04:57,360 --> 00:04:59,210 A więc, dla tych kolumny, co mam zamiar 119 00:04:59,210 --> 00:05:04,576 do do-- jeśli tego internecie cooperates-- wszelkie prawa, 120 00:05:04,576 --> 00:05:05,950 więc mamy zamiar spróbować ponownie. 121 00:05:05,950 --> 00:05:09,180 Zamierzam utworzyć tabelę o nazwie Użytkownicy z dwóch kolumn, kliknij przycisk Przejdź, OK. 122 00:05:09,180 --> 00:05:10,520 Teraz mamy to naprawdę szybko. 123 00:05:10,520 --> 00:05:12,065 Dziękuję, bardzo dobrze zrobione. 124 00:05:12,065 --> 00:05:14,440 W porządku, więc to, co chcemy te kolumny się nazywać? 125 00:05:14,440 --> 00:05:16,080 >> Tak, jeden będzie się nazywać Nazwa użytkownika. 126 00:05:16,080 --> 00:05:19,480 Tak, widzę here-- i interfejs szczerze mówiąc, robi się trochę brzydkie końcu, 127 00:05:19,480 --> 00:05:21,270 Po rozpoczęciu wpisywania wszystkich danych. 128 00:05:21,270 --> 00:05:27,450 Ale to, co miłe jest to, że rodzaj paradoksalnie, tworzę kolumn, 129 00:05:27,450 --> 00:05:29,977 ale narzędzie ma głupio położył je w rzędach 130 00:05:29,977 --> 00:05:31,560 tak, że można skonfigurować te kolumny. 131 00:05:31,560 --> 00:05:33,550 Tak, jest tam dwie spacje w kolumnie Nazwa. 132 00:05:33,550 --> 00:05:36,180 I jeden z tych pól I chcą nazywa Nazwa użytkownika, 133 00:05:36,180 --> 00:05:38,000 i inne pola chcę zadzwonić Nazwa. 134 00:05:38,000 --> 00:05:40,340 >> A teraz mam do wyboru typy danych dla tych rzeczy. 135 00:05:40,340 --> 00:05:42,330 Tak więc, podczas gdy w Excel Arkusze i Google, 136 00:05:42,330 --> 00:05:45,531 jeśli chcesz kolumny, dosłownie wpisz nazwę lub nazwy użytkownika, naciśnij Enter. 137 00:05:45,531 --> 00:05:48,030 Może zrobić to tłustym drukiem tak dla jasności, ale to wszystko. 138 00:05:48,030 --> 00:05:50,140 Nie określić typy kolumn. 139 00:05:50,140 --> 00:05:53,790 Teraz w arkuszach kalkulacyjnych Google lub Excel Ciebie może określić, w jaki sposób dane są renderowane. 140 00:05:53,790 --> 00:05:58,120 Można przejść do menu Format, a ty może określić pokazać jak znak dolara, 141 00:05:58,120 --> 00:05:59,900 pokazać, jak wartości zmiennoprzecinkowej. 142 00:05:59,900 --> 00:06:01,990 >> Tak, to w duchu podobnym do że to, co mamy zamiar zrobić, 143 00:06:01,990 --> 00:06:04,740 ale to jest rzeczywiście zmusi dane za pewien typ. 144 00:06:04,740 --> 00:06:07,750 Teraz, mimo że chwilę temu powiedział, że tylko kilka typów danych, 145 00:06:07,750 --> 00:06:11,120 Jest rzeczywiście dużo, a oni 146 00:06:11,120 --> 00:06:12,910 w różnym stopniu specyficzności. 147 00:06:12,910 --> 00:06:14,970 I tak na marginesie, to Można nawet robić wymyślne rzeczy 148 00:06:14,970 --> 00:06:17,520 jak geometrii magazynowych wewnątrz bazy danych. 149 00:06:17,520 --> 00:06:19,250 Można przechowywać rzeczy jak współrzędne GPS 150 00:06:19,250 --> 00:06:22,420 i rzeczywiście znaleźć, matematycznie, Punkty, które są blisko innych. 151 00:06:22,420 --> 00:06:24,128 Ale mamy zamiar mieć to super proste 152 00:06:24,128 --> 00:06:26,800 i udać się tutaj, wszystkie tak zwane typy String. 153 00:06:26,800 --> 00:06:29,240 >> Tak więc, oto lista cała masa opcji. 154 00:06:29,240 --> 00:06:32,740 CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 I jest to rodzaj przytłaczające. 156 00:06:34,110 --> 00:06:37,610 I niestety, nieco paradoksalnie do C, 157 00:06:37,610 --> 00:06:40,120 char nie jest to CHAR. 158 00:06:40,120 --> 00:06:44,170 Jeśli zostanie określona w bazie danych że typ danych to CHAR, 159 00:06:44,170 --> 00:06:47,390 to oznacza, że ​​tak, to jest ZNAK, ale jest to jeden lub więcej znaków. 160 00:06:47,390 --> 00:06:49,630 I trzeba określić Ile znaków chcesz. 161 00:06:49,630 --> 00:06:51,636 Więc, co jest typowe długość nazwy użytkownika? 162 00:06:51,636 --> 00:06:52,760 Czy istnieje limit zwykle? 163 00:06:52,760 --> 00:06:53,920 >> PUBLICZNOŚCI: [niesłyszalne] 164 00:06:53,920 --> 00:06:55,050 >> DAVID MALAN: 16 może być? 165 00:06:55,050 --> 00:06:55,990 Coś takiego. 166 00:06:55,990 --> 00:06:57,948 Wiesz, z powrotem w dzień, kiedyś osiem. 167 00:06:57,948 --> 00:07:00,289 Czasami jest to 16, czasami to nawet więcej. 168 00:07:00,289 --> 00:07:02,080 A więc nie ma oznacza, daj mi jeden CHAR. 169 00:07:02,080 --> 00:07:04,730 Oznacza to, że trzeba określić długość pola 170 00:07:04,730 --> 00:07:07,402 a teraz mogę powiedzieć coś w stylu 16. 171 00:07:07,402 --> 00:07:08,610 I jest kompromis tutaj. 172 00:07:08,610 --> 00:07:11,360 Więc zobaczymy za chwilę że oznacza to jedno, 173 00:07:11,360 --> 00:07:14,620 każda nazwa musi być 16 znaków. 174 00:07:14,620 --> 00:07:18,720 Ale zaraz, M-A-L-A-N. Jeśli to moja nazwa użytkownika, a ja tylko za pięć, 175 00:07:18,720 --> 00:07:23,070 co można zaproponować, że baza danych zrobić dla innych 11 znaków 176 00:07:23,070 --> 00:07:24,471 I już zarezerwowane miejsca na? 177 00:07:24,471 --> 00:07:25,220 Co byś zrobił? 178 00:07:25,220 --> 00:07:26,480 >> PUBLICZNOŚCI: [niesłyszalne] 179 00:07:26,480 --> 00:07:27,160 >> DAVID MALAN: Tak, po prostu ich wszystkich zerowy. 180 00:07:27,160 --> 00:07:28,290 Bądź im miejsca. 181 00:07:28,290 --> 00:07:30,816 Ale chyba null, więc dużo zer backslash. 182 00:07:30,816 --> 00:07:33,190 Tak więc z jednej strony mamy teraz upewnić się, że moja nazwa użytkownika 183 00:07:33,190 --> 00:07:34,780 może być nie więcej niż 16 znaków. 184 00:07:34,780 --> 00:07:37,590 I druga strona, która jest że gdybym miał naprawdę długą nazwę 185 00:07:37,590 --> 00:07:39,940 lub chciał naprawdę długi nazwa użytkownika, jak niektórzy z was 186 00:07:39,940 --> 00:07:44,840 faceci mogą mieć w tym college'u lub w Yale.edu, nie można mieć. 187 00:07:44,840 --> 00:07:47,177 I tak w rzeczywistości, jeśli już kiedykolwiek zarejestrowana na stronie 188 00:07:47,177 --> 00:07:49,385 i masz krzyczał mówiąc Twoje hasło jest za długie 189 00:07:49,385 --> 00:07:52,710 lub nazwa użytkownika jest za długa, to po prostu dlatego, programista, kiedy 190 00:07:52,710 --> 00:07:55,500 konfigurując swoją bazę danych, zdecydował, że to pole będzie 191 00:07:55,500 --> 00:07:57,150 nie dłużej niż tej długości będzie. 192 00:07:57,150 --> 00:08:00,580 >> No dobrze, więc co, jeśli przystępujemy do nazwy? 193 00:08:00,580 --> 00:08:05,240 Jak długo należy Nazwa typowa ludzka być? 194 00:08:05,240 --> 00:08:07,492 Jak wiele znaków, 16? 195 00:08:07,492 --> 00:08:09,450 Zgaduję, mogliśmy znaleźć kogoś w tym pokoju 196 00:08:09,450 --> 00:08:13,210 gdzie przez swojego pierwszego plusa ostatniej nazwa jest dłuższa niż 16 znaków. 197 00:08:13,210 --> 00:08:14,850 Więc, co jest lepsze niż to, 17? 198 00:08:14,850 --> 00:08:17,040 18? 199 00:08:17,040 --> 00:08:18,830 25? 200 00:08:18,830 --> 00:08:20,350 Większe? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> PUBLICZNOŚCI: [niesłyszalne] 203 00:08:21,855 --> 00:08:23,700 DAVID MALAN: 5000, o mój Boże. 204 00:08:23,700 --> 00:08:26,309 Tak, to chyba przyzwoity górna granica, powiedzmy. 205 00:08:26,309 --> 00:08:28,350 I tu rodzaju mają aby nawiązać połączenie wyroku. 206 00:08:28,350 --> 00:08:30,400 Podobnie jak, nie ma dobrej odpowiedzi tutaj. 207 00:08:30,400 --> 00:08:32,740 Nieskończony nie jest całkiem możliwe, bo jesteśmy w końcu 208 00:08:32,740 --> 00:08:34,781 będzie have-- jesteśmy zamiar zabraknie pamięci. 209 00:08:34,781 --> 00:08:36,909 Tak, musimy zrobić osąd w pewnym momencie. 210 00:08:36,909 --> 00:08:41,010 >> Bardzo często będzie, na przykład, do use-- i pozwól mi określić CHAR tutaj 211 00:08:41,010 --> 00:08:46,050 jak before-- 255 było dosłownie górna granica tego oprogramowania bazy danych 212 00:08:46,050 --> 00:08:46,700 Lata temu. 213 00:08:46,700 --> 00:08:48,575 I tak, wiele ludzi po prostu powiedzieć, dobrze. 214 00:08:48,575 --> 00:08:49,420 255 jest granica. 215 00:08:49,420 --> 00:08:50,620 Miejmy tylko wykorzystać maksymalnie. 216 00:08:50,620 --> 00:08:51,870 I to jest bardzo śmieszne. 217 00:08:51,870 --> 00:08:55,060 Na przykład, jeśli piszesz czyjeś wymienić na 200 powiększonej znaków, 218 00:08:55,060 --> 00:08:56,140 że trochę śmieszne. 219 00:08:56,140 --> 00:08:59,624 >> Ale należy pamiętać, że ASCII nie jest jedyny system znaków. 220 00:08:59,624 --> 00:09:01,540 I tak zwłaszcza w Wiele języków azjatyckich 221 00:09:01,540 --> 00:09:04,248 gdzie nie ma znaków, nie możemy wyrażenia na klawiszach jak mój USA 222 00:09:04,248 --> 00:09:08,209 Klawiatura, niektóre znaki faktycznie zajmują 16 bitów zamiast osiem bitów. 223 00:09:08,209 --> 00:09:10,250 I tak, to w rzeczywistości Nie wszystko, co jest nieuzasadnione 224 00:09:10,250 --> 00:09:12,250 że potrzebujemy więcej miejsca, jeśli chcemy, aby dopasować 225 00:09:12,250 --> 00:09:16,252 większe znaków niż samym USA centric nich mamy utrzymanych do dyskusji. 226 00:09:16,252 --> 00:09:17,460 Tak więc, musimy niektóre górnej granicy. 227 00:09:17,460 --> 00:09:21,470 Nie wiem, co jest jednym z najlepszych, ale 255 jest ogólnie rozpowszechnione. 228 00:09:21,470 --> 00:09:22,700 25 czuje się na niskim poziomie. 229 00:09:22,700 --> 00:09:23,857 16, 32 czują się na niskim poziomie. 230 00:09:23,857 --> 00:09:25,690 Chciałbym zaważyć na czegoś wyższego. 231 00:09:25,690 --> 00:09:27,330 Ale jest pewien kompromis, jak zawsze. 232 00:09:27,330 --> 00:09:31,902 Co to jest, być może, oczywiste kompromis rezerwowania 255 znaków 233 00:09:31,902 --> 00:09:33,360 wszystkich o nazwie w mojej bazy danych? 234 00:09:33,360 --> 00:09:34,230 >> PUBLICZNOŚCI: [niesłyszalne] 235 00:09:34,230 --> 00:09:34,510 >> DAVID MALAN: Co to jest? 236 00:09:34,510 --> 00:09:35,430 >> PUBLICZNOŚCI: [niesłyszalne] 237 00:09:35,430 --> 00:09:37,138 >> DAVID MALAN: To Dużo pamięci, prawda? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N. Właśnie zmarnowane 250 znaków po prostu do przechowywania moje imię 239 00:09:42,280 --> 00:09:46,000 defensywnie, tylko w przypadku, ktoś w klasie ma bardzo długą nazwę. 240 00:09:46,000 --> 00:09:47,940 To wydaje się niczym nieuzasadnionej kompromis. 241 00:09:47,940 --> 00:09:52,040 >> Tak więc okazuje się, że SQL, ten język bazy danych, 242 00:09:52,040 --> 00:09:55,480 faktycznie obsługuje coś nazywa VARCHAR lub zmiennej CHAR. 243 00:09:55,480 --> 00:09:59,390 I to jest miłe w że umożliwia określenie nie stały 244 00:09:59,390 --> 00:10:01,900 szerokość, lecz zmienna szerokość. 245 00:10:01,900 --> 00:10:05,060 A bardziej konkretnie, Maksymalna szerokość pola. 246 00:10:05,060 --> 00:10:08,901 Tak, oznacza to, że nazwa może nie więcej niż 250 znaków, 247 00:10:08,901 --> 00:10:10,150 ale może to na pewno mniej. 248 00:10:10,150 --> 00:10:11,733 A baza danych ma być inteligentny. 249 00:10:11,733 --> 00:10:14,860 Jeśli nie umieścić w M-A-L-A-N, to będzie używać tylko pięć, 250 00:10:14,860 --> 00:10:18,120 może sześć bajtów jak tylną znak null, 251 00:10:18,120 --> 00:10:23,330 i nie wydać dodatkowe 249 lub 250 bajtów niepotrzebnie. 252 00:10:23,330 --> 00:10:27,380 >> Tak, to wydaje się, że powinienem Rozpoczęliśmy z tej historii. 253 00:10:27,380 --> 00:10:29,140 Ale zawsze jest kompromis. 254 00:10:29,140 --> 00:10:33,024 Tak więc, z jednej strony, nazwa użytkownika Mam podano być zakodowana w wieku 16, 255 00:10:33,024 --> 00:10:34,940 a może to nie było prawo połączenia, może to 256 00:10:34,940 --> 00:10:40,040 jest, ale dlaczego nie korzystać Varchars na wszystko? 257 00:10:40,040 --> 00:10:42,020 >> Istnieje on powodu. 258 00:10:42,020 --> 00:10:46,200 Dlaczego nie skorzystać varchars dla każdego pola którego długość nie wiesz z góry 259 00:10:46,200 --> 00:10:48,180 jeśli wydaje się być wielka rzecz, prawda? 260 00:10:48,180 --> 00:10:50,482 Używaj tylko tyle miejsca co trzeba się do tego limitu? 261 00:10:50,482 --> 00:10:51,271 >> PUBLICZNOŚCI: Wolniej. 262 00:10:51,271 --> 00:10:52,146 DAVID MALAN: pisowni? 263 00:10:52,146 --> 00:10:53,120 PUBLICZNOŚCI: Sprawia, że ​​wolniej? 264 00:10:53,120 --> 00:10:53,970 DAVID MALAN: Och, to wolniej. 265 00:10:53,970 --> 00:10:55,720 Dobra, to prawie zawsze odpowiedź, szczerze mówiąc. 266 00:10:55,720 --> 00:10:56,520 Jak, co to jest kompromis? 267 00:10:56,520 --> 00:10:58,570 To albo kosztuje więcej miejsca czy to kosztuje więcej czasu. 268 00:10:58,570 --> 00:11:00,111 Tak więc, w tym przypadku, może być dłuższy. 269 00:11:00,111 --> 00:11:00,920 Czemu? 270 00:11:00,920 --> 00:11:05,830 >> PUBLICZNOŚCI: [niesłyszalne] określenia [niesłyszalne]. 271 00:11:05,830 --> 00:11:06,640 >> DAVID MALAN: Dobra. 272 00:11:06,640 --> 00:11:09,670 Więc, może pamiętacie z nawet PSED5, grając z podejściem 273 00:11:09,670 --> 00:11:12,750 do słownika, jeśli trzeba przydzielić pamięci dynamicznie lub utrzymać 274 00:11:12,750 --> 00:11:14,630 rośnie bufor, że w rzeczywistości może być powolne. 275 00:11:14,630 --> 00:11:16,963 Jeśli masz zadzwonić malloc pod maską, a może 276 00:11:16,963 --> 00:11:19,610 to co robi MySQL, więc pewnie, że może być. 277 00:11:19,610 --> 00:11:22,430 A jeśli uważasz, że sposób z powrotem do PSet-- lub nawet 278 00:11:22,430 --> 00:11:26,340 tygodni dwa, kiedy robili takie rzeczy jak przeszukiwanie binarne lub nawet przeszukiwanie liniowe, 279 00:11:26,340 --> 00:11:30,690 jedna z miłych rzeczy o każdym słowie w bazie danych lub w każdym słowie w kolumnie 280 00:11:30,690 --> 00:11:33,690 być dokładnie takiej samej długości, nawet jeśli cała masa tych znaków 281 00:11:33,690 --> 00:11:37,390 są puste, jest to, że można użyć o dostępie swobodnym na danych, prawda? 282 00:11:37,390 --> 00:11:40,310 >> Jeśli wiesz, że każdy Słowo to 16 znaków z dala, 283 00:11:40,310 --> 00:11:46,460 można użyć arytmetyki wskaźników, tak aby mówić i przejść do nas 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 a może po prostu skoczyć natychmiast za pomocą arytmetyki 285 00:11:49,589 --> 00:11:51,130 do każdego z tych słów w swojej bazie danych. 286 00:11:51,130 --> 00:11:54,280 Natomiast jeśli jest to VARCHAR, co ty, zamiast zrobić? 287 00:11:54,280 --> 00:11:55,960 >> [Dzwoni telefon] 288 00:11:55,960 --> 00:11:58,680 >> Jeśli jest to VARCHAR, ty nie można korzystać z dostępu losowego. 289 00:11:58,680 --> 00:12:01,341 Co trzeba szukać lub zrobić? 290 00:12:01,341 --> 00:12:01,840 Tak? 291 00:12:01,840 --> 00:12:03,240 >> PUBLICZNOŚCI: [niesłyszalne] 292 00:12:03,240 --> 00:12:04,310 >> DAVID MALAN: Look przez whole-- śladu 293 00:12:04,310 --> 00:12:06,518 całej listy patrząc za co, najbardziej prawdopodobne? 294 00:12:06,518 --> 00:12:08,356 Jaki rodzaj szczególnej wartości? 295 00:12:08,356 --> 00:12:09,230 PUBLICZNOŚCI: [niesłyszalne] 296 00:12:09,230 --> 00:12:11,105 DAVID MALAN: Szukam dla zerowych terminatorów 297 00:12:11,105 --> 00:12:13,637 które wyznaczają oddzielenie słowa. 298 00:12:13,637 --> 00:12:15,720 Więc jeszcze raz, to kompromis, a nie ma dobrej odpowiedzi. 299 00:12:15,720 --> 00:12:18,380 Ale to gdzie, w szczególności kiedy użytkownicy dostać się do być wiele 300 00:12:18,380 --> 00:12:21,700 a obciążenie serwerów, liczba osób korzystających dostaje wysokie, 301 00:12:21,700 --> 00:12:23,650 są to właściwie nieszablonowe decyzje. 302 00:12:23,650 --> 00:12:26,640 Tak więc, możemy zostawić tych, jak to, ale niech przewinąć w dół na prawo 303 00:12:26,640 --> 00:12:27,332 tutaj. 304 00:12:27,332 --> 00:12:30,290 Teraz jest kilka kolumn gdzie musimy wykonać połączenie wyroku. 305 00:12:30,290 --> 00:12:35,170 Czy jest sens, aby umożliwić użytkownika nazwa, nazwa użytkownika lub użytkownika 306 00:12:35,170 --> 00:12:36,370 Nazwa, aby być null? 307 00:12:36,370 --> 00:12:37,610 Oznacza to, że po prostu puste. 308 00:12:37,610 --> 00:12:40,360 Czuje się trochę bezsensowne, więc jestem nie będzie sprawdzić te pola. 309 00:12:40,360 --> 00:12:42,670 Ale okazuje się w sposób bazy danych, można powiedzieć, 310 00:12:42,670 --> 00:12:44,620 ktoś może mieć ewentualnie tę wartość. 311 00:12:44,620 --> 00:12:47,180 Ta kolumna nie ma faktycznie tam być. 312 00:12:47,180 --> 00:12:48,570 >> Teraz, jest to menu rozwijane. 313 00:12:48,570 --> 00:12:50,810 I zauważyć, nadal jestem tam w pierwszym rzędzie, 314 00:12:50,810 --> 00:12:52,520 więc mówię teraz o nazwę użytkownika. 315 00:12:52,520 --> 00:12:56,290 I okazuje się, że w bazie danych, w przeciwieństwie do zwykłego prostego arkusza kalkulacyjnego, 316 00:12:56,290 --> 00:12:58,520 posiada zaawansowane funkcje zwane indeksy. 317 00:12:58,520 --> 00:13:02,600 I indeks jest sposobem mówienia Baza z góry, że I ludzkiego 318 00:13:02,600 --> 00:13:03,900 jestem mądrzejszy od ciebie. 319 00:13:03,900 --> 00:13:10,430 >> Wiem, jakie rodzaje zapytań, wybierz lub wstawić lub usunąć lub aktualizacji, 320 00:13:10,430 --> 00:13:13,182 że mój kod się skończy się robi w tej bazie danych. 321 00:13:13,182 --> 00:13:14,390 Chcę czytać dużo danych. 322 00:13:14,390 --> 00:13:15,681 Chcę wstawić wiele danych. 323 00:13:15,681 --> 00:13:17,530 Chcę nieustannie usunąć wiele danych. 324 00:13:17,530 --> 00:13:21,520 Jeśli wiem, że będę dostępu, jak pole Nazwa użytkownika dużo, 325 00:13:21,520 --> 00:13:24,770 Mogę zapobiegawczo powiedzieć bazy danych, wiem więcej niż ty, 326 00:13:24,770 --> 00:13:29,220 i chcę, aby dekret, że zalecana indeksu to pole. 327 00:13:29,220 --> 00:13:33,200 Gdzie indeksowania pole lub kolumnę oznacza, że ​​baza danych z góry 328 00:13:33,200 --> 00:13:37,040 powinien pożyczyć kilka pomysłów, jak, Tydzień cztery i pięć i sześć z CS50 329 00:13:37,040 --> 00:13:39,240 i rzeczywiście budować coś poszukiwania binarnego 330 00:13:39,240 --> 00:13:41,560 drzewa lub coś ogólnie nazywa się drzewo B 331 00:13:41,560 --> 00:13:43,410 że będzie się uczyć w klasie, jak CS124 332 00:13:43,410 --> 00:13:46,710 na Harvardzie, klasa algorytmów, lub dowolną liczbę innych miejscach. 333 00:13:46,710 --> 00:13:49,570 >> Baza danych i inteligentna Ludzie, którzy go wdrażane 334 00:13:49,570 --> 00:13:53,880 będzie dowiedzieć się, jak przechowywać że tabela informacji 335 00:13:53,880 --> 00:13:57,061 w pamięci, aby wyszukiwanie i inne operacje są super szybko. 336 00:13:57,061 --> 00:13:58,060 Nie musisz tego robić. 337 00:13:58,060 --> 00:14:00,640 Nie musisz do realizacji przeszukiwanie liniowe lub binarne wyszukiwania 338 00:14:00,640 --> 00:14:03,300 lub połączyć rodzaju lub wybór sortowanie, nic z tego. 339 00:14:03,300 --> 00:14:06,590 Baza danych zrobi to za Ciebie, jeśli powiesz to zapobiegawczo do indeksu to pole. 340 00:14:06,590 --> 00:14:09,100 >> I widać też, nie ma niektóre inne cechy 341 00:14:09,100 --> 00:14:11,010 możemy powiedzieć, baza danych do wyegzekwowania. 342 00:14:11,010 --> 00:14:16,431 Co to może oznaczać, jeśli wybiorę Unique z tego menu, po prostu intuicyjnie? 343 00:14:16,431 --> 00:14:16,930 Tak? 344 00:14:16,930 --> 00:14:17,889 >> PUBLICZNOŚCI: [niesłyszalne] 345 00:14:17,889 --> 00:14:19,930 DAVID MALAN: Tak, nazwa musi być unikalna. 346 00:14:19,930 --> 00:14:23,330 Czy to dobrze, czy źle dla bazy danych, na stronie z użytkownikami? 347 00:14:23,330 --> 00:14:24,965 Powinny być unikalne nazwy użytkownika? 348 00:14:24,965 --> 00:14:25,880 Tak, pewnie. 349 00:14:25,880 --> 00:14:27,800 Jeśli to, co pola używamy do logowania się, 350 00:14:27,800 --> 00:14:31,867 tak naprawdę nie chcą ludzi mających ten sam dotyk lub taka sama nazwa. 351 00:14:31,867 --> 00:14:33,700 Tak, możemy mieć Baza egzekwowania, że ​​tak 352 00:14:33,700 --> 00:14:37,880 że teraz w moim kodu PHP lub dowolnym języku, Nie mam do, na przykład, sprawdzić 353 00:14:37,880 --> 00:14:41,490 zawsze robi to nazwę użytkownika istnieje zanim niech ktoś zarejestrować? 354 00:14:41,490 --> 00:14:46,690 Baza danych nie pozwoli dwie osoby o nazwie David lub Malans zarejestrować się w tym przypadku. 355 00:14:46,690 --> 00:14:50,030 >> I tak na marginesie, chociaż Menu pozwala wybrać tylko jeden, 356 00:14:50,030 --> 00:14:54,550 unikatowy indeks jest jeden, który jest indeksowane dla super szybkich wyników, 357 00:14:54,550 --> 00:14:56,100 ale również wymusza unikalność. 358 00:14:56,100 --> 00:14:58,850 I będziemy wracać do tego, co Pozostałe dwie myśli za chwilę. 359 00:14:58,850 --> 00:15:00,930 Tymczasem, jeśli pójdę do mój drugi rząd, który 360 00:15:00,930 --> 00:15:06,230 to nazwa użytkownika, należy określić że nazwa powinna być wyjątkowa? 361 00:15:06,230 --> 00:15:09,550 Nie, dlatego, że mogłem na pewno have-- nie ma dwóch David 362 00:15:09,550 --> 00:15:11,050 Malans w tym pokoju, najprawdopodobniej. 363 00:15:11,050 --> 00:15:14,290 Ale jeśli mamy wybrać inną nazwę, możemy niewątpliwie kolizji. 364 00:15:14,290 --> 00:15:16,130 >> Pomyśl hash tabele i tym podobne. 365 00:15:16,130 --> 00:15:18,604 Tak, to na pewno nie chcesz aby pole Nazwa wyjątkowy. 366 00:15:18,604 --> 00:15:21,270 Tak, jesteśmy po prostu zostawię że w desce rozdzielczej, tablicy rozdzielczej, tablicy rozdzielczej, nic. 367 00:15:21,270 --> 00:15:22,660 I mam zamiar zostawić wszystko sam. 368 00:15:22,660 --> 00:15:25,035 W istocie, większość z tych pól nie musimy się przejmować. 369 00:15:25,035 --> 00:15:27,830 A kiedy jestem gotowy, aby zapisać to, Jeśli Internet współpracuje, 370 00:15:27,830 --> 00:15:35,032 I kliknij przycisk Zapisz, i bardzo, bardzo, bardzo powoli robi bazie zbawieni. 371 00:15:35,032 --> 00:15:37,240 A teraz jestem z powrotem do tego Interfejs, który co prawda, 372 00:15:37,240 --> 00:15:38,680 jest przytłaczająca na pierwszy rzut oka. 373 00:15:38,680 --> 00:15:42,450 Ale wszystko co mam zrobić, to kliknąć na Użytkowników słowo w lewym górnym rogu. 374 00:15:42,450 --> 00:15:47,630 Mam zamiar udać się tutaj, kliknij Użytkowników, a Domyślnie, 375 00:15:47,630 --> 00:15:50,180 wykonał jakiś SQL, ale więcej o tym za chwilę. 376 00:15:50,180 --> 00:15:52,654 Oto tylko podsumowanie tego, co zrobiłem. 377 00:15:52,654 --> 00:15:55,320 I nie martwić się, że zobaczysz wspomnieć łaciny i szwedzkim tutaj. 378 00:15:55,320 --> 00:16:00,490 To tylko domyślny ustawienia, ponieważ MySQL pierwotnie, 379 00:16:00,490 --> 00:16:04,000 lub PHP MyAdmin, jeden z dwóch się być napisany przez niektórych Szwedów. 380 00:16:04,000 --> 00:16:06,100 Ale to bez znaczenia w naszym przypadku tutaj. 381 00:16:06,100 --> 00:16:08,280 >> W porządku, więc dlaczego jest wszystko to interesujące? 382 00:16:08,280 --> 00:16:13,050 Okazuje się, mogę wstawić dane do bazy danych przez pisanie kodu. 383 00:16:13,050 --> 00:16:15,940 A ja śmiało i w moim pliku tutaj, jestem 384 00:16:15,940 --> 00:16:19,000 zamiar iść do przodu i udawać, to jest połączone z bazą danych, która 385 00:16:19,000 --> 00:16:23,040 Nie jest w tym momencie, ale będzie się, gdy mamy do problemu ustawić siedem. 386 00:16:23,040 --> 00:16:25,640 I mam zamiar iść do przodu i wykonywać funkcję o nazwie kwerendy, 387 00:16:25,640 --> 00:16:28,730 które dajemy ci problemu zestaw siedem jest kod dystrybucji, które 388 00:16:28,730 --> 00:16:31,490 ma co najmniej jeden argument, która jest po prostu ciągiem. 389 00:16:31,490 --> 00:16:33,460 Ciąg kodu SQL. 390 00:16:33,460 --> 00:16:36,700 Tak, masz zamiar dowiedzieć się, jak Napisać Structured Query Language. 391 00:16:36,700 --> 00:16:41,270 >> Jeśli chcę, aby wstawić nowy wiersz do mojego bazy danych, bo ktoś zgłosił 392 00:16:41,270 --> 00:16:47,600 forma do mojego kodu, chciałbym dosłownie Napisać INSERT INTO użytkowników następujące 393 00:16:47,600 --> 00:16:52,800 pola: Nazwa użytkownika, przecinek, nazwy, wartości, 394 00:16:52,800 --> 00:16:57,480 i teraz trzeba wstawić coś jak Malan, i środki, 395 00:16:57,480 --> 00:17:01,490 koniec cytatu 'David Malan. I teraz nawet dla osób niezaznajomionych z SQL, 396 00:17:01,490 --> 00:17:07,830 Dlatego używam apostrofów wewnątrz tego ciągu zielony? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Co może być powodem tutaj? 399 00:17:13,040 --> 00:17:14,609 >> Zauważ, że jestem co-Margaritę dwa języki. 400 00:17:14,609 --> 00:17:18,099 Zapytanie to funkcja PHP, ale to wymaga argumentu. 401 00:17:18,099 --> 00:17:21,740 I ten argument musi samo w sobie napisane w innym języku nazwie 402 00:17:21,740 --> 00:17:23,500 SQL Structured Query Language. 403 00:17:23,500 --> 00:17:27,940 Tak, wszystko, co właśnie zaznaczony tutaj 404 00:17:27,940 --> 00:17:30,380 jest to język o nazwie SQL. 405 00:17:30,380 --> 00:17:36,290 Więc, o co chodzi z cudzysłowu, po prostu jako szybki test dla pewności? 406 00:17:36,290 --> 00:17:37,324 Śmiało. 407 00:17:37,324 --> 00:17:37,990 Są ciągi. 408 00:17:37,990 --> 00:17:41,590 Tak, cytuję, koniec cytatu Malan i cytat, koniec cytatu David Malan są łańcuchami. 409 00:17:41,590 --> 00:17:45,210 A teraz po prostu myśleć intuicyjnie, wiedząc, co wiesz o C i PHP, 410 00:17:45,210 --> 00:17:50,220 dlaczego nie zrobić to, co zwykle Używane cudzysłowy dla strun? 411 00:17:50,220 --> 00:17:52,310 Dlaczego nie chcesz tego robić? 412 00:17:52,310 --> 00:17:52,810 Tak? 413 00:17:52,810 --> 00:17:53,685 >> PUBLICZNOŚCI: [niesłyszalne] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 DAVID MALAN: Dokładnie. 416 00:17:57,570 --> 00:17:59,653 Ponieważ już używam cudzysłowy na drodze 417 00:17:59,653 --> 00:18:01,929 poza argumentem do funkcji PHP, 418 00:18:01,929 --> 00:18:03,470 Chciałbym po prostu mylić tłumacza. 419 00:18:03,470 --> 00:18:04,860 To nie będzie wiedział, czy te idą w parze? 420 00:18:04,860 --> 00:18:05,735 Czy te idą w parze? 421 00:18:05,735 --> 00:18:06,810 Czy te idą w parze? 422 00:18:06,810 --> 00:18:08,070 Tak więc, na przemian, a nie. 423 00:18:08,070 --> 00:18:11,784 >> Albo mogłem zrobić coś takiego, cytat lub lewy ukośnik odwrotny ukośnik cytat. 424 00:18:11,784 --> 00:18:14,200 Szczerze mówiąc, to po prostu zaczyna uzyskać bardzo nieczytelny i brzydkie. 425 00:18:14,200 --> 00:18:16,790 Ale to by osiągnąć ten sam wynik, jak również. 426 00:18:16,790 --> 00:18:19,760 >> Tak, gdybym miał wykonać to Zapytanie teraz zobaczmy, co się stanie. 427 00:18:19,760 --> 00:18:22,740 Mam zamiar iść do przodu i teraz raczej niż wykonanie kodu PHP, który 428 00:18:22,740 --> 00:18:24,610 to gdzie można grać w problemu ustawić siedem, 429 00:18:24,610 --> 00:18:27,200 Mam zamiar iść do PHP zamiast MyAdmin. 430 00:18:27,200 --> 00:18:29,770 A ja ręcznie dzieje , aby przejść do zakładki SQL, 431 00:18:29,770 --> 00:18:31,580 i pozwól mi przybliżyć interfejsu. 432 00:18:31,580 --> 00:18:34,007 I mam zamiar wkleić rzecz, po prostu wpisane. 433 00:18:34,007 --> 00:18:36,090 I kodowanie kolor ma zmienił trochę teraz, 434 00:18:36,090 --> 00:18:38,750 tylko dlatego, że formaty programów rzeczy trochę inaczej. 435 00:18:38,750 --> 00:18:41,960 Ale zauważ, że wszystko zrobiłem to mówiłem, wstawić do użytkowników. 436 00:18:41,960 --> 00:18:45,790 Mam określone, a następnie, w przecinkami oddzielone nawiasach lista dwa 437 00:18:45,790 --> 00:18:48,850 Pola, które chcę wstawić, i czasu mam dosłownie powiedział wartości 438 00:18:48,850 --> 00:18:51,510 a następnie inne paren, a następnie te dwie wartości 439 00:18:51,510 --> 00:18:53,520 Chcę plug-in, a teraz na dokładkę, 440 00:18:53,520 --> 00:18:55,010 Powiem średnik na końcu. 441 00:18:55,010 --> 00:18:56,570 Tak więc, nie jest C. Nie jest php. 442 00:18:56,570 --> 00:18:59,970 To jest teraz SQL, a ja wklejeniem w ten interfejs WWW, który jest 443 00:18:59,970 --> 00:19:02,710 po prostu się do mnie, pozwól, jak tylko kliknij przycisk Przejdź, 444 00:19:02,710 --> 00:19:08,060 wykonanie tej kwerendy w bazie danych działa wewnątrz CS50 IDE. 445 00:19:08,060 --> 00:19:09,470 >> Więc to jest dobre. 446 00:19:09,470 --> 00:19:12,520 Uwaga, powiedział jeden wiersz włożona, udał się super szybko, 447 00:19:12,520 --> 00:19:15,190 0,0054 sekundy wstawić te dane. 448 00:19:15,190 --> 00:19:16,610 Tak, to brzmi całkiem zdrowe. 449 00:19:16,610 --> 00:19:19,350 Jest sformatowany mojej kwerendy dla mnie tutaj tylko po to, by go zobaczyć 450 00:19:19,350 --> 00:19:21,730 w rodzaju kolorami wersji. 451 00:19:21,730 --> 00:19:24,540 Ale teraz, gdy klikam Ludzie, zauważysz, że nawet 452 00:19:24,540 --> 00:19:29,070 choć jest dużo bałaganu na ekran, moja tabela ma teraz dwa rzędy. 453 00:19:29,070 --> 00:19:30,700 >> Więc, pozwól mi iść do przodu i zrobić kolejny. 454 00:19:30,700 --> 00:19:33,760 Zamiast tego, pozwól mi przejdź do zakładki SQL ponownie. 455 00:19:33,760 --> 00:19:40,723 I tym razem będę wstawiać coś takiego Rob i jego nazwa będzie Rob Bowden. 456 00:19:40,723 --> 00:19:42,330 Bowden. 457 00:19:42,330 --> 00:19:44,040 Załóżmy, kliknij przycisk Zapisz. 458 00:19:44,040 --> 00:19:46,140 Ups, a Go. 459 00:19:46,140 --> 00:19:48,890 >> Kliknij przycisk Przeglądaj, znowu, i teraz zauważyć, mam dwa wiersze. 460 00:19:48,890 --> 00:19:52,390 Tak, to jest tylko sposób bardziej złożony Sposób otwierania arkuszy kalkulacyjnych Google 461 00:19:52,390 --> 00:19:54,010 i po prostu wpisując wiersz do kolumny. 462 00:19:54,010 --> 00:19:57,070 Ale to, co jest kluczem jest to, że teraz mamy składni 463 00:19:57,070 --> 00:20:00,220 z którym pisanie kodu, tak aby ostatecznie mogliśmy rzeczywiście 464 00:20:00,220 --> 00:20:01,790 zrobić kilka i to. 465 00:20:01,790 --> 00:20:05,380 Przypomnijmy, obsługującym PHP zmienne globalne. Super 466 00:20:05,380 --> 00:20:08,415 >> Co jest w środku dolara znak podkreślenia GET w PHP? 467 00:20:08,415 --> 00:20:10,290 Przyjrzeliśmy w jednym lub dwa proste przykłady. 468 00:20:10,290 --> 00:20:15,640 A w PSet6, przypominam masz komentarzy Kropka PHP, który używa tej zmiennej. 469 00:20:15,640 --> 00:20:17,870 Co się dzieje w środku? 470 00:20:17,870 --> 00:20:21,015 Albo co to jest? 471 00:20:21,015 --> 00:20:22,522 Trochę głośniej. 472 00:20:22,522 --> 00:20:23,790 >> PUBLICZNOŚCI: [niesłyszalne] 473 00:20:23,790 --> 00:20:25,030 >> DAVID MALAN: To śnieg nasienie tablicy, która 474 00:20:25,030 --> 00:20:27,714 jest tylko fantazyjny sposób na powiedzenie Tablica ma par wartości klucza. 475 00:20:27,714 --> 00:20:28,880 A klawisze nie są numeryczne. 476 00:20:28,880 --> 00:20:30,420 Są słowa lub łańcuchy. 477 00:20:30,420 --> 00:20:32,750 A konkretnie, co są te pary wartość klucza? 478 00:20:32,750 --> 00:20:35,110 Skąd oni pochodzą? 479 00:20:35,110 --> 00:20:35,620 Przepraszam? 480 00:20:35,620 --> 00:20:36,994 >> PUBLICZNOŚCI: [niesłyszalne] 481 00:20:36,994 --> 00:20:37,660 DAVID MALAN: Nie? 482 00:20:37,660 --> 00:20:40,700 Gdzie te klucza pary wartości pochodzą? 483 00:20:40,700 --> 00:20:42,490 Powtórz? 484 00:20:42,490 --> 00:20:44,610 Jeszcze raz? 485 00:20:44,610 --> 00:20:46,472 Czy jestem jedynym, coś słuchu? 486 00:20:46,472 --> 00:20:47,810 >> [Śmiech] 487 00:20:47,810 --> 00:20:49,042 >> To prawda, tak? 488 00:20:49,042 --> 00:20:50,435 >> PUBLICZNOŚCI: [niesłyszalne] 489 00:20:50,435 --> 00:20:52,560 DAVID MALAN: Tak, pochodzą z łańcucha zapytania. 490 00:20:52,560 --> 00:20:55,380 Tak więc, jeśli do tyłu w czasie kiedy graliśmy z Google 491 00:20:55,380 --> 00:20:59,600 i mamy już do Google.com kreską wyszukiwarka znak zapytania q równa kotów, 492 00:20:59,600 --> 00:21:03,550 gdybym naciśnij Enter i jeśli Google zostały wprowadzone w PHP, 493 00:21:03,550 --> 00:21:07,017 Kod PHP, że Google napisał będzie miała dostęp do dolara 494 00:21:07,017 --> 00:21:11,600 podkreślenia dostać się do środka, z których Jest klucza o nazwie Q a wartość 495 00:21:11,600 --> 00:21:17,680 zwane koty, które może następnie wykorzystać użyty do wyszukiwania w rzeczywistego z. 496 00:21:17,680 --> 00:21:20,860 >> Tak więc, w rzeczywistości, co mam zamiar teraz zrobić, to wrócić do mojego kodu PHP 497 00:21:20,860 --> 00:21:23,140 że będziesz znów zobaczyć więcej w PSet7. 498 00:21:23,140 --> 00:21:25,440 I zamiast podłączania w ciężkich kodujących wartości, które 499 00:21:25,440 --> 00:21:27,630 nie wydaje się niczym bardzo dynamiczna strona internetowa, 500 00:21:27,630 --> 00:21:30,680 Mam zamiar dać wam teaser jaki jest twój rzeczywisty kod zrobi. 501 00:21:30,680 --> 00:21:32,854 Będzie można umieścić w dwóch znaki zapytania w ten sposób. 502 00:21:32,854 --> 00:21:34,270 Nie wiem, co nazwa użytkownika jest. 503 00:21:34,270 --> 00:21:37,390 Nie wiem, co się Nazwa będzie, 504 00:21:37,390 --> 00:21:39,470 ale wiem, mogę je dynamicznie. 505 00:21:39,470 --> 00:21:43,420 >> Tak więc, jeśli kod piszemy teraz jest kod działa na serwerach Google, 506 00:21:43,420 --> 00:21:46,940 lub jeśli jest to cześć kropka PHP, który pochodzi z PSet6, 507 00:21:46,940 --> 00:21:48,650 Zamierzam przejść do funkcja zapytania 508 00:21:48,650 --> 00:21:51,450 podobnie jak printf, dwa inne argumenty. 509 00:21:51,450 --> 00:21:57,120 GET, cytuję, koniec cytatu podając nazwę użytkownika, i GET, cytuję, koniec cytatu imię. 510 00:21:57,120 --> 00:22:00,720 A teraz, zauważył, co Ogólna struktura jest tutaj. 511 00:22:00,720 --> 00:22:03,320 Mam na lewo strony połączenia, 512 00:22:03,320 --> 00:22:05,480 funkcja ta nazywa kwerendy w PHP. 513 00:22:05,480 --> 00:22:08,160 I jeszcze jako pierwszy Argument, tylko ciąg tekstu. 514 00:22:08,160 --> 00:22:11,000 >> Ale to ciąg tekstu jest napisane w języku nazwie SQL. 515 00:22:11,000 --> 00:22:12,616 I szczerze mówiąc, nie jest to duży język. 516 00:22:12,616 --> 00:22:14,990 Jesteśmy tylko będziemy mówić o formalnie dziś, naprawdę. 517 00:22:14,990 --> 00:22:17,031 A następnie w problemu ustawić siedem, jest stosunkowo 518 00:22:17,031 --> 00:22:18,800 kilka cech, że jesteśmy zamierza wykorzystać. 519 00:22:18,800 --> 00:22:22,530 Znaki zapytania, choć myśli podłączyć wartość tu i podłączyć inną wartość 520 00:22:22,530 --> 00:22:23,130 tutaj. 521 00:22:23,130 --> 00:22:26,010 Oraz informacja, co mam pominąć z całego quote-- cholera 522 00:22:26,010 --> 00:22:30,470 it-- wokół cytatu oznacza to czas. 523 00:22:30,470 --> 00:22:34,930 Mam pominięte cytat Znaki wokół znakiem zapytania, 524 00:22:34,930 --> 00:22:36,410 Niestety, tym razem. 525 00:22:36,410 --> 00:22:38,870 >> Więc, co jest miłe o tym znak zapytania funkcja, która 526 00:22:38,870 --> 00:22:42,830 Dąży do wspierania PHP, Ruby i Python i inne języki, 527 00:22:42,830 --> 00:22:45,730 oznacza to po prostu wtyczkę w niektórych cenią tu i wiesz co? 528 00:22:45,730 --> 00:22:48,300 Dowiedzieć się, czy użyć apostrofy lub cudzysłowy. 529 00:22:48,300 --> 00:22:50,966 Nie przeszkadza mi z tymi, nieciekawe intelektualnie szczegóły. 530 00:22:50,966 --> 00:22:53,780 Ale upewnij się, że jest to prawidłowe tak, że mój kod jest ostatecznie 531 00:22:53,780 --> 00:22:57,010 operacyjne i bezpieczne, które będzie mieć znaczenie przed długo. 532 00:22:57,010 --> 00:23:00,460 >> Teraz, jak wiele argumentów w sumie, po prostu być jasne, jest funkcja podejmowanie zapytania? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Każdy, kto chce głosować na więcej niż dwóch? 535 00:23:07,581 --> 00:23:08,080 Trzy? 536 00:23:08,080 --> 00:23:10,001 Jasne, czemu? 537 00:23:10,001 --> 00:23:10,920 Dlaczego trzy? 538 00:23:10,920 --> 00:23:12,305 >> PUBLICZNOŚCI: [niesłyszalne] 539 00:23:12,305 --> 00:23:13,180 DAVID MALAN: Dokładnie. 540 00:23:13,180 --> 00:23:14,610 Pierwsza część jest łańcuch. 541 00:23:14,610 --> 00:23:18,640 Drugim argumentem jest znak dolara podkreślenia GET wspornik nazwę użytkownika. 542 00:23:18,640 --> 00:23:21,950 I trzeci argument jest samo, ale tylko nazwa. 543 00:23:21,950 --> 00:23:24,590 Tak więc, innymi słowy, obecnie gdybym miał formularz internetowy 544 00:23:24,590 --> 00:23:27,149 że musiał pól tekstowych, jeden o nazwę użytkownika użytkownika, 545 00:23:27,149 --> 00:23:29,690 jeden na swoje nazwisko, po prostu jak można zobaczyć na stronie internetowej 546 00:23:29,690 --> 00:23:32,120 podczas rejestracji niektóre strony internetowej, to potęga 547 00:23:32,120 --> 00:23:35,450 jest kod na tylnym końcu, że faktycznie robi wprowadzenie teraz 548 00:23:35,450 --> 00:23:37,220 w bazie danych. 549 00:23:37,220 --> 00:23:40,870 >> Teraz natomiast, niech szybko do przodu. 550 00:23:40,870 --> 00:23:43,840 Załóżmy, że użytkownik jest teraz zalogowaniu i chcesz 551 00:23:43,840 --> 00:23:48,860 napisać kod PHP, który sprawdza, czy osoba, która jest po prostu zalogowany 552 00:23:48,860 --> 00:23:52,250 jest w rzeczywistości użytkownik, możesz używać dość prostą składnię. 553 00:23:52,250 --> 00:23:55,832 Można powiedzieć, SELECT, powiedzmy, gwiazda, gdzie gwiazdka oznacza wszystko. 554 00:23:55,832 --> 00:23:57,540 Nie wiem, co mam chcą, więc daj mi 555 00:23:57,540 --> 00:24:01,585 wszystkie kolumny z tabeli nazywa użytkownicy gdzie, i to jest miłe. 556 00:24:01,585 --> 00:24:03,710 Wybierz obsługuje co nazywa się predykat, który jest 557 00:24:03,710 --> 00:24:06,630 jak sposób zakwalifikowania co chcesz. 558 00:24:06,630 --> 00:24:10,590 Gdzie nazwa_użytkownika równa cytat, koniec cytatu Malan. 559 00:24:10,590 --> 00:24:13,680 Więc i tu, mam wbudowany wewnątrz argumentu 560 00:24:13,680 --> 00:24:16,110 do funkcji PHP, linii kodu SQL. 561 00:24:16,110 --> 00:24:18,680 I że kod SQL to Czas jest dosłownie dzieje 562 00:24:18,680 --> 00:24:21,790 aby szukać środki, koniec cytatu Malan. 563 00:24:21,790 --> 00:24:24,420 >> Teraz to nie jest wszystko, co użyteczne, więc mam zamiar pominąć, że 564 00:24:24,420 --> 00:24:28,650 i mam zamiar odłożyć Ta porada z Brady, i iść 565 00:24:28,650 --> 00:24:30,990 i plug-in zamiast znak tutaj pytanie. 566 00:24:30,990 --> 00:24:33,290 Tak, żeby była jasność, co Należy mój drugi argument 567 00:24:33,290 --> 00:24:37,480 być, jeśli ktoś po prostu zalogować się i ja Aby sprawdzić, czy on jest w rzeczywistości 568 00:24:37,480 --> 00:24:39,265 użytkownik? 569 00:24:39,265 --> 00:24:40,140 PUBLICZNOŚCI: [niesłyszalne] 570 00:24:40,140 --> 00:24:40,890 DAVID MALAN: Tak. 571 00:24:40,890 --> 00:24:44,120 Słyszę Znak dolara podkreślenia Get Quote, koniec cytatu nazwę użytkownika. 572 00:24:44,120 --> 00:24:50,040 I że należy powrócić do mnie żadnym z wierszy w mojej bazie danych 573 00:24:50,040 --> 00:24:51,986 które mają nazwę użytkownika Malan. 574 00:24:51,986 --> 00:24:54,860 Teraz mam nadzieję, mam zamiar wrócić zero, jeśli nigdy nie Malan tu był, 575 00:24:54,860 --> 00:24:56,290 lub jeden, jeśli ma. 576 00:24:56,290 --> 00:24:59,026 Nie powinienem wrócić dwa lub trzy lub cztery. 577 00:24:59,026 --> 00:24:59,526 Czemu? 578 00:24:59,526 --> 00:25:00,220 >> PUBLICZNOŚCI: [niesłyszalne] 579 00:25:00,220 --> 00:25:01,120 >> DAVID MALAN: Powiedziałem wyjątkowy, prawda? 580 00:25:01,120 --> 00:25:01,750 Prostego powodu. 581 00:25:01,750 --> 00:25:04,030 Bo powiedział to musi być unikalny, tak logicznie, 582 00:25:04,030 --> 00:25:07,940 można mieć tylko zero lub jedno Malans w tym szczególnym tabeli bazy danych. 583 00:25:07,940 --> 00:25:10,965 Teraz tak na marginesie, po prostu tak, że widziałem to, mimo że nadal używać GET 584 00:25:10,965 --> 00:25:14,350 i choć używane tylko PSet6 GET, z pewnością można mieć POST. 585 00:25:14,350 --> 00:25:17,212 I pamiętam, że post jest inny Technika składania informacji 586 00:25:17,212 --> 00:25:19,170 z formy, ale nie pokazuje się w adresie URL. 587 00:25:19,170 --> 00:25:22,690 To trochę bardziej bezpieczne pewnością dla rzeczy takie jak nazwy użytkowników i hasła, 588 00:25:22,690 --> 00:25:25,210 PSet7 który będzie w rzeczywistości wykorzystywane. 589 00:25:25,210 --> 00:25:28,130 >> Tak, zróbmy to w PHP MyAdmin i zobaczyć co się dzieje. 590 00:25:28,130 --> 00:25:30,020 Zamierzam przejść do zakładki MySQL. 591 00:25:30,020 --> 00:25:34,450 I zauważyć, że wartość domyślną PHP MyAdmin, po prostu staram się być pomocny, 592 00:25:34,450 --> 00:25:37,050 jest, aby wybrać gwiazdę od użytkowników, gdzie jeden. 593 00:25:37,050 --> 00:25:39,430 Cóż, jeden jest zawsze prawdziwe, więc ma to głupie skuteczne 594 00:25:39,430 --> 00:25:40,400 po prostu wybierz wszystko. 595 00:25:40,400 --> 00:25:42,691 Ale mam zamiar być trochę bardziej pedantyczny i ręcznie 596 00:25:42,691 --> 00:25:45,920 wpisz się SELECT gwiazda z użytkowników. 597 00:25:45,920 --> 00:25:48,294 >> Teraz technicznie, można podać nazwę tabelach. 598 00:25:48,294 --> 00:25:50,460 To rzadkie, że trzeba, ale zauważ, nie są 599 00:25:50,460 --> 00:25:52,240 Twoje zwykłe cytaty na klawiaturze amerykańskiej. 600 00:25:52,240 --> 00:25:54,760 Jest to tak zwany lewy apostrof, co jest zwykle w górnej lewej 601 00:25:54,760 --> 00:25:56,000 rogu klawiatury. 602 00:25:56,000 --> 00:25:58,500 Ale to rzadko, że będziesz faktycznie trzeba męczyć się z tym, 603 00:25:58,500 --> 00:25:59,950 tak, ja po prostu tak je pominąć. 604 00:25:59,950 --> 00:26:02,280 Więc teraz, pozwól mi iść do przodu i uderzył go. 605 00:26:02,280 --> 00:26:06,616 A ile wierszy powinienem dostać z powrotem, kiedy wybrać gwiazdę z użytkowników? 606 00:26:06,616 --> 00:26:08,407 >> PUBLICZNOŚCI: [niesłyszalne] 607 00:26:08,407 --> 00:26:09,990 DAVID MALAN: Liczba wierszy, pewnie. 608 00:26:09,990 --> 00:26:12,390 Ale ile w tym betonu historia teraz? 609 00:26:12,390 --> 00:26:14,640 Dwa, bo nie było mnie i nie było Rob. 610 00:26:14,640 --> 00:26:19,370 Tak więc, jeśli kliknij przycisk Przejdź, widzę wizualnie, że I dostaliśmy z powrotem, rzeczywiście, dwa wiersze. 611 00:26:19,370 --> 00:26:22,060 Jest dużo bałaganu na ekran, ale tylko widzę dwa rzędy. 612 00:26:22,060 --> 00:26:28,580 Natomiast, jeśli mogę to zrobić jeszcze raz i zrobić WYBIERZ gwiazda z użytkowników, gdzie nazwa_użytkownika 613 00:26:28,580 --> 00:26:31,840 równa się środki, koniec cytatu Malan, gdybym kliknij przycisk Przejdź, 614 00:26:31,840 --> 00:26:33,970 Ja tylko zamiar wrócić jeden wiersz. 615 00:26:33,970 --> 00:26:36,499 I wreszcie, jeśli to zrobię coś takiego, załóżmy, 616 00:26:36,499 --> 00:26:38,290 że nie obchodzi się wszystko, 617 00:26:38,290 --> 00:26:41,020 który jest rodzajem sensu teraz, bo nie ma tylko dwie kolumny. 618 00:26:41,020 --> 00:26:43,103 To nie tak, mam wyboru ogromna ilość danych. 619 00:26:43,103 --> 00:26:46,720 Załóżmy, że mam iść do przodu i należy wybierać nazwę od 620 00:26:46,720 --> 00:26:51,990 użytkowników, gdzie nazwa_użytkownika równa Malan, co jest ładne o SQL szczerze, 621 00:26:51,990 --> 00:26:54,290 jest to, że tak naprawdę nie co powiedzieć to zrobić. 622 00:26:54,290 --> 00:26:57,550 To dość zwięzłe, ale dosłownie po prostu powiedz, co chcesz zrobić. 623 00:26:57,550 --> 00:27:01,130 Wybierz nazwę od użytkowników, gdzie nazwa użytkownika równa Malan. 624 00:27:01,130 --> 00:27:03,440 I to naprawdę jest takie jednoznaczne. 625 00:27:03,440 --> 00:27:08,410 Więc teraz, gdybym uderzył Go, jak wielu wiersze mam zamiar wrócić? 626 00:27:08,410 --> 00:27:10,770 Jeden z nich, bo to po prostu Malan, miejmy nadzieję. 627 00:27:10,770 --> 00:27:13,100 Lub zero, jeśli nie jest on nie, ale maksymalnie. 628 00:27:13,100 --> 00:27:17,610 >> A ile kolumn będzie wrócę? 629 00:27:17,610 --> 00:27:18,450 Jak wiele kolumn? 630 00:27:18,450 --> 00:27:20,658 Tym razem, jestem po prostu aby jeden bo nie 631 00:27:20,658 --> 00:27:22,380 wybierz gwiazdę, która jest wszystko. 632 00:27:22,380 --> 00:27:27,900 Teraz jestem wybierając tylko nazwę, więc po prostu wrócić jedną kolumnę i jeden wiersz. 633 00:27:27,900 --> 00:27:31,730 I wygląda jakby odpowiednio śmieszne, po prostu patrząc bardzo 634 00:27:31,730 --> 00:27:33,060 mała tak. 635 00:27:33,060 --> 00:27:34,290 Więc, co się naprawdę dzieje? 636 00:27:34,290 --> 00:27:36,890 Kiedy wykonać SQL kwerendy przy użyciu wybierz, 637 00:27:36,890 --> 00:27:38,700 co dostajesz z powrotem z bazy danych 638 00:27:38,700 --> 00:27:42,970 jest jak tabeli tymczasowej z wierszy i kolumn, być może, 639 00:27:42,970 --> 00:27:46,260 ale pominąć niczego, co nie był właściwie wybrany przez Ciebie. 640 00:27:46,260 --> 00:27:49,010 Tak, to jak gdyby ktoś miał duże Arkusz kalkulacyjny wszystkich studentów 641 00:27:49,010 --> 00:27:51,610 zarejestrowany dla niektórych grupa uczniów, a ty mówisz, 642 00:27:51,610 --> 00:27:55,097 daj mi wszystkie student pierwszego roku, którzy już zarejestrowany dla naszej grupy studenckiej, co 643 00:27:55,097 --> 00:27:56,930 kolega w grupa uczniów może zrobić 644 00:27:56,930 --> 00:27:58,430 jest może po prostu wręczyć Ci cały arkusz kalkulacyjny. 645 00:27:58,430 --> 00:27:59,742 To tak, jakby mówiąc: wybierz gwiazdę. 646 00:27:59,742 --> 00:28:02,200 I jest to trochę irytujące, jeśli tylko chciał studentem pierwszego roku. 647 00:28:02,200 --> 00:28:05,640 I tak, jeśli zamiast tego powiedział: wybierz gwiazda z tabeli bazy danych 648 00:28:05,640 --> 00:28:08,470 gdzie rok wynosi cytat, koniec cytatu studentem pierwszego roku, 649 00:28:08,470 --> 00:28:10,810 to tak, jakby twój przyjaciel w grupie studentów 650 00:28:10,810 --> 00:28:13,770 dosłownie podświetlony i skopiowane tylko wiersze freshman, 651 00:28:13,770 --> 00:28:16,780 wklejać je do nowego Google Arkusz kalkulacyjny Excel lub plik, 652 00:28:16,780 --> 00:28:18,860 i podał cię z powrotem tylko plik wynikowy. 653 00:28:18,860 --> 00:28:21,710 To wszystko, co się dzieje na koncepcyjnie tutaj. 654 00:28:21,710 --> 00:28:23,920 >> Więc w końcu, co możemy zrobić, kilka bardzo fantazyjne rzeczy 655 00:28:23,920 --> 00:28:26,560 poprzez przechowywanie rzeczy jak nazwy użytkowników i hasła i tym podobne. 656 00:28:26,560 --> 00:28:30,310 Ale, jak się okazuje, mamy robić trochę inaczej niż to. 657 00:28:30,310 --> 00:28:34,750 To nie jest tak mądry, żeby tylko przechowywać nazwę użytkownika i hasło. 658 00:28:34,750 --> 00:28:37,790 Ktoś wcześniej, myślę, tu, zasugerował identyfikator. 659 00:28:37,790 --> 00:28:40,787 Teraz identyfikator może być jak Harvard ID lub Net ID Yale, 660 00:28:40,787 --> 00:28:42,870 ale to może być jeszcze prostsze w naszym przypadku bazy danych. 661 00:28:42,870 --> 00:28:45,120 I rzeczywiście, wspólna sprawa jest, aby mieć inną kolumnę. 662 00:28:45,120 --> 00:28:46,953 I zamierzam iść do przodu i edytować tabelę. 663 00:28:46,953 --> 00:28:49,521 A jeśli bawić z Ten interfejs dla PSet7, 664 00:28:49,521 --> 00:28:51,770 zobaczysz, że można sprawdzić ten przycisk tutaj i dodaj 665 00:28:51,770 --> 00:28:53,750 pola na początku tabeli. 666 00:28:53,750 --> 00:28:56,720 A teraz, jeśli kliknij przycisk Przejdź, to będzie dać mi jedną z tych form 667 00:28:56,720 --> 00:28:57,600 z wcześniej. 668 00:28:57,600 --> 00:29:00,170 Mam zamiar dodać pole o nazwie ID. 669 00:29:00,170 --> 00:29:03,070 I mam zamiar zrobić to typ numeryczny. 670 00:29:03,070 --> 00:29:05,362 >> Mam całą masę dla wartości liczbowych. 671 00:29:05,362 --> 00:29:08,677 Idę do wyboru INT i Nie martw się o zróżnicowanych rozmiarach. 672 00:29:08,677 --> 00:29:10,510 Nie mam do określenia długość lub wartość, 673 00:29:10,510 --> 00:29:13,710 bo to będzie 32 bity nie wiem co. 674 00:29:13,710 --> 00:29:16,070 Atrybuty, nie widzieliśmy wcześniej. 675 00:29:16,070 --> 00:29:18,410 Wszelkie odsetki w każdym z nich Opcje menu tym razem? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Dla INT? 678 00:29:23,745 --> 00:29:24,620 Co proponujesz? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Nie? 681 00:29:28,445 --> 00:29:29,570 Czy któryś z nich ma sens? 682 00:29:29,570 --> 00:29:30,536 Tak. 683 00:29:30,536 --> 00:29:31,900 Tak, bez znaku, prawda? 684 00:29:31,900 --> 00:29:35,930 >> Generalnie, jeśli mamy zamiar dać każdy unikalny numer, który 685 00:29:35,930 --> 00:29:38,200 gdzie ta historia jest dzieje, naprawdę tylko chcesz 686 00:29:38,200 --> 00:29:41,919 osoby do liczby jak zera i jeden i dwa i trzy i cztery. 687 00:29:41,919 --> 00:29:43,710 Nie potrzebuję do czynienia z liczb ujemnych. 688 00:29:43,710 --> 00:29:45,210 Wydaje mi się zbędnej złożoności. 689 00:29:45,210 --> 00:29:48,470 Chcę cztery miliardy możliwych wartości, nie cztery miliardy możliwych wartości, 690 00:29:48,470 --> 00:29:50,699 tak właśnie się podwoiła pojemność mojego INT. 691 00:29:50,699 --> 00:29:53,490 Tak na marginesie, jeśli chcesz odnosić to coś jak Facebook, 692 00:29:53,490 --> 00:29:56,190 powrotem w rodzaju mojego dnia, kiedy Facebook po raz pierwszy wyszedł, 693 00:29:56,190 --> 00:29:59,510 Wierzę, że to, co było używając w bazie danych MySQL 694 00:29:59,510 --> 00:30:02,856 do przechowywania użytkownika identyfikator, był tylko INT. 695 00:30:02,856 --> 00:30:05,230 Oczywiście, istnieje wiele prawdziwych ludzi na świecie. 696 00:30:05,230 --> 00:30:07,438 Jest wiele fałszywych Facebook Rachunki w świecie. 697 00:30:07,438 --> 00:30:11,701 I tak w końcu, Facebook przelało wielkość INT, A cztery miliardy 698 00:30:11,701 --> 00:30:12,200 wartość. 699 00:30:12,200 --> 00:30:15,032 Dlatego też, jeśli spojrzeć ok i nie ma stron internetowych 700 00:30:15,032 --> 00:30:16,740 że może powiedzieć, co Twój unikalny identyfikator jest. 701 00:30:16,740 --> 00:30:19,781 A jeśli nigdy nie wybrał nazwę użytkownika w Facebook, zobaczysz swój unikalny identyfikator. 702 00:30:19,781 --> 00:30:23,080 Myślę, że to profil kropka PHP znak zapytania ID równa coś. 703 00:30:23,080 --> 00:30:27,210 To jest coś jak duży INT, lub długo długo, jeśli chcesz, 704 00:30:27,210 --> 00:30:29,700 która jest wartością 64-bit lub coś porównywalne. 705 00:30:29,700 --> 00:30:33,620 >> Tak więc, nawet w świecie rzeczywistym nie są kwestie ostatecznie czasem znaczenia. 706 00:30:33,620 --> 00:30:37,600 I okazuje się tutaj, jeśli jestem dając wszystkich moich użytkowników unikatowy identyfikator, 707 00:30:37,600 --> 00:30:41,750 Chcę być bardzo wyraźne i minimalnie aby to pole wyjątkowy. 708 00:30:41,750 --> 00:30:44,750 Ale okazuje się, że jedna kawałek nomenklatury dzisiaj zbyt 709 00:30:44,750 --> 00:30:46,470 to jest klucz podstawowy. 710 00:30:46,470 --> 00:30:49,800 Jeśli projektowania bazy danych Stół i wiesz z góry 711 00:30:49,800 --> 00:30:55,580 że jedna z tych kolumn w tej tabeli powinna i będzie jednoznacznie identyfikują wiersze 712 00:30:55,580 --> 00:30:58,500 w tabeli, chcesz określić ją i powiedz do bazy danych, 713 00:30:58,500 --> 00:31:00,250 to jest mój klucz podstawowy. 714 00:31:00,250 --> 00:31:02,110 Nie może być duplikaty w innych dziedzinach, 715 00:31:02,110 --> 00:31:06,330 ale mówię to, że bazy danych jest moim podstawowym, najważniejszym moim polu, 716 00:31:06,330 --> 00:31:08,420 który jest gwarancją wyjątkowy. 717 00:31:08,420 --> 00:31:09,660 >> Teraz wydaje się to zbędne. 718 00:31:09,660 --> 00:31:13,830 Ja proponuje teraz, że mamy dodać, klikając przycisk Zapisz tutaj, 719 00:31:13,830 --> 00:31:17,210 called-- pola i idę iść do przodu i kliknij AI, 720 00:31:17,210 --> 00:31:19,720 wrócimy do że w chwili, Save. 721 00:31:19,720 --> 00:31:22,540 Proponuję teraz, że Moja tabela wygląda tak. 722 00:31:22,540 --> 00:31:26,305 Mam pole o nazwie ID INT, ZNAK nazywa się pole Nazwa użytkownika, 723 00:31:26,305 --> 00:31:31,100 pole VARCHAR o nazwie Nazwa, ale ID, jeśli jest to podstawowa, a zatem wyjątkowy, 724 00:31:31,100 --> 00:31:33,760 dlaczego po prostu tracić Czas wprowadzenia co 725 00:31:33,760 --> 00:31:39,140 efektywnie jest drugi unikalny pole o nazwie ID, który jest INT? 726 00:31:39,140 --> 00:31:41,980 >> Nazwa użytkownika, przypomnijmy, był już wyjątkowy, powiedzieliśmy. 727 00:31:41,980 --> 00:31:45,350 Więc po prostu logicznie, nie trzeba każde doświadczenie bazy danych do rozumu 728 00:31:45,350 --> 00:31:47,570 przez to, dlaczego Mogę wprowadziły 729 00:31:47,570 --> 00:31:50,065 INT jak mój unikalny identyfikator, jak również? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Co this-- powiedzieć jeszcze raz? 732 00:31:53,930 --> 00:31:55,580 >> PUBLICZNOŚCI: [niesłyszalne] 733 00:31:55,580 --> 00:31:59,534 >> DAVID MALAN: Random dostęp jest łatwiejszy, dlaczego? 734 00:31:59,534 --> 00:32:00,410 >> PUBLICZNOŚCI: [niesłyszalne] 735 00:32:00,410 --> 00:32:02,367 DAVID MALAN: Tak, to jest tylko dostęp do numerów. 736 00:32:02,367 --> 00:32:04,750 Tak więc, jeśli myślisz, że to naprawdę jest stół, podobnie jak tablica, 737 00:32:04,750 --> 00:32:07,690 teraz mam unikalnych identyfikatorów że mogę skakać. 738 00:32:07,690 --> 00:32:11,520 A jeszcze lepiej, że jest to, że jak duży jest INT będzie ponownie? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 bity lub cztery bajty. 741 00:32:15,800 --> 00:32:17,750 >> Jak duża jest moja nazwa użytkownika będzie? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Maksymalnie? 744 00:32:21,990 --> 00:32:22,880 16 bajtów. 745 00:32:22,880 --> 00:32:26,080 >> Tak więc, jeśli jesteś naprawdę dbanie o wykonanie kodu, 746 00:32:26,080 --> 00:32:31,390 że powrót do PSet5, wolisz szukać wartości czterech bajtów lub 16 747 00:32:31,390 --> 00:32:32,240 Wartość bajtu, prawda? 748 00:32:32,240 --> 00:32:33,810 To naprawdę jest takie proste. 749 00:32:33,810 --> 00:32:38,060 Musisz zrobić cztery razy tyle pracy szukać nazwy użytkowników, ponieważ te 750 00:32:38,060 --> 00:32:38,830 16 bajtów. 751 00:32:38,830 --> 00:32:41,320 Tak, trzeba dosłownie porównanie wszystkich 16 bajtów być 752 00:32:41,320 --> 00:32:43,140 pewien, tak, to jest nazwa chcę. 753 00:32:43,140 --> 00:32:46,610 Podczas gdy dla INT, można zrobić z zaledwie czterech bajtów. 754 00:32:46,610 --> 00:32:49,212 >> I tak na marginesie dla tych, zainteresowany sprzętu komputerowego, 755 00:32:49,212 --> 00:32:52,420 Okazuje się można zmieścić coś takiego int lub wartość 32-bitowa w coś 756 00:32:52,420 --> 00:32:55,330 zwany rejestr w komputerze CPU, co oznacza, że ​​jest super, 757 00:32:55,330 --> 00:32:58,400 super szybki, nawet w najniższym Poziom sprzętu komputera. 758 00:32:58,400 --> 00:33:00,530 Tak więc, nie tylko zalety dookoła. 759 00:33:00,530 --> 00:33:01,530 Więc, co to oznacza? 760 00:33:01,530 --> 00:33:04,850 W rzeczywistości, kiedy jesteś projektowaniu tabeli bazy danych, prawie cały czas 761 00:33:04,850 --> 00:33:07,170 idziesz nie mieć tylko dane Ci zależy, 762 00:33:07,170 --> 00:33:09,280 ale także coś w rodzaju unikalny identyfikator 763 00:33:09,280 --> 00:33:11,280 bo to będzie niech nam robić inne rzeczy. 764 00:33:11,280 --> 00:33:13,160 I niech potknąć jeden problem tutaj. 765 00:33:13,160 --> 00:33:15,990 >> Załóżmy, że użytkownicy nie mają tylko nazwy użytkownika i nazwy, 766 00:33:15,990 --> 00:33:19,540 ale mają też takie rzeczy jak miast oraz stany i kody pocztowe, co najmniej 767 00:33:19,540 --> 00:33:20,432 tutaj w USA. 768 00:33:20,432 --> 00:33:22,390 Tak, mam zamiar iść do przodu i po prostu szybko powiedzieć, 769 00:33:22,390 --> 00:33:26,180 daj mi jeszcze trzy kolumny na końcu tabeli. 770 00:33:26,180 --> 00:33:28,900 I to ma być Miasto, to będzie państwo, 771 00:33:28,900 --> 00:33:30,400 i to ma być pocztowy. 772 00:33:30,400 --> 00:33:32,710 >> Teraz typy Miasto, jakie dane powinno to być może? 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR? 775 00:33:35,989 --> 00:33:37,780 Nie wiem, co się najdłuższa nazwa miasta jest. 776 00:33:37,780 --> 00:33:40,571 Gdzieś w Ameryce, tam Prawdopodobnie niektórzy absurdalnie długie słowo, 777 00:33:40,571 --> 00:33:43,605 więc chodźmy z 255, nieco historycznie lub arbitralnie. 778 00:33:43,605 --> 00:33:44,730 Państwo to, co chcesz zrobić? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Osąd, prawda? 781 00:33:50,367 --> 00:33:51,700 Co może najbardziej wydajny? 782 00:33:51,700 --> 00:33:53,500 Ile znaków? 783 00:33:53,500 --> 00:33:55,950 Może tylko dwa, jeśli to możliwe uciec robi tylko, 784 00:33:55,950 --> 00:33:58,250 podobnych, MA w stanie Massachusetts, i tak dalej. 785 00:33:58,250 --> 00:34:00,520 Tak, mam zamiar iść wartość CHAR dwóch. 786 00:34:00,520 --> 00:34:03,080 >> Kod pocztowy jest interesująca. 787 00:34:03,080 --> 00:34:06,679 Jesteśmy tu w 02138, tak aby sugeruje, powinniśmy wykorzystać to, co? 788 00:34:06,679 --> 00:34:07,470 To jest INT, prawda? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, krótki? 791 00:34:12,800 --> 00:34:14,521 Krótki będzie działać. 792 00:34:14,521 --> 00:34:15,020 Nie? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR lub pięć, ale chcę wew. 795 00:34:20,870 --> 00:34:23,710 Dlaczego warto przesunąć na INT? 796 00:34:23,710 --> 00:34:26,820 Przekonaj mnie od tego. 797 00:34:26,820 --> 00:34:29,210 Co znajduje się w głupie o INT, mój pomysł? 798 00:34:29,210 --> 00:34:29,871 Tak. 799 00:34:29,871 --> 00:34:31,199 >> PUBLICZNOŚCI: Weź więcej pamięci. 800 00:34:31,199 --> 00:34:32,909 >> DAVID MALAN: Weź więcej pamięci. 801 00:34:32,909 --> 00:34:35,310 Cztery bajty, ale jesteś proponuje kod pocztowy 802 00:34:35,310 --> 00:34:39,000 w pięciu bajtów lub ktoś był jako CHAR, który czuje się jak co, to naprawdę nie jest 803 00:34:39,000 --> 00:34:39,620 przypadek. 804 00:34:39,620 --> 00:34:40,489 >> Cóż, historia zabawy. 805 00:34:40,489 --> 00:34:43,179 Lat temu, kiedy używałem Microsoft Outlook na mój adres e-mail, 806 00:34:43,179 --> 00:34:45,150 I w końcu chciałem, aby przełączyć się na Gmaila. 807 00:34:45,150 --> 00:34:48,949 I tak, ja eksportowane wszystkie moje kontaktów z programu Outlook jako plik CSV. 808 00:34:48,949 --> 00:34:50,699 Oddzielonych przecinkami wartości, które po prostu oznaczało, że 809 00:34:50,699 --> 00:34:54,060 Wszyscy moi znajomi mieli imiona i ostatni Nazwy i numery telefonów i kody pocztowe 810 00:34:54,060 --> 00:34:54,747 i to wszystko. 811 00:34:54,747 --> 00:34:56,580 A potem dokonał Błąd otwierania go 812 00:34:56,580 --> 00:34:58,640 Excel, który jest program arkusza kalkulacyjnego, który 813 00:34:58,640 --> 00:35:00,289 rozumie plików CSV, jak widzieliśmy. 814 00:35:00,289 --> 00:35:03,080 Ale potem, muszę uderzyć, jak, Polecenie lub Control S w jednym punkcie. 815 00:35:03,080 --> 00:35:06,250 I Excel podobno w czasie miał cechy, przez co dowolnym czasie 816 00:35:06,250 --> 00:35:08,100 widziałem wiele, to starał się być pomocny. 817 00:35:08,100 --> 00:35:11,610 A jeśli liczba ta rozpoczęła się zera, to po prostu się ich pozbyć. 818 00:35:11,610 --> 00:35:13,420 Dlaczego musisz prowadzi zer na liczb całkowitych? 819 00:35:13,420 --> 00:35:15,140 Są pozbawione sensu, matematycznie. 820 00:35:15,140 --> 00:35:17,530 Oni nie są bez znaczenia w systemie US Postal. 821 00:35:17,530 --> 00:35:19,954 Tak, mam już od lat, do dziś, wciąż 822 00:35:19,954 --> 00:35:22,370 mieć przyjaciół, że gdy rzadki przypadek, że potrzebuję kogoś to 823 00:35:22,370 --> 00:35:24,078 zajęcia te dni, Ja wciąż widzę, że 824 00:35:24,078 --> 00:35:26,767 mieć przyjaciela w Cambridge, Massachusetts, dwie tysiące sto trzydzieści ośmiu. 825 00:35:26,767 --> 00:35:29,350 I to jest irytujące, jeśli jesteś próbuje rozwiązać programowo 826 00:35:29,350 --> 00:35:30,975 wygenerowania koperty lub po prostu zanotować ją w dół. 827 00:35:30,975 --> 00:35:33,599 A to z tego powodu, Wybrałem zły typ danych. 828 00:35:33,599 --> 00:35:34,490 Tak, kocham swój pomysł. 829 00:35:34,490 --> 00:35:35,650 Użyjmy pola CHAR. 830 00:35:35,650 --> 00:35:38,340 Pięć znaków, z wyjątkiem istnieją podstawy rogu. 831 00:35:38,340 --> 00:35:42,220 Jeśli nadal wysyłać pocztę, czasem zip kody te dni, 832 00:35:42,220 --> 00:35:45,360 są one, jak plus cztery. 833 00:35:45,360 --> 00:35:48,200 Tak więc, musimy myślnik, a następnie musimy jeszcze cztery numery. 834 00:35:48,200 --> 00:35:50,330 Tak szczerze mówiąc, to mogło przejść na wiele różnych sposobów. 835 00:35:50,330 --> 00:35:52,371 >> Na razie mam zamiar utrzymać to proste, a ja jestem po prostu 836 00:35:52,371 --> 00:35:54,780 powiedzieć, że jest to pięć char, a my jesteśmy 837 00:35:54,780 --> 00:35:56,739 zamiar przejść całą myślnik oraz cztery. 838 00:35:56,739 --> 00:35:58,280 Ale są to rodzaje kompromisów. 839 00:35:58,280 --> 00:36:00,196 A może myślisz, że z Te same problemy wynikające 840 00:36:00,196 --> 00:36:01,860 z numerami telefonów lub innych dziedzinach. 841 00:36:01,860 --> 00:36:04,350 >> A teraz, to jest rzeczywiście głupi drogi zejść. 842 00:36:04,350 --> 00:36:08,000 Załóżmy, że zarówno Rob i ja i Hannah oraz Maria i [? Davon?] I Andy 843 00:36:08,000 --> 00:36:12,820 i inne na pracowników wszystkich żyć w Cambridge, Massachusetts, 02138. 844 00:36:12,820 --> 00:36:17,970 To rzeczywiście czuć się głupio, że jestem dodanie do mojego tabeli użytkowników, miasto, województwo, 845 00:36:17,970 --> 00:36:18,630 i zip. 846 00:36:18,630 --> 00:36:20,980 Czemu? 847 00:36:20,980 --> 00:36:21,960 >> PUBLICZNOŚCI: [niesłyszalne] 848 00:36:21,960 --> 00:36:22,918 >> DAVID MALAN: Powiedz jeszcze raz? 849 00:36:22,918 --> 00:36:24,310 PUBLICZNOŚCI: [niesłyszalne] 850 00:36:24,310 --> 00:36:25,850 >> DAVID MALAN: Oni zawsze zamiar iść razem, prawda? 851 00:36:25,850 --> 00:36:28,660 Gdy okazuje się, zwykliśmy myśleć tak było, dopóki nie wyczerpująco 852 00:36:28,660 --> 00:36:30,570 Przeszukałem całe USA, i okazuje się, że 853 00:36:30,570 --> 00:36:32,653 są pewne nieścisłości gdzie wiele miast ma 854 00:36:32,653 --> 00:36:35,060 to samo na zamek błyskawiczny, co jest dziwne. 855 00:36:35,060 --> 00:36:40,580 Ale, jeśli przewidują teraz, że 02138 jest zawsze Cambridge, Massachusetts, 856 00:36:40,580 --> 00:36:44,910 Dlaczego na świecie nie można przechowywać w baza danych Cambridge i MA i 02138 857 00:36:44,910 --> 00:36:49,357 dla mnie i dla Hannah i Rob i dla [? Davon?] I dla innych, którzy żyją 858 00:36:49,357 --> 00:36:51,190 tutaj, w Cambridge, to całkowicie zbędne. 859 00:36:51,190 --> 00:36:54,480 >> Musimy uciec z zaledwie przechowywania co? 860 00:36:54,480 --> 00:36:55,610 Wystarczy kod pocztowy. 861 00:36:55,610 --> 00:36:58,660 Ale wtedy, jeśli będziemy przechowywać tylko kod pocztowy, chcę, chyba, 862 00:36:58,660 --> 00:37:02,160 na mojej stronie internetowej, aby wiedzieć, gdzie 02138 jest. 863 00:37:02,160 --> 00:37:03,910 Tak, potrzebuję innej tabeli. 864 00:37:03,910 --> 00:37:04,697 I to jest OK. 865 00:37:04,697 --> 00:37:07,530 W rzeczywistości jest to jeden z proces projektowania tabel projektowych 866 00:37:07,530 --> 00:37:11,472 że zrobisz w PSet7 oraz przy czym chcesz czynnik wspólne dane. 867 00:37:11,472 --> 00:37:14,430 Tak jak byliśmy faktoringu się wspólny kod i faktoringu się powszechne 868 00:37:14,430 --> 00:37:17,380 style z CSS tutaj też na bazie 869 00:37:17,380 --> 00:37:21,180 gdybym tylko potrzebujesz 02138 jednoznacznie określić czyjąś rodzinnym, 870 00:37:21,180 --> 00:37:25,020 nie przechowywać w Cambridge, na co cerować użytkownika w tabeli. 871 00:37:25,020 --> 00:37:29,770 >> Zamiast tego mają oddzielną tabelę o nazwie Zamki, które powinien mieć jakie kolumny? 872 00:37:29,770 --> 00:37:33,490 Prawdopodobnie pole ID, tylko dlatego, bo zasady mówimy teraz. 873 00:37:33,490 --> 00:37:35,720 Prawdopodobnie pole pocztowy na 02138. 874 00:37:35,720 --> 00:37:38,400 A potem pewnie jakie inne kolumny? 875 00:37:38,400 --> 00:37:42,950 Miasta i państwa, ale tylko jeden wiersz dla 02138, jeden wiersz do 02139, 876 00:37:42,950 --> 00:37:44,772 jeden wiersz do 90210. 877 00:37:44,772 --> 00:37:46,730 I to dosłownie wszystkie kody pocztowe znam. 878 00:37:46,730 --> 00:37:49,012 >> Więc teraz, co można zrobić? 879 00:37:49,012 --> 00:37:51,220 Stanowi to problem, ponieważ teraz mam dwie tabele. 880 00:37:51,220 --> 00:37:54,660 Tak więc, moi użytkownicy są głównie tutaj, ale ich informacje o stanie miasta 881 00:37:54,660 --> 00:37:55,390 tutaj. 882 00:37:55,390 --> 00:37:58,635 Więc, jak się okazuje z SQL, nie rzeczywiście sposób dołączyć informacje, 883 00:37:58,635 --> 00:38:00,470 i zobaczysz to w pset. 884 00:38:00,470 --> 00:38:03,000 >> Ale okazuje się, można zrobić coś takiego. 885 00:38:03,000 --> 00:38:10,501 WYBIERZ gwiazda z użytkowników, DOŁĄCZ zamki ON użytkowników dot zip równa zamki dot zip. 886 00:38:10,501 --> 00:38:13,360 Który jest trochę rozwlekły, co prawda, ale to po prostu 887 00:38:13,360 --> 00:38:17,590 Oznacza wybierz wszystko z Proces podejmowania mój tabeli użytkowników 888 00:38:17,590 --> 00:38:19,580 i mój stół zamki. 889 00:38:19,580 --> 00:38:22,120 Dołącz je na jednym pola mają w kolumnie. 890 00:38:22,120 --> 00:38:24,780 Tak, dosłownie robi coś tak, i daj mi 891 00:38:24,780 --> 00:38:27,360 nowa tabela tymczasowa to jest szerszy, który jest większy, 892 00:38:27,360 --> 00:38:29,450 który ma wszystkie z kolumny z obu z nich. 893 00:38:29,450 --> 00:38:33,510 A to, po prostu, byłoby Składnia robi coś takiego. 894 00:38:33,510 --> 00:38:35,540 >> Tak, jest to przyszłość, ale nie będzie 895 00:38:35,540 --> 00:38:38,950 być inne decyzje projektowe, które będziesz trzeba zrobić, nie tylko z indeksami 896 00:38:38,950 --> 00:38:40,550 ale również systemem do wyzwań. 897 00:38:40,550 --> 00:38:43,360 W rzeczywistości nie jest to wyzwanie w każdym projektowaniu baz danych 898 00:38:43,360 --> 00:38:47,930 przy czym czasami dwie osoby mogą chcieć Aby uzyskać dostęp do tych samych rzędów bazy 899 00:38:47,930 --> 00:38:48,530 stół. 900 00:38:48,530 --> 00:38:51,450 Tak, to jest coś, czego będziesz spotkać w PSet7 również. 901 00:38:51,450 --> 00:38:54,686 >> Ale myślałem, że patrzę na jednego Atak to możliwe w SQL. 902 00:38:54,686 --> 00:38:56,560 Jakie są niektóre z Problemy, które mogą się pojawić? 903 00:38:56,560 --> 00:38:58,170 Tak, to będzie można spotkać w PSet7. 904 00:38:58,170 --> 00:39:01,874 I możemy powiedzieć wprost, co kodowania rozwiązaniem tego problemu jest. 905 00:39:01,874 --> 00:39:04,790 Ale jeśli wziąć udział w zajęciach na poziomie wyższym, zwłaszcza w systemach operacyjnych 906 00:39:04,790 --> 00:39:06,950 idziesz na spotkanie kwestia atomowości, 907 00:39:06,950 --> 00:39:10,080 problem próbuje zrobić wiele rzeczy na raz 908 00:39:10,080 --> 00:39:11,000 bez przerwy. 909 00:39:11,000 --> 00:39:14,560 >> A ja myślałem, że wprowadzenie tego Pomysł na PSet7 w metaforze 910 00:39:14,560 --> 00:39:18,160 Dowiedziałem się, że w Margo Systemy operacyjne Seltzer w CS164 911 00:39:18,160 --> 00:39:18,990 Klasa lat temu. 912 00:39:18,990 --> 00:39:22,230 Załóżmy, że masz jeden z tych akademiku lodówki w pokoju w akademiku lub domu, 913 00:39:22,230 --> 00:39:24,474 i masz prawdziwe zamiłowanie do mleka. 914 00:39:24,474 --> 00:39:27,140 I tak, wracasz do domu z zajęć jeden dzień, otwierasz lodówkę. 915 00:39:27,140 --> 00:39:27,620 O, cholera. 916 00:39:27,620 --> 00:39:28,870 Nie ma mleka w lodówce. 917 00:39:28,870 --> 00:39:32,470 Więc zamknąć lodówkę, zamknąć drzwi, zablokować akademiku, 918 00:39:32,470 --> 00:39:34,770 chodzić za rogiem CVS, stać w kolejce, 919 00:39:34,770 --> 00:39:36,312 i rozpocząć sprawdzanie jakiegoś mleka. 920 00:39:36,312 --> 00:39:38,978 I to będzie trochę potrwać, bo te cholerne własnej kasy 921 00:39:38,978 --> 00:39:40,570 Liczniki wziąć na zawsze i tak używać. 922 00:39:40,570 --> 00:39:41,950 Więc w międzyczasie, twój współlokator wróci do domu. 923 00:39:41,950 --> 00:39:43,470 On lub ona naprawdę lubi mleka, jak również. 924 00:39:43,470 --> 00:39:45,520 Przychodzą do pokoju w akademiku, otworzyć lodówkę, oh, cholernie go. 925 00:39:45,520 --> 00:39:46,490 Nie ma więcej mleka. 926 00:39:46,490 --> 00:39:49,040 >> Tak, on lub ona także idzie za rogiem. 927 00:39:49,040 --> 00:39:51,670 Ale teraz, ponieważ jest jak dwóch lub trzy lub cztery CVSes pobliżu, 928 00:39:51,670 --> 00:39:53,800 zdarzają się, aby przejść do jednego z różne nich na placu. 929 00:39:53,800 --> 00:39:55,830 A więc teraz, kilka minut później, oboje 930 00:39:55,830 --> 00:39:58,060 wrócić do domu i och, największym problemem zawsze. 931 00:39:58,060 --> 00:40:00,967 Teraz masz zbyt dużo mleka dlatego, że pójdzie kwaśny. 932 00:40:00,967 --> 00:40:03,050 I lubisz mleka, ale tak naprawdę nie lubi mleka. 933 00:40:03,050 --> 00:40:06,730 >> Więc teraz, to było drogie błąd, ponieważ oboje 934 00:40:06,730 --> 00:40:09,870 podjął decyzję w oparciu o wyżej stan jakiejś zmiennej, 935 00:40:09,870 --> 00:40:12,660 był w procesie zmieniane przez użytkownika, 936 00:40:12,660 --> 00:40:14,560 inicjatorem dostanie mleko. 937 00:40:14,560 --> 00:40:17,785 Więc, co jest chyba człowiekiem Rozwiązaniem tego problemu? 938 00:40:17,785 --> 00:40:18,660 PUBLICZNOŚCI: [niesłyszalne] 939 00:40:18,660 --> 00:40:19,430 DAVID MALAN: Zostaw notatkę, prawda? 940 00:40:19,430 --> 00:40:21,850 Zawsze należy zostawić notatkę, jeśli jesteś zaznajomieni z tego show. 941 00:40:21,850 --> 00:40:23,100 Tak, jest nas dwóch. 942 00:40:23,100 --> 00:40:25,940 Tak, zawsze zostawić notatkę, lub dosłownie zamknąć lodówkę 943 00:40:25,940 --> 00:40:28,602 z pewnego rodzaju kłódki lub coś w górę tak. 944 00:40:28,602 --> 00:40:31,310 Ale to rzeczywiście będzie Kluczowym problemem w projektowaniu baz danych, 945 00:40:31,310 --> 00:40:34,710 zwłaszcza, gdy może mieć wielu przeglądarek, wiele laptopów, 946 00:40:34,710 --> 00:40:37,450 wielu użytkowników, wszyscy starają się aktualizowanie informacji na raz. 947 00:40:37,450 --> 00:40:40,590 Szczególnie wrażliwe informacje jak informacje finansowe, 948 00:40:40,590 --> 00:40:43,350 przy czym w stanie handlu strona jak ty będziesz budować, 949 00:40:43,350 --> 00:40:47,270 co, jeśli chcesz sprawdzić, jak dużo pieniędzy masz, a następnie, jeśli masz wystarczająco dużo, 950 00:40:47,270 --> 00:40:48,490 kupić akcje? 951 00:40:48,490 --> 00:40:50,899 >> Ale co, jeśli ktoś, kto ma wspólne konto z tobą 952 00:40:50,899 --> 00:40:52,690 jest jednocześnie starając kupić trochę akcji? 953 00:40:52,690 --> 00:40:55,190 Tak, on lub ona jest sprawdzenie saldo konta, oboje 954 00:40:55,190 --> 00:40:57,540 wrócić tego samego odpowiedź, nie ma mleka. 955 00:40:57,540 --> 00:41:00,580 Albo oboje wrócić odpowiedzi, masz 100 $ na koncie. 956 00:41:00,580 --> 00:41:04,680 Oboje starają się podjąć decyzję do zakupu jednej akcji jakiejś firmy magazynie. 957 00:41:04,680 --> 00:41:06,130 >> A teraz, co się dzieje? 958 00:41:06,130 --> 00:41:07,140 Masz dwie akcje? 959 00:41:07,140 --> 00:41:08,420 Nie masz żadnych akcji? 960 00:41:08,420 --> 00:41:10,320 Problemy mogą pojawić się, jak to. 961 00:41:10,320 --> 00:41:11,755 Tak, to mamy do czynienia z tym. 962 00:41:11,755 --> 00:41:14,630 Ataki SQL injection, na szczęście, są czymś pomożemy Ci, 963 00:41:14,630 --> 00:41:17,430 ale są potwornie wspólne tych dni jeszcze. 964 00:41:17,430 --> 00:41:18,680 Tak więc, jest to tylko przykład. 965 00:41:18,680 --> 00:41:21,290 I żadnych gwarancji, że System Harvard PIN 966 00:41:21,290 --> 00:41:23,130 Opisywany szczególności atakiem. 967 00:41:23,130 --> 00:41:24,160 Próbowaliśmy. 968 00:41:24,160 --> 00:41:26,120 Ale wiesz, że my mieć pole takiego. 969 00:41:26,120 --> 00:41:29,620 I Net ID Yale ma podobny ekran patrząc w tych dniach. 970 00:41:29,620 --> 00:41:33,190 I okazuje się, że być może System PIN jest realizowany w PHP. 971 00:41:33,190 --> 00:41:37,050 >> A jeśli to were-- to not-- oni może mieć kod, który wygląda tak. 972 00:41:37,050 --> 00:41:38,210 Mają dwie zmienne. 973 00:41:38,210 --> 00:41:42,495 Daj mi login i hasło ze zmiennej globalnej Pisanie Super 974 00:41:42,495 --> 00:41:43,970 że rozmawialiśmy o tym wcześniej. 975 00:41:43,970 --> 00:41:47,310 Może Harvard ma zapytanie jak SELECT gwiazda z użytkowników 976 00:41:47,310 --> 00:41:50,005 gdzie nazwa_użytkownika jest równe i hasło dorównuje. 977 00:41:50,005 --> 00:41:51,880 I zauważ, że jestem po prostu podłączając go za pomocą 978 00:41:51,880 --> 00:41:55,050 Kędzierzawy notacja nawiasów od innych dni, co oznacza po prostu podłącz wartości 979 00:41:55,050 --> 00:41:55,550 tutaj. 980 00:41:55,550 --> 00:41:57,449 Ja nie używając znak zapytania technika. 981 00:41:57,449 --> 00:41:59,240 Nie mam w każdej chwili lub argumenty trzecich. 982 00:41:59,240 --> 00:42:02,350 Jestem po prostu dosłownie konstruowania ciąg siebie. 983 00:42:02,350 --> 00:42:04,930 >> Problemem jest jednak to, że jeśli ktoś lubi się scroob, 984 00:42:04,930 --> 00:42:09,020 co jest nawiązaniem do filmu, loguje się z czymś takim, 985 00:42:09,020 --> 00:42:11,250 a ja usunąć kropki które zwykle pokrywają się 986 00:42:11,250 --> 00:42:14,370 haseł, co jeśli on jest Szczególnie szkodliwy 987 00:42:14,370 --> 00:42:18,860 i jego hasło może to 12345, na filmie o nazwie "Kosmiczne jaja" 988 00:42:18,860 --> 00:42:21,970 ale krytycznie Typy A apostrof po pięciu, 989 00:42:21,970 --> 00:42:24,790 to dosłownie słowo lub w przestrzeni, a następnie cytat, 990 00:42:24,790 --> 00:42:29,160 koniec cytatu jeden równa się jeden cytat, ale zauważ on pominięty, co? 991 00:42:29,160 --> 00:42:32,700 On pominięte cytat z prawej a on pominięty cytat z lewej strony. 992 00:42:32,700 --> 00:42:35,170 >> Bo jeśli atakujący Domniemanie scroob w 993 00:42:35,170 --> 00:42:38,160 jest to, że ludzie, którzy napisali kod PHP nie były tak jasne, 994 00:42:38,160 --> 00:42:42,990 może po prostu niektóre pojedyncze cytaty po interpolacji 995 00:42:42,990 --> 00:42:45,210 zmiennej w nawiasach klamrowych? 996 00:42:45,210 --> 00:42:48,620 I tak może być, mógł rodzaju od ukończenia myśl 997 00:42:48,620 --> 00:42:53,290 do nich, ale w sposób, który będzie pozwolić mu włamał się do systemu PIN. 998 00:42:53,290 --> 00:42:55,310 Innymi słowy, załóżmy że jest to kod 999 00:42:55,310 --> 00:42:57,140 i teraz podłączyć co scroob wpisane. 1000 00:42:57,140 --> 00:42:58,770 I to jest czerwony, bo to jest złe. 1001 00:42:58,770 --> 00:43:01,310 >> A tekst podstawowy to co on wpisany, 1002 00:43:01,310 --> 00:43:05,510 scroob może oszukać serwer Harvardu do konstruowania zapytań SQL 1003 00:43:05,510 --> 00:43:07,440 Ciąg, który wygląda tak. 1004 00:43:07,440 --> 00:43:11,760 Hasło wynosi 12345 lub jeden równa się jeden. 1005 00:43:11,760 --> 00:43:14,820 Wynik, który, logicznie, jest to, że będzie to zalogować scroob 1006 00:43:14,820 --> 00:43:18,360 w razie jego hasło 12345 lub jeśli jeden równa 1007 00:43:18,360 --> 00:43:22,660 jeden, który jest oczywiście zawsze prawdziwe, co oznacza scroob zawsze dostaje się. 1008 00:43:22,660 --> 00:43:26,060 >> I tak, aż do ustalenia To, co w wielu przypadkach 1009 00:43:26,060 --> 00:43:28,140 byłoby napisać bardziej defensywnie. 1010 00:43:28,140 --> 00:43:30,390 Aby użyć coś jak nasze Rzeczywista funkcja kwerendy, które 1011 00:43:30,390 --> 00:43:33,980 zobaczysz w PSet7, gdzie podłączono coś jak znaki zapytania tutaj. 1012 00:43:33,980 --> 00:43:35,980 A piękno Funkcja kwerendy, że 1013 00:43:35,980 --> 00:43:40,010 dać ci to, że chroni przed ich Tak zwane ataki SQL injection, gdzie 1014 00:43:40,010 --> 00:43:44,260 ktoś oszukiwanie swój kod do wstrzykując swój własny kod SQL. 1015 00:43:44,260 --> 00:43:47,380 Bo to, co funkcji zapytania dajemy będzie faktycznie zrobić, 1016 00:43:47,380 --> 00:43:51,270 jeśli używasz składni znak zapytania a drugiego i trzeciego parametru tutaj 1017 00:43:51,270 --> 00:43:54,590 jest to, co udało się dodać do Wejście pod warunkiem, że użytkownik? 1018 00:43:54,590 --> 00:43:56,060 Ci, odwrotny ukośnik cytuje. 1019 00:43:56,060 --> 00:43:58,590 >> Tak, to ucieka jakiekolwiek potencjalnie niebezpiecznych znaków. 1020 00:43:58,590 --> 00:44:01,000 Teraz to wygląda dziwnie, ale to nie jest zagrożone 1021 00:44:01,000 --> 00:44:03,260 Ponieważ nie zmienić logikę więcej 1022 00:44:03,260 --> 00:44:06,470 dlatego, że całe hasło teraz jeden cytat, który nie jest, 1023 00:44:06,470 --> 00:44:07,596 w rzeczywistości, hasło scroob jest. 1024 00:44:07,596 --> 00:44:09,845 Tak, nie było jakieś żarty o tym przez lata. 1025 00:44:09,845 --> 00:44:12,570 Tak, to było zdjęcie zrobione jakiegoś maniaka w parkingu 1026 00:44:12,570 --> 00:44:16,620 przy czym może wiedzieć, że niektóre miasta i stany spróbuj zeskanować swoją licencję 1027 00:44:16,620 --> 00:44:19,460 Płyta do wystawienia rachunku lub aby ticket jeśli przejdziesz przez nie, jak, 1028 00:44:19,460 --> 00:44:20,660 rzecz e-Z Przełęcz. 1029 00:44:20,660 --> 00:44:24,490 Tak, domniemywa się, że osoba ta może ludzie piszący system E-Z Przełęczy 1030 00:44:24,490 --> 00:44:28,240 nie były tak jasne, a może oni po prostu sklejone ciąg, 1031 00:44:28,240 --> 00:44:32,190 tak, że on lub ona nie mogła złośliwie nie tylko wypełnić swoje myśli, 1032 00:44:32,190 --> 00:44:35,150 ale w rzeczywistości wykonanie złe polecenie, które nie zostały jeszcze wymienione, 1033 00:44:35,150 --> 00:44:36,380 ale można się domyślić. 1034 00:44:36,380 --> 00:44:39,820 Że oprócz usunięcia i wstawiania i aktualizacji i wybierz, 1035 00:44:39,820 --> 00:44:43,370 istnieje również kluczowe nazywa spadek, co dosłownie usuwa wszystko 1036 00:44:43,370 --> 00:44:45,300 w bazie danych, która jest szczególnie złe. 1037 00:44:45,300 --> 00:44:48,760 >> Możemy powiększyć to, czy jest to trochę trudne do zobaczenia. 1038 00:44:48,760 --> 00:44:52,300 To teraz, jest znanym kreskówki to cudownie mądry teraz 1039 00:44:52,300 --> 00:44:53,145 i zrozumiałe. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Śmiech] 1042 00:45:04,750 --> 00:45:05,910 >> Tak, fajnie. 1043 00:45:05,910 --> 00:45:06,800 Rodzaj geeking się. 1044 00:45:06,800 --> 00:45:08,800 Tak więc te są zatem Ataki SQL injection. 1045 00:45:08,800 --> 00:45:13,050 I są tak łatwe do uniknięcia przy użyciu prawo lub prawem kod biblioteki. 1046 00:45:13,050 --> 00:45:15,947 A zobaczysz w PSet7, to Dlatego dajemy Ci funkcję zapytania. 1047 00:45:15,947 --> 00:45:17,780 Tak, kilka teasery że myśleliśmy, że będziemy 1048 00:45:17,780 --> 00:45:19,930 wam tu w naszym Pozostałe minut razem. 1049 00:45:19,930 --> 00:45:24,030 Tak, jak pamiętam z tygodnia zera, mamy wprowadził te dwie żarówki, które 1050 00:45:24,030 --> 00:45:26,610 są ładne, nie tylko dlatego, są one dość i są kolorowe, 1051 00:45:26,610 --> 00:45:29,450 ale ponieważ wspierają one coś nazywa API aplikacja 1052 00:45:29,450 --> 00:45:31,980 Interfejs programowania I w CS50 dotąd, mamy 1053 00:45:31,980 --> 00:45:34,440 głównie koncentruje się na GET i POST, ale okazuje się, 1054 00:45:34,440 --> 00:45:37,390 tam inne czasowniki HTTP, takich jak PUT. 1055 00:45:37,390 --> 00:45:39,430 >> I rzeczywiście, jest to slajd z tygodnia zera 1056 00:45:39,430 --> 00:45:44,930 przy czym jeśli napisać kod, który wysyła a la PSet6 żądanie HTTP, które 1057 00:45:44,930 --> 00:45:49,647 wygląda tak z tym fragmencie tekstu na dole, który nazywany jest JSON, 1058 00:45:49,647 --> 00:45:52,230 lub JavaScript Object Notation że będziemy rozmawiać o następnym tygodniu, 1059 00:45:52,230 --> 00:45:57,030 można włączyć lub wyłączyć lub zmienić kolor światła, takich jak te. 1060 00:45:57,030 --> 00:46:00,480 Tak więc, jeśli CS50 posiada oprócz niektórych z tych żarówek tutaj w New Haven 1061 00:46:00,480 --> 00:46:02,480 jeśli chcesz pożyczyć ich projektów końcowych, 1062 00:46:02,480 --> 00:46:04,370 także niektóre Microsoft Zespoły, które są jak 1063 00:46:04,370 --> 00:46:07,619 zegarki, które można nosić na nadgarstku że podobnie ma API, dzięki czemu 1064 00:46:07,619 --> 00:46:10,040 może napisać własne oprogramowanie dla nich. 1065 00:46:10,040 --> 00:46:12,490 >> Mamy konto w Kod Apple iOS tak 1066 00:46:12,490 --> 00:46:15,510 że jeśli Apple Oglądaj lub iPhone lub iPad lub iPod, 1067 00:46:15,510 --> 00:46:17,707 można napisać kod, który faktycznie działa na nich. 1068 00:46:17,707 --> 00:46:19,540 Mamy całą masę z Arduinos, które 1069 00:46:19,540 --> 00:46:22,010 maleńkie komputery bez przypadków, w zasadzie, 1070 00:46:22,010 --> 00:46:25,240 że można podłączyć przez USB, zwykle do własnego komputera Mac lub PC, 1071 00:46:25,240 --> 00:46:28,810 napisać kod, który działa na nich fizyczne Urządzenia, które często mają czujniki na nich 1072 00:46:28,810 --> 00:46:30,790 więc można wchodzić w interakcje z realnym światem. 1073 00:46:30,790 --> 00:46:32,860 Mamy całą masę urządzeń Leap Motion, 1074 00:46:32,860 --> 00:46:36,500 które są urządzenia USB dla komputerów Mac i Komputery, tu i ponownie, w New Haven. 1075 00:46:36,500 --> 00:46:40,080 A jeśli go podłączyć do komputera Mac, rzeczywiście można kontrolować komputer 1076 00:46:40,080 --> 00:46:42,550 pisząc oprogramowanie że poprzez wiązek podczerwieni, 1077 00:46:42,550 --> 00:46:46,360 domyśla się, gdzie ludzkie ręce, nawet bez dotykania klawiatury. 1078 00:46:46,360 --> 00:46:49,135 Myśleliśmy, że będziemy dzielić szybkie dostrzec w tym, na przykład. 1079 00:46:49,135 --> 00:46:51,428 >> [MUZYKI] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Tak, mamy całość kilka tych rzeczy, 1082 00:47:57,590 --> 00:48:01,040 też nazywa Myo opaski które można umieścić na swoim przedramieniu 1083 00:48:01,040 --> 00:48:04,595 i wtedy można kontrolować rzeczywisty Świat wirtualny świat lub tak. 1084 00:48:04,595 --> 00:48:06,471 >> [MUZYKI] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Albo, mamy też pewne Google Tektura, która jest dosłownie, jak, 1087 00:49:20,920 --> 00:49:24,841 karton można umieścić na swojej twarz, ale slajdów w telefonie do niego 1088 00:49:24,841 --> 00:49:27,590 tak, że można umieścić szklankę swoje Telefon bardzo blisko oczu. 1089 00:49:27,590 --> 00:49:30,190 I Google Tektura jest bardzo tanie w $ $ 10 lub 20. 1090 00:49:30,190 --> 00:49:32,230 I ma małe obiektywy że nieco poza przesunięciem 1091 00:49:32,230 --> 00:49:35,900 obraz na ekranie dla człowieka oczy, aby dać poczucie głębi 1092 00:49:35,900 --> 00:49:39,550 tak, że rzeczywiście mają 3D środowiska przed tobą. 1093 00:49:39,550 --> 00:49:42,927 Mamy też trochę Samsung Ubiór, który jest to bardziej kosztowne wersję tego 1094 00:49:42,927 --> 00:49:46,010 ale to może podobnie slajdów w Android i daje złudzenie 1095 00:49:46,010 --> 00:49:48,309 of-- lub dać doświadczenie rzeczywistości wirtualnej. 1096 00:49:48,309 --> 00:49:50,850 A w naszych dwóch ostatnich minut, myśleliśmy, że będziemy starać się to zrobić. 1097 00:49:50,850 --> 00:49:55,250 Jeśli mogę wystawać co Colton ma tutaj tylko na zaostrzenie apetytu, 1098 00:49:55,250 --> 00:49:58,442 pozwól mi iść dalej i rzucać się na dużym ekranie tutaj. 1099 00:49:58,442 --> 00:49:59,400 Pozwól mi zabić światła. 1100 00:49:59,400 --> 00:50:02,290 Colton, chcesz iść do przodu i umieścić na swojej komórce na chwilę 1101 00:50:02,290 --> 00:50:05,171 i chodź do Środek sceny? 1102 00:50:05,171 --> 00:50:07,420 I chcesz project-- to co Colton widzi. 1103 00:50:07,420 --> 00:50:10,560 >> Teraz, Wi-Fi w tutaj jest nie tak silny dla tego urządzenia 1104 00:50:10,560 --> 00:50:13,870 że jest bardzo atrakcyjne, ale Colton jest dosłownie 1105 00:50:13,870 --> 00:50:15,710 w tym magicznym futurystycznym miejscu. 1106 00:50:15,710 --> 00:50:16,796 On widzi tylko jedno zdjęcie. 1107 00:50:16,796 --> 00:50:19,920 Widzisz jego lewego i prawego oka że jego mózg są szwy razem 1108 00:50:19,920 --> 00:50:22,260 w trójwymiarowy środowiska na jego twarzy. 1109 00:50:22,260 --> 00:50:24,319 On po prostu wybiera opcję menu tutaj. 1110 00:50:24,319 --> 00:50:27,360 I znowu, on sobie ten zestaw słuchawkowy z telefonu Samsung na to, że to 1111 00:50:27,360 --> 00:50:29,080 bezprzewodowo projekcji do naszego napowietrznych. 1112 00:50:29,080 --> 00:50:30,349 Teraz jesteś na Marsie, jak sądzę? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Myślę, że tak. 1114 00:50:31,140 --> 00:50:32,181 Nie jestem pewien, [niesłyszalne]. 1115 00:50:32,181 --> 00:50:34,250 [Śmiech] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID MALAN: Okazuje się, Mars ma tych menu. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [niesłyszalne] jakieś fajne miejsca, jeśli chcemy iść to-- 1118 00:50:41,590 --> 00:50:43,330 >> DAVID MALAN: Dokąd chcesz jechać? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [niesłyszalne] 1120 00:50:45,837 --> 00:50:48,170 DAVID MALAN: I zobaczmy gdzie Colton zabiera nas teraz. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [niesłyszalne] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID MALAN: Tak, nie ma tak wielu różnych miejscach można zrobić samemu. 1124 00:50:56,380 --> 00:51:00,590 Jest FAPIs poprzez które można Napisać gry i interakcji, które 1125 00:51:00,590 --> 00:51:01,950 uruchomić, ostatecznie, na telefon. 1126 00:51:01,950 --> 00:51:03,908 Więc tak naprawdę pisanie telefonu aplikację mobilną. 1127 00:51:03,908 --> 00:51:06,380 Ale dzięki oprogramowaniu i możliwości graficzne, 1128 00:51:06,380 --> 00:51:08,765 teraz Colton jest w tym maleńki domek. 1129 00:51:08,765 --> 00:51:10,515 I na ryzyko przytłaczające się, 1130 00:51:10,515 --> 00:51:13,330 Colton i będę trzymać się na a na koniec grupy tu dzisiaj 1131 00:51:13,330 --> 00:51:14,300 jeśli chcesz przyjść i grać. 1132 00:51:14,300 --> 00:51:16,350 I będziemy je przynieść powrót w przyszłym tygodniu, jak również. 1133 00:51:16,350 --> 00:51:18,420 Bez ceregieli To wszystko na dzisiaj. 1134 00:51:18,420 --> 00:51:21,990 Do zobaczenia w przyszłym tygodniu. 1135 00:51:21,990 --> 00:51:24,140 >> [MUZYKA - Ragga Twins, "zły człowiek"] 1136 00:51:24,140 --> 00:55:23,146