1 00:00:00,000 --> 00:00:02,405 >> [Музички] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 Дејвид MALAN: Во ред, ова е CS50. 4 00:00:11,980 --> 00:00:13,740 Ова е крајот на недела осум. 5 00:00:13,740 --> 00:00:15,887 И денес, ние започнуваме за пополнување на некои парчиња 6 00:00:15,887 --> 00:00:17,720 кога станува збор за градење работите на интернет. 7 00:00:17,720 --> 00:00:20,020 Значи, да се потсетиме дека во понеделникот ние трошиме многу повеќе време 8 00:00:20,020 --> 00:00:22,530 на PHP, кој е овој динамичен програмски јазик кој 9 00:00:22,530 --> 00:00:26,872 ни овозможува излез, меѓу другите работи, HTML и други такви содржини 10 00:00:26,872 --> 00:00:27,830 дека ќе сакаат да видат. 11 00:00:27,830 --> 00:00:30,871 Но, ние не сме навистина погледна како ние ќе треба да чува сите податоци. 12 00:00:30,871 --> 00:00:34,477 Всушност, речиси секој од дека супер интересни веб-сајтови кои ги посетувате и денес 13 00:00:34,477 --> 00:00:36,560 имаат некој вид на база на податоци на задниот крај, нели? 14 00:00:36,560 --> 00:00:39,540 Фејсбук сигурно складира големи количини на податоци за сите нас и сите продавници на Gmail 15 00:00:39,540 --> 00:00:40,210 на вашите пораки. 16 00:00:40,210 --> 00:00:44,150 >> И така, многу други сајтови, не се само статична содржина која е информативни. 17 00:00:44,150 --> 00:00:45,640 Тоа е всушност динамичен на некој начин. 18 00:00:45,640 --> 00:00:48,480 Ви обезбеди влез, тоа надградби страниците за други луѓе. 19 00:00:48,480 --> 00:00:50,620 Ќе го добиете пораки, ви испрати пораки, и така натаму. 20 00:00:50,620 --> 00:00:54,250 Така, денес, ние се погледне поблиску основи на проектот 21 00:00:54,250 --> 00:00:57,330 дека ќе се нурне во следната недела, CS50 финансии, кое 22 00:00:57,330 --> 00:01:00,509 е всушност ќе имаме да се изгради нешто што не е во C, но во PHP. 23 00:01:00,509 --> 00:01:02,550 А веб-сајт што изгледа малку нешто како ова 24 00:01:02,550 --> 00:01:05,810 која им овозможува да купуваат и продаваат акции, кои се всушност 25 00:01:05,810 --> 00:01:09,044 ќе се осврне реално време трговија податоци од Јаху финансии. 26 00:01:09,044 --> 00:01:11,960 И така на крајот, ќе имаат Илузијата за себе и за корисниците 27 00:01:11,960 --> 00:01:14,550 дека вие сте всушност купување и продавање акции и добива речиси во реално време 28 00:01:14,550 --> 00:01:16,800 надградби, управување со портфолио, од кои сите 29 00:01:16,800 --> 00:01:20,310 се случува да се бара да се има, во крајна линија, база на податоци на корисниците. 30 00:01:20,310 --> 00:01:23,330 >> Значи, со свои зборови, особено ако не сте 31 00:01:23,330 --> 00:01:25,670 супер запознаени со компјутер наука или бази на податоци, што 32 00:01:25,670 --> 00:01:30,790 знаеш базата на податоци да биде во моментов, во nontechnical термини? 33 00:01:30,790 --> 00:01:32,300 Што е тоа? 34 00:01:32,300 --> 00:01:36,882 Како ќе го опише да цимер или пријател? 35 00:01:36,882 --> 00:01:40,100 >> ПУБЛИКАТА: [Беззвучен] информации [Беззвучен] 36 00:01:40,100 --> 00:01:44,430 >> Дејвид MALAN: Значи, листа на информации, или store-- листа на информации 37 00:01:44,430 --> 00:01:47,160 кои можеби ќе сакате да ги чувате за нешто, како корисник. 38 00:01:47,160 --> 00:01:50,190 И она што корисниците се направи поврзани со нив? 39 00:01:50,190 --> 00:01:53,160 Ако сте корисник на Фејсбук или Gmail, кои се карактеристиките 40 00:01:53,160 --> 00:01:54,940 дека сите од нас кои имаат? 41 00:01:54,940 --> 00:01:58,530 Како, што би можело да биде дел од колони во табелата на која ние 42 00:01:58,530 --> 00:01:59,390 алудираше последен пат? 43 00:01:59,390 --> 00:02:01,140 Бидејќи повторно, можете да мислам на база на податоци 44 00:02:01,140 --> 00:02:05,810 навистина како фенси Excel датотеката или Google Табела или Епл броеви датотека. 45 00:02:05,810 --> 00:02:08,280 >> Значи, она што мислите кога ќе се сетам на корисникот? 46 00:02:08,280 --> 00:02:11,290 Што прават тие? 47 00:02:11,290 --> 00:02:11,790 Што е тоа? 48 00:02:11,790 --> 00:02:12,470 >> ПУБЛИКАТА: Едно име. 49 00:02:12,470 --> 00:02:13,303 >> Дејвид MALAN: Едно име. 50 00:02:13,303 --> 00:02:16,840 Значи, ако името, како Дејвид Malan ќе биде име на некој корисник. 51 00:02:16,840 --> 00:02:17,980 Што друго корисничко имаат? 52 00:02:17,980 --> 00:02:18,770 >> ПУБЛИКАТА: лична карта. 53 00:02:18,770 --> 00:02:19,561 >> Дејвид MALAN: лична карта. 54 00:02:19,561 --> 00:02:23,320 Значи, како идентификациски број, како вашиот Харвард Проект или вашиот Јеил Нет проект или слично. 55 00:02:23,320 --> 00:02:24,923 Што друго би корисник имаат? 56 00:02:24,923 --> 00:02:25,890 >> ПУБЛИКАТА: Лозинка. 57 00:02:25,890 --> 00:02:29,240 >> Дејвид MALAN: А лозинка, можеби адреса, телефонски број, можеби, можеби 58 00:02:29,240 --> 00:02:30,050 е-маил адреса. 59 00:02:30,050 --> 00:02:32,640 Значи, има гроздовете на полиња и ова би можеле вид на спирала надвор од контрола 60 00:02:32,640 --> 00:02:34,760 брзо веднаш штом ќе започнете реализација, ох, ајде да го зачувате овој 61 00:02:34,760 --> 00:02:36,190 и ајде да се сместат ова и она. 62 00:02:36,190 --> 00:02:37,657 >> Но, како ние всушност го направи тоа? 63 00:02:37,657 --> 00:02:39,740 Значи, повторно, ментална модел за да имаат за денес како што 64 00:02:39,740 --> 00:02:42,320 нурне во вистинските SQL, Структурно јазик за пребарување, 65 00:02:42,320 --> 00:02:44,186 е база на податоци која изгледа вака. 66 00:02:44,186 --> 00:02:45,310 Тоа е само редови и колони. 67 00:02:45,310 --> 00:02:48,309 И можете да замислите Google Spreadsheets или било кој број на други програми. 68 00:02:48,309 --> 00:02:52,130 Но она што е клучот за MySQL, која е база на податоци софтвер ние се случува да се користи, 69 00:02:52,130 --> 00:02:54,920 слободно отворено available-- Фејсбук употреба 70 00:02:54,920 --> 00:02:59,200 тоа и било кој број на други websites-- база на податоци продавници работите relationally. 71 00:02:59,200 --> 00:03:01,770 И релациона база на податоци само значи оној кој буквално 72 00:03:01,770 --> 00:03:03,672 складира податоците во редови и колони. 73 00:03:03,672 --> 00:03:04,630 Тоа е толку едноставно како што. 74 00:03:04,630 --> 00:03:07,230 >> Значи, дури и нешто како Оракл дека можеби сте слушнале за општо 75 00:03:07,230 --> 00:03:08,271 е релациона база на податоци. 76 00:03:08,271 --> 00:03:10,929 И под хаубата тоа, продавници податоци во редови и колони. 77 00:03:10,929 --> 00:03:12,970 И Oracle ви наплаќа многу пари за да го направи тоа, 78 00:03:12,970 --> 00:03:15,550 со оглед на MySQL обвиненија можете ништо за истата. 79 00:03:15,550 --> 00:03:18,790 Значи, SQL ќе ни даде најмалку четири операции. 80 00:03:18,790 --> 00:03:23,190 Можност за избор на податоци, како за читање податоци, вметнете, избришете, и ажурирање на податоците. 81 00:03:23,190 --> 00:03:25,525 Со други зборови, тие се навистина четири клучни операции 82 00:03:25,525 --> 00:03:28,950 кој се случува да ни овозможи да се промени работи во овие редови и колони. 83 00:03:28,950 --> 00:03:33,250 >> Алатка која ние ќе ги користиме денес особено да научат SQL и да си игра со него 84 00:03:33,250 --> 00:03:34,627 повторно се вика PHP MyAdmin. 85 00:03:34,627 --> 00:03:35,460 Тоа е веб-базирана алатка. 86 00:03:35,460 --> 00:03:38,200 Вкупниот е случајно што тоа е напишано во PHP. 87 00:03:38,200 --> 00:03:42,400 Но, тоа се случува да ни даде графички кориснички интерфејс, така што ние всушност може да 88 00:03:42,400 --> 00:03:46,054 создадат овие редови и колони а потоа и да разговараат со нив преку код. 89 00:03:46,054 --> 00:03:47,970 Значи, ајде сега да почне да се што мислам дека е искрено 90 00:03:47,970 --> 00:03:51,000 вид на процес на забавата на градење на задниот крај на веб-сајтови, 91 00:03:51,000 --> 00:03:54,580 деловите што корисниците не види, но сигурно се грижат за, 92 00:03:54,580 --> 00:03:56,170 затоа што тоа е подобро за податоци се случува. 93 00:03:56,170 --> 00:03:59,570 Така, слично на C и малку помалку како PHP, 94 00:03:59,570 --> 00:04:04,954 SQL или база на податоци која ги поддржува SQL, има барем овие типови на податоци 95 00:04:04,954 --> 00:04:05,870 и гроздовете на другите. 96 00:04:05,870 --> 00:04:08,107 Char, VARCHAR, ИНТ, BIGINT, Децималниот и DateTime. 97 00:04:08,107 --> 00:04:09,940 И има цела куп други карактеристики, 98 00:04:09,940 --> 00:04:11,940 но ајде да го направите тоа со начин на вистински пример. 99 00:04:11,940 --> 00:04:16,450 >> Одам да одите во CS50 ИРО каде што, во однапред, јас сум логиран 100 00:04:16,450 --> 00:04:19,372 и јас исто така го посетиле URL за оваа алатка наречена PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 А проблемот постави седум, ние ќе ти каже како точно да се дојде до овој интерфејс 102 00:04:22,580 --> 00:04:23,200 исто така. 103 00:04:23,200 --> 00:04:25,640 Во горниот лев агол на екранот, известување што се вели предавање. 104 00:04:25,640 --> 00:04:27,610 И тоа само значи дека однапред, го создадоа 105 00:04:27,610 --> 00:04:31,360 празна база на податоци наречена предавање дека нема табели во него уште. 106 00:04:31,360 --> 00:04:32,600 Нема редови и колони. 107 00:04:32,600 --> 00:04:34,308 Бидејќи прв нешто што ние ќе треба да се направи 108 00:04:34,308 --> 00:04:37,100 се почне да се создаде маса што се случува да се сместат на нашите корисници. 109 00:04:37,100 --> 00:04:39,100 >> Значи, буквално над тука на правото, јас сум 110 00:04:39,100 --> 00:04:42,070 случува да се каже за базата на податоци Сакам маса наречена корисници. 111 00:04:42,070 --> 00:04:44,845 Значи, ова е како на датотека што го сакате да ги чувате сите мои податоци во. 112 00:04:44,845 --> 00:04:45,720 И колку колони? 113 00:04:45,720 --> 00:04:47,740 Па, ајде да ја задржиш едноставен за сега. 114 00:04:47,740 --> 00:04:51,855 Јас само сакам да ги чувате како корисничко име и име за корисникот. 115 00:04:51,855 --> 00:04:53,020 Ќе започнете мал. 116 00:04:53,020 --> 00:04:55,370 Значи, сакам две колони вкупно. 117 00:04:55,370 --> 00:04:57,360 А јас ќе одам да се оди напред и да кликнете на Оди. 118 00:04:57,360 --> 00:04:59,210 А потоа, за овие столбови, она што јас ќе одам 119 00:04:59,210 --> 00:05:04,576 да do-- ако овој интернет cooperates-- во ред, 120 00:05:04,576 --> 00:05:05,950 па ние ќе се обидеме тоа повторно. 121 00:05:05,950 --> 00:05:09,180 Одам да се создаде маса наречена Корисниците со две колони, кликнете оди, ОК. 122 00:05:09,180 --> 00:05:10,520 Сега имаме тоа навистина брзо. 123 00:05:10,520 --> 00:05:12,065 Ви благодарам, многу добро направено. 124 00:05:12,065 --> 00:05:14,440 Добро, па она што сакаме овие колумни да се вика? 125 00:05:14,440 --> 00:05:16,080 >> Значи, се случува да се нарече Корисничко име. 126 00:05:16,080 --> 00:05:19,480 Значи, сите гледам here-- и интерфејс искрено добива малку грдо на крајот, 127 00:05:19,480 --> 00:05:21,270 еднаш ќе почнете да пишувате во сите овие податоци. 128 00:05:21,270 --> 00:05:27,450 Но, она што е убаво е тоа вид на парадоксално, Јас сум во создавањето колони, 129 00:05:27,450 --> 00:05:29,977 но алатка има глупаво ги распослав во редови 130 00:05:29,977 --> 00:05:31,560 така што можам да го конфигурирате овие колони. 131 00:05:31,560 --> 00:05:33,550 Значи, има две празни места таму под име. 132 00:05:33,550 --> 00:05:36,180 И една од овие области јас сакаат да се нарече име, 133 00:05:36,180 --> 00:05:38,000 а другиот поле Сакам да го наречеш со името. 134 00:05:38,000 --> 00:05:40,340 >> И сега јас треба да го изберат типови на податоци за овие работи. 135 00:05:40,340 --> 00:05:42,330 Значи, со оглед на тоа во Excel и Google Spreadsheets, 136 00:05:42,330 --> 00:05:45,531 ако сакате колона, вие буквално само напишете име или корисничко име, притиснете Enter. 137 00:05:45,531 --> 00:05:48,030 Можеби сте го направи храбар лице само за да биде појасно, но тоа е тоа. 138 00:05:48,030 --> 00:05:50,140 Вие не се определи типови на колоните. 139 00:05:50,140 --> 00:05:53,790 Сега во Google Spreadsheets или Excel, може да се определи како ќе се рендерира податоци. 140 00:05:53,790 --> 00:05:58,120 Вие би можеле да одат на менито Формат, и вие да наведете ја прикажете како знак за долар, 141 00:05:58,120 --> 00:05:59,900 прикажете како децимален број. 142 00:05:59,900 --> 00:06:01,990 >> Значи, тоа е слични во духот дека она што ние сме за да се направи, 143 00:06:01,990 --> 00:06:04,740 но ова е всушност ќе ја принуди на податоци за да биде одреден тип. 144 00:06:04,740 --> 00:06:07,750 Сега, иако пред еден миг јас рече дека има само неколку типови на податоци, 145 00:06:07,750 --> 00:06:11,120 има всушност е многу, и тие се 146 00:06:11,120 --> 00:06:12,910 во различни степени на специфичност. 147 00:06:12,910 --> 00:06:14,970 И како настрана, вие па дури и може да направи фенси работи 148 00:06:14,970 --> 00:06:17,520 како геометрии складирање во внатрешноста на базата на податоци. 149 00:06:17,520 --> 00:06:19,250 Можете да ги чувате работите како GPS координати 150 00:06:19,250 --> 00:06:22,420 а всушност се најде, математички, точки кои се блиски до другите. 151 00:06:22,420 --> 00:06:24,128 Но, ние ќе треба да задржи овој супер едноставен 152 00:06:24,128 --> 00:06:26,800 и да си одат до тука, на сите т.н. видови стринг. 153 00:06:26,800 --> 00:06:29,240 >> Значи, тука е листа на куп на опции. 154 00:06:29,240 --> 00:06:32,740 Char, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 И тоа е вид на огромна. 156 00:06:34,110 --> 00:06:37,610 И, за жал, малку парадоксално до С, 157 00:06:37,610 --> 00:06:40,120 знак не е навистина знак. 158 00:06:40,120 --> 00:06:44,170 Ако се определи во база на податоци дека вашиот тип на податок е char, 159 00:06:44,170 --> 00:06:47,390 тоа значи дека, да, тоа е Char, но тоа е една или повеќе карактери. 160 00:06:47,390 --> 00:06:49,630 И ќе мора да се определи колку знаци што го сакате. 161 00:06:49,630 --> 00:06:51,636 Значи, она што е типично должина на корисничко име? 162 00:06:51,636 --> 00:06:52,760 Има ограничување обично? 163 00:06:52,760 --> 00:06:53,920 >> ПУБЛИКАТА: [Беззвучен] 164 00:06:53,920 --> 00:06:55,050 >> Дејвид MALAN: 16, можеби? 165 00:06:55,050 --> 00:06:55,990 Така нешто. 166 00:06:55,990 --> 00:06:57,948 Знаете, се врати во ден, што се користи да биде осум. 167 00:06:57,948 --> 00:07:00,289 Понекогаш тоа е 16, понекогаш тоа е дури и повеќе од тоа. 168 00:07:00,289 --> 00:07:02,080 И така, тоа не значи дај ми еден знак. 169 00:07:02,080 --> 00:07:04,730 Ова значи дека треба да се наведе должината на полето, 170 00:07:04,730 --> 00:07:07,402 и сега би можел да кажам нешто како 16. 171 00:07:07,402 --> 00:07:08,610 И таму е пласирам тука. 172 00:07:08,610 --> 00:07:11,360 Така, ќе видиме во еден момент дека ова значи еден, 173 00:07:11,360 --> 00:07:14,620 секој корисничко име мора да биде 16 карактери. 174 00:07:14,620 --> 00:07:18,720 Но чекајте, М-А-Л-А-Н. Ако тоа е моето корисничко име и јас сум со користење само на пет, 175 00:07:18,720 --> 00:07:23,070 она што ќе му предложи на база на податоци да го стори и за другите 11 карактери кои 176 00:07:23,070 --> 00:07:24,471 Сум се задржани простор за? 177 00:07:24,471 --> 00:07:25,220 Што би направил? 178 00:07:25,220 --> 00:07:26,480 >> ПУБЛИКАТА: [Беззвучен] 179 00:07:26,480 --> 00:07:27,160 >> Дејвид MALAN: Да, само да ги направи сите ништовни. 180 00:07:27,160 --> 00:07:28,290 Да ги направи простори. 181 00:07:28,290 --> 00:07:30,816 Но веројатно нула, па многу обратна коса црта нули. 182 00:07:30,816 --> 00:07:33,190 Значи, од една страна, имаме сега се сигурни дека моето корисничко име 183 00:07:33,190 --> 00:07:34,780 може да биде не повеќе од 16 карактери. 184 00:07:34,780 --> 00:07:37,590 И друга страна на тоа е дека ако имав навистина долго име 185 00:07:37,590 --> 00:07:39,940 или сакаше навистина долго корисничко име, како што некои од вас 186 00:07:39,940 --> 00:07:44,840 момци би можеле да имаат во тој колеџ или во Yale.edu, не можете да имате еден. 187 00:07:44,840 --> 00:07:47,177 И така во Всушност, ако сте некогаш сте регистрирани за веб-сајт 188 00:07:47,177 --> 00:07:49,385 и ќе се викал на велејќи Вашата лозинка е премногу долго 189 00:07:49,385 --> 00:07:52,710 или вашето корисничко име е премногу долго, тоа е едноставно поради програмер, кога 190 00:07:52,710 --> 00:07:55,500 конфигурирање на неговата или нејзината база на податоци, одлучи дека оваа област ќе 191 00:07:55,500 --> 00:07:57,150 да биде подолг од оваа должина. 192 00:07:57,150 --> 00:08:00,580 >> Добро, така што ако да продолжиме со името? 193 00:08:00,580 --> 00:08:05,240 Колку долго треба да биде Име на човекот вообичаено е да биде? 194 00:08:05,240 --> 00:08:07,492 Колку знаци, 16? 195 00:08:07,492 --> 00:08:09,450 Јас сум Сомневајќи се што можевме најде некој во оваа соба 196 00:08:09,450 --> 00:08:13,210 каде што од страна на неговиот или нејзиниот прв плус последните Името е подолг од 16 карактери. 197 00:08:13,210 --> 00:08:14,850 Значи, што е подобро од тоа, 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 Поголема? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> ПУБЛИКАТА: [Беззвучен] 203 00:08:21,855 --> 00:08:23,700 Дејвид MALAN: 5.000, о, боже. 204 00:08:23,700 --> 00:08:26,309 Значи, тоа е веројатно пристоен горна граница, да се каже. 205 00:08:26,309 --> 00:08:28,350 И тука сме вид на се има да се направи проценка на повик. 206 00:08:28,350 --> 00:08:30,400 Како, нема вистински одговор тука. 207 00:08:30,400 --> 00:08:32,740 Бесконечна не е сосема можно, бидејќи ние сме на крајот 208 00:08:32,740 --> 00:08:34,781 ќе have-- сме ќе снема меморија. 209 00:08:34,781 --> 00:08:36,909 Значи, ние треба да се направи пресуда повик во некоја точка. 210 00:08:36,909 --> 00:08:41,010 >> Многу честа појава ќе биде, на пример, да use-- и дозволете ми да наведете CHAR тука 211 00:08:41,010 --> 00:08:46,050 како before-- 255 беше буквално Горната граница на оваа база на податоци софтвер 212 00:08:46,050 --> 00:08:46,700 Пред години. 213 00:08:46,700 --> 00:08:48,575 И така, многу од луѓето само би рекол, парична казна. 214 00:08:48,575 --> 00:08:49,420 255 е граница. 215 00:08:49,420 --> 00:08:50,620 Ајде да се само користење на максимум. 216 00:08:50,620 --> 00:08:51,870 И ова е прилично смешно. 217 00:08:51,870 --> 00:08:55,060 Како, ако сте пишување нечии именува за 200 плус знаци, 218 00:08:55,060 --> 00:08:56,140 дека малку смешно. 219 00:08:56,140 --> 00:08:59,624 >> Но, не заборавајте дека не е ASCII единствениот систем за ликовите. 220 00:08:59,624 --> 00:09:01,540 И така, особено во многу азиски јазици 221 00:09:01,540 --> 00:09:04,248 каде што има знаци не можеме изразат на клавијатури како мојата САД 222 00:09:04,248 --> 00:09:08,209 тастатура, некои ликови, всушност, се до 16 бита, наместо од осум бита. 223 00:09:08,209 --> 00:09:10,250 И така, ова всушност не е толку неразумно 224 00:09:10,250 --> 00:09:12,250 што ни е потребно повеќе простор, ако сакаме да се вклопи 225 00:09:12,250 --> 00:09:16,252 поголеми ликови од многу САД оддалечиме од оние што сме со тенденција да се разговара. 226 00:09:16,252 --> 00:09:17,460 Значи, ние треба некои горната граница. 227 00:09:17,460 --> 00:09:21,470 Јас не знам што најдобра е, но 255 е генерално заедничка еден. 228 00:09:21,470 --> 00:09:22,700 25 чувствува ниско. 229 00:09:22,700 --> 00:09:23,857 16, 32 се чувствуваат мали. 230 00:09:23,857 --> 00:09:25,690 Јас ќе згрешат на страната на нешто повисоко. 231 00:09:25,690 --> 00:09:27,330 Но, има пласирам, како и секогаш. 232 00:09:27,330 --> 00:09:31,902 Што е, можеби, очигледно пласирам резервираат 255 карактери 233 00:09:31,902 --> 00:09:33,360 за името на сите во мојата база на податоци? 234 00:09:33,360 --> 00:09:34,230 >> ПУБЛИКАТА: [Беззвучен] 235 00:09:34,230 --> 00:09:34,510 >> Дејвид MALAN: Што е тоа? 236 00:09:34,510 --> 00:09:35,430 >> ПУБЛИКАТА: [Беззвучен] 237 00:09:35,430 --> 00:09:37,138 >> Дејвид MALAN: Тоа е многу меморија, нели? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N. Имам само залудно потрошени 250 карактери само за чување на моето име 239 00:09:42,280 --> 00:09:46,000 дефанзивно, само во случај некој во класата има навистина долго име. 240 00:09:46,000 --> 00:09:47,940 Тоа изгледа како непотребно Губитокот. 241 00:09:47,940 --> 00:09:52,040 >> Значи, излегува дека на SQL, овој јазик база на податоци, 242 00:09:52,040 --> 00:09:55,480 всушност поддржува нешто наречен VARCHAR, или променлив знак. 243 00:09:55,480 --> 00:09:59,390 И ова е вид на убаво со тоа ова Ви дозволува да наведете не фиксна 244 00:09:59,390 --> 00:10:01,900 ширина, туку, со променлива ширина. 245 00:10:01,900 --> 00:10:05,060 И поконкретно, на максималната ширина на поле. 246 00:10:05,060 --> 00:10:08,901 Значи, ова значи дека името може да да има повеќе од 250 карактери, 247 00:10:08,901 --> 00:10:10,150 но тоа сигурно не може да биде помал. 248 00:10:10,150 --> 00:10:11,733 И базата на податоци се случува да се биде паметен. 249 00:10:11,733 --> 00:10:14,860 Ако не се стави во М-А-Л-А-Н, тоа е само ќе да се користи пет, 250 00:10:14,860 --> 00:10:18,120 можеби шест бајти за како заостанува null карактер, 251 00:10:18,120 --> 00:10:23,330 и не трошат дополнителни 249 или 250 бајти непотребно. 252 00:10:23,330 --> 00:10:27,380 >> Значи, ова изгледа како јас треба почнаа со оваа приказна. 253 00:10:27,380 --> 00:10:29,140 Но секогаш постои Губитокот. 254 00:10:29,140 --> 00:10:33,024 Значи, од една страна, а јас сум корисничко име наведени да биде хард кодирани во 16, 255 00:10:33,024 --> 00:10:34,940 а можеби и тоа не беше вистинскиот повик, можеби 256 00:10:34,940 --> 00:10:40,040 е, но зошто да не ги користат VARCHARs за сè? 257 00:10:40,040 --> 00:10:42,020 >> Таа постои со причина. 258 00:10:42,020 --> 00:10:46,200 Зошто не ја користите VARCHARs за секоја област чија должина не знаете однапред 259 00:10:46,200 --> 00:10:48,180 ако тоа се чини дека е голема работа, нели? 260 00:10:48,180 --> 00:10:50,482 Користете само колку простор како што треба до овој лимит? 261 00:10:50,482 --> 00:10:51,271 >> ПУБЛИКАТА: побавно. 262 00:10:51,271 --> 00:10:52,146 Дејвид MALAN: правопис? 263 00:10:52,146 --> 00:10:53,120 ПУБЛИКАТА: Тоа го прави побавно? 264 00:10:53,120 --> 00:10:53,970 Дејвид MALAN: Ох, тоа е побавно. 265 00:10:53,970 --> 00:10:55,720 Добро, тоа е речиси секогаш одговорот на прашањето, искрено. 266 00:10:55,720 --> 00:10:56,520 Како, на она што е Губитокот? 267 00:10:56,520 --> 00:10:58,570 Таа или чини повеќе простор или тоа чини повеќе време. 268 00:10:58,570 --> 00:11:00,111 Значи, во овој случај, тоа би можело да биде побавен. 269 00:11:00,111 --> 00:11:00,920 Зошто? 270 00:11:00,920 --> 00:11:05,830 >> ПУБЛИКАТА: [Беззвучен] утврдување [Беззвучен]. 271 00:11:05,830 --> 00:11:06,640 >> Дејвид MALAN: Добро. 272 00:11:06,640 --> 00:11:09,670 Значи, може да се сети од дури PSED5, играјќи си со вашиот пристап 273 00:11:09,670 --> 00:11:12,750 во речникот, ако треба да се алоцирам меморија динамички или задржите 274 00:11:12,750 --> 00:11:14,630 расте тампон, дека всушност може да биде бавен. 275 00:11:14,630 --> 00:11:16,963 Ако треба да се јавите Примерок под хаубата, а можеби и 276 00:11:16,963 --> 00:11:19,610 MySQL, тоа е она што го прави, па сигурно дека би можел да биде случај. 277 00:11:19,610 --> 00:11:22,430 И ако мислите дека начинот на кој назад кон PSet-- или дури 278 00:11:22,430 --> 00:11:26,340 две недели, кога го правевме работите како бинарни пребарување или дури линеарно пребарување, 279 00:11:26,340 --> 00:11:30,690 еден од убави работи за секој збор во базата на податоци или секој збор во колона 280 00:11:30,690 --> 00:11:33,690 биде иста должина, па дури и ако целиот куп на тие ликови 281 00:11:33,690 --> 00:11:37,390 се празни, е во тоа што можете да го користите случаен пристап на вашите податоци, нели? 282 00:11:37,390 --> 00:11:40,310 >> Ако знаете дека секој Зборот е 16 карактери далеку, 283 00:11:40,310 --> 00:11:46,460 можете да го користите покажувачот аритметички, така да зборува, и да си одат за да ни 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 и вие само може да се фрламе веднаш користење на аритметички 285 00:11:49,589 --> 00:11:51,130 со некој од зборовите во вашата база на податоци. 286 00:11:51,130 --> 00:11:54,280 Со оглед на тоа дали тоа е VARCHAR, што ти наместо да се направи? 287 00:11:54,280 --> 00:11:55,960 >> [Телефонот ѕвони] 288 00:11:55,960 --> 00:11:58,680 >> Ако тоа е VARCHAR, можете не може да се користи случаен пристап. 289 00:11:58,680 --> 00:12:01,341 Она што треба да се погледне за или не? 290 00:12:01,341 --> 00:12:01,840 Да? 291 00:12:01,840 --> 00:12:03,240 >> ПУБЛИКАТА: [Беззвучен] 292 00:12:03,240 --> 00:12:04,310 >> Дејвид MALAN: Погледнете преку whole-- трага 293 00:12:04,310 --> 00:12:06,518 во текот на целата листа во потрага по она што, најверојатно? 294 00:12:06,518 --> 00:12:08,356 Каков вид на посебна вредност? 295 00:12:08,356 --> 00:12:09,230 ПУБЛИКАТА: [Беззвучен] 296 00:12:09,230 --> 00:12:11,105 Дејвид MALAN: Овде сум за ништовни терминатори 297 00:12:11,105 --> 00:12:13,637 демаркираат дека поделбата на зборови. 298 00:12:13,637 --> 00:12:15,720 Значи, повторно, Губитокот, и нема вистинскиот одговор. 299 00:12:15,720 --> 00:12:18,380 Но, ова е местото каде што, особено кога корисниците се да биде многу 300 00:12:18,380 --> 00:12:21,700 и вашиот товар на вашиот сервери, број на луѓе користат таа добива висока, 301 00:12:21,700 --> 00:12:23,650 Ова се всушност nontrivial одлуки. 302 00:12:23,650 --> 00:12:26,640 Значи, можеме да ги напуштат овие како ова, но ајде да се движите надолу во текот на правото 303 00:12:26,640 --> 00:12:27,332 овде. 304 00:12:27,332 --> 00:12:30,290 Сега, има неколку колони каде што ние треба да се направи проценка на повик. 305 00:12:30,290 --> 00:12:35,170 Дали има смисла да се овозможи на корисникот име, корисничко име на корисникот или на корисникот 306 00:12:35,170 --> 00:12:36,370 име, за да биде нула? 307 00:12:36,370 --> 00:12:37,610 Тоа е, само празна. 308 00:12:37,610 --> 00:12:40,360 Се чувствува малку бесмислени, па јас сум не се случува да се провери оние кутии. 309 00:12:40,360 --> 00:12:42,670 Но, се покажа во еден база на податоци, може да се каже, 310 00:12:42,670 --> 00:12:44,620 некој може евентуално да има оваа вредност. 311 00:12:44,620 --> 00:12:47,180 Оваа колона нема всушност да биде таму. 312 00:12:47,180 --> 00:12:48,570 >> Сега, тука е тоа паѓачкото мени. 313 00:12:48,570 --> 00:12:50,810 И ќе забележите дека јас сум се уште во првиот ред таму, 314 00:12:50,810 --> 00:12:52,520 така што јас го зборувам корисничко име сега. 315 00:12:52,520 --> 00:12:56,290 И излегува дека базата на податоци, за разлика од едноставна обичен табела, 316 00:12:56,290 --> 00:12:58,520 има моќни карактеристики наречен индекси. 317 00:12:58,520 --> 00:13:02,600 И индекс е начин на раскажување на база на податоци за однапред дека човечкиот 318 00:13:02,600 --> 00:13:03,900 сум попаметен од вас. 319 00:13:03,900 --> 00:13:10,430 >> Знам дека она што видови на пребарувања, одберете или вметнете или да ги избришете или да ги ажурирате, 320 00:13:10,430 --> 00:13:13,182 дека мојот код ќе заврши го направиле на оваа база на податоци. 321 00:13:13,182 --> 00:13:14,390 Сакам да го прочитате голем број на податоци. 322 00:13:14,390 --> 00:13:15,681 Сакам да внесете голем број на податоци. 323 00:13:15,681 --> 00:13:17,530 Сакам да се постојано избришете многу податоци. 324 00:13:17,530 --> 00:13:21,520 Ако знам дека јас ќе одам да се биде пристапуваат поле Корисничко име како многу, 325 00:13:21,520 --> 00:13:24,770 Можам да кажам превентивно база на податоци, знам повеќе од вас, 326 00:13:24,770 --> 00:13:29,220 и сакам да указ со кој што треба индекс на ова поле. 327 00:13:29,220 --> 00:13:33,200 Каде индексирање поле или колона значи дека базата на податоци во однапред 328 00:13:33,200 --> 00:13:37,040 треба да позајмуваат некои идеи од, како, недела четири и пет и шест од CS50 329 00:13:37,040 --> 00:13:39,240 а всушност се изгради нешто како бинарни пребарување 330 00:13:39,240 --> 00:13:41,560 дрво или нешто генерално се нарекува Б дрво 331 00:13:41,560 --> 00:13:43,410 дека ќе научат во како CS124 класа 332 00:13:43,410 --> 00:13:46,710 на Харвард, на алгоритми класа, или било кој број на други места. 333 00:13:46,710 --> 00:13:49,570 >> Базата на податоци и паметни луѓе кои го спроведуваат 334 00:13:49,570 --> 00:13:53,880 ќе дознаам како да се чуваат таа маса на информации 335 00:13:53,880 --> 00:13:57,061 во меморијата, така што пребарувања и други операции се супер брзо. 336 00:13:57,061 --> 00:13:58,060 Вие не мора да го направи тоа. 337 00:13:58,060 --> 00:14:00,640 Вие не мора да се спроведе линеарно пребарување или бинарни пребарување 338 00:14:00,640 --> 00:14:03,300 или се спојуваат вид или селекција вид, било што. 339 00:14:03,300 --> 00:14:06,590 Базата на податоци го прави тоа за вас, ако ви кажам тоа превентивно да индекс на ова поле. 340 00:14:06,590 --> 00:14:09,100 >> И може да се види исто така, има некои други карактеристики 341 00:14:09,100 --> 00:14:11,010 може да се каже за базата на податоци за да се спроведат. 342 00:14:11,010 --> 00:14:16,431 Што би можело да значи тоа, ако изберам Единствен од ова мени, само интуитивно? 343 00:14:16,431 --> 00:14:16,930 Да? 344 00:14:16,930 --> 00:14:17,889 >> ПУБЛИКАТА: [Беззвучен] 345 00:14:17,889 --> 00:14:19,930 Дејвид MALAN: Да, корисничко име мора да биде уникатно. 346 00:14:19,930 --> 00:14:23,330 Дали е ова добро или лошо за база на податоци, за веб-сајт со корисници? 347 00:14:23,330 --> 00:14:24,965 Треба да биде уникатен кориснички имиња? 348 00:14:24,965 --> 00:14:25,880 Да, веројатно. 349 00:14:25,880 --> 00:14:27,800 Ако тоа е она што поле ги користиме за да се логирате, 350 00:14:27,800 --> 00:14:31,867 Вие навистина не сакаат да се луѓе кои имаат истото чувство или на истото корисничко име. 351 00:14:31,867 --> 00:14:33,700 Значи, можеме да имаме база на податоци за спроведување на тоа што толку 352 00:14:33,700 --> 00:14:37,880 дека сега во мојата PHP код или било кој јазик, Јас не треба да се, на пример, да се провери 353 00:14:37,880 --> 00:14:41,490 мора да го прави ова корисничко име постојат пред да ги споделите со некој да се регистрирате? 354 00:14:41,490 --> 00:14:46,690 Базата на податоци не ќе може да две лица по име Давид или Malans регистрирани во овој случај. 355 00:14:46,690 --> 00:14:50,030 >> И како настрана, иако ова мени само ви овозможува да изберете еден, 356 00:14:50,030 --> 00:14:54,550 единствен индекс е оној кој е во индексираат за супер брзи перформанси, 357 00:14:54,550 --> 00:14:56,100 но тоа исто така, наметнува уникатност. 358 00:14:56,100 --> 00:14:58,850 И ние ќе се вратам на она што Другите две значи во само еден миг. 359 00:14:58,850 --> 00:15:00,930 Во меѓувреме, ако одам да мојот втор ред, кои 360 00:15:00,930 --> 00:15:06,230 е името на корисникот, јас треба да се определи дека името треба да биде уникатен? 361 00:15:06,230 --> 00:15:09,550 Не, затоа што секако може да have-- нема две Дејвид 362 00:15:09,550 --> 00:15:11,050 Malans во оваа соба, најверојатно. 363 00:15:11,050 --> 00:15:14,290 Но, ако ги изберете друго име, ние сигурно може да има судири. 364 00:15:14,290 --> 00:15:16,130 >> Сетам на хаш маси и слично. 365 00:15:16,130 --> 00:15:18,604 Значи, ние сигурно не сакаат да се направи полето Име на уникатен. 366 00:15:18,604 --> 00:15:21,270 Значи, ние сме само ќе ја напушти дека како цртичка, црта, цртичка, ништо. 367 00:15:21,270 --> 00:15:22,660 А јас ќе одам да ја напушти се друго сами. 368 00:15:22,660 --> 00:15:25,035 Навистина, повеќето од овие области ние не ќе мора да се грижи за. 369 00:15:25,035 --> 00:15:27,830 И кога сум подготвен да се спаси ова, ако на интернет соработува, 370 00:15:27,830 --> 00:15:35,032 Кога ќе кликнете на Зачувај, и многу, многу, многу полека ја базата на податоци да се спаси. 371 00:15:35,032 --> 00:15:37,240 И сега сум назад кон оваа интерфејс, што мора да се признае, 372 00:15:37,240 --> 00:15:38,680 е огромна на прв поглед. 373 00:15:38,680 --> 00:15:42,450 Но сите јас ќе одам да направите е да кликнете на зборот Корисниците во горниот лев агол. 374 00:15:42,450 --> 00:15:47,630 Одам да одиме до тука, кликнете Корисници, и стандардно, го 375 00:15:47,630 --> 00:15:50,180 го извршила некои SQL, но повеќе за тоа во еден миг. 376 00:15:50,180 --> 00:15:52,654 Еве само резиме на она што го направив. 377 00:15:52,654 --> 00:15:55,320 И да не се грижи што ќе го видите спомнуваме на латински и шведски тука. 378 00:15:55,320 --> 00:16:00,490 Оние кои се само на стандардната поставки, бидејќи MySQL, првично, 379 00:16:00,490 --> 00:16:04,000 или PHP MyAdmin, еден од двата се случило да бидат напишани од страна на некои шведски луѓе. 380 00:16:04,000 --> 00:16:06,100 Но, тоа е ирелевантно во нашиот случај тука. 381 00:16:06,100 --> 00:16:08,280 >> Добро, па зошто е сето ова интересно? 382 00:16:08,280 --> 00:16:13,050 Излезе, Јас може да внесете податоци во базата на податоци со пишување на код. 383 00:16:13,050 --> 00:16:15,940 И јас сум се оди напред и да Во досието на мојот престој тука, јас сум 384 00:16:15,940 --> 00:16:19,000 да се оди напред и да се преправам како ова е жичен до таа база на податоци, која 385 00:16:19,000 --> 00:16:23,040 дека не е во моментот, но тоа ќе биде кога ќе се дојде до проблем во собата седум. 386 00:16:23,040 --> 00:16:25,640 А јас ќе одам да се оди напред и вршење на функција наречена пребарување, 387 00:16:25,640 --> 00:16:28,730 кој ние ќе ви даде во проблемот постави седум е дистрибуција код, што 388 00:16:28,730 --> 00:16:31,490 трае најмалку еден аргумент, која е само низа. 389 00:16:31,490 --> 00:16:33,460 А низа на SQL код. 390 00:16:33,460 --> 00:16:36,700 Значи, ти си за да дознаете како да се пишуваат Структурно јазик за пребарување. 391 00:16:36,700 --> 00:16:41,270 >> Ако сакам да се вметне нов ред во мојата база на податоци, бидејќи некој поднел 392 00:16:41,270 --> 00:16:47,600 форма на мојот код, што буквално ќе пишуваат вметнете во корисниците на следниве 393 00:16:47,600 --> 00:16:52,800 области: корисничко име, запирка, име, вредностите, 394 00:16:52,800 --> 00:16:57,480 и сега јас треба да го вметнете нешто како Malan, и понуда, 395 00:16:57,480 --> 00:17:01,490 unquote "Дејвид Malan. А сега дури и за оние кои се запознаени со SQL, 396 00:17:01,490 --> 00:17:07,830 зошто сум јас користење единечен наводник во внатрешноста на оваа зелена стринг? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Што може да биде причина тука? 399 00:17:13,040 --> 00:17:14,609 >> Известување дека сум ко-мешање на два јазика. 400 00:17:14,609 --> 00:17:18,099 Барањето е PHP функција, но потребно е аргумент. 401 00:17:18,099 --> 00:17:21,740 И тој аргумент мора да се биде напишани на друг јазик наречен 402 00:17:21,740 --> 00:17:23,500 SQL, Структурно јазик за пребарување. 403 00:17:23,500 --> 00:17:27,940 Значи, она што можам имаат само нагласени овде 404 00:17:27,940 --> 00:17:30,380 е овој јазик наречен SQL. 405 00:17:30,380 --> 00:17:36,290 Значи, што е со единечен наводник, само како брза проверка разум? 406 00:17:36,290 --> 00:17:37,324 Само напред. 407 00:17:37,324 --> 00:17:37,990 Тие се стрингови. 408 00:17:37,990 --> 00:17:41,590 Значи, цитирам, unquote Malan и понуда, unquote Дејвид Malan се низи. 409 00:17:41,590 --> 00:17:45,210 И само размислување интуитивно сега, знаејќи го она што го знам за C и PHP, 410 00:17:45,210 --> 00:17:50,220 зошто јас не го направите тоа, што јас обично користени двојни наводници за жици? 411 00:17:50,220 --> 00:17:52,310 Зошто не сакам да го направите тоа? 412 00:17:52,310 --> 00:17:52,810 Да? 413 00:17:52,810 --> 00:17:53,685 >> ПУБЛИКАТА: [Беззвучен] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 Дејвид MALAN: Токму така. 416 00:17:57,570 --> 00:17:59,653 Бидејќи веќе користам двојни наводници на патот 417 00:17:59,653 --> 00:18:01,929 надвор од аргументот со функцијата на PHP, 418 00:18:01,929 --> 00:18:03,470 Јас само ќе се збуни на преведувач. 419 00:18:03,470 --> 00:18:04,860 Тоа нема да знам, дали тие одат заедно? 420 00:18:04,860 --> 00:18:05,735 Дали тие одат заедно? 421 00:18:05,735 --> 00:18:06,810 Дали тие одат заедно? 422 00:18:06,810 --> 00:18:08,070 Значи, јас го менува наместо. 423 00:18:08,070 --> 00:18:11,784 >> Или би можел да направи нешто како ова, обратна коса црта цитат или црта цитат. 424 00:18:11,784 --> 00:18:14,200 Искрено, тоа само почнува да да се добие многу неразбран и грдото. 425 00:18:14,200 --> 00:18:16,790 Но, тоа ќе се постигне истиот резултат како и. 426 00:18:16,790 --> 00:18:19,760 >> Значи, ако јас се да се изврши оваа пребарување сега, ајде да видиме што се случува. 427 00:18:19,760 --> 00:18:22,740 Одам да се оди напред сега и наместо од вршење PHP код, што 428 00:18:22,740 --> 00:18:24,610 е местото каде што ќе игра проблем во собата во седум, 429 00:18:24,610 --> 00:18:27,200 Одам да наместо да одат на PHP MyAdmin. 430 00:18:27,200 --> 00:18:29,770 И јас сум со рачно оди да се оди на јазичето на SQL, 431 00:18:29,770 --> 00:18:31,580 и дозволете ми да зумирате на интерфејс. 432 00:18:31,580 --> 00:18:34,007 А јас ќе одам да го поставите во нешто јас само ја внеле. 433 00:18:34,007 --> 00:18:36,090 И боја кодирање има промениле малку сега, 434 00:18:36,090 --> 00:18:38,750 само поради тоа што форматот на програмата работите малку поинаку. 435 00:18:38,750 --> 00:18:41,960 Не се забележи дека сите што го направив е што рековме, вметнете во Корисници. 436 00:18:41,960 --> 00:18:45,790 Сум наведени, тогаш, во една запирка одделени parenthesized листа двете 437 00:18:45,790 --> 00:18:48,850 области кои сакам да ги внесете и тогаш јас сум буквално рече вредности 438 00:18:48,850 --> 00:18:51,510 проследено со друг paren, а потоа и на две вредности 439 00:18:51,510 --> 00:18:53,520 Сакам да plug-in, и сега за добра мерка, 440 00:18:53,520 --> 00:18:55,010 Ќе се стави запирка на крајот. 441 00:18:55,010 --> 00:18:56,570 Па, ова не е C. Ова не е PHP. 442 00:18:56,570 --> 00:18:59,970 Ова сега е на SQL, и јас сум со вметнување во оваа веб-базирани интерфејс, кој е 443 00:18:59,970 --> 00:19:02,710 само ќе ме пушти, штом ќе кликнете оди, 444 00:19:02,710 --> 00:19:08,060 изврши ова пребарување на базата на податоци работи во внатрешноста на CS50 ИРО. 445 00:19:08,060 --> 00:19:09,470 >> Па ова е добра. 446 00:19:09,470 --> 00:19:12,520 Известување дека рече еден ред вметнат, отиде супер брз, 447 00:19:12,520 --> 00:19:15,190 0,0054 секунди да внесете податоците. 448 00:19:15,190 --> 00:19:16,610 Значи, тоа звучи прилично здрави. 449 00:19:16,610 --> 00:19:19,350 Го форматира мојот пребарување за мене тука само за да ја видите 450 00:19:19,350 --> 00:19:21,730 во вид на боја кодирани верзија. 451 00:19:21,730 --> 00:19:24,540 Но сега ако јас кликнете Преглед на, да се забележи дека, дури и 452 00:19:24,540 --> 00:19:29,070 Точно е дека постојат голем број на нередот на екранот, мојата маса сега има два реда. 453 00:19:29,070 --> 00:19:30,700 >> Па, дозволете ми да оди напред и да се направи уште еден. 454 00:19:30,700 --> 00:19:33,760 Наместо тоа, дозволете ми одете на ливчето SQL повторно. 455 00:19:33,760 --> 00:19:40,723 И овој пат јас ќе внесете нешто како Роб и неговото име ќе биде Роб Бауден. 456 00:19:40,723 --> 00:19:42,330 Бауден. 457 00:19:42,330 --> 00:19:44,040 Ајде да кликнете на Зачувај. 458 00:19:44,040 --> 00:19:46,140 Упс, наместо да одат. 459 00:19:46,140 --> 00:19:48,890 >> Кликни тука за да, повторно, и сега забележите Имам два реда. 460 00:19:48,890 --> 00:19:52,390 Значи, ова е само начин посложени начин на отворање на Google Spreadsheets 461 00:19:52,390 --> 00:19:54,010 и само внесување на ред во колона. 462 00:19:54,010 --> 00:19:57,070 Но она што е клучот е во тоа сега имаме синтаксата 463 00:19:57,070 --> 00:20:00,220 со која треба да се напише код, така што во крајна линија, ние, всушност, може да 464 00:20:00,220 --> 00:20:01,790 направи некои и оваа. 465 00:20:01,790 --> 00:20:05,380 Потсетиме дека PHP поддржува супер глобални променливи. 466 00:20:05,380 --> 00:20:08,415 >> Она што е во внатрешноста на доларот потпише црта добие во PHP? 467 00:20:08,415 --> 00:20:10,290 Ние се погледне во еден или два едноставни примери. 468 00:20:10,290 --> 00:20:15,640 И во PSet6, да се потсетиме имате здраво дот на PHP во кој се користи оваа променлива. 469 00:20:15,640 --> 00:20:17,870 Она што се случува таму? 470 00:20:17,870 --> 00:20:21,015 Или што е тоа? 471 00:20:21,015 --> 00:20:22,522 Малку погласно. 472 00:20:22,522 --> 00:20:23,790 >> ПУБЛИКАТА: [Беззвучен] 473 00:20:23,790 --> 00:20:25,030 >> Дејвид MALAN: Тоа е снег семе од низата, кои 474 00:20:25,030 --> 00:20:27,714 е само фенси начин да се каже една Низа која има клучните вредност парови. 475 00:20:27,714 --> 00:20:28,880 И копчињата не се бројки. 476 00:20:28,880 --> 00:20:30,420 Тие се зборови или жици. 477 00:20:30,420 --> 00:20:32,750 И конкретно, што се оние кои се клучните вредност парови? 478 00:20:32,750 --> 00:20:35,110 Од каде доаѓаат? 479 00:20:35,110 --> 00:20:35,620 Жал ми е? 480 00:20:35,620 --> 00:20:36,994 >> ПУБЛИКАТА: [Беззвучен] 481 00:20:36,994 --> 00:20:37,660 Дејвид MALAN: Не? 482 00:20:37,660 --> 00:20:40,700 Каде се оние клучни вредност парови доаѓаат од? 483 00:20:40,700 --> 00:20:42,490 Повторно се каже? 484 00:20:42,490 --> 00:20:44,610 Повторно? 485 00:20:44,610 --> 00:20:46,472 Јас само едно рочиште нешто? 486 00:20:46,472 --> 00:20:47,810 >> [Смеа] 487 00:20:47,810 --> 00:20:49,042 >> Дека е во право, да? 488 00:20:49,042 --> 00:20:50,435 >> ПУБЛИКАТА: [Беззвучен] 489 00:20:50,435 --> 00:20:52,560 Дејвид MALAN: Да, тие доаѓаат од низата за пребарување. 490 00:20:52,560 --> 00:20:55,380 Значи, ако се враќате назад во времето за да кога игравме со Google 491 00:20:55,380 --> 00:20:59,600 и ние сме поминале на Google.com коса црта пребарување прашалник q е еднакво на мачки, 492 00:20:59,600 --> 00:21:03,550 ако јас се да притиснете Enter и ако Гугл беа имплементирани во PHP, 493 00:21:03,550 --> 00:21:07,017 PHP кодот напиша дека Google ќе имаат пристап до знакот за долар 494 00:21:07,017 --> 00:21:11,600 подвлекуваат влезам внатре, од кои е клучен наречена П и вредност 495 00:21:11,600 --> 00:21:17,680 наречен мачки кои потоа може да се користи се користи за да се направи вистински пребарување со. 496 00:21:17,680 --> 00:21:20,860 >> Така, всушност, она што јас ќе одам да направите сега е да се вратам во мојата PHP код 497 00:21:20,860 --> 00:21:23,140 што повторно ќе го види повеќе од во PSet7. 498 00:21:23,140 --> 00:21:25,440 И наместо тоа на приклучување во хард кодирани вредности кои 499 00:21:25,440 --> 00:21:27,630 не изгледа како многу динамичен сајт, 500 00:21:27,630 --> 00:21:30,680 Одам да ви даде краток вовед на она што ќе го направи вашиот вистински код. 501 00:21:30,680 --> 00:21:32,854 Сакаш да се стави во две прашалници се допаѓа ова. 502 00:21:32,854 --> 00:21:34,270 Јас не знам што е корисничкото име. 503 00:21:34,270 --> 00:21:37,390 Јас не знам што име ќе биде, 504 00:21:37,390 --> 00:21:39,470 но знам што можам ги добие динамично. 505 00:21:39,470 --> 00:21:43,420 >> Значи, ако го кодот пишуваме сега е кодот се извршува на серверите на Google, 506 00:21:43,420 --> 00:21:46,940 или ако ова е здраво точка PHP, кој доаѓа со PSet6, 507 00:21:46,940 --> 00:21:48,650 Одам да се помине во функцијата за пребарување 508 00:21:48,650 --> 00:21:51,450 само како printf, двајца други аргументи. 509 00:21:51,450 --> 00:21:57,120 GET, цитирам, unquote корисничко име, и да добијат, цитирам, unquote име. 510 00:21:57,120 --> 00:22:00,720 И сега, да се забележи она што Општата структура е тука. 511 00:22:00,720 --> 00:22:03,320 Јас имам на левата страна, која на повик, 512 00:22:03,320 --> 00:22:05,480 оваа функција се нарекува пребарување во PHP. 513 00:22:05,480 --> 00:22:08,160 Јас имам уште, како прв аргумент, само една нишка од текстот. 514 00:22:08,160 --> 00:22:11,000 >> Но, тоа е серија на текст напишани на јазик наречен SQL. 515 00:22:11,000 --> 00:22:12,616 И искрено, тоа не е голема јазик. 516 00:22:12,616 --> 00:22:14,990 Ние сме само ќе зборуваме за тоа формално денес, навистина. 517 00:22:14,990 --> 00:22:17,031 А потоа и во проблем во собата седум, има релативно 518 00:22:17,031 --> 00:22:18,800 неколку особини кои ние сме ќе потпора. 519 00:22:18,800 --> 00:22:22,530 Прашалниците, иако, значи уклучете односно вредноста не тука и уклучете друг вредност 520 00:22:22,530 --> 00:22:23,130 овде. 521 00:22:23,130 --> 00:22:26,010 И известување, јас сум она што се испуштени од целиот quote-- проклето 522 00:22:26,010 --> 00:22:30,470 it-- целиот цитат го означува тоа време. 523 00:22:30,470 --> 00:22:34,930 Сум го пропуштил цитат ознаки околу прашалник, 524 00:22:34,930 --> 00:22:36,410 Жалам, овојпат. 525 00:22:36,410 --> 00:22:38,870 >> Значи, она што е убаво за ова Прашањето функција марка која 526 00:22:38,870 --> 00:22:42,830 PHP има тенденција да го поддржи, Ruby и Пајтон и други јазици, 527 00:22:42,830 --> 00:22:45,730 тоа само значи приклучок во некои вредност тука и знаеш што? 528 00:22:45,730 --> 00:22:48,300 Ќе дознаам дали да се користи единечен наводник или двојни наводници. 529 00:22:48,300 --> 00:22:50,966 Не ми пречи со оние интелектуално неинтересни детали. 530 00:22:50,966 --> 00:22:53,780 Но, бидете сигурни дека тоа е правилна така што мојот код е во крајна линија 531 00:22:53,780 --> 00:22:57,010 оперативните и безбедно, која ќе имаат значење пред долго. 532 00:22:57,010 --> 00:23:00,460 >> Сега, колку изнесуваат аргументи, само за да биде јасно, е преземање на функцијата за пребарување? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Секој сака да гласа за повеќе од два? 535 00:23:07,581 --> 00:23:08,080 Три? 536 00:23:08,080 --> 00:23:10,001 Секако, зошто? 537 00:23:10,001 --> 00:23:10,920 Зошто три? 538 00:23:10,920 --> 00:23:12,305 >> ПУБЛИКАТА: [Беззвучен] 539 00:23:12,305 --> 00:23:13,180 Дејвид MALAN: Токму така. 540 00:23:13,180 --> 00:23:14,610 Во првиот дел е на стрингот. 541 00:23:14,610 --> 00:23:18,640 Вториот аргумент е знак за долар подвлекуваат ГЕТ заградата корисничко име. 542 00:23:18,640 --> 00:23:21,950 И третиот аргумент е истото, но само за името. 543 00:23:21,950 --> 00:23:24,590 Значи со други зборови, сега ако имав веб форма 544 00:23:24,590 --> 00:23:27,149 која требаше да текст полиња, еден за име на корисникот, 545 00:23:27,149 --> 00:23:29,690 еден за неговото или нејзиното име, само како ќе ја видиш во веб страната, 546 00:23:29,690 --> 00:23:32,120 кога ќе се регистрирате за некои веб-сајт, тоа може да 547 00:23:32,120 --> 00:23:35,450 биде кодот на задниот крај дека всушност не вметнување сега 548 00:23:35,450 --> 00:23:37,220 во базата на податоци. 549 00:23:37,220 --> 00:23:40,870 >> Сега пак, ајде брзо напред. 550 00:23:40,870 --> 00:23:43,840 Да претпоставиме дека сега за корисник е најавување и сакате 551 00:23:43,840 --> 00:23:48,860 да се напише PHP код кој проверува дали лицето кое е само најавени 552 00:23:48,860 --> 00:23:52,250 е всушност корисник, можете да користат прилично едноставна синтакса. 553 00:23:52,250 --> 00:23:55,832 Може да се каже SELECT, да речеме ѕвезда, во кој ѕвезда значи сè. 554 00:23:55,832 --> 00:23:57,540 Јас не знам што сакате, па само да ми даде 555 00:23:57,540 --> 00:24:01,585 сите колони од табелата наречена корисници, каде што, и тоа е убаво. 556 00:24:01,585 --> 00:24:03,710 Одберете го поддржува она што е наречен предикат, што е 557 00:24:03,710 --> 00:24:06,630 како начин на квалификациите за она што го сакате. 558 00:24:06,630 --> 00:24:10,590 Каде корисничко име е еднаква на понуда, unquote Malan. 559 00:24:10,590 --> 00:24:13,680 Така и овде, јас сум вградени во внатрешноста на аргумент 560 00:24:13,680 --> 00:24:16,110 на PHP функција, линија на SQL код. 561 00:24:16,110 --> 00:24:18,680 И дека ова SQL код време е буквално оди 562 00:24:18,680 --> 00:24:21,790 да пребарувате за понуда, unquote Malan. 563 00:24:21,790 --> 00:24:24,420 >> Сега тоа не е сè што е корисно, па јас ќе одам да го прескокнете дека 564 00:24:24,420 --> 00:24:28,650 а јас ќе одам да се стави настрана овој совет од Брејди, и да си одат 565 00:24:28,650 --> 00:24:30,990 и plug-in, наместо прашалник тука. 566 00:24:30,990 --> 00:24:33,290 Значи, само за да биде јасно, она што треба мојот втор аргумент 567 00:24:33,290 --> 00:24:37,480 да, ако некој има само најавени и јас сакате да се провери дали тој или таа е, всушност, 568 00:24:37,480 --> 00:24:39,265 корисник? 569 00:24:39,265 --> 00:24:40,140 ПУБЛИКАТА: [Беззвучен] 570 00:24:40,140 --> 00:24:40,890 Дејвид MALAN: Да. 571 00:24:40,890 --> 00:24:44,120 Слушам знак за долар црта GET цитат unquote корисничко име. 572 00:24:44,120 --> 00:24:50,040 И дека треба да се врати кај мене некој од редови во мојата база на податоци 573 00:24:50,040 --> 00:24:51,986 дека имате корисничко име на Malan. 574 00:24:51,986 --> 00:24:54,860 Сега се надевам, јас ќе одам да се вратам нула ако никогаш Malan е тука, 575 00:24:54,860 --> 00:24:56,290 или ако тој има една. 576 00:24:56,290 --> 00:24:59,026 Јас не треба да се вратам две или три или четири. 577 00:24:59,026 --> 00:24:59,526 Зошто? 578 00:24:59,526 --> 00:25:00,220 >> ПУБЛИКАТА: [Беззвучен] 579 00:25:00,220 --> 00:25:01,120 >> Дејвид MALAN: Реков уникатен, нели? 580 00:25:01,120 --> 00:25:01,750 Едноставна причина. 581 00:25:01,750 --> 00:25:04,030 Затоа реков тоа е мора да да бидат единствени, само логично, 582 00:25:04,030 --> 00:25:07,940 вие само може да има нула или еден Malans во овој особено базата на податоци маса. 583 00:25:07,940 --> 00:25:10,965 Сега како настрана, само така сте виделе тоа, иако јас ги користите ГЕТ 584 00:25:10,965 --> 00:25:14,350 и иако се користат само PSet6 Добие, сигурно ќе може да има пост. 585 00:25:14,350 --> 00:25:17,212 И се сети дека е уште еден пост техника за доставување на информации 586 00:25:17,212 --> 00:25:19,170 од формата, но тоа не се појавува во URL-то. 587 00:25:19,170 --> 00:25:22,690 Тоа е малку посигурни сигурно за работи како кориснички имиња и лозинки, 588 00:25:22,690 --> 00:25:25,210 која ќе PSet7, всушност, се вклучи. 589 00:25:25,210 --> 00:25:28,130 >> Значи, ајде да го направите тоа во PHP MyAdmin и да видиме што се случува. 590 00:25:28,130 --> 00:25:30,020 Одам да одиме на јазичето MySQL. 591 00:25:30,020 --> 00:25:34,450 И ќе забележите дека стандардната вредност за PHP MyAdmin, само за да се обиде да биде од корист, 592 00:25:34,450 --> 00:25:37,050 е да го изберете ѕвезда од корисници каде еден. 593 00:25:37,050 --> 00:25:39,430 Па, една е секогаш точно, па ова има глупо ефективна 594 00:25:39,430 --> 00:25:40,400 на само изберете сè. 595 00:25:40,400 --> 00:25:42,691 Но јас ќе одам да се биде малку повеќе педантни и рачно 596 00:25:42,691 --> 00:25:45,920 тип надвор Избери ѕвезда од корисниците. 597 00:25:45,920 --> 00:25:48,294 >> Сега технички, можете да цитирам името на табели. 598 00:25:48,294 --> 00:25:50,460 Тоа е редок дека треба да се, но забележите овие не се 599 00:25:50,460 --> 00:25:52,240 вашата нормална цитати на тастатурата САД. 600 00:25:52,240 --> 00:25:54,760 Ова е т.н. backtick, која генерално е на горниот лев 601 00:25:54,760 --> 00:25:56,000 агол на вашата тастатура. 602 00:25:56,000 --> 00:25:58,500 Но тоа е ретко дека ќе всушност треба да се занимаваат со тоа, 603 00:25:58,500 --> 00:25:59,950 па јас само ќе ги изостави во секој случај. 604 00:25:59,950 --> 00:26:02,280 Па сега, дозволете ми да оди напред и да ја погоди оди. 605 00:26:02,280 --> 00:26:06,616 И колку редови да ви набавам назад кога ќе изберете ѕвезда од корисниците? 606 00:26:06,616 --> 00:26:08,407 >> ПУБЛИКАТА: [Беззвучен] 607 00:26:08,407 --> 00:26:09,990 Дејвид MALAN: Бројот на редови, секако. 608 00:26:09,990 --> 00:26:12,390 Но, колку во овој бетон приказна во моментов? 609 00:26:12,390 --> 00:26:14,640 Две, бидејќи имаше мене и имаше Роб. 610 00:26:14,640 --> 00:26:19,370 Значи, ако јас кликнете на Оди, гледам дека визуелно Сум добил назад, навистина, два реда. 611 00:26:19,370 --> 00:26:22,060 Има многу на нередот на екран, но јас гледам само два реда. 612 00:26:22,060 --> 00:26:28,580 Спротивно на тоа, ако го направам тоа повторно и направи Избери ѕвезда од корисниците, каде корисничко име 613 00:26:28,580 --> 00:26:31,840 еднаква цитат, unquote MALAN, сега ако јас кликнете оди, 614 00:26:31,840 --> 00:26:33,970 Јас сум само ќе се врати еден ред. 615 00:26:33,970 --> 00:26:36,499 И на крај, ако го направам нешто како ова, претпоставувам 616 00:26:36,499 --> 00:26:38,290 дека јас не се грижат за добивање сè, 617 00:26:38,290 --> 00:26:41,020 која е вид на бесмислени сега, затоа што има само две колони. 618 00:26:41,020 --> 00:26:43,103 Тоа не е како јас избирање големи количини на податоци. 619 00:26:43,103 --> 00:26:46,720 Претпоставувам дека се оди напред и да го изберете име од 620 00:26:46,720 --> 00:26:51,990 корисници, каде корисничко име е еднакво Malan, Што е убаво за SQL искрено, 621 00:26:51,990 --> 00:26:54,290 е дека тоа навистина само го прави тоа она што ви го кажам да се направи. 622 00:26:54,290 --> 00:26:57,550 Тоа е прилично кратка, но вие буквално само да го каже она што сакате да го направите. 623 00:26:57,550 --> 00:27:01,130 Изберете име од корисници каде корисничкото име е еднакво Malan. 624 00:27:01,130 --> 00:27:03,440 И тоа навистина е така експлицитни. 625 00:27:03,440 --> 00:27:08,410 Значи, сега ако јас хит Одете, колку редови сум јас ќе се вратам? 626 00:27:08,410 --> 00:27:10,770 Еден, бидејќи тоа е само Malan, се надевам. 627 00:27:10,770 --> 00:27:13,100 Или нула ако тој не е таму, но еден максимално. 628 00:27:13,100 --> 00:27:17,610 >> И колку колони ќе се вратам? 629 00:27:17,610 --> 00:27:18,450 Колку колони? 630 00:27:18,450 --> 00:27:20,658 Овој пат, јас сум само ќе да се добие една, бидејќи јас не 631 00:27:20,658 --> 00:27:22,380 изберете ѕвезда, која е сè. 632 00:27:22,380 --> 00:27:27,900 Сега сум во изборот само името, па јас само да се вратам една колона и еден ред. 633 00:27:27,900 --> 00:27:31,730 И тоа изгледа вид на соодветно смешно, само бараат супер 634 00:27:31,730 --> 00:27:33,060 мали се допаѓа ова. 635 00:27:33,060 --> 00:27:34,290 Значи, она што навистина се случува? 636 00:27:34,290 --> 00:27:36,890 Кога ќе се изврши SQL пребарување користење одберете, 637 00:27:36,890 --> 00:27:38,700 што се добива назад од базата на податоци 638 00:27:38,700 --> 00:27:42,970 е како привремена табела со редови и колони, можеби, 639 00:27:42,970 --> 00:27:46,260 но дека изостави нешто што не беше всушност избрани од тебе. 640 00:27:46,260 --> 00:27:49,010 Значи, тоа е како ако некој имаше големо табела на сите студенти 641 00:27:49,010 --> 00:27:51,610 регистрирани за некои Група на студенти, и велиш, 642 00:27:51,610 --> 00:27:55,097 ми даде сите на кои сум бруцош регистрирани за нашата студентска група, што 643 00:27:55,097 --> 00:27:56,930 вашиот колега во Група на студенти може да се направи 644 00:27:56,930 --> 00:27:58,430 тие само може да се предаде вас целата табела. 645 00:27:58,430 --> 00:27:59,742 Тоа е како да кажеш одберете ѕвезда. 646 00:27:59,742 --> 00:28:02,200 И тоа е малку досадни, ако сакавте само Новак. 647 00:28:02,200 --> 00:28:05,640 И така, ако наместо да рече: изберете ѕвезда од базата на податоци маса 648 00:28:05,640 --> 00:28:08,470 која година е еднаква на понуда, unquote Новак, 649 00:28:08,470 --> 00:28:10,810 тоа е како вашиот пријател во групата студент 650 00:28:10,810 --> 00:28:13,770 буквално истакнат и копирани само редовите Новак, 651 00:28:13,770 --> 00:28:16,780 ги пренесен на Google Табела или една датотека Excel, 652 00:28:16,780 --> 00:28:18,860 а вие предаден назад на резултира само датотека. 653 00:28:18,860 --> 00:28:21,710 Тоа е се што се случува на концептуално тука. 654 00:28:21,710 --> 00:28:23,920 >> Така, на крајот, ние може да го направи некои прилично фенси работи 655 00:28:23,920 --> 00:28:26,560 со зачувување на нешта како кориснички имиња и лозинки и слично. 656 00:28:26,560 --> 00:28:30,310 Но, што се испоставува, ние треба да се направи малку поинаку отколку ова. 657 00:28:30,310 --> 00:28:34,750 Тоа не е дека паметни да се само чување на корисничко име и лозинка. 658 00:28:34,750 --> 00:28:37,790 Некој порано, мислам дека овде долу, предложи проект. 659 00:28:37,790 --> 00:28:40,787 Сега е проект би можело да биде како Харвард ID или Нет проект Јеил, 660 00:28:40,787 --> 00:28:42,870 но тоа би можело да биде уште поедноставно во нашиот случај база на податоци. 661 00:28:42,870 --> 00:28:45,120 И навистина, на заедничката случај е да се има друга колумна. 662 00:28:45,120 --> 00:28:46,953 А јас ќе одам да се оди напред и да ги уредувате мојата маса. 663 00:28:46,953 --> 00:28:49,521 И ако се позанимавам со овој интерфејс за PSet7, 664 00:28:49,521 --> 00:28:51,770 ќе видите дека може да се провери ова копче тука и да додадете 665 00:28:51,770 --> 00:28:53,750 областа на почетокот на табелата. 666 00:28:53,750 --> 00:28:56,720 И сега, ако јас кликнете оди, тоа се случува да ми даде еден од оние форми 667 00:28:56,720 --> 00:28:57,600 од порано. 668 00:28:57,600 --> 00:29:00,170 Одам да додадете областа наречена проект. 669 00:29:00,170 --> 00:29:03,070 А јас ќе одам да се направи тоа нумерички тип направи. 670 00:29:03,070 --> 00:29:05,362 >> Јас имам еден куп на вредности за numerics. 671 00:29:05,362 --> 00:29:08,677 Јас сум само ќе го изберете INT и Не грижете се за различни големини. 672 00:29:08,677 --> 00:29:10,510 Јас не мора да се определи должина или вредност, 673 00:29:10,510 --> 00:29:13,710 затоа што тоа се случува да биде 32 бита, без разлика што. 674 00:29:13,710 --> 00:29:16,070 Атрибути, не видовме претходно. 675 00:29:16,070 --> 00:29:18,410 Било каков интерес за било кој од овие опциите на менито ова време? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 За ИНТ? 678 00:29:23,745 --> 00:29:24,620 Што ви предложи? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Не? 681 00:29:28,445 --> 00:29:29,570 Не некој од овие да има смисла? 682 00:29:29,570 --> 00:29:30,536 Је. 683 00:29:30,536 --> 00:29:31,900 Да, непотпишана, нели? 684 00:29:31,900 --> 00:29:35,930 >> Општо земено, ако ние се случува да се даде сите единствен број, кој 685 00:29:35,930 --> 00:29:38,200 е местото каде што оваа приказна е случува, јас навистина сакаат само 686 00:29:38,200 --> 00:29:41,919 едно лице да има бројот како нулта и еден и два и три и четири. 687 00:29:41,919 --> 00:29:43,710 Јас не треба да се справи со негативните бројки. 688 00:29:43,710 --> 00:29:45,210 Тоа само изгледа како непотребно комплексност. 689 00:29:45,210 --> 00:29:48,470 Сакам четири милијарди можни вредности, не четири милијарди можни вредности, 690 00:29:48,470 --> 00:29:50,699 па јас само ја удвои капацитетот на мојот INT. 691 00:29:50,699 --> 00:29:53,490 Како настрана, ако сакате да се однесуваат ова на нешто како што се Фејсбук, 692 00:29:53,490 --> 00:29:56,190 назад во вид на мојот ден кога Фејсбук прв излезе, 693 00:29:56,190 --> 00:29:59,510 Верувам дека она што беа користење на MySQL база на податоци во нивните 694 00:29:59,510 --> 00:30:02,856 за чување на корисникот идентификатор, беше само INT. 695 00:30:02,856 --> 00:30:05,230 Но, се разбира, има многу на вистински луѓе во светот. 696 00:30:05,230 --> 00:30:07,438 Има многу на лажни Фејсбук сметки во светот. 697 00:30:07,438 --> 00:30:11,701 И така на крајот, Фејсбук преплави на големината на INT, односно четири милијарди 698 00:30:11,701 --> 00:30:12,200 вредност. 699 00:30:12,200 --> 00:30:15,032 Кој е зошто, ако се погледне наоколу и да има веб-сајтови 700 00:30:15,032 --> 00:30:16,740 што може да ви каже што Вашиот единствен број е. 701 00:30:16,740 --> 00:30:19,781 И ако никогаш не сте одбрале корисничко име во Фејсбук, ќе видите вашата идентификација. 702 00:30:19,781 --> 00:30:23,080 Мислам дека тоа е профилот на точка на PHP прашалник проект еднаква нешто. 703 00:30:23,080 --> 00:30:27,210 Што сега е нешто како голема ИНТ, или долго долго ако сакате, 704 00:30:27,210 --> 00:30:29,700 која е 64-битна вредност или нешто споредливи. 705 00:30:29,700 --> 00:30:33,620 >> Значи, дури и во реалниот свет, не овие прашања во крајна линија понекогаш е важно. 706 00:30:33,620 --> 00:30:37,600 И излегува тука, ако јас сум давање на сите мои корисници единствен број, 707 00:30:37,600 --> 00:30:41,750 Сакам да бидам супер експлицитни и минимално направи ова поле уникатен. 708 00:30:41,750 --> 00:30:44,750 Но, се покажа, има една парче номенклатура и денес 709 00:30:44,750 --> 00:30:46,470 тоа е примарен клуч. 710 00:30:46,470 --> 00:30:49,800 Ако сте дизајнирање на бази на податоци маса и да знаете однапред 711 00:30:49,800 --> 00:30:55,580 дека еден од колони во табелата треба и ќе се идентификуваат уникатно редови 712 00:30:55,580 --> 00:30:58,500 во табелата, дека сакате да го го наведете и кажете на базата на податоци, 713 00:30:58,500 --> 00:31:00,250 тоа ми е примарен клуч. 714 00:31:00,250 --> 00:31:02,110 Може да има дупликати во други области, 715 00:31:02,110 --> 00:31:06,330 но јас сум се кажува дека оваа база на податоци Ми претставува примарен, најважниот мојата нива, 716 00:31:06,330 --> 00:31:08,420 што е гарантирано да биде уникатна. 717 00:31:08,420 --> 00:31:09,660 >> Сега, ова се чини излишна. 718 00:31:09,660 --> 00:31:13,830 Јас сум сега предлагам е ние додадете, со кликнување Зачувај тука, 719 00:31:13,830 --> 00:31:17,210 поле called-- и јас одам да се оди напред и да кликнете на АИ, 720 00:31:17,210 --> 00:31:19,720 ние ќе се вратам на дека во еден момент, спаси. 721 00:31:19,720 --> 00:31:22,540 Јас го предлагам сега кога мојата маса да изгледа вака. 722 00:31:22,540 --> 00:31:26,305 Имам поле ИНТ наречен проект, поле знак наречен Корисничко име, 723 00:31:26,305 --> 00:31:31,100 поле VARCHAR наречен име, но проект, ако тоа е основното и затоа единствен, 724 00:31:31,100 --> 00:31:33,760 зошто јас само да отпад време за воведување на она што 725 00:31:33,760 --> 00:31:39,140 ефикасно да е втор уникатна поле наречено број кој е ИНТ? 726 00:31:39,140 --> 00:31:41,980 >> Корисничко име, да се потсетиме, беше веќе уникатен, рековме. 727 00:31:41,980 --> 00:31:45,350 Па само логично, вие не треба да искуство база на податоци за причината 728 00:31:45,350 --> 00:31:47,570 преку ова, зошто Јас би можеле да имаат воведено 729 00:31:47,570 --> 00:31:50,065 на int како мој единствен идентификатор, како? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Што се this-- кажам уште еднаш? 732 00:31:53,930 --> 00:31:55,580 >> ПУБЛИКАТА: [Беззвучен] 733 00:31:55,580 --> 00:31:59,534 >> Дејвид MALAN: Случаен пристап е полесно, зошто? 734 00:31:59,534 --> 00:32:00,410 >> ПУБЛИКАТА: [Беззвучен] 735 00:32:00,410 --> 00:32:02,367 Дејвид MALAN: Да, тоа е само пристап броеви. 736 00:32:02,367 --> 00:32:04,750 Значи, ако мислите на тоа, навистина е на маса, како низа, 737 00:32:04,750 --> 00:32:07,690 сега имам единствени идентификатори што можам да скокаат наоколу. 738 00:32:07,690 --> 00:32:11,520 И подобро отколку што се 'уште е во тоа што колку е голема е int ќе биде повторно? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 бита или четири бајти. 741 00:32:15,800 --> 00:32:17,750 >> Колкава е моето корисничко име ќе биде? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Максимално? 744 00:32:21,990 --> 00:32:22,880 16 бајти. 745 00:32:22,880 --> 00:32:26,080 >> Значи, ако сте навистина се грижат за на перформансите на вашиот код, 746 00:32:26,080 --> 00:32:31,390 сетам PSet5, дали би преферирале да пребарувате за четири byte вредност или 16 на 747 00:32:31,390 --> 00:32:32,240 byte вредност, нели? 748 00:32:32,240 --> 00:32:33,810 Тоа навистина е толку едноставно како што. 749 00:32:33,810 --> 00:32:38,060 Што треба да направите е четири пати поголем работа да пребарувате за кориснички имиња, бидејќи тие 750 00:32:38,060 --> 00:32:38,830 16 бајти. 751 00:32:38,830 --> 00:32:41,320 Значи, вие мора да бидат буквално да ги споредиме сите 16 бајти да бидат 752 00:32:41,320 --> 00:32:43,140 сигурни дека да, ова е корисничко име сакам. 753 00:32:43,140 --> 00:32:46,610 Додека за int, можете да направете го тоа со само четири бајти. 754 00:32:46,610 --> 00:32:49,212 >> И како настрана за оние заинтересирани за компјутерски хардвер, 755 00:32:49,212 --> 00:32:52,420 излегува може да се вклопи нешто како на int или 32-битна вредност на нешто 756 00:32:52,420 --> 00:32:55,330 наречен регистар во компјутер Процесорот, што значи дека е супер, 757 00:32:55,330 --> 00:32:58,400 супер брз, дури и по најниска ниво на хардвер на компјутерот. 758 00:32:58,400 --> 00:33:00,530 Значи, има само предностите на сите околу. 759 00:33:00,530 --> 00:33:01,530 Значи, она што значи тоа? 760 00:33:01,530 --> 00:33:04,850 Всушност, кога сте дизајнирање на база на податоци маса, речиси сите на време 761 00:33:04,850 --> 00:33:07,170 што ви се случува да нема само податоците што се грижат за, 762 00:33:07,170 --> 00:33:09,280 туку нешто како единствен идентификатор 763 00:33:09,280 --> 00:33:11,280 затоа што ова се случува да нека се прават други работи. 764 00:33:11,280 --> 00:33:13,160 И ајде да се сопнал еден проблем тука. 765 00:33:13,160 --> 00:33:15,990 >> Да претпоставиме дека корисниците не треба само кориснички имиња и имиња, 766 00:33:15,990 --> 00:33:19,540 но тие исто така се работи како градови и држави и поштенски кодови, барем 767 00:33:19,540 --> 00:33:20,432 тука во САД. 768 00:33:20,432 --> 00:33:22,390 Па, јас ќе одам да се оди напред и само брзо се каже, 769 00:33:22,390 --> 00:33:26,180 ми даде повеќе од три колони на крајот на масата. 770 00:33:26,180 --> 00:33:28,900 И тоа се случува да биде град, тоа се случува да биде држава, 771 00:33:28,900 --> 00:33:30,400 и тоа се случува да биде Поштенски. 772 00:33:30,400 --> 00:33:32,710 >> Сега типови Сити, она што на податоци ова треба да биде, можеби? 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 Јас не знам што најдолго име на градот е. 776 00:33:37,780 --> 00:33:40,571 Некаде во Америка, постојат веројатно некои смешно долго збор, 777 00:33:40,571 --> 00:33:43,605 па да се оди со 255, донекаде историски или самоволно. 778 00:33:43,605 --> 00:33:44,730 Држава, она што сакате да направите? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Пресуда повик, нели? 781 00:33:50,367 --> 00:33:51,700 Што е можеби повеќето ефикасна? 782 00:33:51,700 --> 00:33:53,500 Колку знаци? 783 00:33:53,500 --> 00:33:55,950 Можеби само две, ако не можеме да да се извлечеш со тоа само, 784 00:33:55,950 --> 00:33:58,250 како, магистер за Масачусетс и така натаму. 785 00:33:58,250 --> 00:34:00,520 Значи, јас ќе одам да си знак вредност на две. 786 00:34:00,520 --> 00:34:03,080 >> Поштенски код е интересна. 787 00:34:03,080 --> 00:34:06,679 Ние сме тука во 02138, така што сугерира дека треба да го користите она што? 788 00:34:06,679 --> 00:34:07,470 Тоа е ИНТ, нели? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 ИНТ, ИНТ, кратко? 791 00:34:12,800 --> 00:34:14,521 Кратко ќе работи. 792 00:34:14,521 --> 00:34:15,020 Не? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR-пет, но сакам да int. 795 00:34:20,870 --> 00:34:23,710 Зошто да им помогнам назад на int? 796 00:34:23,710 --> 00:34:26,820 Убеди ме од ова. 797 00:34:26,820 --> 00:34:29,210 Што е глуп за int, мојата идеја? 798 00:34:29,210 --> 00:34:29,871 Је. 799 00:34:29,871 --> 00:34:31,199 >> ПУБЛИКАТА: Земете повеќе меморија. 800 00:34:31,199 --> 00:34:32,909 >> Дејвид MALAN: Земете повеќе меморија. 801 00:34:32,909 --> 00:34:35,310 Четири бајти, но ти си предлагајќи ZIP код 802 00:34:35,310 --> 00:34:39,000 како пет бајти или некој беше како char, кој се чувствува како еј, тоа не е навистина 803 00:34:39,000 --> 00:34:39,620 случајот. 804 00:34:39,620 --> 00:34:40,489 >> Па, забава приказна. 805 00:34:40,489 --> 00:34:43,179 Пред неколку години, кога јас се користи да се користи Microsoft Outlook за мојата е-маил, 806 00:34:43,179 --> 00:34:45,150 Јас на крајот сака да се префрлат на Gmail. 807 00:34:45,150 --> 00:34:48,949 И така, јас се извезуваат сите мои контактите од Outlook како CSV датотека. 808 00:34:48,949 --> 00:34:50,699 Одвоени со запирки вредности, која само што значи јас 809 00:34:50,699 --> 00:34:54,060 имаше сите мои пријатели и последните имиња имиња и телефонски броеви и поштенски кодови 810 00:34:54,060 --> 00:34:54,747 и сето тоа. 811 00:34:54,747 --> 00:34:56,580 А потоа ќе се донесе грешка и го отвора 812 00:34:56,580 --> 00:34:58,640 во Excel, што е програма за табелирање дека 813 00:34:58,640 --> 00:35:00,289 разбира CSV датотеки како што видовме. 814 00:35:00,289 --> 00:35:03,080 Но, тогаш, јас мора да се погоди, како, Команда или контрола К во една точка. 815 00:35:03,080 --> 00:35:06,250 И Excel очигледно во тоа време имаше функција која секој пат тоа 816 00:35:06,250 --> 00:35:08,100 видов голем број, се обиделе да бидат од корист. 817 00:35:08,100 --> 00:35:11,610 И ако тој број, започна со нули, тоа само ќе се ослободи од нив. 818 00:35:11,610 --> 00:35:13,420 Зошто ви е потребна водечките нули на цели броеви? 819 00:35:13,420 --> 00:35:15,140 Тие се бесмислени, математички. 820 00:35:15,140 --> 00:35:17,530 Тие не се бесмислени во системот САД поштенски. 821 00:35:17,530 --> 00:35:19,954 Па, јас сум имал со години, на овој ден, јас се уште 822 00:35:19,954 --> 00:35:22,370 имаат пријатели дека кога редок случај дека ми треба некој е 823 00:35:22,370 --> 00:35:24,078 решавање на овие денови, Јас се уште ќе се види дека јас 824 00:35:24,078 --> 00:35:26,767 имам еден пријател во Кембриџ, Масачусетс, 2138. 825 00:35:26,767 --> 00:35:29,350 И тоа е досадно, ако сте во обид да се најде решение на програмски 826 00:35:29,350 --> 00:35:30,975 генерираат коверти или само да го запишете. 827 00:35:30,975 --> 00:35:33,599 А тоа е поради оваа причина, Одбрав погрешен тип на податок. 828 00:35:33,599 --> 00:35:34,490 Значи, сакам вашата идеја. 829 00:35:34,490 --> 00:35:35,650 Ајде да го користите полето знак. 830 00:35:35,650 --> 00:35:38,340 Пет карактери, освен постои случај во корнер. 831 00:35:38,340 --> 00:35:42,220 Ако сè уште праќаш пораки, понекогаш поштенски кодови овие денови, 832 00:35:42,220 --> 00:35:45,360 тие се, како, плус четири. 833 00:35:45,360 --> 00:35:48,200 Значи, ние треба цртичка и потоа ни треба повеќе од четири броеви. 834 00:35:48,200 --> 00:35:50,330 Па да бидам искрен, тоа би можело да одат многу различни начини. 835 00:35:50,330 --> 00:35:52,371 >> За сега, јас ќе одам да се задржи тоа едноставно и јас сум само 836 00:35:52,371 --> 00:35:54,780 одам да се каже дека тоа е пет CHAR вредност и ние сме 837 00:35:54,780 --> 00:35:56,739 ќе прескокне целата цртичка плус четири. 838 00:35:56,739 --> 00:35:58,280 Но овие се видови на размена. 839 00:35:58,280 --> 00:36:00,196 И може да се мисли на истите проблеми кои произлегуваат 840 00:36:00,196 --> 00:36:01,860 со телефонски броеви или други области. 841 00:36:01,860 --> 00:36:04,350 >> И сега, ова е всушност глупави патот да одат надолу. 842 00:36:04,350 --> 00:36:08,000 Да претпоставиме дека двете Роб и јас и Ана и Марија и [? Davon?] И Енди 843 00:36:08,000 --> 00:36:12,820 и други на сите вработени во живо во Кембриџ, Масачусетс, 02138. 844 00:36:12,820 --> 00:36:17,970 Ова, всушност, се чувствувам дека сум глупав додавајќи мојата маса корисници, град, држава, 845 00:36:17,970 --> 00:36:18,630 и ZIP. 846 00:36:18,630 --> 00:36:20,980 Зошто? 847 00:36:20,980 --> 00:36:21,960 >> ПУБЛИКАТА: [Беззвучен] 848 00:36:21,960 --> 00:36:22,918 >> Дејвид MALAN: еднаш се каже? 849 00:36:22,918 --> 00:36:24,310 ПУБЛИКАТА: [Беззвучен] 850 00:36:24,310 --> 00:36:25,850 >> Дејвид MALAN: Тие се секогаш случува да одат заедно, нели? 851 00:36:25,850 --> 00:36:28,660 Кога ќе се случи, ние се користат да се мисли тоа беше случај додека не исцрпно 852 00:36:28,660 --> 00:36:30,570 претрес на целата САД, и се покажа дека има 853 00:36:30,570 --> 00:36:32,653 некои недоследности каде што повеќе градови имаат 854 00:36:32,653 --> 00:36:35,060 исто патент, што е чудно. 855 00:36:35,060 --> 00:36:40,580 Но, ако се пропише за сега дека 02138 секогаш е Кембриџ, Масачусетс, 856 00:36:40,580 --> 00:36:44,910 зошто во светот ќе се чуваат во Вашата база на податоци во Кембриџ и и м 02138 857 00:36:44,910 --> 00:36:49,357 за мене и за Ана и за Роб и за [? Davon?] И за другите кои живеат 858 00:36:49,357 --> 00:36:51,190 тука во Кембриџ, тоа е совршено непотребни. 859 00:36:51,190 --> 00:36:54,480 >> Ние треба да се извлече со само чување на што? 860 00:36:54,480 --> 00:36:55,610 Само го кодот Zip. 861 00:36:55,610 --> 00:36:58,660 Но, тогаш, ако ние ги чувате само поштенски код, јас сакам, веројатно, 862 00:36:58,660 --> 00:37:02,160 за мојот веб-сајт да се знае каде е 02138. 863 00:37:02,160 --> 00:37:03,910 Па, ми треба друга маса. 864 00:37:03,910 --> 00:37:04,697 И тоа е во ред. 865 00:37:04,697 --> 00:37:07,530 И всушност, ова е еден од дизајн процеси на креирање табели 866 00:37:07,530 --> 00:37:11,472 дека ќе го направи во PSet7 како и при сакате да се фактор на општи податоци. 867 00:37:11,472 --> 00:37:14,430 Исто како и ние сме биле факторинг надвор заеднички код и факторингот од заеднички 868 00:37:14,430 --> 00:37:17,380 стилови од CSS, тука исто така и во базата на податоци, 869 00:37:17,380 --> 00:37:21,180 ако јас само треба да се уникатно 02138 идентификуваат некој роден град, 870 00:37:21,180 --> 00:37:25,020 не ставајте Кембриџ, за секој ебам корисникот во вашата маса. 871 00:37:25,020 --> 00:37:29,770 >> Наместо тоа, има посебна табела наречена Патентите кои треба да се она што колони? 872 00:37:29,770 --> 00:37:33,490 Веројатно поле проект, само затоа, за принципите ние зборуваме за сега. 873 00:37:33,490 --> 00:37:35,720 Веројатно ZIP поле за 02138. 874 00:37:35,720 --> 00:37:38,400 А потоа веројатно она што другите колони? 875 00:37:38,400 --> 00:37:42,950 Градот и државата, но само една ред за 02138, еден ред 02139, 876 00:37:42,950 --> 00:37:44,772 еден ред 90210. 877 00:37:44,772 --> 00:37:46,730 И тоа е буквално сите кодови на поштенски знам. 878 00:37:46,730 --> 00:37:49,012 >> Па сега, она што можете да направите? 879 00:37:49,012 --> 00:37:51,220 Ова е проблематично, бидејќи сега имам две маси. 880 00:37:51,220 --> 00:37:54,660 Значи, мојот корисници најчесто се овде, но нивните информации на градот држава е 881 00:37:54,660 --> 00:37:55,390 тука. 882 00:37:55,390 --> 00:37:58,635 Значи, излегува со SQL, има всушност е начин да се приклучат на информации, 883 00:37:58,635 --> 00:38:00,470 и ќе видите ова во pset. 884 00:38:00,470 --> 00:38:03,000 >> Но, се покажа можеш направи нешто како ова. 885 00:38:03,000 --> 00:38:10,501 Избери ѕвезда од корисниците, ПРИДРУЖЕТЕ патентите ЗА корисници dot ZIP еднаква на патентите dot Zip. 886 00:38:10,501 --> 00:38:13,360 Што е малку разточен, Мора да се признае, но тоа само 887 00:38:13,360 --> 00:38:17,590 значи одберете сè, од процес на преземање на мојата маса корисници 888 00:38:17,590 --> 00:38:19,580 и мојата маса патентите. 889 00:38:19,580 --> 00:38:22,120 Пристапуваат кон нив и од една поле што ги имаат во колона. 890 00:38:22,120 --> 00:38:24,780 Значи, буквално прави нешто како таков, и ми даде назад 891 00:38:24,780 --> 00:38:27,360 нова привремена табела тоа е поширок, што е многу поголемо, 892 00:38:27,360 --> 00:38:29,450 кој ги има сите на колони од двете од нив. 893 00:38:29,450 --> 00:38:33,510 И дека, едноставно, ќе биде Синтаксата за правење на нешто како ова. 894 00:38:33,510 --> 00:38:35,540 >> Значи, тука е тоа напред, но таму се случува 895 00:38:35,540 --> 00:38:38,950 треба да се други дизајн одлуки испишан треба да се направи, не само со индекси 896 00:38:38,950 --> 00:38:40,550 но, исто така, работи во предизвици. 897 00:38:40,550 --> 00:38:43,360 Всушност, таму е предизвик во било која база на податоци дизајн 898 00:38:43,360 --> 00:38:47,930 при што две лица понекогаш се потребни да пристапите до истите редови на базата на податоци 899 00:38:47,930 --> 00:38:48,530 табела. 900 00:38:48,530 --> 00:38:51,450 Значи, ова е нешто што ние ќе судрите во PSet7, како и. 901 00:38:51,450 --> 00:38:54,686 >> Но мислев дека сум се погледне во едно Нападот е можно тоа во SQL. 902 00:38:54,686 --> 00:38:56,560 Кои се некои од проблеми што можат да се појават? 903 00:38:56,560 --> 00:38:58,170 Значи, ќе се судрите со овој во PSet7. 904 00:38:58,170 --> 00:39:01,874 И ние ќе ви кажам она што на отворено кодирање решение за овој проблем е. 905 00:39:01,874 --> 00:39:04,790 Но, ако се повисока класа ниво, особено во оперативни системи, 906 00:39:04,790 --> 00:39:06,950 си оди за да се сретне прашање на atomicity, 907 00:39:06,950 --> 00:39:10,080 проблемот да се обидат да се направи повеќе работи одеднаш 908 00:39:10,080 --> 00:39:11,000 без прекин. 909 00:39:11,000 --> 00:39:14,560 >> И јас мислев дека ќе се воведе овој Идејата за PSet7 со метафора 910 00:39:14,560 --> 00:39:18,160 дека јас научив во Марго CS164 оперативни системи сода е 911 00:39:18,160 --> 00:39:18,990 класа години. 912 00:39:18,990 --> 00:39:22,230 Да претпоставиме дека имате една од овие студентски дом фрижидери во вашиот dorm соба или куќа, 913 00:39:22,230 --> 00:39:24,474 и имате вистинска наклонетост за млеко. 914 00:39:24,474 --> 00:39:27,140 И така, ќе дојдеш дома од класи еден ден, ќе се отвори фрижидерот. 915 00:39:27,140 --> 00:39:27,620 Ох, по ѓаволите. 916 00:39:27,620 --> 00:39:28,870 Нема млеко во фрижидер. 917 00:39:28,870 --> 00:39:32,470 Значи, ќе го затворите фрижидер, заклучи вратата, го заклучите вашиот дом, 918 00:39:32,470 --> 00:39:34,770 одиме зад аголот да Биографии, се во согласност, 919 00:39:34,770 --> 00:39:36,312 и да почне да се проверува за малку млеко. 920 00:39:36,312 --> 00:39:38,978 И тоа се случува да се земе некое време, бидејќи оние проклети само исходот 921 00:39:38,978 --> 00:39:40,570 бројачи се засекогаш да го користите и понатаму. 922 00:39:40,570 --> 00:39:41,950 Па во меѓувреме, вашиот цимер доаѓа дома. 923 00:39:41,950 --> 00:39:43,470 Тој или таа навистина сака млеко, како и. 924 00:39:43,470 --> 00:39:45,520 Да влезат во соба dorm, отвори фрижидерот, ох, тоа ебам. 925 00:39:45,520 --> 00:39:46,490 Нема повеќе млеко. 926 00:39:46,490 --> 00:39:49,040 >> Значи, тој или таа, исто така, оди зад аголот. 927 00:39:49,040 --> 00:39:51,670 Но, сега, бидејќи не е како две или три или четири CVSes близина, 928 00:39:51,670 --> 00:39:53,800 тие се случи да оди на една од различни оние на плоштадот. 929 00:39:53,800 --> 00:39:55,830 И така сега, неколку минути подоцна, и на вас 930 00:39:55,830 --> 00:39:58,060 се врати дома и ugh, најлошото проблем секогаш. 931 00:39:58,060 --> 00:40:00,967 Сега имате премногу млеко затоа што тоа се случува да одат кисело. 932 00:40:00,967 --> 00:40:03,050 И ви се допаѓа млеко, но вие навистина не како млеко. 933 00:40:03,050 --> 00:40:06,730 >> Па сега, ова беше скап грешка, бидејќи и двете од вас 934 00:40:06,730 --> 00:40:09,870 донесе одлука врз основа на состојба на некои променливи кои 935 00:40:09,870 --> 00:40:12,660 беше во процес на се менува од вас, 936 00:40:12,660 --> 00:40:14,560 иницијатор случува да се добие млеко. 937 00:40:14,560 --> 00:40:17,785 Значи, она што е можеби човечко решение за тој проблем? 938 00:40:17,785 --> 00:40:18,660 ПУБЛИКАТА: [Беззвучен] 939 00:40:18,660 --> 00:40:19,430 Дејвид MALAN: остават порака, нели? 940 00:40:19,430 --> 00:40:21,850 Секогаш да оставите порака, ако сте запознаени со тоа шоу. 941 00:40:21,850 --> 00:40:23,100 Да, постојат две од нас. 942 00:40:23,100 --> 00:40:25,940 Значи, секогаш се остават порака, или буквално заклучите фрижидер 943 00:40:25,940 --> 00:40:28,602 со некој вид на катанец или нешто во текот на врвот како што. 944 00:40:28,602 --> 00:40:31,310 Но, тоа е, всушност, ќе биде Клучниот проблем со базата на податоци дизајн, 945 00:40:31,310 --> 00:40:34,710 особено кога ќе може да има повеќе прелистувачи, повеќе лаптопи, 946 00:40:34,710 --> 00:40:37,450 повеќе корисници сите се обидуваат да надградба на информации одеднаш. 947 00:40:37,450 --> 00:40:40,590 Сензитивна информација како финансиски информации, 948 00:40:40,590 --> 00:40:43,350 при што со тргување веб-сајт како што ќе се гради, 949 00:40:43,350 --> 00:40:47,270 што ако сакате да се провери колку пари што треба, а потоа, ако имате доволно, 950 00:40:47,270 --> 00:40:48,490 купам акции? 951 00:40:48,490 --> 00:40:50,899 >> Но, што ако некој друг кој има заедничко сметка со вас 952 00:40:50,899 --> 00:40:52,690 истовремено обидувајќи да купам акции? 953 00:40:52,690 --> 00:40:55,190 Значи, тој или таа е проверка на Баланс на сметка, и на вас 954 00:40:55,190 --> 00:40:57,540 да се вратам на истата одговор, нема млеко. 955 00:40:57,540 --> 00:41:00,580 Или двете ќе се вратам од одговорот, имате $ 100 во предвид. 956 00:41:00,580 --> 00:41:04,680 Двајцата ќе се обидат да се направи одлука да се купи една акција од некоја компанија акции. 957 00:41:04,680 --> 00:41:06,130 >> И сега, што се случува? 958 00:41:06,130 --> 00:41:07,140 Имате две акции? 959 00:41:07,140 --> 00:41:08,420 Немате акции? 960 00:41:08,420 --> 00:41:10,320 Проблеми, како што може да се појават. 961 00:41:10,320 --> 00:41:11,755 Значи, ние ќе се судрите со тоа. 962 00:41:11,755 --> 00:41:14,630 SQL инјекција напади, за среќа, се нешто што ќе ви помогне со тоа, 963 00:41:14,630 --> 00:41:17,430 но овие се atrociously заеднички овие дена се уште. 964 00:41:17,430 --> 00:41:18,680 Значи, ова е само еден пример. 965 00:41:18,680 --> 00:41:21,290 Јас не прават тврдењата дека Харвард ПИН систем е 966 00:41:21,290 --> 00:41:23,130 ранливи на овој посебен напад. 967 00:41:23,130 --> 00:41:24,160 Се обидовме. 968 00:41:24,160 --> 00:41:26,120 Но, знаете дека ние има поле како овој. 969 00:41:26,120 --> 00:41:29,620 И нето проект Јеил има слично во потрага екран овие денови. 970 00:41:29,620 --> 00:41:33,190 И што излезе, дека можеби PIN-от систем се спроведува во PHP. 971 00:41:33,190 --> 00:41:37,050 >> А ако тоа е not-- were-- тие би можеле да имаат код кој изгледа вака. 972 00:41:37,050 --> 00:41:38,210 Тие имаат две променливи. 973 00:41:38,210 --> 00:41:42,495 Дај ми корисничко име и лозинка од функцијата супер глобалната променлива 974 00:41:42,495 --> 00:41:43,970 кои зборувавме претходно. 975 00:41:43,970 --> 00:41:47,310 Можеби Харвард има побарување како SELECT ѕвезда од корисниците 976 00:41:47,310 --> 00:41:50,005 каде корисничко име е еднаква на онаа и лозинка еднаква на тоа. 977 00:41:50,005 --> 00:41:51,880 И ќе забележите дека јас сум само приклучување тоа во користење 978 00:41:51,880 --> 00:41:55,050 кадрава заграда нотација од другите ден, што значи само приклучете вредност 979 00:41:55,050 --> 00:41:55,550 овде. 980 00:41:55,550 --> 00:41:57,449 Јас не сум со користење на Прашањето техника марка. 981 00:41:57,449 --> 00:41:59,240 Јас не се имате било какви вториот или трети аргументи. 982 00:41:59,240 --> 00:42:02,350 Јас сум само буквално изградба на себе низа. 983 00:42:02,350 --> 00:42:04,930 >> Проблемот, сепак, е дека ако некој сакал scroob, 984 00:42:04,930 --> 00:42:09,020 која се однесува на филм, се пријавува со нешто како ова, 985 00:42:09,020 --> 00:42:11,250 и јас се отстранат на точки кои обично се прикриваат 986 00:42:11,250 --> 00:42:14,370 лозинки, што ако тој е особено малициозен 987 00:42:14,370 --> 00:42:18,860 и неговата лозинка можеби е 12345, за на филм наречен "Spaceballs" 988 00:42:18,860 --> 00:42:21,970 но тој критички типови на една понуда по пет, 989 00:42:21,970 --> 00:42:24,790 тогаш буквално зборот или во просторот, а потоа и понуда, 990 00:42:24,790 --> 00:42:29,160 unquote еден е еднакво на еден цитат, Но забележите тој е испуштена што? 991 00:42:29,160 --> 00:42:32,700 Тој е испуштена цитатот на десната и тој е испуштена цитатот на левата страна. 992 00:42:32,700 --> 00:42:35,170 >> Бидејќи ако тоа напаѓачот Претпоставката е scroob 993 00:42:35,170 --> 00:42:38,160 е дека луѓето кои пишувале ова PHP код не беа толку светла, 994 00:42:38,160 --> 00:42:42,990 можеби тие само имаат некои сингл цитати околу интерполација 995 00:42:42,990 --> 00:42:45,210 на променливата во големи загради? 996 00:42:45,210 --> 00:42:48,620 И така, можеби, тој би можел вид завршување на нивната мисла 997 00:42:48,620 --> 00:42:53,290 за нив, но на начин кој ќе да му дозволи да се пробиени во системот на PIN-от. 998 00:42:53,290 --> 00:42:55,310 Со други зборови, да претпоставиме дека ова е кодот 999 00:42:55,310 --> 00:42:57,140 и ние сега се вклучи во она scroob напишале. 1000 00:42:57,140 --> 00:42:58,770 И тоа е црвено, бидејќи тоа е лошо. 1001 00:42:58,770 --> 00:43:01,310 >> И со основниот текст е она што тој ја внеле во, 1002 00:43:01,310 --> 00:43:05,510 scroob можеше трик серверот на Харвард во изградба на пребарување SQL 1003 00:43:05,510 --> 00:43:07,440 стринг кој изгледа вака. 1004 00:43:07,440 --> 00:43:11,760 Лозинка или еднакво на 12.345 еден е еднакво на еден. 1005 00:43:11,760 --> 00:43:14,820 Како резултат на кои, логично, е дека тоа ќе се логирате scroob 1006 00:43:14,820 --> 00:43:18,360 во својата лозинка, ако е 12.345 или ако еден е еднакво на 1007 00:43:18,360 --> 00:43:22,660 еден, што е, се разбира секогаш точно, што значи scroob секогаш добива во. 1008 00:43:22,660 --> 00:43:26,060 >> И така, на начин да се поправи оваа, како и во многу случаи, 1009 00:43:26,060 --> 00:43:28,140 ќе биде да се напише, одбраната. 1010 00:43:28,140 --> 00:43:30,390 Да се ​​користи нешто како нашата вистинската функција за пребарување, кои 1011 00:43:30,390 --> 00:43:33,980 што ќе видите во PSet7, каде што се вклучи во нешто како прашалници тука. 1012 00:43:33,980 --> 00:43:35,980 И убавината на функција за пребарување дека ние 1013 00:43:35,980 --> 00:43:40,010 ви даде е да ги брани против овие т.н. SQL инјекција напади, каде 1014 00:43:40,010 --> 00:43:44,260 некој се трикови на вашиот код во инјектирање свој SQL код. 1015 00:43:44,260 --> 00:43:47,380 Затоа што она што го бараш функција ние ви даде, всушност, ќе се направи, 1016 00:43:47,380 --> 00:43:51,270 ако користите синтакса прашалник и втор и трет аргумент тука, 1017 00:43:51,270 --> 00:43:54,590 е она што не го додадете во внесување дека корисникот обезбедени? 1018 00:43:54,590 --> 00:43:56,060 Оние црта цитати. 1019 00:43:56,060 --> 00:43:58,590 >> Значи, тоа се измолкнува било каква потенцијално опасни карактери. 1020 00:43:58,590 --> 00:44:01,000 Ова изгледа чудно сега, но тоа не е ранлив 1021 00:44:01,000 --> 00:44:03,260 поради тоа што не го прави тоа промена на логиката повеќе 1022 00:44:03,260 --> 00:44:06,470 затоа што целиот лозинка е сега една понуда што не е, 1023 00:44:06,470 --> 00:44:07,596 всушност, лозинка scroob е. 1024 00:44:07,596 --> 00:44:09,845 Значи, таму се некои шеги за ова во текот на годините. 1025 00:44:09,845 --> 00:44:12,570 Значи, ова е слика преземени на некои geek на паркингот 1026 00:44:12,570 --> 00:44:16,620 при што може да знам дека некои градови и држави се обидуваат да го скенира вашиот лиценца 1027 00:44:16,620 --> 00:44:19,460 плоча кон вас или да ви наплати билет ако одите преку без, како, 1028 00:44:19,460 --> 00:44:20,660 нешто Е-Зи pass. 1029 00:44:20,660 --> 00:44:24,490 Значи, ова лице се претпоставува дека можеби на луѓе кои ќе пишуваат на системот Е-Зи Лозинка 1030 00:44:24,490 --> 00:44:28,240 не беа толку светли, а можеби и тие само споени заедно стринг, 1031 00:44:28,240 --> 00:44:32,190 така што тој или таа не може злонамерно не само да ја заврши својата мисла, 1032 00:44:32,190 --> 00:44:35,150 но всушност извршување лоша команда, кои што не сум споменат уште, 1033 00:44:35,150 --> 00:44:36,380 но вие веројатно може да се погоди. 1034 00:44:36,380 --> 00:44:39,820 Дека во прилог да го избришете и вметнете и надградба и да изберете, 1035 00:44:39,820 --> 00:44:43,370 таму е исто така клучен збор нарекува капка, кои буквално се што се брише 1036 00:44:43,370 --> 00:44:45,300 во базата на податоци, која особено е лошо. 1037 00:44:45,300 --> 00:44:48,760 >> Можеме да зумирате на ова, ако тоа е малку тешко да се види. 1038 00:44:48,760 --> 00:44:52,300 Ова, во моментов, е познатиот цртан филм тоа е прекрасно умен сега 1039 00:44:52,300 --> 00:44:53,145 и разбирливи. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Смеа] 1042 00:45:04,750 --> 00:45:05,910 >> Да, се излади. 1043 00:45:05,910 --> 00:45:06,800 Вид на geeking надвор. 1044 00:45:06,800 --> 00:45:08,800 Значи овие се, тогаш, SQL инјекција напади. 1045 00:45:08,800 --> 00:45:13,050 И тие се толку лесно да се избегне со користење на правото код или десно библиотеки. 1046 00:45:13,050 --> 00:45:15,947 И ќе видите во PSet7, тоа е Затоа ние ви даде барање функција. 1047 00:45:15,947 --> 00:45:17,780 Значи, неколку закачки дека ние сме мислеле дека би 1048 00:45:17,780 --> 00:45:19,930 ви даде тука во нашата Останатите минути заедно. 1049 00:45:19,930 --> 00:45:24,030 Значи, како што се сеќавам од нула недела, ние воведени овие две светилки кои 1050 00:45:24,030 --> 00:45:26,610 се убаво, не само затоа што тие се прилично и се шарени, 1051 00:45:26,610 --> 00:45:29,450 туку затоа што тие го поддржуваат нешто повика на API, апликација 1052 00:45:29,450 --> 00:45:31,980 Програмски интерфејс и во CS50 досега, ние сме 1053 00:45:31,980 --> 00:45:34,440 најмногу фокусирана на добие и ПОСТ, но излегува 1054 00:45:34,440 --> 00:45:37,390 има и други како HTTP глаголи стави. 1055 00:45:37,390 --> 00:45:39,430 >> И всушност, тоа беше слајд од нула недела 1056 00:45:39,430 --> 00:45:44,930 при што доколку се пишува код кој испраќа ла PSet6 барањето за HTTP дека 1057 00:45:44,930 --> 00:45:49,647 изгледа вака со ова парче на текст на дното, кој се нарекува JSON, 1058 00:45:49,647 --> 00:45:52,230 или JavaScript Објектно Нотација што ние ќе зборуваме за следната недела, 1059 00:45:52,230 --> 00:45:57,030 можете да го вклучите или исклучите или промена боја на светла како оние. 1060 00:45:57,030 --> 00:46:00,480 Па ако CS50 исто така има во прилог на некои на оние светилки овде во Њу Хејвн 1061 00:46:00,480 --> 00:46:02,480 ако сакате да ги позајмите, нив за конечниот проекти, 1062 00:46:02,480 --> 00:46:04,370 Мајкрософт, исто така, некои Бендови, кои се како 1063 00:46:04,370 --> 00:46:07,619 часовници кои ќе се носат околу вашиот зглоб кои имаат сличен начин на API, така што ќе 1064 00:46:07,619 --> 00:46:10,040 може да напише свој софтвер за нив. 1065 00:46:10,040 --> 00:46:12,490 >> Имаме сметка со IOS на Apple код, така 1066 00:46:12,490 --> 00:46:15,510 дека ако имате Apple Гледајте или iPhone или iPad или iPod, 1067 00:46:15,510 --> 00:46:17,707 можете да се напише код кој всушност се работи на нив. 1068 00:46:17,707 --> 00:46:19,540 Имаме еден куп на Arduinos, кои се 1069 00:46:19,540 --> 00:46:22,010 малечки компјутери без случаи, во суштина, 1070 00:46:22,010 --> 00:46:25,240 дека можете да ги поврзете преку USB, обично на вашата Mac или PC, 1071 00:46:25,240 --> 00:46:28,810 напише код кој работи на овие физички уреди кои често имаат сензори на нив 1072 00:46:28,810 --> 00:46:30,790 за да можете да комуницирате со реалниот свет. 1073 00:46:30,790 --> 00:46:32,860 Имаме еден куп Скок на уреди за движење, 1074 00:46:32,860 --> 00:46:36,500 кои се USB уреди за Macs и Компјутери, тука и повторно, во Њу Хејвен. 1075 00:46:36,500 --> 00:46:40,080 И ако го поврзете вашиот Mac, вие всушност може да го контролираат вашиот компјутер 1076 00:46:40,080 --> 00:46:42,550 со пишување на софтвер дека преку инфрацрвени зраци, 1077 00:46:42,550 --> 00:46:46,360 фигури од каде се вашите човечки раце се, дури и без да се допира вашата тастатура. 1078 00:46:46,360 --> 00:46:49,135 Ние сме мислеле дека би ги споделат брз видат во ова, на пример. 1079 00:46:49,135 --> 00:46:51,428 >> [Музички] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Значи, имаме една цела куп на овие работи, 1082 00:47:57,590 --> 00:48:01,040 исто така, се нарекува Myo рака бендови која ќе се стави врз вашите подлактица 1083 00:48:01,040 --> 00:48:04,595 а потоа можете да ги контролирате реално свет или во виртуелниот свет се допаѓа ова. 1084 00:48:04,595 --> 00:48:06,471 >> [Музички] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Или, имаме и некои Google Картон, кој е буквално, како, 1087 00:49:20,920 --> 00:49:24,841 картонска кутија може да се стави на вашиот лице, но слајд во вашиот телефон во неа 1088 00:49:24,841 --> 00:49:27,590 така што ќе се стави на вашата чаша телефон навистина блиску до твоите очи. 1089 00:49:27,590 --> 00:49:30,190 И Google Картон е прилично евтини од $ 10 или 20 $. 1090 00:49:30,190 --> 00:49:32,230 И таа има мали леќи дека нешто надвор смена 1091 00:49:32,230 --> 00:49:35,900 на сликата на екранот на вашиот човечки очите да ви даде чувство на длабочина 1092 00:49:35,900 --> 00:49:39,550 така што навистина имаат 3D средина во пред вас. 1093 00:49:39,550 --> 00:49:42,927 Ние, исто така, има некои Samsung Gear, која е поскапа верзија на ова, 1094 00:49:42,927 --> 00:49:46,010 но тоа може да слајд на сличен начин, во Андроид телефон и да ви даде на илузијата 1095 00:49:46,010 --> 00:49:48,309 of-- или даваат по искуството на виртуелната реалност. 1096 00:49:48,309 --> 00:49:50,850 И во нашата конечна две минути, ние сме мислеле дека би се обидувал да го направите тоа. 1097 00:49:50,850 --> 00:49:55,250 Ако можам да проектираат она Колтон има тука само за да наточи вашиот апетит, 1098 00:49:55,250 --> 00:49:58,442 дозволете ми да оди напред и да се фрли Регистрација на големиот екран тука. 1099 00:49:58,442 --> 00:49:59,400 Дозволете ми да го убие на светла. 1100 00:49:59,400 --> 00:50:02,290 Колтон, дали сакате да се оди напред и го стави на вашиот мобилен за момент 1101 00:50:02,290 --> 00:50:05,171 и да дојде на над да средината на сцената? 1102 00:50:05,171 --> 00:50:07,420 И сакате да project-- тоа е она што го гледа Колтон. 1103 00:50:07,420 --> 00:50:10,560 >> Во овој момент, Wi-Fi во овде е не толку силно за овој уред 1104 00:50:10,560 --> 00:50:13,870 дека ова е супер привлечна, но Колтон е буквално 1105 00:50:13,870 --> 00:50:15,710 во овој магичен футуристички место. 1106 00:50:15,710 --> 00:50:16,796 Тој го гледа само една слика. 1107 00:50:16,796 --> 00:50:19,920 Ја гледате левото и десното око дека неговиот мозок се прикрпувањето 1108 00:50:19,920 --> 00:50:22,260 во три димензионален средина на лицето. 1109 00:50:22,260 --> 00:50:24,319 Тој е само избраните изборна опција тука. 1110 00:50:24,319 --> 00:50:27,360 И така, повторно, тој е облечен во оваа гарнитура со Самсунг телефон на тоа дека тоа е 1111 00:50:27,360 --> 00:50:29,080 безжично проектирање на нашата глава. 1112 00:50:29,080 --> 00:50:30,349 Сега сте на Марс, мислам? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Јас мислам така. 1114 00:50:31,140 --> 00:50:32,181 Не сум сигурен [Беззвучен]. 1115 00:50:32,181 --> 00:50:34,250 [Смеа] 1116 00:50:34,250 --> 00:50:36,374 >> Дејвид MALAN: Излегува Марс има овие менија. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [Беззвучен] некои кул места, ако сакаме да одиме to-- 1118 00:50:41,590 --> 00:50:43,330 >> Дејвид MALAN: Каде сакаме да се оди? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [Беззвучен] 1120 00:50:45,837 --> 00:50:48,170 Дејвид MALAN: И ајде да видиме каде Колтон е земајќи ни сега. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [Беззвучен] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> Дејвид MALAN: Значи, има толку многу различни места може да се земе себе. 1124 00:50:56,380 --> 00:51:00,590 Има FAPIs преку кој може да пишуваат игри или интеракции кои 1125 00:51:00,590 --> 00:51:01,950 работи, во крајна линија, на телефон. 1126 00:51:01,950 --> 00:51:03,908 Значи, навистина, само пишување на мобилен телефон стан. 1127 00:51:03,908 --> 00:51:06,380 Но, благодарение на софтвер и способностите на графика, 1128 00:51:06,380 --> 00:51:08,765 сега Колтон е во овој малечки куќа. 1129 00:51:08,765 --> 00:51:10,515 И по ризик самите себе огромна, 1130 00:51:10,515 --> 00:51:13,330 Колтон а јас ќе останат околу за додека на крајот од класа денес овде 1131 00:51:13,330 --> 00:51:14,300 ако сакате да се излезе и да игра. 1132 00:51:14,300 --> 00:51:16,350 А ние ќе ги донесе врати следната недела, како и. 1133 00:51:16,350 --> 00:51:18,420 Без понатамошно, Шум тоа е тоа за денес. 1134 00:51:18,420 --> 00:51:21,990 Ќе се видиме следната недела. 1135 00:51:21,990 --> 00:51:24,140 >> [Музика - рага близнаци, "лош човек"] 1136 00:51:24,140 --> 00:55:23,146