1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Недела 9] 2 00:00:02,570 --> 00:00:04,740 [Дејвид Џ Malan - Универзитетот Харвард] 3 00:00:04,740 --> 00:00:07,170 [Ова е CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Во ред. Добредојде назад. Ова е CS50, а тоа е почеток на недела 9. 5 00:00:12,350 --> 00:00:16,600 Денес ние се фокусираат особено на дизајн, веќе не се во контекст на C 6 00:00:16,600 --> 00:00:20,010 но во контекст на PHP и малку SQL и малку на JavaScript, 7 00:00:20,010 --> 00:00:23,730 особено кон крајот на двете pset 7 и твојот последен проект. 8 00:00:23,730 --> 00:00:26,310 Всушност, ако сте во тој момент во твојот последен проект 9 00:00:26,310 --> 00:00:30,100 каде што се претпоставува дека од еден час или па пред вас барем почна да даде некои мисли 10 00:00:30,100 --> 00:00:33,730 до финалниот проект и сте размислување би сакале да соработуваат со 1 или 2 соученици, 11 00:00:33,730 --> 00:00:36,150 ако имаш проблеми со поврзување со изјави соученици, 12 00:00:36,150 --> 00:00:40,570 се чувствуваат слободни да пополните формулар во cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Тоа само ќе ве праша кој сте, каков вид на проект сте размислување за, 14 00:00:42,880 --> 00:00:44,870 каде што живеам само за логистичка причини. 15 00:00:44,870 --> 00:00:49,510 А потоа, ако сакате да се внимава на текот на следната недела или така табела рачно таму, 16 00:00:49,510 --> 00:00:53,520 тогаш може да се види само за читање верзија на Google doc 17 00:00:53,520 --> 00:00:56,010 во која ние сме собирање таа информација. 18 00:00:56,010 --> 00:00:58,930 Значи, ако сакате да работите со некого, со сите средства да се чувствуваат слободни да допрат до луѓето 19 00:00:58,930 --> 00:01:00,480 преку тој механизам. 20 00:01:00,480 --> 00:01:02,690 Но мнозинството на луѓето не работат соло. Тоа е сосема во ред. 21 00:01:02,690 --> 00:01:06,120 Затоа, не се чувствуваат дека тоа е на кој било начин задолжително. 22 00:01:06,120 --> 00:01:09,680 Во петокот тоа беше само мене и неколку од тимот овде, 23 00:01:09,680 --> 00:01:11,100 празни театар во најголем дел. 24 00:01:11,100 --> 00:01:14,600 Имало 3 туристи седи таму, така што беше малку непријатно. 25 00:01:14,600 --> 00:01:18,970 Она што ние разговаравме за било бази на податоци и ние разговаравме за pset 7 малку. 26 00:01:18,970 --> 00:01:22,200 И ако не се случи да се фати дека на видео само уште, тоа е во ред. 27 00:01:22,200 --> 00:01:26,770 Ќе се обидам да се дефинираат сите услови што инаку би се здраво за готово 28 00:01:26,770 --> 00:01:28,840 врз основа на предавање во петокот. 29 00:01:28,840 --> 00:01:32,550 >> Но, денес ние ќе се обидеме да ви се дојде до точка 30 00:01:32,550 --> 00:01:34,990 на не само да биде во можност да се направи нешто како pset 7 31 00:01:34,990 --> 00:01:37,360 но, навистина разбирање она што се случува под хауба, 32 00:01:37,360 --> 00:01:41,910 особено на некои од апстракции што ќе стави во место во functions.php датотека 33 00:01:41,910 --> 00:01:45,780 да се направи вашиот живот малку полесно, но така што ќе конечно се разбере 34 00:01:45,780 --> 00:01:48,760 така што кога обука тркала падне во неколку недели се уште може да преживее 35 00:01:48,760 --> 00:01:53,750 во реалниот свет и го правиме ова работи без CS50 рамка под вас. 36 00:01:53,750 --> 00:01:57,500 Оваа $ _SESSION, за оние од вас кои се запознаени 37 00:01:57,500 --> 00:02:01,960 или кои веќе фатен на видео во петокот, што значи СЕДНИЦА нека направи 38 00:02:01,960 --> 00:02:04,330 во PHP базирани веб апликација? 39 00:02:04,330 --> 00:02:09,650 Ова е superglobal променлива, што значи дека е слични во духот со GET и POST 40 00:02:09,650 --> 00:02:13,970 и уште неколку други, но она што е ова нешто корисно за? 41 00:02:13,970 --> 00:02:18,320 >> Што е СЕДНИЦА користи за? Да. [Студент] влезете внатре 42 00:02:18,320 --> 00:02:21,040 Жал ми е? [Студент] влезете внатре влезете внатре Навистина. 43 00:02:21,040 --> 00:02:25,100 Во pset 7 ние сме со користење на овој СЕДНИЦА superglobal да се олесни влезете внатре 44 00:02:25,100 --> 00:02:28,600 И она што е убаво за оваа superglobal е дека тоа е асоцијативна низа. 45 00:02:28,600 --> 00:02:33,190 Асоцијативна низа, се потсетиме, е само низа, но чии индекси веќе не мора да бидат броеви 46 00:02:33,190 --> 00:02:37,670 како 012. Тие можат да бидат броеви или тие можат да бидат дури и жици. 47 00:02:37,670 --> 00:02:44,890 И така ако сте се нурна во pset 7, можете да се потсетиме дека ние сме чување на клучен наречен проект 48 00:02:44,890 --> 00:02:50,330 внатрешноста на оваа асоцијативна низа чија вредност е нешто како 123 - 49 00:02:50,330 --> 00:02:53,780 без оглед на моментално најавени ID корисникот е. 50 00:02:53,780 --> 00:02:59,470 Мотивација за ова е тоа што дури по корисник го посети локалниот компјутер 51 00:02:59,470 --> 00:03:02,720 или мојот вебсајт поопшто, а потоа тие влезете во системот, 52 00:03:02,720 --> 00:03:07,320 дури и ако тие не кликнете на линкот или враќање на мојот вебсајт за 5 минути 53 00:03:07,320 --> 00:03:10,730 или дури и еден час или па дури и еден ден, но тие ги напуштат своите прозорецот на прелистувачот отворена, 54 00:03:10,730 --> 00:03:14,370 преку овој superglobal можам да се сетам дека тие се најавени 55 00:03:14,370 --> 00:03:21,140 >> Со други зборови, тоа ми овозможува да ги чувате малку долгорочни што сакам за корисникот. 56 00:03:21,140 --> 00:03:24,390 И можете да мислам на тоа навистина како инкарнација на количката. 57 00:03:24,390 --> 00:03:27,740 Места како Амазон очигледно ви стави работите во количката, 58 00:03:27,740 --> 00:03:32,230 но HTTP, протоколот дека овластувањата на веб, е без државјанство 59 00:03:32,230 --> 00:03:34,230 во смисла дека кога ќе ја посетите веб-сајт, 60 00:03:34,230 --> 00:03:37,290 во најголем дел немате некои постојано мрежна конекција 61 00:03:37,290 --> 00:03:39,270 помеѓу вашиот интернет пребарувач и серверот. 62 00:03:39,270 --> 00:03:42,190 Штом сте ја преземале од HTML и JPEG слики и GIFs и сето тоа, 63 00:03:42,190 --> 00:03:48,200 врската оди далеку и вие само треба копија на HTML и какво ли не од серверот. 64 00:03:48,200 --> 00:03:53,000 Но, ако Серверот сака да се сетам на нешто за Вас, 65 00:03:53,000 --> 00:03:57,580 товарот е на серверот за да всушност ги сними таа информација. 66 00:03:57,580 --> 00:04:00,130 И така да на програмерот кој има контрола врз серверот 67 00:04:00,130 --> 00:04:04,400 може да се стави повеќето нешто што сакате во внатрешноста на оваа superglobal асоцијативна низа 68 00:04:04,400 --> 00:04:06,850 и тоа ќе биде таму следниот пат кога корисникот се враќа, 69 00:04:06,850 --> 00:04:12,070 дали тоа е минути или дури дена подоцна, освен ако тие не ги затвораат прозорецот на прелистувачот, 70 00:04:12,070 --> 00:04:14,360 на која точка СЕДНИЦА исчезнува. 71 00:04:14,360 --> 00:04:17,779 Така, тоа е ефемерни складирање, тоа е непостојана, а тоа е со цел да отидат 72 00:04:17,779 --> 00:04:22,360 штом корисникот затвора нивниот интернет пребарувач - не само што табот, често целиот прелистувач, 73 00:04:22,360 --> 00:04:24,930 на тој начин ефикасно да влезете на корисникот надвор. 74 00:04:24,930 --> 00:04:28,000 Па, како е тоа нешто всушност спроведува? 75 00:04:28,000 --> 00:04:31,360 Да го земеме еден брз поглед на едноставен пример ние погледна во петокот. 76 00:04:31,360 --> 00:04:33,340 За оние кои се запознаени, тоа беше толку едноставно како ова. 77 00:04:33,340 --> 00:04:35,910 Ова е веб страница, чија единствена цел во животот е да ми каже 78 00:04:35,910 --> 00:04:38,000 колку пати сум го посетиле оваа страница. 79 00:04:38,000 --> 00:04:41,670 Ова е прв пат овде во понеделникот изјави дека го посетиле, така што вели 0 пати. 80 00:04:41,670 --> 00:04:46,940 >> Но, ако почнам претовар оваа страница, таа вели 1 време, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 и оваа ќе крајот само продолжи пребројување нагоре, нагоре, нагоре, нагоре, нагоре 82 00:04:49,800 --> 00:04:53,130 за секој пат кога јас всушност кликнете Освежи ја на неа. 83 00:04:53,130 --> 00:04:58,830 Па, како е ова работа? Дозволете ми да оди во внатрешноста на оваа датотека наречена counter.php. 84 00:04:58,830 --> 00:05:02,490 На горниот дел од сето тоа е сино коментари, но интересен дел е тука. 85 00:05:02,490 --> 00:05:06,670 On-line 13 ние го нарекуваме оваа функција session_start, 86 00:05:06,670 --> 00:05:09,600 и дека е буквално сите што треба да направите ако сакате да имате пристап 87 00:05:09,600 --> 00:05:13,610 на оваа специјална superglobal нарекува $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Што го прави сето тоа е можно, а ние ќе се види во еден момент како тоа е можно. 89 00:05:17,430 --> 00:05:20,350 Во линија 16 известувањето што правам. 90 00:05:20,350 --> 00:05:25,960 Ако клучот, наречен контра - со други зборови, индексот вредност - "контра" 91 00:05:25,960 --> 00:05:32,310 постои внатрешноста на оваа низа наречен сесија, тогаш што правам со неа во линија подолу? 92 00:05:32,310 --> 00:05:36,650 Што е линија 18 правиш? 93 00:05:36,650 --> 00:05:40,360 >> [Нечујни студент одговор] Што е тоа? [Студент] Чување на вредност. Добро. 94 00:05:40,360 --> 00:05:45,800 Тоа е чување на вредност која е во сесија во моментов во нов локален привремена променлива, 95 00:05:45,800 --> 00:05:48,250 $ Контра во сите мали букви. 96 00:05:48,250 --> 00:05:50,770 Забележете дека PHP е веќе малку мрзливи тука. 97 00:05:50,770 --> 00:05:55,550 Забележите немаме било споменување на int или плови или стринг или нешто слично 98 00:05:55,550 --> 00:06:00,480 затоа што PHP е слабо внеле, при што не мора да наведете тип на променлива, 99 00:06:00,480 --> 00:06:03,310 и во овој случај тука јас не сум дури и го прогласи уште. 100 00:06:03,310 --> 00:06:08,980 Јас сум тоа прогласување внатрешноста на овие големи загради и за разлика од C, ова е всушност во ред. 101 00:06:08,980 --> 00:06:13,800 Без разлика колку длабоко вгнездена декларација променлива е во PHP - 102 00:06:13,800 --> 00:06:16,650 внатрешноста на кадрава голема заграда, во внатрешноста на кадрава голема заграда и слично - 103 00:06:16,650 --> 00:06:21,230 тоа ќе во тој момент во времето постои за преостанатиот дел од програмата, 104 00:06:21,230 --> 00:06:22,680 за подобро или за полошо. 105 00:06:22,680 --> 00:06:26,930 Така што веднаш станува глобална веднаш штом ќе го дефинираме како што го правиме тука. 106 00:06:26,930 --> 00:06:31,620 >> Во спротивно, ако не се најде дека има нешто во СЕДНИЦА superglobal, 107 00:06:31,620 --> 00:06:34,680 Јас сум очигледно иницијализацијата на оваа променлива контра на 0, 108 00:06:34,680 --> 00:06:37,580 тоа само претпоставувајќи на корисникот никогаш не бил овде. 109 00:06:37,580 --> 00:06:40,030 И тогаш ова се разбира е зголемување, контра како? 110 00:06:40,030 --> 00:06:44,480 Јас сум ажурирање на вредност која е во внатрешноста на оваа асоцијативна низа 111 00:06:44,480 --> 00:06:49,530 со поставување еднаква на она контра моментов е + 1. 112 00:06:49,530 --> 00:06:53,520 Ако јас дојдете тука на HTML кодот на страницата, тоа е всушност прилично едноставна. 113 00:06:53,520 --> 00:06:58,920 Сè што треба во телото на оваа страница се: "Ти го посетиле овој сајт тој-и-толку пати." 114 00:06:58,920 --> 00:07:00,350 И ова е конструкт PHP. 115 00:07:00,350 --> 00:07:06,080 Ако го направите 00:07:12,600 Тоа е навистина еквивалент на нешто како printf, што сме виделе многу пати во C, 117 00:07:12,600 --> 00:07:15,940 иако, како што можеби знаете веќе од спец во pset 7, 118 00:07:15,940 --> 00:07:20,160 печатење е исто така функција која само печати нешто, тоа всушност не го користите формат кодови, 119 00:07:20,160 --> 00:07:23,270 и навистина може да се каже ехо, како и. 120 00:07:23,270 --> 00:07:27,460 Сите тие се некогаш толку малку различни, иако нето ефектот е на крајот на истата. 121 00:07:27,460 --> 00:07:31,270 Значи оваа употреба на еднаквите знак е само вид на елегантен начин да се направи тоа 122 00:07:31,270 --> 00:07:34,910 повеќе посочно отколку што инаку би можеле да бидат во можност да. 123 00:07:34,910 --> 00:07:38,370 Значи тоа е сето ова место го прави тоа. Тоа отпечатоци од вредноста на бројачот. 124 00:07:38,370 --> 00:07:40,550 Како е ова сите навистина се случува? 125 00:07:40,550 --> 00:07:43,250 Може да се потсетиме една недела или така пред почнавме потрага под хаубата 126 00:07:43,250 --> 00:07:47,910 колку веб-страница работи со користење на овој инспектор табот. 127 00:07:47,910 --> 00:07:51,900 >> Хром има ова и во верзија Mac, Windows верзија, па дури и верзијата на Линукс, 128 00:07:51,900 --> 00:07:59,510 и Firefox и IE имаат слични механизми при имате овој вграден дебагер 129 00:07:59,510 --> 00:08:01,400 внатрешноста на прелистувачот. 130 00:08:01,400 --> 00:08:03,040 Ајде да се погледне на следниве. 131 00:08:03,040 --> 00:08:06,960 Имаме еден куп на јазичиња тука, и се сети дека најлева е Елементи, 132 00:08:06,960 --> 00:08:10,700 и без разлика колку godawful HTML и JavaScript е во една страница, 133 00:08:10,700 --> 00:08:15,710 потсетиме дека со Елементи јазичето всушност можете да отидете на HTML хиерархиски 134 00:08:15,710 --> 00:08:17,050 и убаво и уредно. 135 00:08:17,050 --> 00:08:19,370 Значи, ако сте се обидуваат да научат од веб-сајт како Google или Facebook 136 00:08:19,370 --> 00:08:22,370 или навистина било која веб страница, сфати дека вие сте веројатно подобро 137 00:08:22,370 --> 00:08:26,360 гледа во изворниот код на овој начин како што се противат на гледање на суровини извор, 138 00:08:26,360 --> 00:08:29,580 кој може да биде хаос, како што видовме, особено на сајт на Google. 139 00:08:29,580 --> 00:08:32,220 Значи, ако јас наместо кликнете на мрежата јазичето тука, 140 00:08:32,220 --> 00:08:34,830 ајде да видиме што се случува кога ќе ја посетите оваа страница. 141 00:08:34,830 --> 00:08:38,669 Прво дозволете ми да исчистам кешот. 142 00:08:38,669 --> 00:08:43,570 Одам да се оди во Settings во Хром, а потоа одат на историја 143 00:08:43,570 --> 00:08:46,420 а потоа Избришете ги сите бараат податоци. 144 00:08:46,420 --> 00:08:48,170 Може да се користи за да го прават тоа за други цели, [смеа] 145 00:08:48,170 --> 00:08:51,990 но кога станува збор за развој на веб-сајтови, тоа е всушност корисно - 146 00:08:51,990 --> 00:08:55,980 ако сте смеење знаеш. [Смеа] 147 00:08:55,980 --> 00:08:59,310 Тоа е всушност навистина корисни при развивање на веб-сајтови, бидејќи реалноста е 148 00:08:59,310 --> 00:09:04,100 работи како cookies и работи како кеширани HTML датотеки, кеширани JavaScript датотеки 149 00:09:04,100 --> 00:09:06,390 всушност може да стане голема главоболка, бидејќи ако за која било причина 150 00:09:06,390 --> 00:09:11,500 на прелистувачот одлучува за кеширање на некои датотеки, а сепак сте направиле промени во таа датотека на серверот 151 00:09:11,500 --> 00:09:14,670 но на пребарувачот не е навистина сфатија дека датотеката се промени 152 00:09:14,670 --> 00:09:19,060 и затоа не всушност го преземете повторно, дури и кога ќе кликнете на Обнови копче, 153 00:09:19,060 --> 00:09:23,210 една од најпознатите безпогрешен начини да се само бидете сигурни дека грешката не е со вашиот код, 154 00:09:23,210 --> 00:09:26,480 тоа е со однесувањето на прелистувачот, е да се оди тука во вашиот интернет пребарувач 155 00:09:26,480 --> 00:09:29,950 и само ја избришете целата историја, така што не постои конфузија. 156 00:09:29,950 --> 00:09:33,210 >> А потоа, ако навистина сакате да бидете параноични, поднесе оставка на прелистувачот, рестартирајте, 157 00:09:33,210 --> 00:09:35,660 и тогаш бидете сигурни дека сите работи како што се очекуваше. 158 00:09:35,660 --> 00:09:38,820 Значи во кратки, расчистување кешот е добар кога го прави развој. 159 00:09:38,820 --> 00:09:40,690 Значи тука имаме мрежа табот. 160 00:09:40,690 --> 00:09:46,020 Јас претходно го посети местото 9 пати, но дозволете ми да оди напред сега и кликнете Reload. 161 00:09:46,020 --> 00:09:47,500 И јас сум назад на 0. 162 00:09:47,500 --> 00:09:52,100 Да, всушност се види како тоа е дека оваа седница superglobal се спроведува. 163 00:09:52,100 --> 00:09:55,990 Одам да кликнете на 1 HTTP барањето што е направено, 164 00:09:55,990 --> 00:09:58,810 и ова за дебагирање прозорец ми овозможува да се погледне внатре во тоа. 165 00:09:58,810 --> 00:10:01,970 Еве гледам само одговор од серверот, што не е интересно. 166 00:10:01,970 --> 00:10:04,030 Сум го видел ова во било кој број на начини. 167 00:10:04,030 --> 00:10:06,350 Но, она што е технички интересни се заглавија. 168 00:10:06,350 --> 00:10:11,770 Ако јас дојдете тука и се фокусира на барање заглавија и кликнете View извор, 169 00:10:11,770 --> 00:10:14,400 она што јас ќе одам да видам е буквално HTTP барање 170 00:10:14,400 --> 00:10:17,250 дека само отиде од мојот интернет пребарувач на серверот, 171 00:10:17,250 --> 00:10:21,400 GET биде оперативна збор, а потоа / counter.php биде името на датотеката, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 само да биде верзијата на HTTP дека мојот интернет пребарувач е користење. 173 00:10:25,670 --> 00:10:31,070 Оваа линија, тука е малку потсетување од прелистувачот на серверот што го името на серверот е 174 00:10:31,070 --> 00:10:33,020 дека сака да разговара. 175 00:10:33,020 --> 00:10:38,200 А потоа го остатокот од овој понекогаш е интересно, но не се релевантни во моментов. 176 00:10:38,200 --> 00:10:40,090 >> Ова е само еден вид на љубопитност. 177 00:10:40,090 --> 00:10:43,530 Криптичната иако овој стринг е, во секое време вашиот прелистувач посети веб-сајт 178 00:10:43,530 --> 00:10:47,110 тоа е информирање на серверот што прелистувачот што го користите 179 00:10:47,110 --> 00:10:50,040 и тоа што оперативниот систем што го користите и која верзија од него. 180 00:10:50,040 --> 00:10:52,650 Значи, ако некогаш сте се прашувале како веб-сајтови како CNN и какво ли не 181 00:10:52,650 --> 00:10:56,860 знаете што процентите се на Mac корисниците на интернет, PC корисници, 182 00:10:56,860 --> 00:11:00,820 Корисниците на IE, Хром корисници и слично, тоа е затоа што сите наши прелистувачи 183 00:11:00,820 --> 00:11:04,300 се кажува секој веб-сајт таму што сме. 184 00:11:04,300 --> 00:11:07,410 Тоа не мора да содржи лични информации, 185 00:11:07,410 --> 00:11:13,060 но тоа не му кажете на серверот она што вашата IP адреса е и она што прелистувачот и оперативниот систем кој го користите. 186 00:11:13,060 --> 00:11:14,720 Значи тоа е каде што оваа информација е. 187 00:11:14,720 --> 00:11:19,960 Но она што е поинтересно сега кога станува збор за овие сесии е одговор заглавието. 188 00:11:19,960 --> 00:11:22,530 Дозволете ми да кликнете View извор до одговор. 189 00:11:22,530 --> 00:11:24,590 Она што е интересно овде е неколку работи. 190 00:11:24,590 --> 00:11:27,580 1, се вративме статус код 200. 191 00:11:27,580 --> 00:11:29,840 Ние никогаш не го гледаме овој статус кодот, бидејќи тоа значи дека сите е добро. 192 00:11:29,840 --> 00:11:32,920 Тоа значи буквално во ред за разлика од нешто друго. 193 00:11:32,920 --> 00:11:36,380 Што е бројот понекогаш да се види дека е лошо? [Студент] 404. 194 00:11:36,380 --> 00:11:39,860 404, датотеката не е пронајдена, 403 може да се сопнување врз веќе, 195 00:11:39,860 --> 00:11:43,660 што е забрането, што значи дека заборавив да chmod нешто, најверојатно. 196 00:11:43,660 --> 00:11:45,190 И има еден куп други. 197 00:11:45,190 --> 00:11:47,760 >> Долу тука, ова е малку луд. 198 00:11:47,760 --> 00:11:52,340 Јас навистина само напишав оваа датотека неколку минути од вметнување во gedit. 199 00:11:52,340 --> 00:11:57,100 Зошто оваа страница истекува во 1981 година пред навистина беше интернет? 200 00:11:58,010 --> 00:12:00,730 Што се случува таму? 201 00:12:00,730 --> 00:12:04,390 >> [Нечујни студент одговор] На времето печат. Но, зошто? 202 00:12:06,110 --> 00:12:09,120 Тоа е донекаде произволна, но тоа е всушност корисно. 203 00:12:09,120 --> 00:12:15,500 Што ова кажува за мојот интернет пребарувач е ова датотеката PHP сте само бара веќе истечен. 204 00:12:15,500 --> 00:12:18,580 Всушност, тоа истечен пред 30 години. 205 00:12:18,580 --> 00:12:20,260 Но, она што не значи дека навистина? 206 00:12:20,260 --> 00:12:22,500 Тоа само значи дека следниот пат кога корисникот ќе ја посети оваа страница, 207 00:12:22,500 --> 00:12:25,540 дали со претовар или внесување на URL во полето за адреса, 208 00:12:25,540 --> 00:12:28,010 бидете сигурни дека ќе одам да го викнам нова копија од неа. 209 00:12:28,010 --> 00:12:30,840 Ова е вид на пример кеш разнебитувањето, 210 00:12:30,840 --> 00:12:33,790 глупав збор кој едноставно значи се обидува да ги обесхрабри прелистувачи 211 00:12:33,790 --> 00:12:37,260 од всушност кеширање HTML дека е пратена од серверот 212 00:12:37,260 --> 00:12:41,490 така што не случајно хит Вчитај а потоа да видиме истата верзија на датотеката. 213 00:12:41,490 --> 00:12:43,730 Ти всушност сакате серверот да испрати нова копија. 214 00:12:43,730 --> 00:12:47,440 Значи фактот дека тоа е 1981 само значи дека тоа е она што уредот е изборот 215 00:12:47,440 --> 00:12:50,280 како произволен датум во минатото. 216 00:12:50,280 --> 00:12:53,380 Но, вистинскиот сочни линија е сега ова. 217 00:12:53,380 --> 00:12:57,550 Дури и пред 50 најверојатно нејасно запознаени со колачиња. 218 00:12:57,550 --> 00:13:01,820 Почнувајќи од сега, особено меѓу оние кои се помалку удобно или меѓу нив, 219 00:13:01,820 --> 00:13:04,120 Што е колаче во вашето разбирање токму сега 220 00:13:04,120 --> 00:13:06,980 иако ние сме за да се направи вашето разбирање повеќе технички? 221 00:13:08,150 --> 00:13:10,070 Што е колаче? Да. 222 00:13:10,070 --> 00:13:13,890 [Студент] Информации за корисникот, како ако тие го напишале своето корисничко име или нешто. 223 00:13:13,890 --> 00:13:17,370 >> Добро. Тоа е информација за корисникот, без разлика дали тие го напишале во своите корисничко име веќе. 224 00:13:17,370 --> 00:13:21,190 Колачињата се начин при сервери може да се сети нешто за корисникот. 225 00:13:21,190 --> 00:13:25,810 И она што колаче навистина е е текстуална датотека или некои низа од бајти 226 00:13:25,810 --> 00:13:28,340 која е поставена од страна на серверот во внатрешноста на вашиот прелистувач, 227 00:13:28,340 --> 00:13:31,960 и во внатрешноста на оваа датотека или кај оние бајти е некој вид на идентификатор. 228 00:13:31,960 --> 00:13:35,640 Можеби тоа е буквално вашето корисничко име, но почесто тоа е нешто повеќе криптичната изглед 229 00:13:35,640 --> 00:13:43,700 вака нешто тука - bo8dal3ct и така натаму - ова навистина голема алфанумерички стринг 230 00:13:43,700 --> 00:13:47,050 тоа е навистина само значи да се биде единствен идентификатор за вас. 231 00:13:47,050 --> 00:13:49,790 Или можете да мислам на тоа како вид на виртуелна рака печат. 232 00:13:49,790 --> 00:13:53,020 Ако одите на клуб или забавен парк, да се потсетиме дека сте вистински платената 233 00:13:53,020 --> 00:13:55,850 и помина, тие се стави малку црвена налепница на вашата рака на некој вид, 234 00:13:55,850 --> 00:13:59,270 и што потсетува луѓето на шалтерот дека веќе сте платени 235 00:13:59,270 --> 00:14:01,340 и може да доаѓаат и си одат како што сакаш. 236 00:14:01,340 --> 00:14:04,250 Колачињата се малку слични во духот со тоа. 237 00:14:04,250 --> 00:14:08,070 Прв пат ја посетив оваа веб страна, како што скоро сторив по расчистување мојот кеш, 238 00:14:08,070 --> 00:14:11,620 на веб серверот, уредот во овој случај, се стави печат на мојата рака 239 00:14:11,620 --> 00:14:15,030 чие име е PHPSESSID, сесија ИД, 240 00:14:15,030 --> 00:14:18,260 чија вредност е ова навистина долго алфанумерички стринг. 241 00:14:18,260 --> 00:14:22,470 >> Значи тоа е сега вид на украсена на мојата рака, така што следниот пат кога ќе се погоди повторно 242 00:14:22,470 --> 00:14:25,230 или рачно посетите оваа адреса во прелистувачот, 243 00:14:25,230 --> 00:14:29,230 мојот интернет пребарувач по дефиниција на HTTP се случува да се претстават рака печат 244 00:14:29,230 --> 00:14:31,940 повторно и повторно и повторно. 245 00:14:31,940 --> 00:14:34,550 Значи иако на серверот не мора да знаете кој сум јас, 246 00:14:34,550 --> 00:14:39,610 тие барем знам дека јас сум ист корисник или барем, поточно, истиот прелистувач. 247 00:14:39,610 --> 00:14:45,660 И така ова е крајот како СЕДНИЦА superglobal се спроведува. 248 00:14:45,660 --> 00:14:51,200 На серверот нема идеја кој сте кога ќе враќате веб-сајт за втор или трет пат 249 00:14:51,200 --> 00:14:53,410 ако ви презентираме оваа страна печат. 250 00:14:53,410 --> 00:14:55,530 И штом ќе го претстави дека рака печат, 251 00:14:55,530 --> 00:14:59,370 на веб серверот суштина оди во малку база на сопствените 252 00:14:59,370 --> 00:15:06,040 и проверки, добро, имам само видено рака печат на корисникот bo8dal3ct и така натаму. 253 00:15:06,040 --> 00:15:09,850 Дозволете ми да видите какви информации на програмерот има складирано 254 00:15:09,850 --> 00:15:12,380 внатрешноста на superglobal за овој корисник, 255 00:15:12,380 --> 00:15:17,000 и тогаш дозволете ми да бидете сигурни дека тие податоци е повторно во внатрешноста на сесијата superglobal 256 00:15:17,000 --> 00:15:19,830 така што на програмерот може да се ре-пристап до тие податоци 257 00:15:19,830 --> 00:15:23,360 дури и ако тоа беше во собата неколку минути или часови. 258 00:15:23,360 --> 00:15:26,150 Значи со други зборови, колачи, која доби лоша рап за некое време 259 00:15:26,150 --> 00:15:29,990 поради несигурноста во пребарувачи и тие навистина може да се крши нашата приватност и сето ова, 260 00:15:29,990 --> 00:15:31,900 тие всушност имаат голема корист, бидејќи без нив 261 00:15:31,900 --> 00:15:36,110 вие постојано ќе биде да влезете во секоја страница Фејсбук ќе ја посетите 262 00:15:36,110 --> 00:15:40,680 или секој Gmail мејл ќе прочитате ако на прелистувачот не имаат на некој начин на помнење 263 00:15:40,680 --> 00:15:43,320 дека веќе сте најавени. 264 00:15:43,320 --> 00:15:46,640 >> Така на овој начин cookies се испраќаат назад и напред низ жица. 265 00:15:46,640 --> 00:15:52,470 Друга љубопитност за колачиња, особено тука, е дека ова е целосно во cleartext. 266 00:15:52,470 --> 00:15:54,930 Нема енкрипција случува овде она, 267 00:15:54,930 --> 00:15:57,240 и навистина сум користејќи HTTP во моментот. 268 00:15:57,240 --> 00:16:00,890 Еден од нашите омилени моменти во CS50, кој сега е пред 2 години, 269 00:16:00,890 --> 00:16:04,750 беше околу времето алатка наречена Firesheep излезе. 270 00:16:04,750 --> 00:16:08,320 Ова беше слободна парче софтвер кој беше направен од страна на безбедносните истражувач 271 00:16:08,320 --> 00:16:13,250 како повик за будење за заедницата да се каже колку atrociously спроведува 272 00:16:13,250 --> 00:16:17,900 одредени автентикација механизми на интернет беа. 273 00:16:17,900 --> 00:16:22,880 Па за некое време, Фејсбук е речиси целосно преку HTTP, без https. 274 00:16:22,880 --> 00:16:25,640 Па дури и ако немаат идеја како крипто работи, s е безбедна 275 00:16:25,640 --> 00:16:27,950 па тоа значи дека има барем некои енкрипциски вклучени. 276 00:16:27,950 --> 00:16:30,610 Фејсбук се користи за криптирање на кориснички имиња и лозинки, 277 00:16:30,610 --> 00:16:33,560 но веднаш штом ќе гледаше во вашиот боцка или вашите пораки или вашиот вести храна, 278 00:16:33,560 --> 00:16:35,360 сето тоа беше енкриптирани. 279 00:16:35,360 --> 00:16:37,870 Така беше Gmail додека само една година или 2 пред. 280 00:16:37,870 --> 00:16:41,100 Во секое време ќе ме, да, тие се користат безбедна енкрипција, 281 00:16:41,100 --> 00:16:44,300 но потоа тие не. И зошто тоа може да биде? 282 00:16:44,300 --> 00:16:49,210 Зошто да не само користење криптографијата сите на време во употреба случаи како овој? 283 00:16:49,210 --> 00:16:53,700 Што е тоа? Мислам дека слушнав нешто. [Студент] брзина. 284 00:16:53,700 --> 00:16:56,250 Брзина, нели? Постојат начини околу ова. 285 00:16:56,250 --> 00:16:59,610 Но ако сте само вид на се размислува за тоа логично, ако криптирате нешто, 286 00:16:59,610 --> 00:17:01,820 што треба да направите барем малку повеќе работа. 287 00:17:01,820 --> 00:17:05,460 Во pset 2 кога ќе спроведува Цезар или Vigenere или дури Crack, 288 00:17:05,460 --> 00:17:07,760 само печати низа е релативно лесно. 289 00:17:07,760 --> 00:17:12,040 Енкрипција, а потоа печати низа минимално бара малку повеќе работа. 290 00:17:12,040 --> 00:17:14,520 >>  За супер популарни сајтови како Google и Facebook, 291 00:17:14,520 --> 00:17:18,839 ако треба да направат многу повеќе работа за секој корисник за секоја веб-страница тие посетуваат, 292 00:17:18,839 --> 00:17:20,520 дека само се повеќе процесорско време. 293 00:17:20,520 --> 00:17:22,920 И ако ви треба повеќе процесорот време, можеби ќе треба повеќе сервери, 294 00:17:22,920 --> 00:17:24,270 што значи дека можеби ќе треба повеќе пари. 295 00:17:24,270 --> 00:17:27,579 И така за многу години овој само навистина не беше најдобрата пракса. 296 00:17:27,579 --> 00:17:31,440 Луѓето ќе ги користат SSL енкрипција само кога тие се потребни за да. 297 00:17:31,440 --> 00:17:34,960 Но, се покажа и како овој човек со Firesheep направи супер јасен, 298 00:17:34,960 --> 00:17:37,920 кога вие момци кои во моментов се на Фејсбук во моментов - 299 00:17:37,920 --> 00:17:39,880 Од љубопитност, да видам дали ќе fess нагоре. 300 00:17:39,880 --> 00:17:42,620 Ако сте на Фејсбук во моментов во некои табот, дури и ако тоа не е foregrounded, 301 00:17:42,620 --> 00:17:46,610 е вашата рачно HTTP или HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Повеќе студенти] С С? [Смеа] 303 00:17:50,560 --> 00:17:55,510 Во ред. Секое HTTP? Само 1? Во ред. 304 00:17:55,510 --> 00:17:58,940 Така што сите од нас може да се пробие Фејсбук предвид дека момчето е во право сега. 305 00:17:58,940 --> 00:18:04,100 За најголем дел ова стана вклучен по дифолт, барем во некои веб-сајтови. 306 00:18:04,100 --> 00:18:08,120 И скратам приказната, ако вашиот веб сообраќај не е шифрирана, 307 00:18:08,120 --> 00:18:12,960 не само што го HTML оди напред и назад низ WiFis енкриптирани, 308 00:18:12,960 --> 00:18:16,760 па ги правите нештата како колачиња оди напред и назад низ воздухот 309 00:18:16,760 --> 00:18:18,940 без каква било форма на енкрипција. 310 00:18:18,940 --> 00:18:23,540 Значи, ако имате само малку програмирање такт или малку Googling вештини 311 00:18:23,540 --> 00:18:27,410 да се најде слободен софтвер кој го прави ова, сите што треба да направите е да седиме во Старбакс 312 00:18:27,410 --> 00:18:30,680 или седат во еден аеродром каде што има обично енкриптирани WiFi 313 00:18:30,680 --> 00:18:36,070 и само да се види за клучни зборови, како set-Cookie: или PHPSESSID 314 00:18:36,070 --> 00:18:39,300 затоа што ако имате технички такт само да се види на WiFi 315 00:18:39,300 --> 00:18:43,010 за сите битови што тече низ воздухот за овој модел, 316 00:18:43,010 --> 00:18:50,840 тогаш може да се каже дека PHPSESSID дечко се случува да биде bo8dal и така натаму. 317 00:18:50,840 --> 00:18:53,890 А потоа повторно ако сте доволно технички такт или имаат право алатка, 318 00:18:53,890 --> 00:18:58,890 можете да потоа само конфигурирате вашиот сопствен интернет пребарувач да започне презентирање дека рака печат 319 00:18:58,890 --> 00:19:05,030 на Facebook.com, и Фејсбук е само ќе се претпостави дека сте тој тип 320 00:19:05,030 --> 00:19:09,880 бидејќи сите знаат дека не е кој сте, но дека имате овој уникатен идентификатор. 321 00:19:09,880 --> 00:19:14,650 Значи, ако украде дека единствен идентификатор и ја презентира на веб сервер како свој, 322 00:19:14,650 --> 00:19:16,860 тие се само ќе ви покаже Новости на тоа лице 323 00:19:16,860 --> 00:19:18,980 на тоа лице или пораки или боцка. 324 00:19:18,980 --> 00:19:23,190 >> И јас би Google сега како да ја активирате HTTPS на Facebook за можеби. 325 00:19:23,190 --> 00:19:25,150 Но тоа навистина е толку едноставно како што. 326 00:19:25,150 --> 00:19:27,660 И така Фејсбук и Google и како го добиле навистина добар во тоа, 327 00:19:27,660 --> 00:19:31,870 но да се внимава од сè повеќе и повеќе за сите веб-сајтови кои ги посетувате дека не користи HTTP 328 00:19:31,870 --> 00:19:35,020 и има некој вид на чувствителни информации на нив, 329 00:19:35,020 --> 00:19:37,490 дали тоа е финансиски или лични или слично. 330 00:19:37,490 --> 00:19:43,180 Ако тие не го користите ова, сосема веројатно колачиња како ова може да биде многу лесно украдена 331 00:19:43,180 --> 00:19:46,270 а потоа фалсификувани, а тоа е токму она Firesheep не. 332 00:19:46,270 --> 00:19:48,250 Вие не треба да се биде програмер. 333 00:19:48,250 --> 00:19:51,680 Сите ти мораше да ја направам е да имаат интернет конекција, симнете оваа бесплатна алатка, 334 00:19:51,680 --> 00:19:56,490 и што ќе направите е да се најавите и тогаш тоа ќе ви покаже Фејсбук имиња 335 00:19:56,490 --> 00:20:00,170 на сите во Сандерс, во овој конкретен демонстрации, околу вас 336 00:20:00,170 --> 00:20:03,260 и сите ќе мораше да го направи беше кликнете на нивното име и софтверот автоматски процес 337 00:20:03,260 --> 00:20:05,970 на душкаат дека куки, се презентира на Фејсбук како свој, 338 00:20:05,970 --> 00:20:07,990 и Voila, ти си најавени 339 00:20:07,990 --> 00:20:11,190 Значи ова е уште една од оние "не го направите тоа" официјално. 340 00:20:11,190 --> 00:20:14,660 Ако имате свој домашна мрежа и дека сакате да нескопосник, со сите средства, 341 00:20:14,660 --> 00:20:17,530 но сфати тоа не премине линија на еден универзитет животната средина. 342 00:20:17,530 --> 00:20:20,030 >> Но цел тука е навистина да се нагласи не како да направите тоа 343 00:20:20,030 --> 00:20:22,320 но како да се брани против овие видови на нештата. 344 00:20:22,320 --> 00:20:26,180 И тривијална решение тука, иако тоа само по себе е недостатоци, 345 00:20:26,180 --> 00:20:31,360 е навистина да се намали употребата на било кој веб-сајтови кои не се користење на HTTPS постојано. 346 00:20:31,360 --> 00:20:34,520 Значи сајтови како Фејсбук и Google се повеќе имаат обележувачи 347 00:20:34,520 --> 00:20:36,200 каде што може да се одлучат за овој вид на работа, 348 00:20:36,200 --> 00:20:40,000 и банки имале со години за слични причини. 349 00:20:40,000 --> 00:20:43,580 Па само малку страв фактор ако можеме. Но, тоа е тоа во мало. 350 00:20:43,580 --> 00:20:46,420 Тоа е како на серверот се сеќава кој си. 351 00:20:46,420 --> 00:20:50,760 И штом тие можат да се сеќавам на кој сте, тие можат да се сеќавам на ништо за вас 352 00:20:50,760 --> 00:20:56,140 дека на програмерот има складирано во внатрешноста на оваа специјална superglobal нарекува $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 И за pset 7 ние го користите тривијално само да се сеќавам на цел број, 354 00:20:59,750 --> 00:21:02,260 имено уникатен ID на корисникот кој сте најавени, 355 00:21:02,260 --> 00:21:05,880 така што ние знаеме тие сте биле таму пред. 356 00:21:05,880 --> 00:21:12,450 Било какви прашања, тогаш на седници или колачиња или слично? 357 00:21:12,450 --> 00:21:15,130 Firesheep не функционира, како и повеќе, 358 00:21:15,130 --> 00:21:18,310 и треба да се стави вашиот компјутер во посебен хаотичен режим 359 00:21:18,310 --> 00:21:20,700 па ти си, всушност, слушање за сообраќај покрај себе. 360 00:21:20,700 --> 00:21:23,940 Значи, ако сте моментално симнува Firesheep, сфати тоа не е толку лесно 361 00:21:23,940 --> 00:21:26,850 како што некогаш беше да се демонстрира. 362 00:21:26,850 --> 00:21:29,070 Во ред. И не го прават тоа во Сандерс. Направете го тоа дома. 363 00:21:29,070 --> 00:21:30,890 Бази на податоци. 364 00:21:30,890 --> 00:21:33,580 Една од работите што го правевме во pset 7 многу намерно 365 00:21:33,580 --> 00:21:37,780 е ние да ви даде примерок база на податоци маса за корисници кои има неколку корисник ИД, 366 00:21:37,780 --> 00:21:41,020 некои кориснички имиња, а некои криптирани лозинки него. 367 00:21:41,020 --> 00:21:44,520 И како што ќе видиме, ако веќе не сте, ви се случува да мора да се промени на табелата малку. 368 00:21:44,520 --> 00:21:47,710 Сте ќе треба да додадете некои кеш за секој од корисниците во таа табела, 369 00:21:47,710 --> 00:21:51,130 и ви се случува да треба да додадете уште историја маса, портфолија маса, 370 00:21:51,130 --> 00:21:53,310 или можеби го нарекуваат нешто друго. 371 00:21:53,310 --> 00:21:56,740 Но во однос на размислување за тоа како да го направите ова, ајде да се отвори оваа алатка 372 00:21:56,740 --> 00:22:00,570 кој се користи во петокот, но ако непознат, уредот доаѓа со алатка 373 00:22:00,570 --> 00:22:04,680 наречен phpMyAdmin која е случајно напишана во PHP, 374 00:22:04,680 --> 00:22:07,950 но неговата цел во животот, откако ќе се најавите тука како jharvard со црвено, 375 00:22:07,950 --> 00:22:15,160 е да ми даде лесен начин на гледање и менување на мојата база на податоци. 376 00:22:15,160 --> 00:22:18,040 >> База на податоци која јас се кандидирам на апаратот се нарекува MySQL. 377 00:22:18,040 --> 00:22:23,420 Ова е многу популарна, а тоа е слободен софтвер со отворен код база на податоци која е прекрасно лесен за користење, 378 00:22:23,420 --> 00:22:25,620 особено со предниот завршува вака. 379 00:22:25,620 --> 00:22:29,350 Што е ова алатка ви овозможува да го направам, на пример, е ѕиркаат наоколу маси. 380 00:22:29,350 --> 00:22:30,890 Дозволете ми да оди напред и да го направите тоа. 381 00:22:30,890 --> 00:22:36,580 Во петокот ние направивме табела наречена студентите кои беше супер едноставна. 382 00:22:36,580 --> 00:22:41,680 Тоа беше колоните 3 - ID, назив, и е-мејл - и јас рачно вметнува неколку редови 383 00:22:41,680 --> 00:22:44,420 како Давид и Мајк во овој конкретен пример. 384 00:22:44,420 --> 00:22:47,290 Да го земеме овој малку подалеку, и да претпоставиме дека сакаме да се сетам на повеќе 385 00:22:47,290 --> 00:22:49,660 од само име и е-мејл за корисникот. 386 00:22:49,660 --> 00:22:53,090 Дозволете ми да кликнете Структура се тука на врвот. 387 00:22:53,090 --> 00:22:55,440 И повторно, pset ќе шета низ потребните чекори тука, 388 00:22:55,440 --> 00:22:58,150 па не грижете се ако некои од тоа е малку брзо. 389 00:22:58,150 --> 00:22:59,690 Потоа јас ќе одам да кликнете овде. 390 00:22:59,690 --> 00:23:02,270 Одам да додадете некои број на колони по e-mail 391 00:23:02,270 --> 00:23:04,130 бидејќи сакам да додадете нешто како куќа. 392 00:23:04,130 --> 00:23:06,640 Јас заборавив да снима куќата на студентот. 393 00:23:06,640 --> 00:23:11,400 Дозволете ми да кликнете на Оди, и сега имаме оваа форма која за жал е малку широк од лево кон десно, 394 00:23:11,400 --> 00:23:13,710 но јас ќе одам да се јавите на името на ова поле куќа, 395 00:23:13,710 --> 00:23:16,050 и тогаш типот јас сега треба да одберете. 396 00:23:16,050 --> 00:23:18,870 Значи, да има краток разговор за различни видови во MySQL 397 00:23:18,870 --> 00:23:24,590 затоа додека PHP е слабо внесе и вид на игра брзо и лежерно со видови, 398 00:23:24,590 --> 00:23:29,430 во базата на податоци, особено тоа е супер важно да всушност употреба пишување за да ги искористат 399 00:23:29,430 --> 00:23:33,260 бидејќи една од работите MySQL и други бази на податоци мотори може да направи за вас 400 00:23:33,260 --> 00:23:37,910 се осигура дека вие не стави лажни податоци во базата на податоци. 401 00:23:37,910 --> 00:23:41,850 Ова е вид на бесплатен грешка проверка на располагање на вас. 402 00:23:41,850 --> 00:23:46,250 >> За куќа ние очигледно не сакаат тоа да биде цел број, кој е 32-битна вредност во MySQL. 403 00:23:46,250 --> 00:23:49,810 Ние не зборуваме накратко во петокот околу varchar, која се залага за променлива должина знак. 404 00:23:49,810 --> 00:23:54,720 Што е ова? Ова ви овозможува да наведете дека сакате ова да биде низа на некој вид. 405 00:23:54,720 --> 00:23:56,840 Вие навистина не знаеме однапред колку долго е, 406 00:23:56,840 --> 00:24:00,100 па ние произволно ќе кажам куќа името може да биде 255 карактери, 407 00:24:00,100 --> 00:24:04,190 но вие би можеле да одат со 32, 64 - било кој број навистина. 408 00:24:04,190 --> 00:24:10,700 Но, предноста на користење на varchar над областа наречена знак е она? 409 00:24:10,700 --> 00:24:15,110 Само интуитивно ако дојдете тука, забележително е знак и има varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar е променлива должина знак; знак е фиксна должина знак. 411 00:24:19,520 --> 00:24:24,730 Значи само врз основа на таа дефиниција, она што е предност или недостаток на секоја од овие? 412 00:24:24,730 --> 00:24:30,490 Со други зборови, кој се грижи за разлика, или зошто треба да се грижите? 413 00:24:31,660 --> 00:24:35,750 >> Да. [Студент] varchar има повеќе флексибилност, но зазема повеќе меморија. 414 00:24:35,750 --> 00:24:40,730 Добро. Varchar зазема повеќе - Ајде да видиме. Не сум сигурен ако сум слушнал тоа право. 415 00:24:40,730 --> 00:24:42,360 Може да се каже дека уште еднаш? 416 00:24:42,360 --> 00:24:45,850 [Студент] реков varchar веројатно има повеќе флексибилност, но тоа трае повеќе меморија. 417 00:24:45,850 --> 00:24:51,170 Интересно. Во ред. Varchar веројатно ви дава повеќе флексибилност, но зазема повеќе меморија. 418 00:24:51,170 --> 00:24:53,220 Таа не е задолжително точно. 419 00:24:53,220 --> 00:24:56,290 Тоа зависи од контекстот, но, ајде да се вратам на тоа. 420 00:24:56,290 --> 00:25:03,230 >> [Нечујни студент одговор] Токму така. 421 00:25:03,230 --> 00:25:06,900 Тоа е всушност случај знак обично ќе го користи повеќе меморија 422 00:25:06,900 --> 00:25:10,950 бидејќи знак, како во C, е како стринг, тоа е низа од карактери. 423 00:25:10,950 --> 00:25:13,690 Значи, ако се каже знак поле со должина од 255, 424 00:25:13,690 --> 00:25:16,910 базата на податоци е буквално ќе ви даде 255 карактери. 425 00:25:16,910 --> 00:25:22,290 И ако куќата завршува се Mather и 6 карактери, 426 00:25:22,290 --> 00:25:25,090 ти си трошат повеќе од 200 карактери. 427 00:25:25,090 --> 00:25:29,640 >> Па varchar ефикасно користи само како многу знаци што е потребно 428 00:25:29,640 --> 00:25:31,590 до максимален износ. 429 00:25:31,590 --> 00:25:35,470 Но цената што ја плаќате е, всушност, перформанси, потенцијално. 430 00:25:35,470 --> 00:25:39,740 Ако знаете однапред дека сите ваши жици се случува да бидат 8 карактери - 431 00:25:39,740 --> 00:25:43,090 На пример, да претпоставиме дека ви се потребни лозинки со должина од 8 - 432 00:25:43,090 --> 00:25:47,350 главата на користење на знак област по повод, иако не често, 433 00:25:47,350 --> 00:25:51,100 е да се одреди фиксна должина за нешто како лозинка 434 00:25:51,100 --> 00:25:53,300 бидејќи сега базата на податоци може да биде дури и попаметни. 435 00:25:53,300 --> 00:25:58,160 Ако таа знае дека секој знак поле, секој стринг во колона е иста должина, 436 00:25:58,160 --> 00:26:00,780 ќе се вратам функција на случаен пристап. 437 00:26:00,780 --> 00:26:05,110 Можете да скокаат околу помеѓу различните знак полиња во вашата база на податоци маса 438 00:26:05,110 --> 00:26:07,940 бидејќи мислам на базата на податоци како редови и колони. 439 00:26:07,940 --> 00:26:11,670 Значи, ако секој еден од стрингови е иста должина, 440 00:26:11,670 --> 00:26:17,820 знаете дека првиот е во бајт 0, следниот е во бајт 8 441 00:26:17,820 --> 00:26:20,240 а потоа 16, а потоа 24 и така натаму. 442 00:26:20,240 --> 00:26:24,500 Значи, ако сите стрингови се со иста должина, можете да скокнете низ многу поефикасно. 443 00:26:24,500 --> 00:26:26,710 Така што може да биде од корист во поглед на перформанси, 444 00:26:26,710 --> 00:26:29,420 но обично немате луксузот на знаејќи однапред, 445 00:26:29,420 --> 00:26:32,170 па varchar е начин да се оди. 446 00:26:32,170 --> 00:26:36,030 Еве уште еден детаљ дека дури Фејсбук налетав на крајот. 447 00:26:36,030 --> 00:26:39,670 Ints се големи, а ние вид од нив користат стандардно секое време сакаме број, 448 00:26:39,670 --> 00:26:41,750 но тоа е само 32 бита. 449 00:26:41,750 --> 00:26:46,210 >> И иако Фејсбук сосема не имаат 4 милијарди корисници сега, 450 00:26:46,210 --> 00:26:48,680 таму е дефинитивно некои луѓе таму со повеќе сметки 451 00:26:48,680 --> 00:26:50,960 или сметки, кои се отворени, а потоа затворен, 452 00:26:50,960 --> 00:26:55,130 и така Фејсбук себе верувам дека пред неколку години мораше да се транзиција од int 453 00:26:55,130 --> 00:27:00,010 да, како што е во потполност се нарекува, BIGINT, што е само 64 бита, наместо. 454 00:27:00,010 --> 00:27:02,230 Значи ова е премногу е дизајнерска одлука. 455 00:27:02,230 --> 00:27:06,570 Ќе биде неверојатно среќни ако твојот последен проект се врти стартување, 456 00:27:06,570 --> 00:27:10,010 има 4 милијарди и 1 корисници, или дава да потрае, 457 00:27:10,010 --> 00:27:13,200 во кој случај со користење ints може да биде малку избрзан. 458 00:27:13,200 --> 00:27:16,230 Но, во реалноста, вашите корисници табелата е веројатно во ред со ints. 459 00:27:16,230 --> 00:27:19,340 Но, за нешто како pset 7, како и вашата историја маса, 460 00:27:19,340 --> 00:27:23,700 може да имаат илјадници, милиони корисници, ако прерасне во etrade.com. 461 00:27:23,700 --> 00:27:26,020 Значи додека вие не би можеле да имаат повеќе од 4 милијарди корисници, 462 00:27:26,020 --> 00:27:30,070 оние корисници, имате може да има повеќе од 4 милијарди трансакции со текот на времето - 463 00:27:30,070 --> 00:27:33,200 купува и продава и работите во нивната историја. 464 00:27:33,200 --> 00:27:38,090 Значи, ако правиш предвиди - повторно, овие се добри проблеми да имаат, ако имате ова многу податоци - 465 00:27:38,090 --> 00:27:40,920 ако не се предвиди податоците надминува големината на int, 466 00:27:40,920 --> 00:27:47,740 случува со нешто како BIGINT е правец често не е доволно усвоени од страна на дизајнерите 467 00:27:47,740 --> 00:27:49,710 затоа што луѓето фигура која нема да биде проблем, 468 00:27:49,710 --> 00:27:51,930 но тоа е тоа лесно да се избере нешто поголемо од тоа. 469 00:27:51,930 --> 00:27:55,380 Децимална ние користиме во 7 pset, кој се одредува фиксно прецизност 470 00:27:55,380 --> 00:27:59,840 па можете да се избегне прашања, вклучувајќи плови и двојки и reals и слично. 471 00:27:59,840 --> 00:28:02,440 >> А потоа, тука е некои други области тука. Ќе бран нашите раце на нив до одреден степен. 472 00:28:02,440 --> 00:28:07,270 Но, датуми, времиња сите имаат пропишаниот формат во MySQL, 473 00:28:07,270 --> 00:28:10,830 и предноста на чување датуми како датуми и не varchars 474 00:28:10,830 --> 00:28:15,730 значи дека базата на податоци, всушност може да ги реформатирате во различни формати, 475 00:28:15,730 --> 00:28:18,800 дали формат САД или европските формат или слично - но што сакате - 476 00:28:18,800 --> 00:28:22,700 многу поефикасно отколку ако тоа се само некои генерички varchar. 477 00:28:22,700 --> 00:28:25,150 А потоа, тука е некои други бинарни, VARBINARY, грутки. 478 00:28:25,150 --> 00:28:28,580 Овие се бинарни големи објекти, и вие исто така може да се сместат бинарни податоци 479 00:28:28,580 --> 00:28:30,750 како и геометриски податоци во база на податоци. 480 00:28:30,750 --> 00:28:34,350 Но, за нас ние обично ќе се грижи за ints и varchars и слично. 481 00:28:34,350 --> 00:28:36,230 Да завршам овој пример со куќата. 482 00:28:36,230 --> 00:28:40,030 Куќа Одам да произволно велат дека ќе биде 255 карактери. 483 00:28:40,030 --> 00:28:42,850 Потоа Вообичаената вредност би можеле да го направите тоа. 484 00:28:42,850 --> 00:28:47,440 Ние би можеле стандардно стави сите во Mather куќа, на пример. 485 00:28:47,440 --> 00:28:49,710 Тоа е како ние би можеле да се каже дека базата на податоци 486 00:28:49,710 --> 00:28:52,460 треба да обезбедат дека некој секогаш има вредност. Но јас ќе го оставиме тоа да биде. 487 00:28:52,460 --> 00:28:55,270 Всушност, за луѓето кои живеат надвор од кампусот, а не во куќа, 488 00:28:55,270 --> 00:28:59,590 можеби и јас всушност сакаат да се каже дека стандардната вредност за куќа е NULL, 489 00:28:59,590 --> 00:29:04,890 и тогаш треба да се провери ова поле и да се каже база на податоци тоа е во ред ако куќата на корисникот е NULL. 490 00:29:04,890 --> 00:29:07,270 >> Повторно, ова е уште еден одбранбен механизам може да се стави во место 491 00:29:07,270 --> 00:29:10,590 па дури и не треба да го ставите во вашиот PHP код е задолжително. 492 00:29:10,590 --> 00:29:14,630 Базата на податоци ќе се осигура дека работите се или не се NULL. 493 00:29:14,630 --> 00:29:17,310 А потоа на крај, атрибути. 494 00:29:17,310 --> 00:29:18,920 Ниту еден од овие се навистина релевантни. 495 00:29:18,920 --> 00:29:22,880 Бинарни, непотпишана - ниту еден од тие се релевантни за varchar. 496 00:29:22,880 --> 00:29:24,220 Индекс. 497 00:29:24,220 --> 00:29:27,320 Дали некој знае или се сеќавам или имаат претпоставка за тоа што индексот е 498 00:29:27,320 --> 00:29:29,510 за нешто како куќа? 499 00:29:29,510 --> 00:29:35,240 Тоа исто така е всушност важен и релативно лесно дизајн одлука. 500 00:29:35,240 --> 00:29:39,200 За оние кои се уште не го видел, во петокот ние разговаравме кратко за основно клучеви. 501 00:29:39,200 --> 00:29:43,240 Во базата на податоци маса, примарен клуч е поле или колона 502 00:29:43,240 --> 00:29:46,270 кои еднозначно ги идентификува редови во табелата. 503 00:29:46,270 --> 00:29:49,150 Па во тековната маса имаме лични карти, имаме имиња и пораки. 504 00:29:49,150 --> 00:29:52,050 Која од овие е најдобриот кандидат да биде примарен клуч, 505 00:29:52,050 --> 00:29:55,810 чија улога е да се идентификуваат уникатно редови? 506 00:29:55,810 --> 00:29:57,530 Веројатно проект. 507 00:29:57,530 --> 00:29:59,930 Веројатно, ние исто така може да го користите она што иако? 508 00:29:59,930 --> 00:30:02,860 Можеби можете да користите е-мејл затоа што во теорија тоа е единствен 509 00:30:02,860 --> 00:30:05,380 доколку луѓето се делат мејл сметки. 510 00:30:05,380 --> 00:30:09,980 Но, реалноста е дека ако сте со користење на нумерички проект како 1234, 511 00:30:09,980 --> 00:30:14,170 тоа е само 32 бита, додека е-маил адреса може да биде толку многу бајти или ова многу бајти. 512 00:30:14,170 --> 00:30:16,610 Па во смисла на ефикасност за единствени идентификатори, 513 00:30:16,610 --> 00:30:19,270 тоа се стреми да биде добра практика само да се користи int 514 00:30:19,270 --> 00:30:23,090 дури и ако имате некои стринг кандидат што веројатно може да се користи. 515 00:30:23,090 --> 00:30:26,760 >> За нешто како куќата, ова не треба да биде примарен клуч 516 00:30:26,760 --> 00:30:30,770 затоа што тогаш само 1 човек може да живее во Mather и 1 лице во Currier и слично. 517 00:30:30,770 --> 00:30:32,790 Слично на тоа, ова не треба да биде уникатна. 518 00:30:32,790 --> 00:30:37,830 Разликата помеѓу основното и уникатен е тоа што во случај на нашите сегашни маса, 519 00:30:37,830 --> 00:30:42,620 ID ќе биде примарна но е-мејл не е основно за причината ние едноставно се споменати - 520 00:30:42,620 --> 00:30:44,740 изведба - но сепак треба да биде уникатен. 521 00:30:44,740 --> 00:30:47,200 Па се уште може да ја изврши уникатност без да се прави барањето 522 00:30:47,200 --> 00:30:49,520 дека тоа е супер важно примарна област. 523 00:30:49,520 --> 00:30:52,610 Но ова е доста корисни: Индекс. 524 00:30:52,610 --> 00:30:56,180 Ако знаете однапред за вашите конечниот проект за pset 7, или во целина, 525 00:30:56,180 --> 00:30:59,480 дека на ова поле куќа е ќе биде нешто што се бара на многу 526 00:30:59,480 --> 00:31:01,910 користење на одберете клучен збор или нешто друго, 527 00:31:01,910 --> 00:31:05,180 тогаш превентивно да кажам базата на податоци да работат својата магија 528 00:31:05,180 --> 00:31:10,510 и бидете сигурни дека тоа создава во меморијата било фенси структури на податоци потребни 529 00:31:10,510 --> 00:31:13,770 да се забрза пребарувања врз основа на куќа. 530 00:31:13,770 --> 00:31:17,860 Можеби тоа ќе се користи хаш табелата, можеби тоа ќе се користи поврзани листа. 531 00:31:17,860 --> 00:31:21,260 Во реалноста, тоа има тенденција да се користи дрво, често структура наречена B-дрво - 532 00:31:21,260 --> 00:31:24,090 не е бинарно дрво туку B-дрво - што е многу широк дрво 533 00:31:24,090 --> 00:31:27,370 кои може да се види во класа како CS124, на структури на податоци класа. 534 00:31:27,370 --> 00:31:31,800 Но, на кратко, вие не мора да се грижите за тоа кога користите паметни база на податоци софтвер. 535 00:31:31,800 --> 00:31:35,890 Вие само може да се каже, "Индекс ова поле за да можам да го бара на тоа поефикасно." 536 00:31:35,890 --> 00:31:40,250 >> Ако го оставите ова исклучи и ќе се обидат да пребарување за секого во базата на податоци, кој живее во Mather, 537 00:31:40,250 --> 00:31:42,710 тоа ќе се префрлат во линеарно пребарување. 538 00:31:42,710 --> 00:31:45,360 И ако имаш 6000 undergrads сите живи во некои куќа, 539 00:31:45,360 --> 00:31:47,900 ви се случува да пребарувате на целата маса да се најде Matherites, 540 00:31:47,900 --> 00:31:52,190 а ако се каже индекс, се надевам дека тоа ќе биде нешто блиску до логаритамска пребарување 541 00:31:52,190 --> 00:31:54,510 да се најдат оние видови на студенти. 542 00:31:54,510 --> 00:31:56,750 Ова е само слободна функција да го вклучите, 543 00:31:56,750 --> 00:31:59,530 иако тоа не дојде со одредена цена на некои сума на просторот. 544 00:31:59,530 --> 00:32:02,690 И на крај, авто-прираст, оваа област АИ, 545 00:32:02,690 --> 00:32:05,830 што само значи дека ако тоа е int и не сакате да се грижи за тоа зголемување се 546 00:32:05,830 --> 00:32:07,570 секој пат кога има нов корисник, проверете, 547 00:32:07,570 --> 00:32:11,910 и секој корисник кој добива вметнува автоматски ќе добие нов проект. 548 00:32:11,910 --> 00:32:15,620 Да кликнете на Зачувај, а сега ајде да најде мана со овој дизајн. 549 00:32:15,620 --> 00:32:20,200 Ако одам во Барајте, најава дека двете Мајк и мојата куќа е NULL. 550 00:32:20,200 --> 00:32:22,420 Јас да го користите phpMyAdmin за уредување на тоа рачно. 551 00:32:22,420 --> 00:32:25,110 Јас може да оди тука и напишете Mather, а потоа притиснете ентер, 552 00:32:25,110 --> 00:32:27,740 и сега забележите на табелата е поинаква. 553 00:32:27,740 --> 00:32:29,270 Но забележите можев да сторам нешто друго, како и. 554 00:32:29,270 --> 00:32:33,530 ID Дејвид е 1, па phpMyAdmin повторно е само административна алатка; 555 00:32:33,530 --> 00:32:35,970 ова не е нешто вашите корисници некогаш ќе се види. 556 00:32:35,970 --> 00:32:38,810 Значи, ако јас наместо кликнете на SQL јазичето до врвот - 557 00:32:38,810 --> 00:32:41,450 и повторно, pset 7 ќе ве запознаам со повеќе од овие прашања - 558 00:32:41,450 --> 00:32:45,260 Јас рачно да се изврши SQL структуриран јазик за пребарување команда 559 00:32:45,260 --> 00:32:56,410 Ажурирање корисници СЕТ куќа = 'Pfoho "КАДЕ id = 1. 560 00:32:56,410 --> 00:33:00,830 Овие SQL queries се, убаво е доволно, многу може да се чита од лево кон десно. 561 00:33:00,830 --> 00:33:04,350 Ажурирање на корисниците табела, поставете го полето наречен куќа Pfoho 562 00:33:04,350 --> 00:33:06,830 каде ID на корисникот е 1. 563 00:33:06,830 --> 00:33:11,480 Или јас дури и не можеше да стори каде внесувачот = 'malan@harvard.edu. 564 00:33:11,480 --> 00:33:14,860 Толку долго како што уникатно ме идентификува, кои ќе работат како добро. 565 00:33:14,860 --> 00:33:18,810 Но, проект има тенденција да биде повисоки перформанси, па ајде направите тоа. 566 00:33:18,810 --> 00:33:22,950 Да кликнете на Оди. Океј, lecture.users не постои. Што ми е грешка? 567 00:33:22,950 --> 00:33:26,220 Што е на масата, всушност, наречен тука? 568 00:33:26,220 --> 00:33:28,770 Таа се вика студенти само затоа што тоа е она што ние го сторивме се тука во горниот лев агол. 569 00:33:28,770 --> 00:33:31,860 Таа се вика студентите не корисници. Па кликнете на Оди сега. 570 00:33:31,860 --> 00:33:34,330 1 ред погодени. Барањето траеше 0.01 секунди. 571 00:33:34,330 --> 00:33:38,010 Ако јас кликнете Browse сега, сега Malan живее во Pfoho. 572 00:33:38,010 --> 00:33:42,070 Значи тоа е уште еден вкус на SQL, но pset ќе ви прошетка низ малку повеќе од тоа. 573 00:33:42,070 --> 00:33:44,710 >> Има еден глупав одлука јас веќе сте направиле тука. 574 00:33:44,710 --> 00:33:47,820 Јас би рекол дека оваа база на податоци дизајн е неефикасна 575 00:33:47,820 --> 00:33:51,650 затоа што повеќе луѓе додадам на студентите маса, 576 00:33:51,650 --> 00:33:54,730 повеќе од нас да почнам додавање, повеќе од TFS почнам додавајќи, 577 00:33:54,730 --> 00:33:58,320 ние ќе почнете да се види она технолошки вишок во оваа табела? 578 00:34:00,840 --> 00:34:06,020 >> Да. [Студент] Гледајќи дека тоа е во учениците, ние сме со користење на истите [недоловим] 579 00:34:06,020 --> 00:34:07,360 Иста - Точно, точно. 580 00:34:07,360 --> 00:34:10,400 Значи, ако 400 луѓе живеат во Mather, или дава да потрае, 581 00:34:10,400 --> 00:34:15,000 на крајот на оваа табела ќе има 400 редови, кои велат дека "Mather", "Mather" 582 00:34:15,000 --> 00:34:16,590 "Mather", "Mather", "Mather". 583 00:34:16,590 --> 00:34:19,820 Ние си трошат сите овие бајти, и има неколку takeaways таму. 584 00:34:19,820 --> 00:34:23,080 1, тука е луд агол случај ако некој плаќа многу пари 585 00:34:23,080 --> 00:34:25,949 и преименува Mather, ние сега мораме да го промениме нашиот целата база на податоци табела. 586 00:34:25,949 --> 00:34:29,730 Тоа нема да се случи често, иако Pfoho што некогаш се нарекуваше Северна куќа пред 15 години, 587 00:34:29,730 --> 00:34:32,310 па тоа се случува. Но, тоа не е сè што привлечни. 588 00:34:32,310 --> 00:34:36,000 Повеќе привлечни од еден агол случај како оној на кои им е потребна да се ажурира податоците во рефус 589 00:34:36,000 --> 00:34:41,150 за базата на податоци е зошто складирање Mather повторно и повторно и повторно и повторно? 590 00:34:41,150 --> 00:34:43,020 Тоа е многу знаци, 6 карактери. 591 00:34:43,020 --> 00:34:45,500 Не може да се направи дури и подобро од тоа, особено за Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Сигурно можеме да направиме подобро отколку што многу ликови. 593 00:34:48,320 --> 00:34:51,790 Зошто да не само дружат единствен идентификатор со секоја куќа 594 00:34:51,790 --> 00:34:55,020 и продавница, во којашто за секој корисник? Значи, да се обидат ова. 595 00:34:55,020 --> 00:35:00,610 Наместо само користење на учениците маса, дозволете ми да одам до моето предавање база на податоци се тука во горниот лев агол. 596 00:35:00,610 --> 00:35:02,600 Забележете тука се вели Креирај табела. 597 00:35:02,600 --> 00:35:04,550 Дозволете ми да креирате нова табела наречена куќи. 598 00:35:04,550 --> 00:35:08,880 Бројот на колони ќе биде 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Сега имам 2 полиња. 600 00:35:11,200 --> 00:35:14,600 Одам да се јавите ова име, и тоа ќе биде varchar должина од 255, 601 00:35:14,600 --> 00:35:18,770 >> но тоа е прилично произволно. Дозволете ми да го стави ова овде долу на конвенцијата. 602 00:35:18,770 --> 00:35:22,840 Па стави лична карта се тука. Да даде секоја куќа единствен идентификатор. 603 00:35:22,840 --> 00:35:25,360 Да даде секоја куќа име. 604 00:35:25,360 --> 00:35:30,980 Да се ​​каже дека идентификатор ќе биде непотпишана само со конвенцијата да користат само за позитивните бројки. 605 00:35:30,980 --> 00:35:35,020 Ајде да одиме напред и да даде оваа авто-прираст поле за сега. 606 00:35:35,020 --> 00:35:38,160 И не ни треба нешто друго? 607 00:35:38,160 --> 00:35:41,010 Ајде да одиме напред и кликнете на Save. 608 00:35:41,010 --> 00:35:42,480 Сега имам втората табела. 609 00:35:42,480 --> 00:35:45,860 Забележи како настрана ова е малку криптичната SQL командата 610 00:35:45,860 --> 00:35:50,280 дека би требало да напишеш рачно ако не користите административна алатка како phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Значи уште една причина ние го користиме. 612 00:35:51,990 --> 00:35:55,480 Тоа е прекрасно корисни вид на педагогичен, бидејќи можете да кликнете на околу 613 00:35:55,480 --> 00:36:01,050 и да дознаам како работите работа од само копирање и вметнување што phpMyAdmin не. 614 00:36:01,050 --> 00:36:04,150 Но, на маса Креирај команда е она што беше само погубен, а тука е мојата маса. 615 00:36:04,150 --> 00:36:11,370 Дозволете ми да оди напред сега и да употребуваат суровини со SQL наместо поедноставуваат со кликнување на Insert табот. 616 00:36:11,370 --> 00:36:15,040 Дозволете ми да го вметнете во куќи, 617 00:36:15,040 --> 00:36:22,230 и јас одам да го каже името на куќата се случува да имаат вредност на "Mather. 618 00:36:22,230 --> 00:36:24,790 Тоа е тоа. Оваа синтакса е малку повеќе криптичната. 619 00:36:24,790 --> 00:36:26,660 Ова е името на областа што сакате да го внесете. 620 00:36:26,660 --> 00:36:30,390 Тоа се вредности што сакаме да го вметнете во тие области. Дозволете ми да кликнете на Оди. 621 00:36:30,390 --> 00:36:34,410 1 ред вметнува презеде 0,02 секунди. Дозволете ми да кликнете Browse сега. 622 00:36:34,410 --> 00:36:42,020 >> Забележите ако јас кликнете Browse, има Mather, чиј проект е со автоматизација на бројот 1. 623 00:36:42,020 --> 00:36:45,000 Дозволете ми да направам уште еден. Дозволете ми да оди во табот SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO куќи. Името на куќата се случува да имаат вредност на Pfoho и така натаму. 625 00:36:52,950 --> 00:36:56,350 Оди. И можам да го задржи тоа повторно и повторно и повторно. 626 00:36:56,350 --> 00:36:59,470 Или ако се досадуваат со користење phpMyAdmin, можете само да го користите Внеси јазиче 627 00:36:59,470 --> 00:37:01,000 и не треба да напишете суровини SQL. 628 00:37:01,000 --> 00:37:04,690 Вие само може да го тресне надвор побрзо од пишување, на пример, Currier, Enter, 629 00:37:04,690 --> 00:37:07,610 и сега ако ние кликнете Browse, има Currier со проект на 3. 630 00:37:07,610 --> 00:37:09,920 Значи тоа е она што ние подразбираме под авто-прираст. 631 00:37:09,920 --> 00:37:12,280 Но сега мораме да поправи нешто и за учениците. 632 00:37:12,280 --> 00:37:16,240 Во студентите што треба податочен тип на куќата областа сега да биде? 633 00:37:16,240 --> 00:37:19,450 Тоа треба да биде цел број, нели? 634 00:37:19,450 --> 00:37:23,950 Значи целта е да се фактор надвор, инаку позната како нормализација, маси 635 00:37:23,950 --> 00:37:27,940 така што ние не ја запази информацијата redundantly во било кој од моите маси. 636 00:37:27,940 --> 00:37:31,130 И повторно, на патот бевме овде се случува да кажам Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, што е многу непотребни 638 00:37:34,220 --> 00:37:36,240 во однос на непотребност на карактери. 639 00:37:36,240 --> 00:37:40,820 Па дозволете ми да оди напред и да го промените ова со кликнување структура, 640 00:37:40,820 --> 00:37:44,620 и дозволете ми да оди напред и да се провери надвор од куќата поле, кликнете промени, 641 00:37:44,620 --> 00:37:46,990 и сега ќе одам да ја промените оваа да биде int. 642 00:37:46,990 --> 00:37:49,490 255 не е релевантен. 643 00:37:49,490 --> 00:37:54,010 Дозволете ми да оди напред и да се каже дека е во ред, ако тоа е уште NULL. Зачувај. 644 00:37:54,010 --> 00:37:55,870 Сега маса студентите е променет успешно, 645 00:37:55,870 --> 00:37:59,090 и ќе забележите повторно куќа е int. 646 00:37:59,090 --> 00:38:02,220 Како настрана, ги игнорира број во загради кога станува збор за ints. 647 00:38:02,220 --> 00:38:03,770 >> Ова е за наследството причини. 648 00:38:03,770 --> 00:38:06,920 Назад во денот, кога ти не треба GUIs, вие наместо имаше командната линија на животната средина, 649 00:38:06,920 --> 00:38:11,580 на 10 и 11 соодветно наведен колку знаци можете треба да покаже 650 00:38:11,580 --> 00:38:13,950 во терминален прозорец за да всушност се прикаже полиња. 651 00:38:13,950 --> 00:38:19,150 Тоа нема никаква врска со битна должина на реалните поле, па ние само ќе го игнорираат тоа за сега. 652 00:38:19,150 --> 00:38:20,990 Сега морам да одам во оваа табела. 653 00:38:20,990 --> 00:38:24,610 И ако Дејвид живее во Mather, куќа не смее да биде 0, 654 00:38:24,610 --> 00:38:27,350 кој е стандардно int вредност најблиску до NULL. 655 00:38:27,350 --> 00:38:29,810 Тој треба да живеат во куќата на 1. 656 00:38:29,810 --> 00:38:36,870 Да произволно да се каже дека Мајк живее во Pfoho, па куќата број 2. 657 00:38:36,870 --> 00:38:40,160 Сега мојата маса изгледа малку повеќе криптичната. 658 00:38:40,160 --> 00:38:41,960 Но, сметаат дека на ефикасноста. 659 00:38:41,960 --> 00:38:44,860 Јас сум сега користење на само 32 бита за да се идентификува куќа, 660 00:38:44,860 --> 00:38:49,530 што значи дека само 1 канонски дефиниција на мојата куќа Mather и Pfoho 661 00:38:49,530 --> 00:38:52,090 и тоа е во куќите табела. 662 00:38:52,090 --> 00:38:55,880 Значи, ако сакам да сега се врати овие табели, мислам дека на овој начин. 663 00:38:55,880 --> 00:39:01,980 Еве јас имам студенти маса, а од десната страна има овие броеви, 1 и 2. 664 00:39:01,980 --> 00:39:04,180 1 е Mather, 2 е Pfoho. 665 00:39:04,180 --> 00:39:08,580 Имаме истите броеви во оваа друга маса, кој се нарекува куќи, 666 00:39:08,580 --> 00:39:11,020 1 и 2 и 3 за оние 3 куќи. 667 00:39:11,020 --> 00:39:14,990 Она што ние сега сакаме да направиме е да имаат способност во кодот, PHP и SQL, 668 00:39:14,990 --> 00:39:18,800 да се најде на приклучат овие табели, каде што ако тие се студенти и овие се куќи, 669 00:39:18,800 --> 00:39:22,050 ние сакаме некако да ги комбинирате така што 1 линии со 1, 670 00:39:22,050 --> 00:39:25,670 2 линии со 2, и така што можеме да дознаам каде Дејвид 671 00:39:25,670 --> 00:39:28,000 и каде што Мајк и каде што секој друг живее. 672 00:39:28,000 --> 00:39:31,850 За да го направите ова, ние може да се изврши на SQL query како што следува. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM студентите ПРИДРУЖЕТЕ куќи - 674 00:39:40,470 --> 00:39:43,000 И сега што полиња сакаме да се приклучат на? 675 00:39:43,000 --> 00:39:49,520 Значи students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> А малку криптичната, но овој дел значи буквално се создаде нова привремена табела 677 00:39:54,150 --> 00:39:56,690 тоа е резултат на спојување на студентите и куќи. 678 00:39:56,690 --> 00:40:00,340 И како сакаш да се комбинираат на врвот на прстите тука? 679 00:40:00,340 --> 00:40:05,280 Постави куќата на полето еднаква на куќи 'на студентите ID поле. 680 00:40:05,280 --> 00:40:10,220 И ако јас сега кликнете на Оди, ќе се вратам токму она што јас се надевав да. 681 00:40:10,220 --> 00:40:15,890 Давид е во Mather, Мајк е во Pfoho, и јас исто така се види на единствени идентификатори. 682 00:40:15,890 --> 00:40:18,640 Но поентата е сега имам комплетна табела. 683 00:40:18,640 --> 00:40:23,020 И така готова брза тука за pset 7 или навистина за финалниот проект: 684 00:40:23,020 --> 00:40:25,830 Ако мислите дека сте чување секое парче на информации redundantly, 685 00:40:25,830 --> 00:40:28,850 дали тоа е куќа, можеби тоа е град, држава, и ZIP 686 00:40:28,850 --> 00:40:32,050 каде ZIP може да обично, но не секогаш се користи како единствен идентификатор, 687 00:40:32,050 --> 00:40:35,810 одат преку вежба ментално и потоа со нешто како phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 на факторинг дека заедничките податоци, бидејќи особено како вашиот сајт добива повеќе и користи 689 00:40:40,660 --> 00:40:45,440 и повеќе станува популарен, ова е начинот на кој можете да бидете сигурни дека сè е супер брз, 690 00:40:45,440 --> 00:40:51,930 со давање на базата на податоци како многу загатки како да уникатност како е можно. 691 00:40:51,930 --> 00:40:53,860 Тоа беше многу. 692 00:40:53,860 --> 00:40:59,010 Било какви прашања? Во ред. Да го земеме еден 5-минутната пауза таму и да се регрупираат. 693 00:41:01,600 --> 00:41:03,540 Во ред. 694 00:41:03,540 --> 00:41:08,680 Следниве е пример кој се користи пред неколку години кога отидов CS161, 695 00:41:08,680 --> 00:41:10,960 која е оперативни системи класа на колеџ 696 00:41:10,960 --> 00:41:15,160 кој е познат по тоа неверојатно, но луди сума на работа, 697 00:41:15,160 --> 00:41:19,810 и се фокусира навистина на некои од ниско ниво проблеми кои се јавуваат во оперативни системи 698 00:41:19,810 --> 00:41:22,700 а исто така и во светот на бази на податоци. 699 00:41:22,700 --> 00:41:27,040 >> Приказната што беше кажано од страна на мојот професор, Марго сода, таа година беше како што следува. 700 00:41:27,040 --> 00:41:30,990 Да претпоставиме дека имате малку dorm фрижидер за вас и вашиот цимер 701 00:41:30,990 --> 00:41:34,030 и двајцата навистина ви се допаѓа млеко. 702 00:41:34,030 --> 00:41:36,360 Значи ќе дојдеш дома од класа еден ден, вашиот цимер се уште не е таму, 703 00:41:36,360 --> 00:41:39,650 ќе го отворите фрижидерот и да сфатите, "Ах проклето, ние сме надвор од млеко." 704 00:41:39,650 --> 00:41:42,070 Па ќе го затворите фрижидер, ви прошетка низ улица да CVS 705 00:41:42,070 --> 00:41:45,830 и да добијат во повеќе долги редици да купат млеко во CVS. 706 00:41:45,830 --> 00:41:48,470 Во меѓувреме, вашиот цимер доаѓа дома од неговата или нејзината класа, 707 00:41:48,470 --> 00:41:51,690 доаѓа во соба, го отвора фрижидерот навистина сакаат малку млеко, 708 00:41:51,690 --> 00:41:54,130 отвора фрижидерот и "По ѓаволите, не млеко". 709 00:41:54,130 --> 00:41:57,890 Па тој или таа ја затвора фрижидер, прошетки низ вратата, и оди до ABP 710 00:41:57,890 --> 00:42:00,910 или некаде различна од CVS каде што не се случува да се судрат еден во друг 711 00:42:00,910 --> 00:42:02,790 да одам да купам некои млеко. 712 00:42:02,790 --> 00:42:04,820 Се разбира неколку минути подоцна, на двајцата ќе ви се вратам дома 713 00:42:04,820 --> 00:42:07,740 и сега имате два пати повеќе млеко како што всушност сакаше. 714 00:42:07,740 --> 00:42:10,670 И се млеко, сега тоа се случува да одат лошо, бидејќи ви се допаѓа млеко 715 00:42:10,670 --> 00:42:14,200 Но, вие не навистина ми се допаѓа млеко, па сега имате премногу млеко, па затоа се случува да се влошат. 716 00:42:14,200 --> 00:42:16,830 Ова е страшна, страшна ситуација. 717 00:42:16,830 --> 00:42:22,920 Што може да се реши оваа дилема, ако бевте прв цимер дома? Да. 718 00:42:22,920 --> 00:42:25,970 [Студент] Треба да се остави белешка. [Смеа] 719 00:42:25,970 --> 00:42:28,090 Добро. Треба да се остави белешка. 720 00:42:28,090 --> 00:42:32,320 Вие треба да се стави пост-тоа белешка или како да кажеш, "Однесено за млеко" 721 00:42:32,320 --> 00:42:36,830 и потоа вашиот цимер концептуално би биле заклучени надвор од всушност тоа го прават. 722 00:42:36,830 --> 00:42:38,010 Или можете да се обратите 1 чекор понатаму. 723 00:42:38,010 --> 00:42:41,060 Вие буквално може да се заклучи фрижидер со некој вид на катанец, 724 00:42:41,060 --> 00:42:44,870 и сега вашиот цимер буквално ќе бидат заклучени надвор од фрижидерот. 725 00:42:44,870 --> 00:42:48,520 Ако ние се генерализира назад кон програмирање, 726 00:42:48,520 --> 00:42:51,610 речиси може да се мисли на фрижидерот како некој вид на променлива или struct, 727 00:42:51,610 --> 00:42:53,500 некој вид на сад за информации. 728 00:42:53,500 --> 00:42:58,290 Проблемот фундаментално тука е дека и двете од вас им беше дозволено да изврши увид 729 00:42:58,290 --> 00:43:02,370 или читаат состојбата на оваа податочна структура, 730 00:43:02,370 --> 00:43:08,050 но го гледа во различни времиња и уште двајцата ќе ви донесе одлука 731 00:43:08,050 --> 00:43:11,920 врз основа на состојбата на светот во овие различни моменти во времето. 732 00:43:11,920 --> 00:43:15,570 Значи се сте затворени во фрижидер, ќе се барем избегнува вашиот цимер 733 00:43:15,570 --> 00:43:19,070 од тоа што биле во можност да изврши увид во состојбата на светот, 734 00:43:19,070 --> 00:43:22,530 па тој или таа не би можел да направи истата одлука. 735 00:43:22,530 --> 00:43:25,780 Значи бази на податоци, како што се испоставува, имаат овој проблем постојано. 736 00:43:25,780 --> 00:43:31,050 >> Ајде да видиме дали можеме да конструира сценарио. 737 00:43:31,050 --> 00:43:34,310 Да претпоставиме дека сте вид на лош човек и ќе отидете на Банката на Америка 738 00:43:34,310 --> 00:43:37,950 или еден од другите места на плоштадот, кои имаат неколку банкомати рамо до рамо, 739 00:43:37,950 --> 00:43:41,200 и некако сте сфатиле како да се дуплираат банкомат картичка - не е толку тешко. 740 00:43:41,200 --> 00:43:42,730 Тоа е само магнетна лента. 741 00:43:42,730 --> 00:43:45,180 И уште па што сакате да се обидете да направите е да се игра оваа игра 742 00:43:45,180 --> 00:43:49,060 при што ќе се стави 1 картичката во 1 машина, уште една картичка во друга машина, 743 00:43:49,060 --> 00:43:51,980 и вие во суштина сакаат да се обидат да ги повлечат парите истовремено, 744 00:43:51,980 --> 00:43:54,930 бидејќи замисли дека оди приказната како што следува. 745 00:43:54,930 --> 00:43:57,350 Машината на левата зема вашиот картичка и вашиот PIN, 746 00:43:57,350 --> 00:44:00,240 а потоа ќе каже: "Дај ми 100 $." 747 00:44:00,240 --> 00:44:04,790 АТМ е програмиран прво да се направи изберете на својата база на податоци или еквивалент - 748 00:44:04,790 --> 00:44:10,780 што базата на податоци тоа е користење - за да ја видите го овој корисник да има најмалку $ 100 во неговиот или нејзиниот профил? 749 00:44:10,780 --> 00:44:16,180 Ако е така, тогаш плукаат од 100 долари и одземе 100 $ од нивниот биланс. 750 00:44:16,180 --> 00:44:20,470 Но, се разбира, ако има повеќе машини тука или повеќе начини на контрола 751 00:44:20,470 --> 00:44:23,560 состојбата на тој свет, банката свод, за да видите колку пари имате, 752 00:44:23,560 --> 00:44:26,780 Претпоставувам дека само со шанса машина на левата и десната 753 00:44:26,780 --> 00:44:30,140 и побара тоа прашање во приближно ист момент во времето. 754 00:44:30,140 --> 00:44:34,160 >> И тоа сигурно може да се случи. Банкомати се компјутери, овие денови. 755 00:44:34,160 --> 00:44:37,670 Значи, ако на машината на левата вели: "Да, имате најмалку $ 100" 756 00:44:37,670 --> 00:44:42,150 Во меѓувреме машината на правото вели: "Да, имате најмалку $ 100" 757 00:44:42,150 --> 00:44:47,420 потоа и од нив продолжи да ги заврши своите програми и всушност плукаат од 100 долари 758 00:44:47,420 --> 00:44:50,820 и да каже, "Претходно сте имале 200 $." 759 00:44:50,820 --> 00:44:54,890 "Дозволете ми да го ажурирате променлива да сега биде 100 $ лево на сметката." 760 00:44:54,890 --> 00:44:58,780 Но, ако двете од нив се провери вашата сметка и сфатив дека тоа е $ 200 761 00:44:58,780 --> 00:45:02,000 и двете од нив, тогаш направете математика и велат дека 200-100, 762 00:45:02,000 --> 00:45:06,990 машините имаат потенцијално плукаат две од по 100 долари за секоја машина, 763 00:45:06,990 --> 00:45:11,360 но тие само ажурирани вашиот сума сметка да биде $ 100. 764 00:45:11,360 --> 00:45:15,130 Со други зборови, сте извадени 200 $, но бидејќи тие прегледано држава на светот 765 00:45:15,130 --> 00:45:18,840 истовремено, а потоа донесе одлука врз основа на таа вредност, 766 00:45:18,840 --> 00:45:21,930 тие не би можеле да го направите математика на крајот правилно. 767 00:45:21,930 --> 00:45:25,520 Значи во банка ситуација премногу навистина сакаат да имаат некој вид на болест 768 00:45:25,520 --> 00:45:28,450 така што веднаш штом ќе го проверува состојбата на некои променлива 769 00:45:28,450 --> 00:45:31,220 тоа е навистина важно, како вашата сметка, 770 00:45:31,220 --> 00:45:36,070 не дозволувајте некој друг да донесува одлуки врз основа на тоа се додека не се направи тоа нешто, 771 00:45:36,070 --> 00:45:38,920 каде што во овој случај вие сте банкомат на левата страна. 772 00:45:38,920 --> 00:45:41,160 Заклучите сите други надвор. 773 00:45:41,160 --> 00:45:44,650 Ти всушност може да се постигне овој ефект во неколку различни начини. 774 00:45:44,650 --> 00:45:48,660 >> Наједноставниот начин во MySQL е линија на SQL дека ти дал 775 00:45:48,660 --> 00:45:52,030 во проблемот сет спецификација која изгледа токму вака. 776 00:45:52,030 --> 00:45:57,420 Вметнете во табелата - она ​​што се вика - лична, симбол, а дел, голем број на акции, 777 00:45:57,420 --> 00:45:59,660 следните вредности, на пример. 778 00:45:59,660 --> 00:46:03,370 Ако не сте ги прочитале на спец сепак, ова е пример вклучуваат како да се обратите за 779 00:46:03,370 --> 00:46:07,340 купување на 10 акции на оваа денар акции за претседател Skroob, 780 00:46:07,340 --> 00:46:10,340 чии кориснички ID случува да биде број 7? 781 00:46:10,340 --> 00:46:14,070 Ова се вели INSERT INTO маса следниве ID, симбол, и број на акции 782 00:46:14,070 --> 00:46:18,200 од 7 'DVN.V, и 10. 783 00:46:18,200 --> 00:46:21,510 Но - но, но, но - втората линија е важно. 784 00:46:21,510 --> 00:46:26,310 ЗА дупликат клуч Ажурирање акции = акции + ВРЕДНОСТИ (акции). 785 00:46:26,310 --> 00:46:28,350 Така целосно криптичната изглед на прв поглед. 786 00:46:28,350 --> 00:46:31,990 Но, фактот дека оваа пребарување SQL, иако тоа завршува излез 2 линии, 787 00:46:31,990 --> 00:46:35,920 е 1 долго пребарување, тоа значи дека атомската 788 00:46:35,920 --> 00:46:41,000 во смисла дека ова прашање или ќе биде извршена сите заедно или не на сите. 789 00:46:41,000 --> 00:46:45,100 И по дефиниција на MySQL, тоа е како тие ги применија ова пребарување. 790 00:46:45,100 --> 00:46:51,010 Тоа е по дефиниција во упатството гарантирано да изврши одеднаш или не на сите. 791 00:46:51,010 --> 00:46:54,020 Мотивација за ова е како што следува. 792 00:46:54,020 --> 00:46:58,540 Ако во овој случај ќе се обидуваат да купи 10 акции на акции, 793 00:46:58,540 --> 00:47:02,260 тоа е вид на истата приказна како млеко, тоа е вид на истата приказна како банкомат. 794 00:47:02,260 --> 00:47:04,970 >> Ако се направи не е грешка на користење на оваа синтакса 795 00:47:04,970 --> 00:47:09,610 но наместо избирање од базата на податоци за да видите колку акции на оваа денар акции 796 00:47:09,610 --> 00:47:13,750 не претседател Skroob имаат, и да претпоставиме дека има 10 акции, 797 00:47:13,750 --> 00:47:19,330 а потоа некои од секунда подоцна потоа направи Ажурирање на информациите, 798 00:47:19,330 --> 00:47:24,810 што е уште една изјава во SQL кој се вели дека се оди напред и да додадете уште 10 акции 799 00:47:24,810 --> 00:47:28,700 на неговата актуелна 10 така што идеално вкупниот е 20, 800 00:47:28,700 --> 00:47:33,490 проблемот е затоа што во базата на податоци системи денес и затоа што во денешните компјутери 801 00:47:33,490 --> 00:47:35,990 имаш повеќе процесори, повеќе јадра - 802 00:47:35,990 --> 00:47:38,920 со други зборови, компјутери буквално може да се прави повеќе работи одеднаш - 803 00:47:38,920 --> 00:47:44,270 нема гаранција дека вашиот изберете и вашиот Ажурирање во овој случај 804 00:47:44,270 --> 00:47:46,150 се случува да се случи да се врати назад. 805 00:47:46,150 --> 00:47:49,140 Така лошо сценарио би било да направите Избери 806 00:47:49,140 --> 00:47:51,670 за да видите колку акции на овој парк денар не Skroob имаат, 807 00:47:51,670 --> 00:47:54,710 а потоа само случајно друга база на податоци пребарување е извршена - 808 00:47:54,710 --> 00:47:57,740 можеби тоа Skroob во друг прозорец на пребарувачот се обидува да купи 10 акции 809 00:47:57,740 --> 00:48:00,700 во друг прозорец целосно, многу сличен на банкомат - 810 00:48:00,700 --> 00:48:05,410 и да претпоставиме дека некој друг барањето добива помеѓу изберете и ажурирање. 811 00:48:05,410 --> 00:48:10,210 Тоа може да биде случај дека Skroob сега губи некои број на акции 812 00:48:10,210 --> 00:48:14,340 затоа што друг процес е контрола на состојбата на својот свет, 813 00:48:14,340 --> 00:48:17,800 или тој добива повеќе акции отколку што треба да има. 814 00:48:17,800 --> 00:48:23,250 Ние не би навлегувал во деталите на токму она што оние кои се особено приказна линии ќе биде, 815 00:48:23,250 --> 00:48:28,380 но поентата е ако треба да се провери променливи вредност и потоа да се донесе одлука, 816 00:48:28,380 --> 00:48:32,500 ако постои ризик од некој друг прави нешто помеѓу оние 2 извештаи, 817 00:48:32,500 --> 00:48:36,220 како што може да се случи во мултипроцесорски системи, во повеќе јадрени системи, 818 00:48:36,220 --> 00:48:41,220 компјутери со способноста да се направи повеќе работи одеднаш, лоши работи може да се случи 819 00:48:41,220 --> 00:48:44,530 како банкарски сметки се дебитира погрешно, купување двојно повеќе млеко, 820 00:48:44,530 --> 00:48:46,730 или во овој случај погрешен број на акции. 821 00:48:46,730 --> 00:48:48,370 Но, има еден полесен начин да се размислува за тоа. 822 00:48:48,370 --> 00:48:53,290 >> Излегува дека SQL, исто така, поддржува, ако конфигурирате вашата маса правилно, 823 00:48:53,290 --> 00:48:56,920 нешто што се нарекува трансакции кои би рекол дека е всушност дури и полесно да се разбере 824 00:48:56,920 --> 00:49:00,650 од ова, но тоа не е 1-лагер, па тоа е всушност малку повеќе вклучени. 825 00:49:00,650 --> 00:49:04,960 Постои буквално изјава во SQL наречен СТАРТ трансакција. 826 00:49:04,960 --> 00:49:08,300 Исто како таму е SELECT, UPDATE, INSERT, избришете и ПРИДРУЖЕТЕ и еден куп други, 827 00:49:08,300 --> 00:49:10,970 постојат клучни зборови како СТАРТ трансакција. 828 00:49:10,970 --> 00:49:13,560 И она што тогаш го стори во контекст на pset 7 - 829 00:49:13,560 --> 00:49:17,270 вие не мора да го стори тоа за pset 7, тоа е експлицитно отфрлени како не е потребно, 830 00:49:17,270 --> 00:49:18,830 но за конечниот проекти може да биде корисно - 831 00:49:18,830 --> 00:49:22,820 ако ти се јавам за пребарување на СТАРТ трансакција, а потоа уште пребарување 832 00:49:22,820 --> 00:49:25,620 а потоа уште пребарување и потоа уште, уште, и уште, 833 00:49:25,620 --> 00:49:31,860 оние барања не, всушност ќе биде извршена додека не се јавите на SQL изјава COMMIT, 834 00:49:31,860 --> 00:49:37,220 на која точка, без разлика дали тоа е 2 изјавите или 20 извештаи, сите тие ќе бидат извршени одеднаш, 835 00:49:37,220 --> 00:49:42,770 што значи никој друг не случајно може да се купи премногу млеко или дебитна премногу пари 836 00:49:42,770 --> 00:49:46,340 или купи премногу акции, бидејќи сите ваши пребарувања ќе се изврши 837 00:49:46,340 --> 00:49:48,410 назад кон назад да се врати да се врати. 838 00:49:48,410 --> 00:49:51,580 И ова е супер важно, особено кога правиш нешто како ова. 839 00:49:51,580 --> 00:49:54,900 Ова е еден арбитрарен пример во која се вели ајде ажурирање на банкарска сметка 840 00:49:54,900 --> 00:50:00,200 со поставување рамнотежа еднаква рамнотежа - $ 1000, каде што бројот на сметката е 2. 841 00:50:00,200 --> 00:50:04,260 А потоа втората изјава е сега да депонира дека 1000 $ 842 00:50:04,260 --> 00:50:07,310 во нечија банкарска сметка чија сметка број е 1. 843 00:50:07,310 --> 00:50:10,400 >> Со други зборови, ова е совршен пример за тоа каде сакате да бидете сигурни дека 844 00:50:10,400 --> 00:50:13,590 дека и двете од овие извештаи се случи или воопшто не 845 00:50:13,590 --> 00:50:15,450 затоа што во спротивно клиент нема да се зезнав 846 00:50:15,450 --> 00:50:17,670 и ви се случува да ги преземе своите пари и не се депонира на друго место, 847 00:50:17,670 --> 00:50:20,470 или банката ќе се зезнав каде што ви се случува да депонираат пари 848 00:50:20,470 --> 00:50:23,140 но не и всушност го одземе од сметката на корисникот. 849 00:50:23,140 --> 00:50:25,810 Значи сакате и двете од нив да се изврши заедно. 850 00:50:25,810 --> 00:50:29,140 Така влегува во светот трансакции. 851 00:50:29,140 --> 00:50:31,360 Значи тоа е нешто да се задржи во задниот дел на вашиот ум, 852 00:50:31,360 --> 00:50:34,710 не толку за целите на само еден завршен проект, 853 00:50:34,710 --> 00:50:36,700 но ако сакате да се земе вашата завршен проект некаде, 854 00:50:36,700 --> 00:50:39,040 ако сакате да стартувате некоја компанија околу него, 855 00:50:39,040 --> 00:50:41,270 ако сакате да го реши проблемот некои студент групата на кампусот 856 00:50:41,270 --> 00:50:45,210 а всушност има жив, активен веб-сајт, тие се вид на суптилна грешки кои можат да настанат 857 00:50:45,210 --> 00:50:49,480 ако не доста мислам преку она што може да се случи ако 2 лица 858 00:50:49,480 --> 00:50:54,190 се обидуваат да пристапите до вашиот сајт во буквално истиот момент во времето, 859 00:50:54,190 --> 00:50:56,890 при што нивните барања инаку би се испреплетени. 860 00:50:58,840 --> 00:51:01,420 >> Подготвени за некои JavaScript, закачка од него? 861 00:51:01,420 --> 00:51:04,320 Ова е нашиот последен јазик за семестар. Во ред. 862 00:51:04,320 --> 00:51:09,940 За среќа, JavaScript изгледа многу, многу, многу сличен на 2 јазика, Ц и PHP, 863 00:51:09,940 --> 00:51:11,140 ние го направивме досега. 864 00:51:11,140 --> 00:51:14,340 Нема вклучите во pset 7, но тоа е неверојатно корисна алатка 865 00:51:14,340 --> 00:51:18,840 кога станува збор за правење веб-базирани конечниот проекти или навистина само веб програмирање поопшто. 866 00:51:18,840 --> 00:51:20,950 Така брз преглед на нешто што се нарекува ДОМ. 867 00:51:20,950 --> 00:51:23,600 Тука е супер едноставна веб страница, која навистина само вели здраво, свет 868 00:51:23,600 --> 00:51:25,970 и во насловот и во телото. 869 00:51:25,970 --> 00:51:29,270 Како вовлекување е сугерирајќи за некое време, 870 00:51:29,270 --> 00:51:31,380 навистина постои хиерархија на веб страници. 871 00:51:31,380 --> 00:51:34,220 Јас може да привлече истата програмка на HTML како дрво, 872 00:51:34,220 --> 00:51:37,470 размислување назад кон нашите дискусии на структури на податоци во C, како што следува. 873 00:51:37,470 --> 00:51:40,710 Имам некои посебни root јазол наречен документот јазол, 874 00:51:40,710 --> 00:51:43,650 и ќе видиме аналогни на ова JavaScript за само еден миг. 875 00:51:43,650 --> 00:51:48,330 Првото дете и единствено дете на што во овој случај е HTML таг. 876 00:51:48,330 --> 00:51:49,880 Нема директна мапирање на DOCTYPE. 877 00:51:49,880 --> 00:51:53,170 Тоа е посебна работа, па ние само треба да го игнорира кога станува збор за овој ДОМ, 878 00:51:53,170 --> 00:51:55,810 овој документ Object Model дрво. 879 00:51:55,810 --> 00:51:59,530 Забележете дека таг HTML, која сум прикажан произволно како правоаголник, 880 00:51:59,530 --> 00:52:02,890 има 2 деца: главата и телото. 881 00:52:02,890 --> 00:52:04,840 >> Оние кои се слично подготвени како правоаголници. 882 00:52:04,840 --> 00:52:08,970 Тоа е значајно сликовито дека главата е лево од телото. 883 00:52:08,970 --> 00:52:11,960 Импликацијата е дека главата на прво место во дрво. 884 00:52:11,960 --> 00:52:14,910 Па таму е всушност нарачување на дрвото кога ќе го нацрта тоа како оваа, 885 00:52:14,910 --> 00:52:17,460 иако форми и какво ли не се произволни. 886 00:52:17,460 --> 00:52:20,360 Главата во меѓувреме има еден дете вика насловот, 887 00:52:20,360 --> 00:52:25,170 и насловот, всушност, има свои деца, што е "Здраво, свет", 888 00:52:25,170 --> 00:52:32,210 која јас намерно привлече како овална тука за да се направи тоа малку различен од правоаголникот. 889 00:52:32,210 --> 00:52:37,420 Овие правоаголници елементи, додека Здраво, светот е навистина еден текст јазол. 890 00:52:37,420 --> 00:52:39,850 Така, тоа е еден јазол во стеблото, но тоа е друг тип на јазол 891 00:52:39,850 --> 00:52:41,730 па јас го привлече произволно поинаку. 892 00:52:41,730 --> 00:52:45,000 Слично е телото имате дете вика здраво, свет, како и, 893 00:52:45,000 --> 00:52:47,910 толку различни јазол иако тие се случајно истиот текст, 894 00:52:47,910 --> 00:52:52,100 но сум го извлечат со користење на ист облик. Па кој се грижи? 895 00:52:52,100 --> 00:52:56,820 Па, она што е убаво за HTML е дека тоа ја имаат оваа хиерархиска природа. 896 00:52:56,820 --> 00:53:01,010 И она што е убаво за JavaScript и особено библиотеки кои се слободно достапни 897 00:53:01,010 --> 00:53:07,120 и популарна како jQuery, можете да отидете на дрво структура толку неверојатно лесно. 898 00:53:07,120 --> 00:53:11,790 Секоја од работите што го правевме во C со покажувачи и traversing дрвја и recursing на јазли 899 00:53:11,790 --> 00:53:15,300 левото дете на десно дете, одеднаш ние да ги сортирате на земаме здраво за готово 900 00:53:15,300 --> 00:53:19,450 како неверојатно просветителската ако не е малку фрустрирачки 901 00:53:19,450 --> 00:53:22,470 но не и скоро ефикасен начин да се обратите за програмирање. 902 00:53:22,470 --> 00:53:24,470 И така со овие повисоко ниво јазици како JavaScript 903 00:53:24,470 --> 00:53:28,340 ќе бидете во можност да се движите оваа дрво многу повеќе интуитивно. 904 00:53:28,340 --> 00:53:30,430 >> И навистина синтаксата ќе биде сосема познато. 905 00:53:30,430 --> 00:53:32,950 Ако никогаш не сте виделе вклучите Javascript пред, ова е навистина убаво референца 906 00:53:32,950 --> 00:53:35,910 од Mozilla луѓе, на луѓе кои прават Firefox, 907 00:53:35,910 --> 00:53:38,370 па се чувствуваат слободни да пребарувате дека во својата погодност. 908 00:53:38,370 --> 00:53:41,590 Што ќе најдете - и овие слајдови се идентични со она што се користи пред некој ден - 909 00:53:41,590 --> 00:53:44,030 Слично на тоа, главниот е нема. 910 00:53:44,030 --> 00:53:47,010 Па кога ќе напише програма во JavaScript, не постои основна функција. 911 00:53:47,010 --> 00:53:48,690 Вие само на проектот пишување код. 912 00:53:48,690 --> 00:53:51,660 Но клучна разлика помеѓу вклучите Javascript-и C и PHP 913 00:53:51,660 --> 00:53:55,890 е дека додека C и PHP досега биле извршени серверот 914 00:53:55,890 --> 00:53:59,180 од страна на машината во овој случај или поопшто од страна на серверот, 915 00:53:59,180 --> 00:54:04,270 JavaScript преку дизајн обично се извршува од страна на прелистувачот. 916 00:54:04,270 --> 00:54:08,440 Со други зборови, може да напишете JavaScript код, како ние сме за да, 917 00:54:08,440 --> 00:54:13,080 на сервер во апаратот, но го вклучуваат, меѓу вашите HTML, меѓу вашиот CSS код, 918 00:54:13,080 --> 00:54:16,100 меѓу вашите GIFs и вашиот PNGs и вашите JPEG слики 919 00:54:16,100 --> 00:54:19,170 така што кога корисникот посети вашиот веб страница, ако сте со користење на JavaScript, 920 00:54:19,170 --> 00:54:21,770 дека JavaScript код доаѓа од серверот на интернет пребарувач, 921 00:54:21,770 --> 00:54:24,540 и тоа е интернет пребарувач, кој всушност го извршува. 922 00:54:24,540 --> 00:54:27,960 Значи ова има значајни импликации за дури интелектуална сопственост. 923 00:54:27,960 --> 00:54:32,600 Тоа е вид на глупо да ни помислувај на заштита на вашиот ИП кога станува збор за JavaScript код 924 00:54:32,600 --> 00:54:37,560 бидејќи по природа на јазикот станува погубен обично прелистувач страна. 925 00:54:37,560 --> 00:54:40,360 >> Можете да го помрачавам, што значи дека може да го направите да изгледа лудо и грдото 926 00:54:40,360 --> 00:54:45,400 без празни места, ужасна променлива имиња, да се направи тоа потешко за луѓето да крадат вашата IP, 927 00:54:45,400 --> 00:54:48,120 но клучот е во тоа што се извршува прелистувач страна. 928 00:54:48,120 --> 00:54:51,790 Иако како настрана вклучите може да се користи серверот, 929 00:54:51,790 --> 00:54:54,480 најчестата употреба случај во моментов се уште е на прелистувачот. 930 00:54:54,480 --> 00:54:59,800 И тука е она што изгледа. Тука е ако-else if-друго изгради само како C, исто како и PHP. 931 00:54:59,800 --> 00:55:02,420 Тука е Булова израз кога ќе "или" 2 работи заедно. 932 00:55:02,420 --> 00:55:04,330 Тука е кога вие "и" 2 работи заедно. 933 00:55:04,330 --> 00:55:08,300 Тука е прекинувачот изјава, која е слична на PHP 934 00:55:08,300 --> 00:55:10,810 во кои можете да се префрлиш на различни типови на вредности. 935 00:55:10,810 --> 00:55:15,180 Петелки слично имаат за петелки тука, кои се структурирани идентично на она што сум го видел досега. 936 00:55:15,180 --> 00:55:18,110 Додека петелки, имаме направите додека петелки. 937 00:55:18,110 --> 00:55:20,290 Променливи, некогаш толку малку поинаква. 938 00:55:20,290 --> 00:55:24,560 Вие не декларираат променливи како што направи во PHP и C, 939 00:55:24,560 --> 00:55:27,860 но слично е да го вклучите Javascript слабо напишани. 940 00:55:27,860 --> 00:55:32,730 Не одредите int или плови или стринг или нешто слично обично. 941 00:55:32,730 --> 00:55:34,240 Можете да наведете var. 942 00:55:34,240 --> 00:55:38,040 Вие не треба да се определи var, но тоа има импликации, ако не. 943 00:55:38,040 --> 00:55:42,000 Обично ако изостави var, случајно сте се креира глобален променлива наместо на локално ниво. 944 00:55:42,000 --> 00:55:46,420 Значи, да ми предложи дека речиси секогаш речеме var а потоа името на променливата. 945 00:55:46,420 --> 00:55:48,740 Тоа не е тип, тоа е само var за променлива. 946 00:55:48,740 --> 00:55:52,930 Ова ќе биде еден пример, дали е 123 или "Здраво, свет". 947 00:55:52,930 --> 00:55:58,910 Низи се присутни и синтаксички сличен на PHP. 948 00:55:58,910 --> 00:56:03,690 Јас ќе кажам var броеви и потоа јас го користам квадратни загради повторно да декларирате променлива 949 00:56:03,690 --> 00:56:08,870 чиј тип е низа што ги има овие особено броеви во тоа одделени со запирки. 950 00:56:08,870 --> 00:56:11,740 А потоа на крај, ова е само една, која навистина изгледа различно. 951 00:56:11,740 --> 00:56:16,700 Потсетиме дека во PHP ќе се спроведува асоцијативна низа на студент 952 00:56:16,700 --> 00:56:20,220 како Zamyla дека може да изгледа вака, каде променливата се вика студент. 953 00:56:20,220 --> 00:56:23,370 На квадратни загради значи тука доаѓа низа. 954 00:56:23,370 --> 00:56:28,500 >> Фактот дека јас не сум со користење на нумерички индекси, но жици - ID, куќа, и името - 955 00:56:28,500 --> 00:56:30,990 значи дека ова е асоцијативна низа, 956 00:56:30,990 --> 00:56:34,490 и овие стрели со еднаквите знаци и аголни заградата 957 00:56:34,490 --> 00:56:37,310 значи дека клучот е "ID", вредноста е 1; 958 00:56:37,310 --> 00:56:39,310 клучот е "куќа", вредноста е Winthrop куќа; 959 00:56:39,310 --> 00:56:41,800 клучот е "име", вредноста е Zamyla Чан. 960 00:56:41,800 --> 00:56:47,110 Значи има 3 копчиња во внатрешноста на оваа асоцијативна низа, од кои секоја има своја вредност. 961 00:56:47,110 --> 00:56:52,880 Видовме дека во 7 pset, или наскоро ќе, во JavaScript истата идеја, 962 00:56:52,880 --> 00:56:55,220 но тоа ќе изгледа вака. 963 00:56:55,220 --> 00:57:00,070 Значи var студент - нема знакот за долар и не се споменуваат на типот уште, но var - 964 00:57:00,070 --> 00:57:05,860 еднакви и потоа отворете кадрави загради бидејќи во JavaScript, кога имаш клучните вредност парови, 965 00:57:05,860 --> 00:57:08,900 вие всушност го користите нешто што се нарекува еден објект. 966 00:57:08,900 --> 00:57:13,490 И оние од вас кои не се оклопни транспортери или слично може да се сети предмети од Јава 967 00:57:13,490 --> 00:57:15,140 или слични јазици. 968 00:57:15,140 --> 00:57:17,880 Го вклучите Javascript-не е Јава, прв од сите. 969 00:57:17,880 --> 00:57:21,600 Тоа беше намерно одлука години да намалам нешто друго што беше популарен, 970 00:57:21,600 --> 00:57:25,640 своето име, иако тоа нема основен однос на себе Јава. 971 00:57:25,640 --> 00:57:31,490 JavaScript има објекти, и ги создаде по пат на голема заграда кадрави нотација. 972 00:57:31,490 --> 00:57:36,710 Објекти во вклучите Javascript-се доста еднакво на асоцијативни низи во PHP 973 00:57:36,710 --> 00:57:40,030 кога станува збор за чување на податоци внатрешноста на нив. 974 00:57:40,030 --> 00:57:44,100 >> Но, дури и уште посилна во JavaScript можете да се дружат многу лесно функции 975 00:57:44,100 --> 00:57:48,040 во внатрешноста на објектот, и покрај тоа што можете да го направите и во други јазици, 976 00:57:48,040 --> 00:57:50,040 тоа е прилично честа парадигма, како што ќе видиме. 977 00:57:50,040 --> 00:57:54,380 На кратко, овој објект претставува еден студент, кој е особено Zamyla, 978 00:57:54,380 --> 00:58:00,380 и тоа е слично концептуално, само синтаксички различна од оваа. 979 00:58:00,380 --> 00:58:03,840 Да, всушност, користи JavaScript во датотека. 980 00:58:03,840 --> 00:58:05,570 Излегува има скрипта таг. 981 00:58:05,570 --> 00:58:08,180 Видовме стил таг и видовме други HTML тагови. 982 00:58:08,180 --> 00:58:11,510 На сценариото таг, всушност, ќе содржи некои JavaScript код. 983 00:58:11,510 --> 00:58:15,500 Дозволете ми да одат во уредот каде што имаме некои изворниот код претходна направени. 984 00:58:15,500 --> 00:58:18,700 Не сум го испратиле уште на веб-сајт, но јас ќе го направи тоа по класа. 985 00:58:18,700 --> 00:58:21,770 Да се ​​отвори овој, blink.html. 986 00:58:21,770 --> 00:58:27,560 Назад во 1990-тите, имаше буквално HTML таг вика трепкање ознака, 987 00:58:27,560 --> 00:58:30,340 и ова е една од најпознатите прекрасно overused тагови на интернет 988 00:58:30,340 --> 00:58:36,140 при што сакате да ја посетите некои 1990 стил веб страница и започнете да гледате текст трепка ви се допаѓа ова, 989 00:58:36,140 --> 00:58:39,810 резултатите од маркиз таг, кој текст ќе се допаѓа ова. 990 00:58:39,810 --> 00:58:45,070 Еден од ретките моменти кога во светот, всушност, се согласија за веб стандард, 991 00:58:45,070 --> 00:58:48,250 сите во одборот загинаа трепкање таг пред неколку години. 992 00:58:48,250 --> 00:58:52,860 Но можеме да го воскресне со JavaScript како демонстрација на моќта имате 993 00:58:52,860 --> 00:58:56,660 кога може да се напише програма во внатрешноста на веб-страница. 994 00:58:56,660 --> 00:59:00,240 Прво нека прескокнете во текот на нови нешта и да се фокусира само на стариот. 995 00:59:00,240 --> 00:59:01,780 >> Тука е стари работи во овој пример. 996 00:59:01,780 --> 00:59:06,350 Имам таг HTML, шефот на тагот, и насловот таг. 997 00:59:06,350 --> 00:59:11,210 Тогаш имам телото таг тука со div, кој се потсетиме е само правоаголна поделба на страница 998 00:59:11,210 --> 00:59:14,720 дека јас сум се единствен број произволно на "поздрав" за, 999 00:59:14,720 --> 00:59:18,320 само така имам начин на уникатно се однесуваат на него, дека има некои многу едноставни текст: 1000 00:59:18,320 --> 00:59:20,220 Здраво, свет. 1001 00:59:20,220 --> 00:59:23,940 Сега дозволете ми да дојдете до врвот на оваа датотека и да видиме што има ново. 1002 00:59:23,940 --> 00:59:27,710 Првото нешто што е ново до врвот е скрипта таг, 1003 00:59:27,710 --> 00:59:31,280 и во внатрешноста на сценариото таг известување сум прогласи функција. 1004 00:59:31,280 --> 00:59:34,610 Да се ​​изјасни за функција во JavaScript, прилично слична на PHP, 1005 00:59:34,610 --> 00:59:37,930 вие буквално пишувам функција, тогаш името на функцијата, загради, 1006 00:59:37,930 --> 00:59:40,400 а можеби и некои аргументи ако е потребно било. 1007 00:59:40,400 --> 00:59:43,510 Потоа имам мојата кадрава голема заграда, како и обично, и сега имаме некои малку нов код, 1008 00:59:43,510 --> 00:59:45,230 но ајде да видиме што тоа значи. 1009 00:59:45,230 --> 00:59:48,670 Значи var div, ова само значи ми даде променлива наречена div. 1010 00:59:48,670 --> 00:59:50,530 Можев да го нарече foo, но јас сакав да се нарече div 1011 00:59:50,530 --> 00:59:52,620 од причини што ќе биде јасно во секунда. 1012 00:59:52,620 --> 00:59:57,480 Потоа излегува во вклучите Javascript - и ова е JavaScript код вградени во мојот веб страница - 1013 00:59:57,480 --> 01:00:01,760 постои посебен глобалната променлива на сорти нарекува документ. 1014 01:00:01,760 --> 01:00:04,780 JavaScript е всушност објектно-ориентиран јазик. 1015 01:00:04,780 --> 01:00:07,230 Ние не би навлегувал во детали во 50 за тоа што тоа значи, 1016 01:00:07,230 --> 01:00:11,180 но сега за сега знаеме дека објектот е доста како struct. 1017 01:00:11,180 --> 01:00:14,740 Како што видовме на враќање, кога во еден од најраните проблем поставува 1018 01:00:14,740 --> 01:00:17,150 каде што ќе стави многу информации во структурата, 1019 01:00:17,150 --> 01:00:21,330 Слично е документ посебен struct што доаѓа со прелистувач, 1020 01:00:21,330 --> 01:00:24,810 доаѓа со било кој веб-страница. Тоа не е нешто што јас замислен. 1021 01:00:24,810 --> 01:00:28,210 Внатрешноста на овој документ структура, иако, мора не само податоци 1022 01:00:28,210 --> 01:00:30,010 но вие исто така имаат функции. 1023 01:00:30,010 --> 01:00:34,090 >> И секој пат кога ќе имаат функција внатрешноста на структурата, во внатрешноста на објектот, 1024 01:00:34,090 --> 01:00:36,490 тоа се нарекува метод. Но, тоа е иста работа. 1025 01:00:36,490 --> 01:00:40,110 Методот е функција која само така се случува да биде во внатрешноста на нешто друго. 1026 01:00:40,110 --> 01:00:42,990 Па тоа значи дека овој посебен глобалната променлива наречена документот 1027 01:00:42,990 --> 01:00:47,690 има функција наречена getElementById кои буквално го прави тоа. 1028 01:00:47,690 --> 01:00:52,460 Тоа ќе ти елемент од ДОМ, документ Object Model дрво, 1029 01:00:52,460 --> 01:00:55,520 чиј проект е во овој случај поздрав. 1030 01:00:55,520 --> 01:00:59,200 Со други зборови, за сето време поминато на структури на податоци доаѓа во игра тука. 1031 01:00:59,200 --> 01:01:01,400 Оваа слика на ДОМ дека имавме еден миг пред 1032 01:01:01,400 --> 01:01:06,100 иако страница е малку различен, ако имав div во оваа слика, 1033 01:01:06,100 --> 01:01:11,180 што document.getElementById ќе се врати да ме ефикасно ќе биде покажувач 1034 01:01:11,180 --> 01:01:15,440 на правоаголник во дрво, со повикување на правоаголник во дрво. 1035 01:01:15,440 --> 01:01:18,410 Значи тоа е она што значи да повика еден од тие функции. 1036 01:01:18,410 --> 01:01:21,960 Во овој случај, повторно тоа е DIV. Тоа не е тело или наслов. 1037 01:01:21,960 --> 01:01:26,480 Па ајде да видиме што јас тогаш направи со овој div сега дека јас го имаат во внатрешноста на оваа променлива наречена div. 1038 01:01:26,480 --> 01:01:32,580 Излезе со JavaScript имате можност да tweak на CSS на вашата страница динамично. 1039 01:01:32,580 --> 01:01:39,060 До сега, сите на CSS ние го направивме, иако ограничени, е во стилот атрибути, 1040 01:01:39,060 --> 01:01:41,730 или каде на друго место да се стави CSS? 1041 01:01:42,730 --> 01:01:45,810 Јас вид на расипуваат оној. Во стил таг на врвот на датотеката. 1042 01:01:45,810 --> 01:01:49,180 Или третото место е во? 1043 01:01:50,710 --> 01:01:54,590 >> Надворешен фајл, нешто. CSS. 1044 01:01:54,590 --> 01:01:56,730 Значи тоа се 3 места ние го направивме CSS досега, 1045 01:01:56,730 --> 01:01:59,310 но што се фати е ние сме хард кодирани сето тоа. 1046 01:01:59,310 --> 01:02:04,060 Решивте како ќе полноглавци во pset 7, решивме пред предавање она што нашите CSS ќе биде. 1047 01:02:04,060 --> 01:02:07,380 Но, ако сакате да го промените вашиот CSS код, всушност можете да го направите тоа 1048 01:02:07,380 --> 01:02:09,370 Откако ќе имаат вистински програмски јазик. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - не програмски јазици. JavaScript е. 1050 01:02:13,910 --> 01:02:18,200 Значи излегува дека штом сте еден од оние правоаголници од дрво 1051 01:02:18,200 --> 01:02:23,050 нарекува ДОМ, таа се има некои податоци во него. 1052 01:02:23,050 --> 01:02:27,820 Па div дека јас само го грабнала од дрвото има она што ќе го наречеме имот во него 1053 01:02:27,820 --> 01:02:34,390 наречен стил, и стилот на имотот себе има имот наречен видливост. 1054 01:02:34,390 --> 01:02:37,330 Јас би го знаеме и ова само со гледање нагоре прирачник на корисникот CSS е. 1055 01:02:37,330 --> 01:02:41,160 Излегува има видливост CSS имотот што го прави она што го кажува. 1056 01:02:41,160 --> 01:02:44,530 Тоа го прави нешто видливи или не, видливи или не. 1057 01:02:44,530 --> 01:02:46,810 И како да го направите тоа е тоа. 1058 01:02:46,810 --> 01:02:50,510 Прашувам програмски ако видливоста на овој div се крие, 1059 01:02:50,510 --> 01:02:53,390 она што можам да го промени тоа во моментов? Видливи. 1060 01:02:53,390 --> 01:02:58,840 Друго, ако видливоста на оваа страница не е скриено, логично јас го прават тоа скриени. 1061 01:02:58,840 --> 01:03:04,070 Јас немам идеја зошто тоа е видливо и скриени и не се видливи и невидливи. 1062 01:03:04,070 --> 01:03:06,000 Ова беше лоша дизајн одлука на патот. 1063 01:03:06,000 --> 01:03:09,530 Но тие се навистина спротивностите во CSS: видливи и скриени. 1064 01:03:09,530 --> 01:03:15,520 Сето ова не е значи промена на CSS на мојата датотека и исклучување, и исклучување на 1065 01:03:15,520 --> 01:03:16,870 за што особено div. 1066 01:03:16,870 --> 01:03:20,630 Но, повторно, ова е функција наречена трепкање. Кога е трепкање функција наречена? 1067 01:03:20,630 --> 01:03:24,080 Излезе дека таму е уште еден посебен глобалната променлива наречена прозорецот, 1068 01:03:24,080 --> 01:03:28,220 слични во духот со документ, но со оглед на документот се однесува на вашата веб страница, 1069 01:03:28,220 --> 01:03:31,700 како дрво ДОМ, HTML ви испрати од серверот, 1070 01:03:31,700 --> 01:03:35,250 прозорецот се однесува на хром околу неа, полето за адреса, лентата со наслов, 1071 01:03:35,250 --> 01:03:37,880 и сето тоа работи околу вашата веб-страница. 1072 01:03:37,880 --> 01:03:42,800 >> И излегува дека прозорецот објектот има посебна функција во него наречена setInterval 1073 01:03:42,800 --> 01:03:44,360 што го прави она што го кажува. 1074 01:03:44,360 --> 01:03:48,600 Таа ќе се постави на интервалот - во овој случај секои 500 милисекунди - 1075 01:03:48,600 --> 01:03:52,270 и, да се погоди, што е тоа ќе направи секој 500 милисекунди? 1076 01:03:52,270 --> 01:03:55,240 Тоа се случува да се изврши таа функција трепкање. 1077 01:03:55,240 --> 01:03:58,560 И она што е убаво овде е дека ние би можеле да имаат направено ова во C иако никогаш не сме направиле. 1078 01:03:58,560 --> 01:04:01,580 Ц има нешто што се нарекува функцијата совети каде што може да помине функции околу 1079 01:04:01,580 --> 01:04:03,140 како аргументи. 1080 01:04:03,140 --> 01:04:07,620 Слично во JavaScript можете да го положат име на функција во друга функција. 1081 01:04:07,620 --> 01:04:10,630 И ќе забележите што правам. Јас не го правам тоа. 1082 01:04:10,630 --> 01:04:14,380 Ако го ставам заграда по трепкање, тоа би значело повик трепкање функција. 1083 01:04:14,380 --> 01:04:17,430 Ако јас ги изостави, тоа значи дека тука е трепкање функција 1084 01:04:17,430 --> 01:04:21,330 така што setInterval да го наречеме секои 500 милисекунди. 1085 01:04:21,330 --> 01:04:28,200 Значи крајниот резултат, крволочен и покрај тоа што е, е дека ако одам во локалниот компјутер и да одат во blink.html, 1086 01:04:28,200 --> 01:04:32,120 Јас сега имаат ова се случува повторно и повторно. 1087 01:04:32,120 --> 01:04:34,950 И ако јас всушност Увид елемент, ајде да видиме дали можеме да видиме тоа. 1088 01:04:34,950 --> 01:04:38,550 Дозволете ми Увид елемент, дозволете ми да дојдете долу само малку, 1089 01:04:38,550 --> 01:04:44,320 дозволете ми да изберете Елементи овде, и ќе забележите дека ДОМ внатрешноста на инспектор Хром. 1090 01:04:44,320 --> 01:04:48,840 Тоа е буквално менување и назад секои 500 милисекунди. 1091 01:04:48,840 --> 01:04:55,660 Ако одиме во нашиот пријател Нејт, 1092 01:04:55,660 --> 01:05:00,020 Ако некогаш се прашував како тоа функционира, слична идеја со интервал, 1093 01:05:00,020 --> 01:05:04,810 но Нејт е, всушност, прави многу ефикасно користење на бојата во овој конкретен случај. 1094 01:05:04,810 --> 01:05:07,350 Па што повеќе можеме да всушност направи со ова? 1095 01:05:07,350 --> 01:05:09,990 Да се ​​отвори уште еден пример и да се обиде нешто 1096 01:05:09,990 --> 01:05:12,940 тоа е програмски уште повеќе корисни отколку правејќи нешта трепкање. 1097 01:05:12,940 --> 01:05:17,990 Дозволете ми да одиме во нашиот форми директориум денес и да си одат во form0. 1098 01:05:17,990 --> 01:05:20,820 Ова е најгрдото можно форма која би можел да излезе со, 1099 01:05:20,820 --> 01:05:23,290 и дозволете ми да ви покаже како изгледа во прелистувачот. 1100 01:05:23,290 --> 01:05:28,960 >> Дозволете ми да одат во localhost / форми, и ова е form0. 1101 01:05:28,960 --> 01:05:33,400 Ова е супер грди HTML форма која има неколку полиња за е-мејл, за лозинка, 1102 01:05:33,400 --> 01:05:37,190 лозинка, а потоа малку наога да се согласат со некои рокови и услови. 1103 01:05:37,190 --> 01:05:41,350 Улов е ако ја посетите оваа форма и не сакам да ви даде мојот е-мејл адреса, 1104 01:05:41,350 --> 01:05:44,730 Не сакам да се согласувам со одредбите и условите можеби, кликнете може Регистрирај се 1105 01:05:44,730 --> 01:05:46,920 и тоа ми овозможува преку секој случај. 1106 01:05:46,920 --> 01:05:50,800 Ова се случува да ги достават до глупав PHP фајл наречен dump.php. 1107 01:05:50,800 --> 01:05:58,420 Сите тоа го прави е печатење на содржината на $ _GET само за дијагностички цели. 1108 01:05:58,420 --> 01:06:01,580 Тоа беше она што беше поднесена од страна на корисникот само сега. 1109 01:06:01,580 --> 01:06:05,010 Но, претпоставувам ние всушност сакате да се провери форма поднесување на корисникот. 1110 01:06:05,010 --> 01:06:06,530 Дозволете ми да одат во верзија 1. 1111 01:06:06,530 --> 01:06:11,420 Ова е form1.html. Тоа изгледа естетски само како лоша, но забележите колку фенси е. 1112 01:06:11,420 --> 01:06:15,450 Ако јас кликнете Регистрирај без соработуваат, јас се викна на. 1113 01:06:15,450 --> 01:06:17,320 "Мора да внесете вашата email адреса." 1114 01:06:17,320 --> 01:06:21,670 Во ред. Па дозволете ми да се обиде тоа. Значи malan@harvard.edu. Не е потребна лозинка. 1115 01:06:21,670 --> 01:06:25,100 Регистрирате. "Мора да внесете лозинка." Во ред. 1116 01:06:25,100 --> 01:06:28,470 Па јас ќе обезбеди лозинка за црвен. Регистрирате. 1117 01:06:28,470 --> 01:06:32,300 "Лозинките не се совпаѓаат." Морам да сега напишете црвен тука. 1118 01:06:32,300 --> 01:06:35,710 Јас случајно проверив тоа. Регистрирате. 1119 01:06:35,710 --> 01:06:39,860 "Мора да прифатите условите." Во ред. Се согласувам таму. Регистрирате. 1120 01:06:39,860 --> 01:06:43,700 И сега тоа ми го покажува дијагностички излез таму. 1121 01:06:43,700 --> 01:06:45,630 >> Така што едноставно се случи? 1122 01:06:45,630 --> 01:06:48,330 Имавме оваа способност да се провери форма поднесоци. 1123 01:06:48,330 --> 01:06:51,420 Всушност, ако не се нурне во pset 7, таму е се извини функција 1124 01:06:51,420 --> 01:06:54,620 што го прави доста лесно да се развикам на корисникот со порака на екранот. 1125 01:06:54,620 --> 01:06:57,580 Јас сум со користење на малку поинаков механизам, на алармирање функција, 1126 01:06:57,580 --> 01:07:03,690 која не е во функција и тоа е се насмеал на бидејќи тоа го прави многу грда корисникот пораки. 1127 01:07:03,690 --> 01:07:05,710 Но, да видиме што правам тука. 1128 01:07:05,710 --> 01:07:09,620 Ова е form1.html, и ќе забележите дека имам некои прилично запознаен синтакса: 1129 01:07:09,620 --> 01:07:12,920 телото таг, формата ознака, акција атрибут, метод атрибут. 1130 01:07:12,920 --> 01:07:17,050 Но забележите сум дадени моите форма единствен број за погодност. 1131 01:07:17,050 --> 01:07:19,190 Потоа имам е-маил областа чиј тип е текст, 1132 01:07:19,190 --> 01:07:23,780 полето за лозинка чиј тип е лозинката, потврда областа чиј тип е лозинка, 1133 01:07:23,780 --> 01:07:28,070 а потоа полето чие име е договор овде, тип е Обележувач. 1134 01:07:28,070 --> 01:07:30,380 А потоа имам копчето Submit. 1135 01:07:30,380 --> 01:07:33,050 Но забележите на врвот што повеќе имам. 1136 01:07:33,050 --> 01:07:35,810 Прво на сите, има уште една употреба на скрипта таг. 1137 01:07:35,810 --> 01:07:40,520 Ако имате некои JavaScript код во друга датотека, исто како и со CSS можете да го вклучат. 1138 01:07:40,520 --> 01:07:44,530 И да го направите тоа со скрипта извор, а потоа забележиш јас сум поврзување очигледно 1139 01:07:44,530 --> 01:07:50,349 да googleapis.com на многу долг пат, но чии името на датотеката завршува во jquery.min 1140 01:07:50,349 --> 01:07:52,420 за минимум. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery е супер популарен библиотека за JavaScript дека само прави да вклучите 1142 01:07:55,969 --> 01:07:58,230 сè повеќе и повеќе user-friendly за употреба. 1143 01:07:58,230 --> 01:08:00,610 Тоа е ефикасно стане де факто стандард. 1144 01:08:00,610 --> 01:08:04,090 Значи иако она што сте за да се види не е чист вклучите Javascript по себе, 1145 01:08:04,090 --> 01:08:09,340 тоа е библиотека на врвот на JavaScript многу сличен на CS50 библиотека е слој 1146 01:08:09,340 --> 01:08:13,670 на врвот на ниско ниво C код, реалноста е речиси секого на интернет го користи. 1147 01:08:13,670 --> 01:08:18,030 Значи тие не се обука тркала. Ова е само најдобра практика овие денови. 1148 01:08:18,030 --> 01:08:22,830 Сега забележите подолу што е мојата скрипта таг, и ќе забележите она што го направив тука. 1149 01:08:22,830 --> 01:08:27,450 Излегува дека jQuery прави нешто малку фенси. 1150 01:08:27,450 --> 01:08:29,660 JavaScript има долар знаци, но тие се бесмислени. 1151 01:08:29,660 --> 01:08:32,870 >> Тие се како буквата А или Б или Ц 1152 01:08:32,870 --> 01:08:36,670 jQuery едноставно ја усвои Конвенцијата или вид на предвидени тврдење со фактот 1153 01:08:36,670 --> 01:08:40,280 дека $ ќе биде нивниот посебен симбол. 1154 01:08:40,280 --> 01:08:44,950 Така што веднаш штом ќе се вчита оваа глобална вклучите Javascript-датотека се тука со сценариото ознака, 1155 01:08:44,950 --> 01:08:49,080 вие имате пристап до посебна глобалната променлива која се вика $. 1156 01:08:49,080 --> 01:08:53,009 Тоа е посоодветно наречена jQuery, но тоа не изгледа скоро како секси како $. 1157 01:08:53,009 --> 01:08:56,250 Но $ нема посебно значење. Во PHP имаше посебно значење. 1158 01:08:56,250 --> 01:08:58,440 Ти мораше да го имаат пред променлива. 1159 01:08:58,440 --> 01:09:01,670 Ова е само секси нешто што тие добија. 1160 01:09:01,670 --> 01:09:03,389 Што се случува овде? 1161 01:09:03,389 --> 01:09:08,830 Забележиш јас сум полагање на jQuery функцијата мојот глобалната променлива документот 1162 01:09:08,830 --> 01:09:10,860 а потоа јас го повикувам. подготвена. 1163 01:09:10,860 --> 01:09:15,480 Што jQuery суштина не е тоа ти овозможува да преземат некои ванила вклучите нешта 1164 01:09:15,480 --> 01:09:17,889 како документ објектот, прозорецот објект, 1165 01:09:17,889 --> 01:09:20,790 и ако го помине во на jQuery функцијата - 1166 01:09:20,790 --> 01:09:24,429 и повторно, да биде јасно, ова е функција наречена jQuery - 1167 01:09:24,429 --> 01:09:28,240 она што го прави тоа е ви се враќа специјална верзија на документот 1168 01:09:28,240 --> 01:09:30,700 кој има повеќе функционалност поврзани со неа. 1169 01:09:30,700 --> 01:09:34,760 Значи во суровини вклучите постои подготвени функција, 1170 01:09:34,760 --> 01:09:37,810 но ако помине документ на jQuery функцијата прв, 1171 01:09:37,810 --> 01:09:40,960 ви се враќа специјална верзија на документ објектот 1172 01:09:40,960 --> 01:09:43,030 кој има повеќе фенси функции. 1173 01:09:43,030 --> 01:09:48,230 И тоа е зошто луѓето се допаѓа. Тоа само прави работите полесно да се направи, како ние сме за да ја видите. 1174 01:09:48,230 --> 01:09:49,820 Значи она што не оваа линија на кодот значи? 1175 01:09:49,820 --> 01:09:52,690 Оваа линија на код овде значи кога документот е подготвен - 1176 01:09:52,690 --> 01:09:56,830 со други зборови, откако прелистувач е направено читањето на оваа датотека врвот до дното - 1177 01:09:56,830 --> 01:09:59,200 оди напред и да се изврши следнава функција. 1178 01:09:59,200 --> 01:10:03,540 Она што е навистина интересно во вклучите Javascript - и PHP има оваа, како и - 1179 01:10:03,540 --> 01:10:05,450 е анонимен функции. 1180 01:10:05,450 --> 01:10:10,560 Во JavaScript можете да прогласи функции кои немаат име, но тие не го имаат телото. 1181 01:10:10,560 --> 01:10:12,570 Забележи она што се случува овде. 1182 01:10:12,570 --> 01:10:16,220 >> Ова е функција наречена подготвени, и тоа само значи направите следново 1183 01:10:16,220 --> 01:10:20,220 кога целата веб-страница е подготвена, кога тоа е сите се чита во од серверот. 1184 01:10:20,220 --> 01:10:23,090 Што сакате да направите? Сакам да изврши дел од кодот. 1185 01:10:23,090 --> 01:10:27,120 Забележете дека ние не сакаме да се изврши овој код веднаш. 1186 01:10:27,120 --> 01:10:34,350 Ако јас изоставени ова, тоа би значело дека веднаш почнуваат извршување на овие линии на код. 1187 01:10:34,350 --> 01:10:39,040 Но, фактот дека јас велам не, не, не, заврши тоа во анонимен функција вака 1188 01:10:39,040 --> 01:10:43,000 значи не го изврши уште, јавете се на крајот. 1189 01:10:43,000 --> 01:10:45,430 Видовме овој момент пред во нашите претходни форма пример. 1190 01:10:45,430 --> 01:10:49,990 Што функција не ни се јавите на крајот, 500 милисекунди подоцна? Трепка. 1191 01:10:49,990 --> 01:10:51,480 Значи истата идеја. 1192 01:10:51,480 --> 01:10:53,950 Повторно, дури и ако ова изгледа малку чудно, само да сега за сега на верата 1193 01:10:53,950 --> 01:10:57,060 што да се изјасни анонимен функција која се вика на крајот, 1194 01:10:57,060 --> 01:11:01,720 Вие едноставно напишете функција () { 1195 01:11:01,720 --> 01:11:05,380 Значи она код одиме да се изврши на крајот? Следниве. 1196 01:11:05,380 --> 01:11:10,460 Тоа исто така изгледа малку ново, но тоа значи дека тука е jQuery функцијата, 1197 01:11:10,460 --> 01:11:13,430 и ова сега е кратенка. 1198 01:11:13,430 --> 01:11:18,830 Оваа програмка на HTML на дното на екранот, се разбира, има некои дрвото застапеност. 1199 01:11:18,830 --> 01:11:21,730 Тоа не е тоа. Ова е многу поинтересна од оваа здраво, свет пример. 1200 01:11:21,730 --> 01:11:25,210 Но, има некои дрво кое одговара на овој HTML. 1201 01:11:25,210 --> 01:11:28,910 Тоа ќе биде болка во вратот мора да спроведе некои вид на рекурзивна функција 1202 01:11:28,910 --> 01:11:34,380 да започне на root јазол, а потоа се најде на јазол чии број е регистрација. 1203 01:11:34,380 --> 01:11:38,340 Значи она што jQuery прави супер лесно за нас е буквално тоа. 1204 01:11:38,340 --> 01:11:43,000 Оди напред и да ми правиш div или каква било форма, без оглед на HTML елемент 1205 01:11:43,000 --> 01:11:45,820 има лична карта за регистрација. 1206 01:11:45,820 --> 01:11:52,440 Ова е еквивалентно на document.getElementById ("регистрација"). 1207 01:11:52,440 --> 01:11:54,170 >> Зошто луѓето како jQuery? 1208 01:11:54,170 --> 01:12:00,110 Затоа што тоа е пократок да напишеш. Но тоа е сè што е. Тоа е истата идеја. 1209 01:12:00,110 --> 01:12:02,630 Ме сфаќајте таг чиј проект е регистрација. 1210 01:12:02,630 --> 01:12:06,300 И кога тој таг, кој се случува да биде форма, се доставува, 1211 01:12:06,300 --> 01:12:08,300 оди напред и да ја извршите оваа код. 1212 01:12:08,300 --> 01:12:11,320 Значи, да се земе една изгледаат сега на тоа како правиме форма валидација. 1213 01:12:11,320 --> 01:12:15,950 Синтаксата е значително криптичната на прв, но она што се случува? 1214 01:12:15,950 --> 01:12:21,050 Ако оваа линија на кодот е вистина, јас одам да се развикам на корисникот за да го обезбеди неговото или нејзиниот е-мејл адреса. 1215 01:12:21,050 --> 01:12:22,970 Значи она што е оваа линија на кодот? 1216 01:12:22,970 --> 01:12:25,560 $ Значи jQuery. Сега забележите ова. 1217 01:12:25,560 --> 01:12:27,920 Ова е вид на како CSS. 1218 01:12:27,920 --> 01:12:33,370 Ако сте се нурна во CSS, сепак, ќе знаеш дека тоа значи дека елемент чиј проект е регистрација. 1219 01:12:33,370 --> 01:12:39,840 Просторот значи најдете дете или потомок на регистрација чие име е влез. 1220 01:12:39,840 --> 01:12:42,970 И тогаш тоа нешто во квадратни загради е малку филтер. 1221 01:12:42,970 --> 01:12:47,010 И дури и ако тоа изгледа криптичната, ова само значи одат на формата чија ID е регистрација, 1222 01:12:47,010 --> 01:12:51,230 одат на внесување елемент внатре во тоа чие име е-маил, 1223 01:12:51,230 --> 01:12:55,440 а потоа ја добие својата вредност, без оглед на неговата вредност се случува да биде - 1224 01:12:55,440 --> 01:12:59,670 asdf ако тоа е се што внесе или malan@harvard.edu ако тоа е она што го напишале. 1225 01:12:59,670 --> 01:13:05,250 Значи, ако вредноста на е-мејл областа форма на == ништо, се развикам на корисникот. 1226 01:13:05,250 --> 01:13:09,700 Друго, ако вредноста на полето за лозинка == ништо, се развикам на корисникот. 1227 01:13:09,700 --> 01:13:19,520 >> Друго, ако вредноста на полето за лозинка не е еднаква на вредноста на потврда поле, 1228 01:13:19,520 --> 01:13:22,850 која беше друга форма елемент, развикам на корисникот. 1229 01:13:22,850 --> 01:13:25,680 А потоа на крај - и оваа исто така, има некои нови синтаксата на свој, 1230 01:13:25,680 --> 01:13:29,270 но еднаш сте го виделе, тоа е барем малку повеќе разумни - 1231 01:13:29,270 --> 01:13:34,060 друго, ако форма чиј проект е регистрација има влезен елемент чие име е договор 1232 01:13:34,060 --> 01:13:39,720 и тоа се проверува, оди напред и да се развикам на корисникот. 1233 01:13:39,720 --> 01:13:42,520 Па јас целосно се признае ова е сосема огромна на прв поглед. 1234 01:13:42,520 --> 01:13:46,530 Тоа е многу нови синтакса. Но, сите на jQuery следи овие видови на дезени. 1235 01:13:46,530 --> 01:13:49,880 И искрено, јас дури и не знаат овој постоел до пред неколку минути. 1236 01:13:49,880 --> 01:13:53,640 Јас Googled "Како да се провери ако полето е проверено во jQuery?" 1237 01:13:53,640 --> 01:13:55,680 и ова е синтакса, бидејќи има различни начини на вршење на таа 1238 01:13:55,680 --> 01:13:58,010 со реалните суровини JavaScript код. 1239 01:13:58,010 --> 01:14:01,030 Така што на првата страница на проблемот Постави 7 нагласува, 1240 01:14:01,030 --> 01:14:04,500 pset 7 е многу вежба во bootstrapping себе 1241 01:14:04,500 --> 01:14:08,650 каде што се предвидени, се надевам, концептуална рамка со која ќе се справи со pset. 1242 01:14:08,650 --> 01:14:12,280 >> Но, како што е често случај со веб дизајн, тоа е до вас навистина да ѕиркаат наоколу, 1243 01:14:12,280 --> 01:14:16,680 вклучат фрагменти на кодот и примери од веб толку долго како што ги наведуваат 1244 01:14:16,680 --> 01:14:17,960 според условите на тој првиот лист, 1245 01:14:17,960 --> 01:14:21,460 и да сфати дека учење HTML, CSS, JavaScript, па дури и SQL 1246 01:14:21,460 --> 01:14:26,020 е навистина значи да се биде оваа at-home вежба како да почнеме да ги преземат овие обука тркала надвор. 1247 01:14:26,020 --> 01:14:29,150 И ќе сфати премногу има толку многу повеќе работи што можете да направите со интернет пребарувач. 1248 01:14:29,150 --> 01:14:33,790 Внатрешноста на повеќето од овие елементи постојат и други нешта наречени настан ракувачи. 1249 01:14:33,790 --> 01:14:37,140 И иако ние само погледна оние наречен onsubmit и onready, 1250 01:14:37,140 --> 01:14:40,310 можете да ги правите нештата како onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 како кога корисникот го допира клуч, можете да слушате за тоа и нагоре. 1252 01:14:43,410 --> 01:14:45,940 Gmail има кратенки на тастатурата. 1253 01:14:45,940 --> 01:14:49,490 Како работи Google спроведе кратенки на тастатурата како C за компонира? 1254 01:14:49,490 --> 01:14:54,120 Тие слушаат за настани, како што тие се нарекува, како onkeypress или onkeyup и onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Ако некогаш сте се движи глувчето над некој опција од менито 1256 01:14:56,360 --> 01:15:00,180 и одеднаш, Voila, мени се појавува или графички менува бојата, 1257 01:15:00,180 --> 01:15:01,920 како се прави тоа? 1258 01:15:01,920 --> 01:15:06,940 Наместо да слуша за onready или onsubmit, ги слушаш за onmouseover или onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Значи во кратки, со овие многу едноставна основите дека ние сме почнале да ја изгребат површината денес 1260 01:15:10,920 --> 01:15:13,940 а ние ќе се нурне во натамошниот да средата, имаш повеќе, 1261 01:15:13,940 --> 01:15:17,530 моќ за спроведување на видови на работи кои веќе сте запознаени со. 1262 01:15:17,530 --> 01:15:21,620 Значи, да заврши тука, и ние ќе продолжиме во средата. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]