1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. Акино: Ајде да почнеме. 3 00:00:10,430 --> 00:00:12,310 Значи ова е квиз 1. 4 00:00:12,310 --> 00:00:14,890 Еве некои високо ниво информации. 5 00:00:14,890 --> 00:00:19,915 На За страница за квизот е во овој URL-то, не CS50.net, иако тоа 6 00:00:19,915 --> 00:00:21,080 сè уште ќе работи. 7 00:00:21,080 --> 00:00:26,920 Тоа е CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Тоа е голема За страница, ти го кажувам каде и кога, имено следната среда 9 00:00:31,070 --> 00:00:32,100 во еден куп на соби. 10 00:00:32,100 --> 00:00:36,120 И од следната среда, јас значи два дена од сега. 11 00:00:36,120 --> 00:00:37,890 Сите овие информации е таму. 12 00:00:37,890 --> 00:00:39,110 Но, тоа е кумулативен. 13 00:00:39,110 --> 00:00:43,790 >> Па сè, од првата половина на година е потенцијално на квизот, 14 00:00:43,790 --> 00:00:50,780 затоа што навистина не може да го направи напредни работи во C без доколку условите и 15 00:00:50,780 --> 00:00:51,920 за јамки и слично. 16 00:00:51,920 --> 00:00:55,580 Но ќе има акцент на материјалот опфатен од Квиз 0, 17 00:00:55,580 --> 00:00:59,570 почнувајќи со structs и датотеката I / O. Тоа е типично повеќе 18 00:00:59,570 --> 00:01:01,620 предизвик од Квиз 0. 19 00:01:01,620 --> 00:01:03,870 Просечна оценка е обично пониски. 20 00:01:03,870 --> 00:01:05,980 Учат напорно. 21 00:01:05,980 --> 00:01:09,340 >> Додека учите, бидете сигурни да го користите CS50/discuss да ја објавите вашата прашања 22 00:01:09,340 --> 00:01:10,830 и прочитајте прашања на други луѓе. 23 00:01:10,830 --> 00:01:13,550 Па ако не се имате било какви прашања, се најавите и да прочитате 24 00:01:13,550 --> 00:01:14,580 прашања на вашите пријатели. 25 00:01:14,580 --> 00:01:16,560 Тие се веројатно добри прашања. 26 00:01:16,560 --> 00:01:17,730 И да ги преземат пракса тестови. 27 00:01:17,730 --> 00:01:20,750 Ние сме биле даваат тестови за седум или осум години. 28 00:01:20,750 --> 00:01:22,180 Сите тие се онлајн. 29 00:01:22,180 --> 00:01:25,540 Иднината прашања се слични на старите прашања. 30 00:01:25,540 --> 00:01:26,550 Тоа е како ние ги прават. 31 00:01:26,550 --> 00:01:27,740 >> Квиз уште не постои. 32 00:01:27,740 --> 00:01:28,670 Никој од нас не го видел. 33 00:01:28,670 --> 00:01:32,496 Но, тоа ќе изгледа претходната квизови. 34 00:01:32,496 --> 00:01:36,500 За овој преглед сесија, ова не е исцрпна листа на теми. 35 00:01:36,500 --> 00:01:40,740 Вие не може само да присуствуваат на ова, а потоа да биде совршено подготвен за квизот. 36 00:01:40,740 --> 00:01:43,330 Во спротивно, тоа не би било дека многу од квизот. 37 00:01:43,330 --> 00:01:46,270 И ова е, исто така, не мора да значи сè што треба да знаете за какви било 38 00:01:46,270 --> 00:01:46,970 дадена тема. 39 00:01:46,970 --> 00:01:50,520 Тоа е со цел да можете да се изложуваат на нештата сме покриени, ве потсетам што ние 40 00:01:50,520 --> 00:01:53,070 покриени, како и начинот на која ние ја покриваше. 41 00:01:53,070 --> 00:01:57,030 Но ќе мора да оди подалеку и подлабоко кога ќе учат да провериш 42 00:01:57,030 --> 00:02:00,230 дека знаете сè за било која дадена тема и дека сте пополнети 43 00:02:00,230 --> 00:02:03,320 сите агли, кои беа опфатени во предавање. 44 00:02:03,320 --> 00:02:07,980 >> Квиз белешки ти кажам да одат во писарот белешки, часовник предавање видео клипови. 45 00:02:07,980 --> 00:02:10,155 Тоа е добар начин да бидете сигурни дека сте опфатени сите ваши бази. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Така да започнете, кога сум направил овие слајдови, јас се обидував да се стави каде што го најдов 48 00:02:17,340 --> 00:02:18,350 информации. 49 00:02:18,350 --> 00:02:22,890 Значи за датотеката I / O, на пример, недела 7, Понеделник предавање, и испратени 50 00:02:22,890 --> 00:02:27,960 Дел 6 и проблем Постави сите имаат информации за датотеката I / O. Јас го направив 51 00:02:27,960 --> 00:02:28,840 ова за секоја тема. 52 00:02:28,840 --> 00:02:33,010 Па оние наслов слајдови може бидат корисни за вас. 53 00:02:33,010 --> 00:02:38,950 >> Значи тука имаме датотеката I / O. Се сеќавам, во Проблемот Намести 5, ние се користат fopen, запишам, 54 00:02:38,950 --> 00:02:41,210 запишување, fread и fseek. 55 00:02:41,210 --> 00:02:48,090 Ја обнови 30ish JPEG слики и ја менува големината и збркана со 56 00:02:48,090 --> 00:02:50,320 bitmaps, треба да биде прилично запознаен со овие функции 57 00:02:50,320 --> 00:02:51,830 и како тие работат. 58 00:02:51,830 --> 00:02:54,420 Ако не сте запознаени, дефинитивно ги разгледаме. 59 00:02:54,420 --> 00:02:56,860 И бидете сигурни дека ќе се разбере она различни аргументи се, 60 00:02:56,860 --> 00:02:58,260 кога тие се користат. 61 00:02:58,260 --> 00:03:03,620 >> Но заедничка датотека поврзани со грешки може да биде побарано за тоа - 62 00:03:03,620 --> 00:03:07,270 Па, ако сте заборавиле да проверите дали fopen всушност работел пред да одите во 63 00:03:07,270 --> 00:03:08,350 менувате датотека. 64 00:03:08,350 --> 00:03:09,760 Тоа би можело да биде лошо. 65 00:03:09,760 --> 00:03:13,560 Ако сте заборавиле да запишам датотеката дека сте fopened, тоа е слично 66 00:03:13,560 --> 00:03:14,400 меморија излегуваат во јавноста. 67 00:03:14,400 --> 00:03:15,980 Тоа е прилично лошо. 68 00:03:15,980 --> 00:03:18,670 И заборавање да се провери ако сте до крајот на датотеката пред да 69 00:03:18,670 --> 00:03:19,790 почнам да пишувам на него. 70 00:03:19,790 --> 00:03:22,320 >> Значи, ако ви кажам, еј, јас сум на на крајот на датотеката. 71 00:03:22,320 --> 00:03:23,750 Дај ми уште 5 бајти. 72 00:03:23,750 --> 00:03:27,370 Па, тоа е веројатно нема да работат надвор од начинот на кој се очекува. 73 00:03:27,370 --> 00:03:30,930 Тоа е навистина за датотеката I / O, бидејќи ние го сторивме тоа голем дел од неа 74 00:03:30,930 --> 00:03:32,300 со проблемот во собата. 75 00:03:32,300 --> 00:03:36,000 Значи, ако сфати што се случува во проблем Постави 5, се сеќаваш на bitmats 76 00:03:36,000 --> 00:03:40,090 и JPEG слики, тогаш сте веројатно сите во собата за датотеката I / O. Ако тоа е малку 77 00:03:40,090 --> 00:03:44,770 нејасни, дефинитивно видиш дека проблем во собата и поврзани материјал. 78 00:03:44,770 --> 00:03:51,110 >> Structs беа тема кои беа на линија помеѓу Квиз 0 и Квиз 1. 79 00:03:51,110 --> 00:03:53,090 Не сосема направи намалување за Квиз 0. 80 00:03:53,090 --> 00:03:57,040 Па тие дефинитивно ќе биде на Квиз 1, недела 7, понеделник. 81 00:03:57,040 --> 00:03:58,150 Што е struct? 82 00:03:58,150 --> 00:04:00,250 Еве ние се покаже на struct. 83 00:04:00,250 --> 00:04:03,140 Тоа е како нов тип. 84 00:04:03,140 --> 00:04:07,940 Тоа е како сад за повеќе полиња. 85 00:04:07,940 --> 00:04:12,970 >> Во овој случај, ние сме прогласи struct студент кој има две полиња - 86 00:04:12,970 --> 00:04:17,750 низа, дека ние сме повикувајќи име и на int, дека ние сме повикувајќи возраст. 87 00:04:17,750 --> 00:04:21,450 Па кога ќе помине околу студенти или јас менувате студенти, јас ќе бидам во можност да 88 00:04:21,450 --> 00:04:24,430 пристап до нивното име и возраст. 89 00:04:24,430 --> 00:04:26,670 Ајде да погледнеме во некои код за тоа. 90 00:04:26,670 --> 00:04:29,090 Овде можеме да видиме дека сум прогласена за студент на, исто како и 91 00:04:29,090 --> 00:04:30,300 Изјавувам секоја променлива - 92 00:04:30,300 --> 00:04:32,430 int x, int y, и така натаму. 93 00:04:32,430 --> 00:04:34,180 >> Тука е студент на. 94 00:04:34,180 --> 00:04:37,370 Тој започнува со ништо во неговиот полиња. 95 00:04:37,370 --> 00:04:38,240 Па ајде да ги постави. 96 00:04:38,240 --> 00:04:40,681 Ја поставите полиња на struct со точка. 97 00:04:40,681 --> 00:04:43,780 Па јас сум рече дека овде s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 И s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Можете исто така да се ажурира полиња на ист начин дека ќе се ажурира 100 00:04:48,500 --> 00:04:49,550 вредноста на променлива. 101 00:04:49,550 --> 00:04:53,270 Па сакам да го сменам името од RJ со нема периоди да R.J. напишани на 102 00:04:53,270 --> 00:04:54,540 правилен начин. 103 00:04:54,540 --> 00:04:58,890 Тоа ќе биде s.name = RJ, исто како што се вели оригинално. 104 00:04:58,890 --> 00:05:00,030 А потоа можете да им пристапите. 105 00:05:00,030 --> 00:05:00,930 >> Па ние сме ги поставиле. 106 00:05:00,930 --> 00:05:01,840 Ние ги нема. 107 00:05:01,840 --> 00:05:03,890 Исто така можете да им пристапите во истиот начин. 108 00:05:03,890 --> 00:05:09,330 Па еве, јас сум печатење R.J. Е 21 години. 109 00:05:09,330 --> 00:05:14,700 И јас сум пристапуваат тие вредности со s.name и s.age. 110 00:05:14,700 --> 00:05:17,040 Значи тоа е пристапот structs со точка нотација. 111 00:05:17,040 --> 00:05:17,850 Да, прашање? 112 00:05:17,850 --> 00:05:21,176 >> Публика: Дали постои причина за претходниот слајд дека не сте се стави 113 00:05:21,176 --> 00:05:24,848 студент на врвот линија, како typedef struct студент, а потоа 114 00:05:24,848 --> 00:05:25,840 студент на крајот? 115 00:05:25,840 --> 00:05:29,040 >> R.J. Акино: Значи, прашањето е, на овој слајд, ние обично се гледа 116 00:05:29,040 --> 00:05:32,400 typedef struct јазол, а потоа полиња на struct и 117 00:05:32,400 --> 00:05:34,250 тогаш зборот јазол. 118 00:05:34,250 --> 00:05:37,790 И како дојде тука не реков, typedef struct студент, а потоа 119 00:05:37,790 --> 00:05:39,820 полиња на struct, а потоа студент? 120 00:05:39,820 --> 00:05:44,310 Причината е во тоа што јас не треба да се пристап до неа внатрешноста на struct. 121 00:05:44,310 --> 00:05:46,270 Па тоа е во ред да го оставиме без име. 122 00:05:46,270 --> 00:05:49,210 Јас само може да го оставиме тоа како анонимен struct. 123 00:05:49,210 --> 00:05:53,130 >> Причината поради која го го направи тоа за поврзани листи и работи е затоа што во тебе треба 124 00:05:53,130 --> 00:05:55,360 да повикување на struct јазли ѕвезда. 125 00:05:55,360 --> 00:05:58,220 Па на struct мора да има име, па можете да имате пристап до него подоцна. 126 00:05:58,220 --> 00:05:59,540 Тоа е мал детал. 127 00:05:59,540 --> 00:06:04,750 Но обично ќе видите typedef struct тркалезните загради, ако не треба 128 00:06:04,750 --> 00:06:08,720 името и typedef struct некои име проследено со големи загради ако сакате 129 00:06:08,720 --> 00:06:09,520 треба името. 130 00:06:09,520 --> 00:06:12,070 Па тоа е добро прашање. 131 00:06:12,070 --> 00:06:17,000 >> И на таа точка, тежнееме да ги менувате structs и помине околу structs од 132 00:06:17,000 --> 00:06:18,680 референца, а не од вредност. 133 00:06:18,680 --> 00:06:21,940 Па ние само ќе помине околу покажувачи на structs наместо поминува низ 134 00:06:21,940 --> 00:06:23,150 structs себе. 135 00:06:23,150 --> 00:06:28,050 Па ти си многу често ќе биде користење, во овој случај, студентот * или 136 00:06:28,050 --> 00:06:34,150 struct јазол * или јазол *, наместо надвор студенти или јазли. 137 00:06:34,150 --> 00:06:39,350 Па еве, јас сум рече, во ред, променлива кон меморија се случува да биде на адресата на е. 138 00:06:39,350 --> 00:06:45,570 Тоа се случува да биде на покажувачот на студентот R.J. 139 00:06:45,570 --> 00:06:48,965 >> Па ние може да се добие на овие полиња исто како што ние се ништо. 140 00:06:48,965 --> 00:06:51,460 Прво, проект повикување на покажувачот да се добие на struct. 141 00:06:51,460 --> 00:06:55,530 Тоа е * кон меморија, а потоа точка, а потоа возраст. 142 00:06:55,530 --> 00:06:58,790 Така да пристапите на поле, и јас сум ажурирани сега до 22, бидејќи, да 143 00:06:58,790 --> 00:07:00,860 да речеме, тоа беше мојот роденден. 144 00:07:00,860 --> 00:07:03,990 Има кратенка синтакса користење на стрелките тука. 145 00:07:03,990 --> 00:07:07,060 Па кон меморија стрелките возраст е само исто како * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Сега, тоа е нешто што треба да запаметат и се сеќавам. 148 00:07:11,550 --> 00:07:15,010 >> Го користат многу во pset6, на правопис pset. 149 00:07:15,010 --> 00:07:18,350 Но, ова е, всушност, она што се случува на под хауба. 150 00:07:18,350 --> 00:07:20,500 Тоа е dereferencing покажувачот а потоа пристап до неа. 151 00:07:20,500 --> 00:07:21,432 Прашање? 152 00:07:21,432 --> 00:07:22,682 >> ПУБЛИКАТА: [нечујни]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. Акино: Значи зошто сме користење совети како structs, наместо на 155 00:07:28,060 --> 00:07:29,500 structs себе? 156 00:07:29,500 --> 00:07:33,740 Причината би било ако сте поминува на struct до некоја функција, веројатно 157 00:07:33,740 --> 00:07:36,900 сакаат да го поминат околу само 4 или така бајти кои претставуваат покажувач, како 158 00:07:36,900 --> 00:07:40,375 за разлика од потенцијално 30 или 40 бајти кои се на struct. 159 00:07:40,375 --> 00:07:44,410 Така поминува нешто на функција е полесно кога нешто 160 00:07:44,410 --> 00:07:48,230 е помала во кратки. 161 00:07:48,230 --> 00:07:49,074 Прашање? 162 00:07:49,074 --> 00:07:53,026 >> Публика: Може да се споменат овој на почетокот, но постојат 163 00:07:53,026 --> 00:07:56,000 други слајдови врз [нечујни]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. Акино: Овие слајдови ќе биде после прегледот седница. 165 00:07:58,960 --> 00:08:00,210 Ние ќе ги објавите на веб-сајтот. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Па преместување и се движат на малку побрзо, ние ќе зборуваме за податоци 168 00:08:06,870 --> 00:08:07,350 структури. 169 00:08:07,350 --> 00:08:08,040 Постојат многу. 170 00:08:08,040 --> 00:08:10,080 Ние опфатени еден куп од нив. 171 00:08:10,080 --> 00:08:12,500 Тука е она што треба да се разбере за податочна структура. 172 00:08:12,500 --> 00:08:15,590 >> Вие навистина треба да се разбере на високо ниво што секоја структура е. 173 00:08:15,590 --> 00:08:21,190 Можете ли да објасните на англиски јазик за да ги пријател кој не е донесена CS50 како 174 00:08:21,190 --> 00:08:25,580 ние сме организирање нашите податоци и зошто ние би се користи нешто на овој начин? 175 00:08:25,580 --> 00:08:26,990 Тоа е нешто што. 176 00:08:26,990 --> 00:08:29,650 Нешто две, се разбере на имплементација. 177 00:08:29,650 --> 00:08:34,270 Па да се разбере како да ги користат овие нешта во В И ние ќе се случува во текот на овој. 178 00:08:34,270 --> 00:08:39,030 >> А потоа нешто три ќе бидат знае работи пати и на ограничувањата на 179 00:08:39,030 --> 00:08:40,470 различни структури што го користите. 180 00:08:40,470 --> 00:08:44,059 Па да се разбере зошто би користеле хеш табелата наместо низа. 181 00:08:44,059 --> 00:08:49,570 Се разбере колку брзо, во просек, пристапуваат хаш табелата е. 182 00:08:49,570 --> 00:08:54,010 Се разбере она што операции се брзо на поврзана листа, но бавно на низи и 183 00:08:54,010 --> 00:08:56,080 обратно. 184 00:08:56,080 --> 00:08:59,780 Па да се разбере тоа, ќе треба да се разбере Биг-О нотација само да знаете 185 00:08:59,780 --> 00:09:01,310 Како да се зборува за овие видови на нештата. 186 00:09:01,310 --> 00:09:02,700 И ние ќе зборуваме за тоа. 187 00:09:02,700 --> 00:09:06,040 >> Значи прво нешто, поврзани листи. 188 00:09:06,040 --> 00:09:07,770 Тука е на високо ниво слика на поврзаните листа. 189 00:09:07,770 --> 00:09:08,830 Ние ја прикажете во класата. 190 00:09:08,830 --> 00:09:11,670 Ние обично имаат 10 луѓе стои на сцената. 191 00:09:11,670 --> 00:09:16,790 Но ние имаме серија на јазли, каде што секоја јазол има некои вредност и покажувач 192 00:09:16,790 --> 00:09:18,610 на своите следната вредност. 193 00:09:18,610 --> 00:09:21,730 Па да се добие од еден јазол кон следниот, ќе речеме, дај ми следниот јазол. 194 00:09:21,730 --> 00:09:22,530 Имате тој јазол. 195 00:09:22,530 --> 00:09:23,770 Дај ми го следниот јазол. 196 00:09:23,770 --> 00:09:24,400 Имате тој јазол. 197 00:09:24,400 --> 00:09:28,790 Дај ми го следниот јазол и така натаму додека нема јазол лево. 198 00:09:28,790 --> 00:09:31,850 >> Па продолжи да зборува за тоа на високо ниво. 199 00:09:31,850 --> 00:09:34,100 Тоа е многу лесно да вметнете работи во поврзана листа. 200 00:09:34,100 --> 00:09:36,010 Ако не се грижат за редот, можете само да го испуштите 201 00:09:36,010 --> 00:09:36,840 правото на почетокот. 202 00:09:36,840 --> 00:09:38,520 Тоа е постојана време. 203 00:09:38,520 --> 00:09:39,900 Но тоа е тешко да се најде вредноста. 204 00:09:39,900 --> 00:09:43,060 Ако се обидуваш да прашам, е седум во мојата листа? 205 00:09:43,060 --> 00:09:44,740 Мора да се оди преку секој вредност. 206 00:09:44,740 --> 00:09:45,680 Дали е ова седум? 207 00:09:45,680 --> 00:09:46,610 Дали е ова седум? 208 00:09:46,610 --> 00:09:47,770 Дали е ова седум? 209 00:09:47,770 --> 00:09:48,690 Дали е ова седум? 210 00:09:48,690 --> 00:09:49,830 Одново и одново. 211 00:09:49,830 --> 00:09:51,520 И тоа е О (n). 212 00:09:51,520 --> 00:09:53,800 Па кога ќе студираат за квизот, споредете го ова со низи. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Е тоа во ред? 215 00:09:58,220 --> 00:09:59,220 Светлата отиде темни. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Кога е поврзана листа подобро? 218 00:10:02,400 --> 00:10:04,640 Кога е низа подобро? 219 00:10:04,640 --> 00:10:06,670 Па ајде да погледнеме некои код. 220 00:10:06,670 --> 00:10:08,960 Тука е потенцијален јазол. 221 00:10:08,960 --> 00:10:09,770 Тоа е struct. 222 00:10:09,770 --> 00:10:12,220 Што има int n, кои ќе биде нашата вредност. 223 00:10:12,220 --> 00:10:17,780 И има struct јазол * Напред, кои е нашата покажувач кон следниот јазол. 224 00:10:17,780 --> 00:10:23,040 Па еве, можеме да видиме дека ние се случи да се стави int во нашата јазол. 225 00:10:23,040 --> 00:10:27,850 Но, ако ова беа поврзани листа на знак Ѕвездите или поврзано листа на плови, ние 226 00:10:27,850 --> 00:10:28,820 целосно да го направите тоа премногу. 227 00:10:28,820 --> 00:10:33,110 >> Се сеќавам во pset6, веројатно имаше поврзана листа на знак ѕвезди или само 228 00:10:33,110 --> 00:10:34,360 статички знак низи. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Да ги погледнеме тука, на операција. 231 00:10:39,040 --> 00:10:43,570 Затоа сакаме да вметнете нова n во нашиот поврзана листа. 232 00:10:43,570 --> 00:10:48,940 Ние почнете да излегува со глава покажувач, кој е покажувач на овој јазол кој има 233 00:10:48,940 --> 00:10:53,460 вредноста на n и следната на показател дека поени за да овој јазол е вредноста на 234 00:10:53,460 --> 00:10:57,760 n и следната од нула, бидејќи тоа е последната јазол. 235 00:10:57,760 --> 00:11:00,440 Па во интерес на времето, јас ќе стави сите на кодот на екранот. 236 00:11:00,440 --> 00:11:03,130 И ние ќе одиме низ него неколку линии во исто време. 237 00:11:03,130 --> 00:11:05,790 >> Па овде е кодот. 238 00:11:05,790 --> 00:11:07,560 Се надевам дека тоа е читлива. 239 00:11:07,560 --> 00:11:11,275 Првото нешто што го правиме е ние Примерок нов јазол. 240 00:11:11,275 --> 00:11:15,105 Па тоа го прави покажувач кон нов јазол дека сосема не се ништо во собата 241 00:11:15,105 --> 00:11:16,450 во него уште. 242 00:11:16,450 --> 00:11:19,580 Ние се провери да бидете сигурни дека новиот јазол не е нула. 243 00:11:19,580 --> 00:11:22,220 Инаку, ние треба да се откажат. 244 00:11:22,220 --> 00:11:27,680 Па го провериле тоа, ние сега Нагодете вредности во јазол. 245 00:11:27,680 --> 00:11:31,520 Па ние се стави на нови n во нашиот n област. 246 00:11:31,520 --> 00:11:36,050 И ние во собата за следната покажувачот да се укаже на оригиналниот главата, така што можеме да 247 00:11:36,050 --> 00:11:38,900 сега се вметнува оваа јазол во нашата листа. 248 00:11:38,900 --> 00:11:44,600 >> Конечно, имаме глобалната точка глава за нашите нови јазол, така што ако ние требаше да 249 00:11:44,600 --> 00:11:50,300 со почеток во главата, ние ќе бидеме во овој нови првиот јазол наместо 250 00:11:50,300 --> 00:11:51,560 стариот прв јазол. 251 00:11:51,560 --> 00:11:55,320 И кога оваа функција излегува, на променлива нов јазол повеќе не постои, 252 00:11:55,320 --> 00:11:57,130 поради тоа што беше локално до функција. 253 00:11:57,130 --> 00:11:59,770 Значи ова е држава на светот. 254 00:11:59,770 --> 00:12:03,570 Нашата глобална главата укажува на нашите нови прв јазол, што укажува на нашите 255 00:12:03,570 --> 00:12:06,346 оригиналниот првиот јазол, кои точки на јазол после тоа. 256 00:12:06,346 --> 00:12:09,790 >> Тоа беше вметнување. 257 00:12:09,790 --> 00:12:12,150 Се надевам дека е релативно лесно да се следат. 258 00:12:12,150 --> 00:12:14,300 Кога се двоумите, нацрта слика. 259 00:12:14,300 --> 00:12:17,820 Па сметам дека зборува за поврзани листи и да гледа во 260 00:12:17,820 --> 00:12:19,870 код е многу не корисен. 261 00:12:19,870 --> 00:12:23,790 Додека гледа во сликата на поврзани листа ми дозволува да мислам, ох, толку 262 00:12:23,790 --> 00:12:24,970 Имам овој јазол тука. 263 00:12:24,970 --> 00:12:28,980 Но, ако јас се ажурира дека покажувач, тој завршува исклучени. 264 00:12:28,980 --> 00:12:34,340 И на Си ја заборавив каде јазол оди. 265 00:12:34,340 --> 00:12:35,390 И кодот излегува. 266 00:12:35,390 --> 00:12:37,830 И имаш повеќе јазли кои се исклучени. 267 00:12:37,830 --> 00:12:39,970 А вие не заврши со листата што го сакате. 268 00:12:39,970 --> 00:12:43,320 >> Значи, ако се подготви на слика и направете го тоа чекор по чекор, се надевам, ќе видите 269 00:12:43,320 --> 00:12:46,840 правилен ред на нештата во однос на ажурирање на совети како да бидете сигурни дека 270 00:12:46,840 --> 00:12:48,830 дека листата доаѓа заедно. 271 00:12:48,830 --> 00:12:51,240 Внеси е релативно јасна. 272 00:12:51,240 --> 00:12:55,210 А покомплициран еден ќе биде вметнување во сортирани листа. 273 00:12:55,210 --> 00:12:59,980 А покомплициран функција е избришете и да се најде, па гледајќи низ листата да 274 00:12:59,980 --> 00:13:03,030 види дали нешто не е таму. 275 00:13:03,030 --> 00:13:07,220 Можеби сте го направи тоа во pset6 кога ќе влезе во вашиот хеш табелата и што рече ти, 276 00:13:07,220 --> 00:13:10,460 добро, е зборот јаболко во мојот поврзана листа? 277 00:13:10,460 --> 00:13:11,440 >> Па можеби веќе имаат направено ова. 278 00:13:11,440 --> 00:13:15,530 Но дефинитивно, се освежи вашата меморија и обидете се да reimplement најдете и 279 00:13:15,530 --> 00:13:19,150 reimplement избришете за поврзана листа. 280 00:13:19,150 --> 00:13:22,850 Забавно страна на белешка, има, исто така, двојно-поврзани листи, каде што треба 281 00:13:22,850 --> 00:13:27,490 совети кои упатуваат и напред и назад, така што ќе може да оди на 282 00:13:27,490 --> 00:13:29,270 следниот јазол и на претходниот јазол. 283 00:13:29,270 --> 00:13:33,860 И имаше прашање за минатата година квиз од тој вид, да разговараат 284 00:13:33,860 --> 00:13:36,190 за двојно поврзани листи. 285 00:13:36,190 --> 00:13:40,070 >> Сега, тоа е структура која сте релативно запознаени со тоа, бидејќи повеќето 286 00:13:40,070 --> 00:13:42,520 од вас веројатно ги користат на pset6. 287 00:13:42,520 --> 00:13:45,680 Тука е оној кој е малку помалку познати. 288 00:13:45,680 --> 00:13:51,020 Како од страна на белешка, јас мислам дека Квиз 1 е првенствено потешко отколку Квиз 0, бидејќи 289 00:13:51,020 --> 00:13:54,600 работи што правиш, ти не сте го направиле толку многу. 290 00:13:54,600 --> 00:13:58,100 Да се ​​стави дека на друг начин, за Квиз 0, сте напишале многу В И ние 291 00:13:58,100 --> 00:13:58,880 те праша за В 292 00:13:58,880 --> 00:14:02,310 >> За Квиз 1, ние ќе ве прашам за PHP и го вклучите Javascript-, кои ќе 293 00:14:02,310 --> 00:14:03,490 не се напишани како многу. 294 00:14:03,490 --> 00:14:07,590 Ние ќе ве замолам за C-кодот, кој вие не го имаат напишано како дел од, 295 00:14:07,590 --> 00:14:09,130 оваа напредна C нешта. 296 00:14:09,130 --> 00:14:11,520 Па дефинитивно, се практикуваат работи кои зборуваше за во предавањето што ќе 297 00:14:11,520 --> 00:14:15,260 не мора да направи на проблемот во собата. 298 00:14:15,260 --> 00:14:17,870 >> Зборувајќи за кои, да не имаат напишано магацинот на проблем во собата. 299 00:14:17,870 --> 00:14:19,610 Но, тоа беше во предавање. 300 00:14:19,610 --> 00:14:22,530 Тука е на високо ниво слика Купишта дека ќе покажеме секоја година. 301 00:14:22,530 --> 00:14:26,180 Тоа е магацинот на коцки во на Mather мензата. 302 00:14:26,180 --> 00:14:30,570 На високо ниво, Купишта се последна во, прв надвор податочна структура. 303 00:14:30,570 --> 00:14:32,040 Тоа значи дека си оди да се стави работите во - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, негативни 0. 305 00:14:36,400 --> 00:14:39,180 Една работа не можев да се рече - негативни 3, 0. 306 00:14:39,180 --> 00:14:40,250 Ќе се стави сите овие работи внатре 307 00:14:40,250 --> 00:14:42,940 А последната ќе се стави во е првиот оној кој се случува да излезе. 308 00:14:42,940 --> 00:14:44,170 >> Па имате два операции - 309 00:14:44,170 --> 00:14:45,260 им помогнам и поп. 310 00:14:45,260 --> 00:14:49,180 Сите пуштање во кои јас бев покажувајќи како ова се притисок. 311 00:14:49,180 --> 00:14:52,020 А потоа кога ќе стигнат во зграби нешто или да стигне на врвот да го зграби 312 00:14:52,020 --> 00:14:53,940 нешто, тоа е поп. 313 00:14:53,940 --> 00:14:55,540 Па ние ќе да се спроведе Купишта. 314 00:14:55,540 --> 00:14:57,870 И ние ги покажа во предавање користење на низи. 315 00:14:57,870 --> 00:14:59,550 Но можете да ги направите користење на поврзани листи. 316 00:14:59,550 --> 00:15:01,770 Комплет е концептуално податоци структура, не како 317 00:15:01,770 --> 00:15:03,760 спроведување специфични еден. 318 00:15:03,760 --> 00:15:06,420 >> Така што тоа ќе изгледа? 319 00:15:06,420 --> 00:15:07,970 Тоа ќе изгледа нешто како ова. 320 00:15:07,970 --> 00:15:10,840 Ќе треба на големината на цел број. 321 00:15:10,840 --> 00:15:16,000 И ќе имаат низа на вредности кои ние сме повикувајќи пепелниците, затоа што тоа е 322 00:15:16,000 --> 00:15:18,570 она што на сликата е за нас - int коцки - 323 00:15:18,570 --> 00:15:21,740 а потоа некои максималниот капацитет. 324 00:15:21,740 --> 00:15:27,100 Па што ќе им помогнам изгледа? 325 00:15:27,100 --> 00:15:33,250 Па, ако имаме магацинот s, а потоа да се поттикнат нешто врз, ние ќе ја добие 326 00:15:33,250 --> 00:15:34,620 големината на s. 327 00:15:34,620 --> 00:15:42,270 И дека ќе биде следната отворена самото место на нашата низа. 328 00:15:42,270 --> 00:15:50,510 Значи, ако имаме три нешта во нашиот оџакот, тогаш пепелниците 3 ќе биде следната 329 00:15:50,510 --> 00:15:54,290 отворен место, бидејќи 0, 1, и 2 се веќе пополнети. 330 00:15:54,290 --> 00:16:01,790 >> Значи ќе стави вредност во s.trays [s.size], третото место. 331 00:16:01,790 --> 00:16:06,290 А потоа ние прираст s.size да се каже, еј, ние имавме три работи пред тоа. 332 00:16:06,290 --> 00:16:07,400 Сега, имаме четири. 333 00:16:07,400 --> 00:16:10,180 Значи следниот пат кога ќе се притисне, ќе бидете случува да се стави нешто во 4. 334 00:16:10,180 --> 00:16:15,560 Или следниот пат кога ќе поп, си оди да се погледне на 3 наместо 4 или whatever. 335 00:16:15,560 --> 00:16:18,000 А потоа ние ќе се вратат точно да се да речеме, еј, ние успеавме. 336 00:16:18,000 --> 00:16:19,160 Ова работел. 337 00:16:19,160 --> 00:16:22,060 Како правило на палецот, ако функција која е би требало да се вратат точно или 338 00:16:22,060 --> 00:16:26,370 лажни секогаш се враќа точно, можеби имаат направено нешто погрешно. 339 00:16:26,370 --> 00:16:28,350 Така го прави ова дело? 340 00:16:28,350 --> 00:16:32,400 >> Па, таа работи парична казна за 1, и 2 и 3, и 4, и пет. 341 00:16:32,400 --> 00:16:34,640 Но, да речеме јас стигнам до мојата капацитет. 342 00:16:34,640 --> 00:16:38,750 Јас тогаш сте работи во проблем, бидејќи ако големината е иста како и капацитетот, јас сум 343 00:16:38,750 --> 00:16:43,340 сега се обидуваат да се стави нешто во низа каде што јас немам простор. 344 00:16:43,340 --> 00:16:46,980 Значи кратко проверете, за да го надминете овој. 345 00:16:46,980 --> 00:16:51,630 Ако s.size == капацитет, враќање false. 346 00:16:51,630 --> 00:16:54,130 Инаку, одат и да го направи она што ние го сторивме. 347 00:16:54,130 --> 00:16:55,660 Па што друго би можеле да бараме за за Купишта? 348 00:16:55,660 --> 00:16:56,460 Што друго треба да учат? 349 00:16:56,460 --> 00:16:57,690 Што друго треба да се практикуваат? 350 00:16:57,690 --> 00:17:01,030 >> Па, спроведување поп. 351 00:17:01,030 --> 00:17:02,370 Ние веќе го сторија притисок. 352 00:17:02,370 --> 00:17:04,280 Јас ќе го поправам тоа. 353 00:17:04,280 --> 00:17:08,180 А имплементација не-низа, каде што користите поврзана листа, можеби. 354 00:17:08,180 --> 00:17:09,390 А имплементација не Инт. 355 00:17:09,390 --> 00:17:10,940 Ние го сторивме ints тука. 356 00:17:10,940 --> 00:17:11,880 Но, тоа би можело да се плови. 357 00:17:11,880 --> 00:17:13,010 Можев да бидам жици. 358 00:17:13,010 --> 00:17:14,290 Тоа би можело да се знак ѕвезди. 359 00:17:14,290 --> 00:17:17,960 Погледне во минатото квизови за видови на прашања ние сме праша за Купишта. 360 00:17:17,960 --> 00:17:20,000 >> Јас ќе кажам дека сме опфатени Купишта околу исто како што ние си ги опфатени во 361 00:17:20,000 --> 00:17:20,540 изминатите години. 362 00:17:20,540 --> 00:17:24,400 Па квиз прашања треба биде добар показател. 363 00:17:24,400 --> 00:17:27,010 Се движат напред, дури и побрзо, редици. 364 00:17:27,010 --> 00:17:28,200 Тие се како Купишта. 365 00:17:28,200 --> 00:17:29,960 Но тие се на прво место во, прв надвор. 366 00:17:29,960 --> 00:17:33,530 Ако сте британски, зборот на дното веројатно направи многу смисла за вас. 367 00:17:33,530 --> 00:17:36,390 Инаку, можеби ќе треба слушнал за тоа како линија. 368 00:17:36,390 --> 00:17:38,120 Тие работат како линијата во продавница на Apple. 369 00:17:38,120 --> 00:17:40,740 Првиот човек да се појавиш на 03:00 наутро е првиот 370 00:17:40,740 --> 00:17:42,880 лице да купат неговиот iPad. 371 00:17:42,880 --> 00:17:44,260 >> Значи имаме две операции - 372 00:17:44,260 --> 00:17:45,720 Стави во ред и dequeue. 373 00:17:45,720 --> 00:17:47,560 Стави во ред става некој во линија. 374 00:17:47,560 --> 00:17:50,070 Dequeue повлекува првиот лице надвор од линија. 375 00:17:50,070 --> 00:17:52,640 Повторно, може да се имплементираат со низа. 376 00:17:52,640 --> 00:17:54,880 Значи она што е на struct ние покажа во лекција? 377 00:17:54,880 --> 00:17:57,660 Тоа беше оваа. 378 00:17:57,660 --> 00:17:59,300 Повторно, броеви. 379 00:17:59,300 --> 00:18:02,020 Повторно, големината и оваа нова работа пред себе. 380 00:18:02,020 --> 00:18:04,880 Зошто постои нешто што се нарекува пред? 381 00:18:04,880 --> 00:18:07,050 Тоа е индексот на следната елемент за dequeue. 382 00:18:07,050 --> 00:18:12,210 Тоа е само внатрешно следење на првиот човек да се појавиш, така што можеме 383 00:18:12,210 --> 00:18:15,005 да го повлече кога треба да се. 384 00:18:15,005 --> 00:18:19,322 >> Дефинитивно се погледне на материјалите и обидете да се спроведе Стави во ред и dequeue 385 00:18:19,322 --> 00:18:21,700 кога ќе студираат за квизот. 386 00:18:21,700 --> 00:18:23,190 Важни нешта да се размислува за. 387 00:18:23,190 --> 00:18:27,260 Завиткување околу ако предната плус големина завршува поголем од капацитетот. 388 00:18:27,260 --> 00:18:32,670 Повторно, ако вашата структура е полна, ви се случува да имаат проблем. 389 00:18:32,670 --> 00:18:34,780 Хеш табели што сте виделе досега. 390 00:18:34,780 --> 00:18:39,820 Повеќето од вас веројатно спроведува овие на pset6. 391 00:18:39,820 --> 00:18:44,210 Тоа е структура која има за цел О (1) постојана време вметнување и O (1) 392 00:18:44,210 --> 00:18:46,430 постојана време збор. 393 00:18:46,430 --> 00:18:49,760 >> Во CS50, воведовме ова како низа на поврзани листи. 394 00:18:49,760 --> 00:18:53,690 Клучна компонента на хеш табелата е хеш функција. 395 00:18:53,690 --> 00:18:58,350 Па таа го претвора вашиот влез, да речеме, речникот збор, во голем број, 396 00:18:58,350 --> 00:18:59,560 кој ќе биде нашиот индекс. 397 00:18:59,560 --> 00:19:01,410 И ние ќе ја користат таа индекс во нашите низа. 398 00:19:01,410 --> 00:19:05,374 Па тука е една симпатична малку сликата од study.50.net. 399 00:19:05,374 --> 00:19:08,060 Ние фрли сите зборови во нашите хеш функција. 400 00:19:08,060 --> 00:19:10,950 И хаш функција ни кажува каде да се стават овие зборови. 401 00:19:10,950 --> 00:19:15,650 >> Ова е сите големи во земјата каде што има само еден збор за секој слот. 402 00:19:15,650 --> 00:19:20,480 Но, како што се сеќавам од pset6, има се повеќе зборови отколку слотови. 403 00:19:20,480 --> 00:19:23,080 Значи она што се случува кога ќе добие судир? 404 00:19:23,080 --> 00:19:26,730 Наместо за чување на една вредност во, да речеме, хеш табелата 3, можете 405 00:19:26,730 --> 00:19:27,990 складира поврзана листа. 406 00:19:27,990 --> 00:19:32,900 И така наместо диња тука, ќе има поврзана листа, 407 00:19:32,900 --> 00:19:34,190 каде што првиот јазол е диња. 408 00:19:34,190 --> 00:19:35,260 И следниот јазол е мачка. 409 00:19:35,260 --> 00:19:38,970 И третиот јазол е судир, ајде да каже, затоа што сите овие зборови на проектот 410 00:19:38,970 --> 00:19:41,110 со C. 411 00:19:41,110 --> 00:19:42,700 >> Па повеќето од вас го направи ова за pset6. 412 00:19:42,700 --> 00:19:45,685 Ако не се направи хаш табелата на pset6 и сте се обиделе нешто како 413 00:19:45,685 --> 00:19:47,720 на TRIE, дефинитивно се видат хеш табели. 414 00:19:47,720 --> 00:19:50,650 Ако го направи тоа на pset6, дефинитивно видат хеш табели. 415 00:19:50,650 --> 00:19:53,610 И ако тоа го правеше на pset6 и тоа не работат надвор сосема во право и ти 416 00:19:53,610 --> 00:19:56,150 имаше многу проблеми со него, дефинитивно видат хеш табели. 417 00:19:56,150 --> 00:20:01,610 Па лекција навистина е дефинитивно видат хеш табели. 418 00:20:01,610 --> 00:20:07,130 >> Огромното малцинство сте се обиделе надвор се обидува на pset6. 419 00:20:07,130 --> 00:20:08,570 Високо ниво на сликата. 420 00:20:08,570 --> 00:20:15,150 Тоа е нешто како ова, каде што секој јазол има множество на деца, каде што секој 421 00:20:15,150 --> 00:20:17,100 дете одговара на писмото. 422 00:20:17,100 --> 00:20:20,520 И секој јазол, исто така вели: еј, јас сум еден збор. 423 00:20:20,520 --> 00:20:25,933 Така што во овој пример, зборот Максвел, ако ги следат М за А на 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L, а потоа следат една повеќе. 425 00:20:28,530 --> 00:20:32,800 И ќе го добиете овој симбол, делта, која ние значи да значи ова е зборот. 426 00:20:32,800 --> 00:20:34,780 Па Максвел е зборот. 427 00:20:34,780 --> 00:20:38,430 Овие делти се во текот означување кои работи се зборови, а кои 428 00:20:38,430 --> 00:20:40,360 работите не се. 429 00:20:40,360 --> 00:20:46,400 >> Па во pset6, податоците ние се чуваат заедно со било кој од нашите јазли беше "Јас сум 430 00:20:46,400 --> 00:20:52,630 збор. "И кул работа во врска со обиди е тие демонстрираат вметнување и 431 00:20:52,630 --> 00:20:55,080 Пребарување во О (должина на зборот). 432 00:20:55,080 --> 00:20:59,450 Па само да се добие преку Максвел, тоа е M-A-X-W-E-L-L. Значи седум или осум - 433 00:20:59,450 --> 00:21:00,360 Јас не може да смета - 434 00:21:00,360 --> 00:21:03,920 чекори за да се стигне до крајот и проверете работи надвор. 435 00:21:03,920 --> 00:21:06,800 Толку брзо имплементација тука. 436 00:21:06,800 --> 00:21:10,230 Роб помина низ поврзани листата во неговата посмртна. 437 00:21:10,230 --> 00:21:11,600 Па провери тоа. 438 00:21:11,600 --> 00:21:11,720 Жал. 439 00:21:11,720 --> 00:21:13,240 Помина низ TRIE во неговата посмртна. 440 00:21:13,240 --> 00:21:14,260 Па провери тоа. 441 00:21:14,260 --> 00:21:24,410 >> Но вие во основа имаат секој јазол има 27 покажувачи на следниот јазли и еден 442 00:21:24,410 --> 00:21:27,050 Boolean за сум јас збор. 443 00:21:27,050 --> 00:21:31,530 Проверете посмртна на Rob за тоа како Ова всушност е имплементирано. 444 00:21:31,530 --> 00:21:34,750 Нашата конечна структура, нашите дрвја и бинарни пребарување дрвја. 445 00:21:34,750 --> 00:21:41,530 Па гледајќи овие, овие беа опфатени неодамна Недела 8, понеделник. 446 00:21:41,530 --> 00:21:46,960 Дрвото е сличен на TRIE, освен што не мора да имаат 27 јазли на 447 00:21:46,960 --> 00:21:47,500 секоја точка. 448 00:21:47,500 --> 00:21:52,820 А вие не ја имаат оваа податоци во секоја чекор што го означува дали - 449 00:21:52,820 --> 00:21:54,030 патот не е важно. 450 00:21:54,030 --> 00:22:00,870 Со оглед на тоа TRIE, на патот од врвот до дното, Максвел, е важно за нас. 451 00:22:00,870 --> 00:22:05,270 >> Но секој јазол има повеќе деца, можеби. 452 00:22:05,270 --> 00:22:07,290 Имаме некои повеќе речник. 453 00:22:07,290 --> 00:22:09,530 Коренот на дрвото е на самиот врв. 454 00:22:09,530 --> 00:22:12,520 И велиме дека многу bottommost јазли кои немаат 455 00:22:12,520 --> 00:22:14,530 децата се лисја. 456 00:22:14,530 --> 00:22:18,040 Па како TRIE, дрво е структура на јазли. 457 00:22:18,040 --> 00:22:21,490 А заеднички тип на дрво дека ние ќе да се зборува за е бинарно дрво, каде што 458 00:22:21,490 --> 00:22:26,040 секој јазол нема деца или едно дете или две деца. 459 00:22:26,040 --> 00:22:28,890 Значи оваа слика тука не е бинарни дрва, бидејќи 460 00:22:28,890 --> 00:22:32,890 јазол 3 има три деца. 461 00:22:32,890 --> 00:22:38,140 >> Но, ако бевме да ги игнорира овие, остатокот тоа е бинарно дрво поради тоа што 462 00:22:38,140 --> 00:22:43,200 покажува на имотот што секој јазол има нула, еден или две деца. 463 00:22:43,200 --> 00:22:46,400 Па, како би можеле да го изразат ова во кодот? 464 00:22:46,400 --> 00:22:51,460 Ние би можеле да имаат еден јазол каде секој јазол има цел број во него, како и 465 00:22:51,460 --> 00:22:55,590 како покажувач до дрвото на левата и покажувач кон дрвото на 466 00:22:55,590 --> 00:22:59,510 право, па двете деца. 467 00:22:59,510 --> 00:23:00,880 Како е ова корисно? 468 00:23:00,880 --> 00:23:05,740 Па, ако се направи правила за тоа каде ние стави јазли, може да се направи за пребарување побрзо. 469 00:23:05,740 --> 00:23:10,630 >> Па постои концептот на бинарни пребарување дрво, каде што сите јазли на 470 00:23:10,630 --> 00:23:14,420 лево поддрво имаат помала вредност од јазол ние барате. 471 00:23:14,420 --> 00:23:17,880 И сите јазли на десната поддрво имаат поголема вредност 472 00:23:17,880 --> 00:23:18,660 од коренот јазол. 473 00:23:18,660 --> 00:23:20,670 Сега, тоа изгледа како многу зборови. 474 00:23:20,670 --> 00:23:23,770 Одам да го стави во внатрешноста на двојно цитати и ќе покаже слика. 475 00:23:23,770 --> 00:23:27,010 Значи тука е пример за бинарен пребарување дрво. 476 00:23:27,010 --> 00:23:28,770 Видите дека ние започнуваме со 10. 477 00:23:28,770 --> 00:23:31,780 Сè што од лево на 10 е помал од тоа. 478 00:23:31,780 --> 00:23:33,130 И сè до правото е поголем од него. 479 00:23:33,130 --> 00:23:37,620 >> Но уште повеќе од тоа, секој јазол во дрвото изразува овој имот. 480 00:23:37,620 --> 00:23:42,110 Па јазол 7 има 3 до лево и 9 десно. 481 00:23:42,110 --> 00:23:44,440 Така што сите од нив се помали од 10. 482 00:23:44,440 --> 00:23:50,470 Но гледање на само оние, на 7 има 3 до левата и од 9 до неговото право. 483 00:23:50,470 --> 00:23:56,100 И слично, на десната страна, 15 има 14 неговата лева и 50 до неговото право. 484 00:23:56,100 --> 00:24:03,770 Па три јазли таму, 15, 14, и 50, се исто така валидни бинарно дрво 485 00:24:03,770 --> 00:24:05,480 или регуларна програма пребарување дрво. 486 00:24:05,480 --> 00:24:07,250 И сите тие се поголеми од 10. 487 00:24:07,250 --> 00:24:08,960 Па им е дозволено да бидат на десната таму. 488 00:24:08,960 --> 00:24:09,940 Дали постои прашање? 489 00:24:09,940 --> 00:24:12,580 >> Публика: Како да се справи кога имате два седум? 490 00:24:12,580 --> 00:24:12,850 >> R.J. Акино: Да. 491 00:24:12,850 --> 00:24:16,550 Како да се справи со двете вредности кои се исти? 492 00:24:16,550 --> 00:24:21,465 Некои бинарни пребарување дрвја се каже дека игнорираат дупликати, бидејќи целта е 493 00:24:21,465 --> 00:24:24,280 само да се каже, сум го видел овие работи досега. 494 00:24:24,280 --> 00:24:28,120 Некои бинарни пребарување дрвја може да се каже имаат брои внатрешноста на јазол. 495 00:24:28,120 --> 00:24:32,000 Други може да се каже дека сè до лево е помалку од или еднаков на. 496 00:24:32,000 --> 00:24:33,470 И сè до правото е поголема од. 497 00:24:33,470 --> 00:24:36,520 >> Тоа само зависи од тоа што Проблемот е што си решавање. 498 00:24:36,520 --> 00:24:40,840 Па во речник, на пример, може не би се грижеле за дупликати. 499 00:24:40,840 --> 00:24:41,490 Ќе ги фрли. 500 00:24:41,490 --> 00:24:44,719 Но некој друг проблем што може да се грижи. 501 00:24:44,719 --> 00:24:49,242 >> Публика: Дали е можно да имаат 1 до левата од 15, кои 502 00:24:49,242 --> 00:24:50,590 е помала од 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. Акино: Не 504 00:24:51,885 --> 00:24:56,570 Ако 14 тука беа 1, тоа би не биде валидна бинарни пребарување дрво, 505 00:24:56,570 --> 00:25:00,840 бидејќи сè на правото на 10 мора да биде поголема од него. 506 00:25:00,840 --> 00:25:02,300 И ние ќе се види зошто. 507 00:25:02,300 --> 00:25:07,960 Ако во земјата на пребарување мојата цел е да се најде 14, почнувам во коренот. 508 00:25:07,960 --> 00:25:08,500 Па гледам. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Ние ќе започне во коренот. 511 00:25:10,670 --> 00:25:12,500 Погледне во 10. 512 00:25:12,500 --> 00:25:16,050 >> Добро, 14, нашата цел, е поголем од 10. 513 00:25:16,050 --> 00:25:17,370 Па тоа мора да биде на десно. 514 00:25:17,370 --> 00:25:21,780 Ова е многу слична на целиот телефон книга работа која ја направивме, бинарната 515 00:25:21,780 --> 00:25:23,720 пребарување таму. 516 00:25:23,720 --> 00:25:26,430 Но, наместо на бинарни пребарување во низа, ние сме бинарни 517 00:25:26,430 --> 00:25:28,490 бараат во ова дрво. 518 00:25:28,490 --> 00:25:31,260 Па ние сме сè уште ги барам за 14. 519 00:25:31,260 --> 00:25:32,480 И 14 е помал од 15. 520 00:25:32,480 --> 00:25:36,430 Значи, ако тоа е во нашата дрво, тој мора да биде во оваа област тука. 521 00:25:36,430 --> 00:25:39,680 Тоа мора да биде на правото на 10 и од лево на 15. 522 00:25:39,680 --> 00:25:42,250 >> И така ние се провери овој јазол. 523 00:25:42,250 --> 00:25:45,790 И Yay, ние Наидовме 14. 524 00:25:45,790 --> 00:25:46,760 Јас не одам да се оди преку неа. 525 00:25:46,760 --> 00:25:48,090 Но, тука е код. 526 00:25:48,090 --> 00:25:49,690 Тоа е всушност релативно јасна, 527 00:25:49,690 --> 00:25:52,630 бидејќи ова е рекурзивен. 528 00:25:52,630 --> 00:25:55,420 Што би можело да бараме од вас да се направи на квизот? 529 00:25:55,420 --> 00:25:57,000 Ние може да ви побара да ја напишам оваа код. 530 00:25:57,000 --> 00:25:59,170 Ние може да ви побара да се погледне на овој код и да ја менувате овој код и објасни она што 531 00:25:59,170 --> 00:26:00,210 таа го прави. 532 00:26:00,210 --> 00:26:00,390 Да. 533 00:26:00,390 --> 00:26:00,770 Прашање? 534 00:26:00,770 --> 00:26:04,240 >> Публика: Дали овие слајдови ќе биде ставени на располагање како што беа минатиот пат? 535 00:26:04,240 --> 00:26:04,740 >> R.J. Акино: Да. 536 00:26:04,740 --> 00:26:06,460 Па овие слајдови дефинитивно ќе да бидат објавени. 537 00:26:06,460 --> 00:26:08,640 >> ПУБЛИКАТА: Тие се всушност испратени токму сега на веб-сајтот. 538 00:26:08,640 --> 00:26:10,020 Дејвид го направија тоа. 539 00:26:10,020 --> 00:26:12,720 >> R.J. Акино: Слајдовите се токму сега на веб-сајтот. 540 00:26:12,720 --> 00:26:16,420 Јас веројатно ќе се закрпи до неколку на грешки што истакна и да ја поправите нив. 541 00:26:16,420 --> 00:26:19,940 Но, има струја верзија на страницата. 542 00:26:19,940 --> 00:26:21,820 Други работи што може да побара да се направи - 543 00:26:21,820 --> 00:26:23,790 пишува внесување. 544 00:26:23,790 --> 00:26:27,490 Напиши итеративен верзија на рекурзивен функција ние само ви покажа 545 00:26:27,490 --> 00:26:32,520 или се зборува за овие работи, како и во ставови, во зборови, во реченици. 546 00:26:32,520 --> 00:26:35,760 Споредба на бегство пати и објаснувајќи она што вие би сакале да се користи бинарен 547 00:26:35,760 --> 00:26:39,200 Барај дрво за наместо хаш табелата, на пример. 548 00:26:39,200 --> 00:26:43,580 >> Значи се разбере овие структури на прилично длабоко ниво. 549 00:26:43,580 --> 00:26:47,440 Се разбере како да ги пишувам, како да ги користат, како да се зборува за нив. 550 00:26:47,440 --> 00:26:50,270 А вие сите ќе бидат поставени. 551 00:26:50,270 --> 00:26:50,630 Прашање? 552 00:26:50,630 --> 00:26:55,070 >> Публика: Кога сте пишување на бинарни пребарување дрво, како да 553 00:26:55,070 --> 00:27:01,460 утврди она што вредност да го прават тоа како корен? 554 00:27:01,460 --> 00:27:06,120 >> R.J. Акино: Значи, прашањето е, она што вредност правиш како root? 555 00:27:06,120 --> 00:27:08,760 Во зависност од вашиот код, можете може да има глобални корен. 556 00:27:08,760 --> 00:27:14,290 Па можеби ќе треба, најверојатно, имале во pset6 глобален хаш табелата. 557 00:27:14,290 --> 00:27:18,640 Или можеби помине коренот во како аргумент. 558 00:27:18,640 --> 00:27:23,810 Значи ова пребарување функција тука зема аргумент јазол *. 559 00:27:23,810 --> 00:27:27,420 И така што јазол ви се случи да биде гледа во е само на една сте лекување 560 00:27:27,420 --> 00:27:31,510 како вашиот корен кога ќе го помине внатре 561 00:27:31,510 --> 00:27:32,320 И јас сум сите во собата. 562 00:27:32,320 --> 00:27:33,480 Тоа се моите слајдови. 563 00:27:33,480 --> 00:27:35,940 На следната лице може да дојде трампа во лаптоп и микрофон. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> Роб BOWDEN: Мислам дека би можеле да имаат толкува тоа прашање поинаку. 566 00:27:49,760 --> 00:27:53,826 Но јас го толкува како, ако имате броевите 1, 2 и 3, како ние 567 00:27:53,826 --> 00:27:56,720 знае да се направи 2 коренот што е спротивно на 1 или 3? 568 00:27:56,720 --> 00:27:59,480 Ако се направи 2 коренот, тогаш тоа е убаво 1 и 3 на лево и десно. 569 00:27:59,480 --> 00:28:04,610 Но, ако 1 е коренот, тогаш тоа е 1 на врвот, 2 десно, 3 на десно. 570 00:28:04,610 --> 00:28:10,880 Па по дифолт, не знаеш што да прават коренот. 571 00:28:10,880 --> 00:28:15,400 И за било алгоритам Ние очекуваме да ви даде, само првото нешто што 572 00:28:15,400 --> 00:28:16,680 вметнете ќе биде коренот. 573 00:28:16,680 --> 00:28:19,890 Или ние би ви даде бинарни дрво кое веќе постои, кој има корен. 574 00:28:19,890 --> 00:28:24,760 Но други алгоритми постои таков што коренот ќе се ажурира, така што ако 575 00:28:24,760 --> 00:28:28,370 завршат во ситуација каде што тоа е 1, 2, 3, тој автоматски ќе ги ажурира за да 576 00:28:28,370 --> 00:28:30,900 направи 2 новата корен, така што тоа е уште убаво избалансиран. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA ЛИ: Кул. 579 00:28:34,833 --> 00:28:36,170 Еј, момци. 580 00:28:36,170 --> 00:28:37,810 Јас сум Ангела. 581 00:28:37,810 --> 00:28:42,490 И јас одам да се доврши нашиот C и потоа оди во некои од нашите веб 582 00:28:42,490 --> 00:28:43,120 технологии - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, и CSS. 584 00:28:46,570 --> 00:28:49,610 Па првото нешто е тампон претекување напади. 585 00:28:49,610 --> 00:28:53,070 Па ајде да ги разгледаме во овој код. 586 00:28:53,070 --> 00:28:54,260 Тоа е прилично едноставна. 587 00:28:54,260 --> 00:28:55,460 Има функција foo. 588 00:28:55,460 --> 00:28:56,990 И тоа не врати ништо. 589 00:28:56,990 --> 00:29:00,950 Но, потребно е во покажувач на низа наречен бар. 590 00:29:00,950 --> 00:29:04,920 >> И тоа се случува да пријават тоа амортизер кој е лик 591 00:29:04,920 --> 00:29:07,690 низа која има 12 слотови. 592 00:29:07,690 --> 00:29:11,730 И тоа го користи memcpy, која е само функција која копии од една адреса 593 00:29:11,730 --> 00:29:12,910 во друг. 594 00:29:12,910 --> 00:29:19,400 Значи ова е се обидувам да го копирате во нашите тампон од она што 595 00:29:19,400 --> 00:29:21,140 бар е да се покажува. 596 00:29:21,140 --> 00:29:24,640 Па секоја идеја што е проблемот со овој код? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Публика: Ако бар е подолг од Ц, тие ќе ги избрише. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA ЛИ: Да, точно. 600 00:29:31,520 --> 00:29:34,200 Ние немаме гаранција дека бар ќе биде помалку од 12. 601 00:29:34,200 --> 00:29:36,080 Ние само направи некои произволни број 12. 602 00:29:36,080 --> 00:29:38,380 И бевме како, да се надеваме дека нашите корисник влез е помалку од 603 00:29:38,380 --> 00:29:40,440 12 карактери. 604 00:29:40,440 --> 00:29:46,320 Па во еден идеален свет, ако нашите влез е секогаш како што се очекуваше, тогаш ние ќе дојдеме 605 00:29:46,320 --> 00:29:47,550 нешто како, здраво. 606 00:29:47,550 --> 00:29:48,920 Тоа е помалку од 12 карактери. 607 00:29:48,920 --> 00:29:51,870 Станува прочитате во знак в. 608 00:29:51,870 --> 00:29:53,280 А потоа ние се направи нешто со неа. 609 00:29:53,280 --> 00:29:54,800 Тоа навистина не е важно. 610 00:29:54,800 --> 00:29:59,740 >> Но малициозен лице може да се направи нешто повеќе како оваа, каде што 611 00:29:59,740 --> 00:30:04,760 ни даде она што бар е да се покажува, тоа се случува да се укаже на оваа огромна низа 612 00:30:04,760 --> 00:30:06,280 само А. 613 00:30:06,280 --> 00:30:10,680 И ова е начинот на кој повеќе од 12 години. 614 00:30:10,680 --> 00:30:13,830 Па затоа се случува да одат по целиот пат овде до каде враќање 615 00:30:13,830 --> 00:30:15,420 адреса се користи да биде. 616 00:30:15,420 --> 00:30:17,860 Па да речеме оваа функција се нарекува foo. 617 00:30:17,860 --> 00:30:20,970 Можеби foo беше наречен од страна на некои други функција, која бил повикан од главните. 618 00:30:20,970 --> 00:30:24,890 Па кога foo е вклучен, треба да знаат каде да се вратат на. 619 00:30:24,890 --> 00:30:29,130 >> Ако foo беше наречен од страна на некои функција наречена baz, треба да знаете дека тоа е 620 00:30:29,130 --> 00:30:30,250 мора да се вратиме на baz. 621 00:30:30,250 --> 00:30:34,040 И тоа е она што ова враќање адреса овде ни кажува. 622 00:30:34,040 --> 00:30:38,340 Но, ако ние ја пребришете со некои други адреса, во овој случај, тоа е 623 00:30:38,340 --> 00:30:42,650 застапеност на адреса на самиот почеток на оваа тампон, а потоа 624 00:30:42,650 --> 00:30:45,240 она што всушност ќе се случи е дека наместо да се врати назад кон baz, 625 00:30:45,240 --> 00:30:48,470 кој се повикува нашата функција, тоа е само ќе одат на фронтот на овој код. 626 00:30:48,470 --> 00:30:53,930 >> И ако тоа беше таму, бидејќи малициозен хакер пријателе дојде и 627 00:30:53,930 --> 00:30:56,820 инјектира ова, тогаш можеби оваа сума на А всушност и не е А. 628 00:30:56,820 --> 00:31:02,030 А тоа е всушност само законик, што паузи вашиот компјутер или нешто слично. 629 00:31:02,030 --> 00:31:05,930 Така да биде дефанзивна за овој вид на работа, треба никогаш да се претпостави дека 630 00:31:05,930 --> 00:31:09,120 корисникот влез е одреден износот на карактери. 631 00:31:09,120 --> 00:31:13,310 На пример, кога ќе се прави правопис, ти беше кажано дека зборовите се 632 00:31:13,310 --> 00:31:15,580 само ќе биде 40 карактери долго максимум. 633 00:31:15,580 --> 00:31:16,570 И тоа беше добро. 634 00:31:16,570 --> 00:31:20,150 >> Но ако не, тогаш ќе треба да се осигурајте се да прочитате само во 45 635 00:31:20,150 --> 00:31:21,520 карактери во исто време. 636 00:31:21,520 --> 00:31:24,430 Инаку, можеби ќе ги пребрише вашата тампон. 637 00:31:24,430 --> 00:31:26,140 Било какви прашања за тоа. 638 00:31:26,140 --> 00:31:26,733 Да. 639 00:31:26,733 --> 00:31:28,850 >> Публика: Може ли само да се зборува малку повеќе за овие? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA ЛИ: Извини. 641 00:31:29,790 --> 00:31:31,040 Да. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Публика: микрофон е само за видео. 644 00:31:35,870 --> 00:31:37,640 Јас ќе се обидам и проект. 645 00:31:37,640 --> 00:31:39,900 Здраво, момци. 646 00:31:39,900 --> 00:31:40,920 Поддршка? 647 00:31:40,920 --> 00:31:45,330 Па ајде да одиме во текот на неколку работи во CS50 библиотека, која сте биле со 648 00:31:45,330 --> 00:31:49,072 сите семестар, главно да се добие корисник влез. 649 00:31:49,072 --> 00:31:53,140 Како што знаете, сте запишале CS50 библиотека од само прави CS50.h, која 650 00:31:53,140 --> 00:31:55,660 ги содржи сите прототипи на функции кои можете да го користите, како 651 00:31:55,660 --> 00:31:58,640 GetString и GetInt, и GetFloat, итн. 652 00:31:58,640 --> 00:32:02,870 И таму е ова една линија во CS50 библиотека со кој се дефинира низа, која 653 00:32:02,870 --> 00:32:05,380 вие момци сите знаеме до сега е само знак *. 654 00:32:05,380 --> 00:32:07,900 >> Но ајде да ги погледнеме како GetString работи. 655 00:32:07,900 --> 00:32:10,010 Ова е многу скратена верзија. 656 00:32:10,010 --> 00:32:15,090 Можете да се повлечат до CS50 библиотеката датотеки од, мислам, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 И можете да ја прочитате преку вистинската функција. 658 00:32:16,750 --> 00:32:19,330 Но ова ги опфаќа некои од важни делови. 659 00:32:19,330 --> 00:32:23,870 Па ние направивме некои тампон со некои капацитет. 660 00:32:23,870 --> 00:32:27,570 И она што го правиме е да добиеме еден карактер во време од стандарден n. 661 00:32:27,570 --> 00:32:30,910 Тоа е каде што корисникот влезови текст во конзола. 662 00:32:30,910 --> 00:32:33,430 >> И така ние ќе се читаат во карактер толку долго како што не е нова 663 00:32:33,430 --> 00:32:37,220 линија и тоа не е крајот на датотеката, која е крај на стандарден влез. 664 00:32:37,220 --> 00:32:45,690 И за секој лик што го читаме во, ако тој лик завршува додавање 665 00:32:45,690 --> 00:32:50,120 на бројот на карактери ние Прочитав и тоа е повеќе од нашата способност, 666 00:32:50,120 --> 00:32:53,490 тогаш што правиме е ние едноставно менување на големината на нашата тампон, така што тоа е двојно повеќе. 667 00:32:53,490 --> 00:32:56,950 Па уште еднаш, ова се заштити од тампон overflow напади, бидејќи ќе прочитате во 668 00:32:56,950 --> 00:32:58,315 карактер во исто време. 669 00:32:58,315 --> 00:33:02,290 И ако во било која точка ќе прочитате во премногу многу, само да ги прошират своите тампон. 670 00:33:02,290 --> 00:33:03,330 Го мултиплицираат од страна на две. 671 00:33:03,330 --> 00:33:05,510 И тогаш ќе имаме повеќе простор. 672 00:33:05,510 --> 00:33:09,120 >> Инаку, вие само додадете лик на тампон. 673 00:33:09,120 --> 00:33:15,080 И откако ќе ги прочитате во сите карактери, ќе се намали на тампон 674 00:33:15,080 --> 00:33:18,510 назад до нормална големина, да додадете нула терминатор, а потоа се врати. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Сега, ајде да погледнеме на GetInt. 677 00:33:24,960 --> 00:33:27,700 Може да ви момци прочита ова? 678 00:33:27,700 --> 00:33:30,710 Можам да зумирате малку. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Не знам како компјутерите работат. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Никогаш умот. 683 00:33:41,270 --> 00:33:42,520 Не можам да зумирате правилно. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Ова е навистина тешко. 686 00:33:48,770 --> 00:33:49,180 Жал ми е. 687 00:33:49,180 --> 00:33:51,490 Ајде да се погледне на овој. 688 00:33:51,490 --> 00:33:57,140 Па што GetInt не е тоа прва го чита во низа од GetString, која 689 00:33:57,140 --> 00:33:59,250 ние сме спроведува пред. 690 00:33:59,250 --> 00:34:02,945 И важен дел да се напомене тука е ако ова споделување дека тоа завршува 691 00:34:02,945 --> 00:34:06,400 читање е како да не, всушност, стринг, тогаш ние само се вратат INT_MAX да 692 00:34:06,400 --> 00:34:09,409 претставуваат неуспех. 693 00:34:09,409 --> 00:34:12,645 Зошто ни се врати INT_MAX наместо негативни 1 или 1? 694 00:34:12,645 --> 00:34:13,895 Сите идеи? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> ПУБЛИКАТА: [нечујни] негативни 1 на еден. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA ЛИ: Да, точно. 698 00:34:20,070 --> 00:34:24,560 Па ти си патот почесто само сакате за да го внесете 1 или негативни 1 кога ќе бидете известени 699 00:34:24,560 --> 00:34:27,469 за енти и што енти maxes. 700 00:34:27,469 --> 00:34:27,969 Тоа е огромна. 701 00:34:27,969 --> 00:34:29,690 Ти си веројатно нема да го користам. 702 00:34:29,690 --> 00:34:32,690 Значи ова е како дизајн одлука да бидете сигурни дека ќе не случајно 703 00:34:32,690 --> 00:34:38,540 се врати грешка или не се вратат 1, што може да се парсира 704 00:34:38,540 --> 00:34:41,199 како точен одговор. 705 00:34:41,199 --> 00:34:45,110 Па ако некој линија не постои, ние се врати ИНТ-MAX. 706 00:34:45,110 --> 00:34:48,090 Инаку, ние ги користиме sscanf, кој е како scanf. 707 00:34:48,090 --> 00:34:49,449 Но тоа чита од серијата. 708 00:34:49,449 --> 00:34:54,310 >> И ние имаме овој форматирана низа, што е% i% c. 709 00:34:54,310 --> 00:34:57,440 И ние се обидуваме и натпревар тоа со без оглед на корисникот ни даде. 710 00:34:57,440 --> 00:35:01,420 Ние сакаме бројот на исти работи да биде 1, што значи дека ние само 711 00:35:01,420 --> 00:35:04,940 навистина сакате да се совпаѓаат цел број опкружен со можеби бели 712 00:35:04,940 --> 00:35:06,840 простор, можеби не. 713 00:35:06,840 --> 00:35:10,710 Во овој случај, ако се стави во нешто како бар, бар не се совпаѓаат на сите, 714 00:35:10,710 --> 00:35:14,400 бидејќи таму треба да биде цел број на почетокот. 715 00:35:14,400 --> 00:35:17,060 Па никогаш не sscan претвори 0. 716 00:35:17,060 --> 00:35:19,640 Значи, вие не се врати тоа. 717 00:35:19,640 --> 00:35:23,850 >> Алтернативно, ако се стави во нешто како 1, 2, 3, A, B, C, која одговара на 718 00:35:23,850 --> 00:35:27,180 и цел број, но, исто така, ликот по него. 719 00:35:27,180 --> 00:35:29,990 Па sscanf ќе се врати 2, кој исто така не е идеален. 720 00:35:29,990 --> 00:35:34,620 Вие не сакате 1, 2, 3, А, Б, Ц да биде валидна Инт. 721 00:35:34,620 --> 00:35:36,990 Така што, исто така, не функционира. 722 00:35:36,990 --> 00:35:38,530 Но велат дека ќе се стави во нешто како 50. 723 00:35:38,530 --> 00:35:42,460 Кои ќе одговараат на% i, што значи тоа ќе се прочита во Н. 724 00:35:42,460 --> 00:35:44,790 И сега, n ќе содржат бројот 50. 725 00:35:44,790 --> 00:35:46,110 А потоа можете да го вратат. 726 00:35:46,110 --> 00:35:49,270 >> Инаку, ќе го погоди Обидете се повторно. 727 00:35:49,270 --> 00:35:55,790 А потоа тоа само оди одново, додека ќе добие соодветниот влезен сигнал од корисникот. 728 00:35:55,790 --> 00:35:56,891 Било какви прашања за тоа? 729 00:35:56,891 --> 00:36:02,182 >> Публика: Значи, ако сте во ситуација да испечатите вредноста на GetInt на [нечујни] 730 00:36:02,182 --> 00:36:06,250 тоа ќе биде само цел број и макс? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA ЛИ: Да. 732 00:36:07,440 --> 00:36:11,780 Значи, ако користите GetInt, треба да се претпостави дека вие не сакате енти максимум за 733 00:36:11,780 --> 00:36:15,328 да биде валидна влез, бидејќи си оди да се претпостави дека тоа беше лошо. 734 00:36:15,328 --> 00:36:27,740 >> Публика: Ако немавме знак C и некој стави во 1, 2, 3, Сем, би го 735 00:36:27,740 --> 00:36:29,430 уште работат за 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA Ли: Мислам дека тоа ќе работат. 737 00:36:29,750 --> 00:36:33,340 Но, вие не сакате да 123Sam да биде валидна влез од страна на корисникот. 738 00:36:33,340 --> 00:36:34,670 Тоа не е навистина Инт. 739 00:36:34,670 --> 00:36:36,840 Па тоа не изгледа фер да го анализирам како int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 Во тој случај, ајде да се движат за да на интернет. 743 00:36:45,800 --> 00:36:49,120 Па HTTP не е јазик. 744 00:36:49,120 --> 00:36:56,060 HTTP е само збир на стандарди за како ви испратиме работи од клиентите, 745 00:36:56,060 --> 00:36:57,280 тоа е вас, да сервери. 746 00:36:57,280 --> 00:36:59,730 Тоа е на другите луѓе на интернет. 747 00:36:59,730 --> 00:37:02,900 >> Па HTTP се залага за Хипертекст Протокол за пренос. 748 00:37:02,900 --> 00:37:04,610 Тоа е срцето и душата на целиот веб. 749 00:37:04,610 --> 00:37:07,050 Хипертекст дел само се однесува на HTML. 750 00:37:07,050 --> 00:37:10,690 Трансферот е клиенти, како што ќе испрати барања за 751 00:37:10,690 --> 00:37:13,060 сервери, кои даваат одговори. 752 00:37:13,060 --> 00:37:16,380 И протоколот е само, како да очекувате некој сервер да се однесуваме? 753 00:37:16,380 --> 00:37:19,960 И како треба да се однесуваме така што можете да се насочат овој 754 00:37:19,960 --> 00:37:21,920 процесот на комуникација? 755 00:37:21,920 --> 00:37:26,650 >> Па HTTP барања изгледа многу слични на оваа. 756 00:37:26,650 --> 00:37:28,070 Добивај е тип на барањето. 757 00:37:28,070 --> 00:37:31,220 Вие момци го виделе GET барања и POST барањата. 758 00:37:31,220 --> 00:37:36,690 Дека втората работа таму, / мене, тоа е само URI или URL-то на местото каде што можете 759 00:37:36,690 --> 00:37:38,140 сакаат да одат во рамките на домаќин. 760 00:37:38,140 --> 00:37:44,140 Значи ова барање се прашува за страница, како www.facebook.com / мене. 761 00:37:44,140 --> 00:37:45,300 И тоа е GET барањето. 762 00:37:45,300 --> 00:37:51,020 А потоа и оваа HTTP/1.1, тоа е само верзијата на HTTP сте користите. 763 00:37:51,020 --> 00:37:55,020 Тоа е речиси секогаш 1.1. 764 00:37:55,020 --> 00:37:56,880 >> А потоа, тука е еден куп на други работи исто така. 765 00:37:56,880 --> 00:38:02,510 Ти всушност може да се види овие ако отвори својата конзола, кога сте 766 00:38:02,510 --> 00:38:03,770 прелистување на веб. 767 00:38:03,770 --> 00:38:07,290 Одговори изгледа нешто повеќе вака. 768 00:38:07,290 --> 00:38:09,620 Горниот дел е, повторно, тип на HTTP сте користење 769 00:38:09,620 --> 00:38:12,310 проследено со код на статусот на. 770 00:38:12,310 --> 00:38:14,700 Па 200 во ред е сè што работел надвор. 771 00:38:14,700 --> 00:38:16,200 Тука е вашата содржина. 772 00:38:16,200 --> 00:38:17,390 Својата содржина ќе го следат. 773 00:38:17,390 --> 00:38:21,730 И тогаш тоа ќе ти кажам каков вид на содржината и други работи исто така. 774 00:38:21,730 --> 00:38:24,620 >> Статус кодови, постојат неколку важни оние што треба да знаете. 775 00:38:24,620 --> 00:38:26,460 200 ред е како златна сè е. 776 00:38:26,460 --> 00:38:28,490 Се работи. 777 00:38:28,490 --> 00:38:29,710 403 Забранетиот. 778 00:38:29,710 --> 00:38:32,910 Ова веројатно сте виделе ако сте ја заборавиле да chmod нешто правилно. 779 00:38:32,910 --> 00:38:34,510 Тоа значи дека немате дозвола да 780 00:38:34,510 --> 00:38:36,210 пристап до таа на серверот. 781 00:38:36,210 --> 00:38:38,110 Тоа е како да, не, не можете да го видите. 782 00:38:38,110 --> 00:38:39,780 404 значи дека нешто не постои. 783 00:38:39,780 --> 00:38:40,400 Не е пронајден. 784 00:38:40,400 --> 00:38:41,640 Веројатно сте виделе дека многу. 785 00:38:41,640 --> 00:38:45,510 >> 500 Внатрешна грешка на серверот е обично како нешто не беше во ред на страната 786 00:38:45,510 --> 00:38:46,460 на серверот. 787 00:38:46,460 --> 00:38:50,830 Па кога ќе се имплементира pset7, ако сте имале PHP грешки, можете да 788 00:38:50,830 --> 00:38:53,890 всушност, оди на страницата и да видат целиот куп на PHP грешка нешта. 789 00:38:53,890 --> 00:38:56,900 Но, тоа не нормално се случи, бидејќи веб-страниците навистина не би сакал да 790 00:38:56,900 --> 00:38:58,830 ви кажам зошто нивниот веб-сајт е скршен. 791 00:38:58,830 --> 00:39:03,370 Тие ќе веројатно само се врати 500 Внатрешна грешка на серверот. 792 00:39:03,370 --> 00:39:06,120 >> А потоа, тука е 418 јас сум чајник. 793 00:39:06,120 --> 00:39:07,910 Има цела приказна за зошто тоа е нешто. 794 00:39:07,910 --> 00:39:09,860 Но, можете да прочитате за тоа на свој време. 795 00:39:09,860 --> 00:39:11,450 Постојат еден куп на други статусни кодови премногу. 796 00:39:11,450 --> 00:39:12,700 Но овие се оние што треба да знаете. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Па ајде да зборуваме за HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, се сеќавам, не е програмски јазик. 800 00:39:22,180 --> 00:39:23,510 Тоа е маркап јазик. 801 00:39:23,510 --> 00:39:25,210 Тоа значи дека тој го опишува содржината. 802 00:39:25,210 --> 00:39:30,440 Тоа ти го кажува она документот HTML изгледа сакале или не она што изгледа како 803 00:39:30,440 --> 00:39:32,230 но тоа како е структурирана. 804 00:39:32,230 --> 00:39:36,110 >> Па тоа го дефинира структурата и семантиката на веб страници. 805 00:39:36,110 --> 00:39:37,830 Тоа е како, ова е став. 806 00:39:37,830 --> 00:39:40,060 Ова е подредена листа. 807 00:39:40,060 --> 00:39:42,360 Ова е како дел од мојата страница. 808 00:39:42,360 --> 00:39:43,260 Тука е насловот. 809 00:39:43,260 --> 00:39:44,310 Тоа го прави работи како што. 810 00:39:44,310 --> 00:39:48,770 Тоа не стил кој било од тоа, затоа што тоа е она што го правите во CSS. 811 00:39:48,770 --> 00:39:50,270 И тоа изгледа како серија на вгнездени тагови. 812 00:39:50,270 --> 00:39:54,720 Така да се користи еден пример на навистина основни HTML страница, имаш DOCTYPE 813 00:39:54,720 --> 00:39:56,720 декларација до таму. 814 00:39:56,720 --> 00:40:00,940 >> Овој DOCTYPE декларација е велејќи, ние сме со користење HTML5. 815 00:40:00,940 --> 00:40:03,370 Тогаш го имате голема HTML таг. 816 00:40:03,370 --> 00:40:05,230 Таа содржи глава и тело. 817 00:40:05,230 --> 00:40:06,970 Внатре во главата, ќе имаат наслов. 818 00:40:06,970 --> 00:40:12,950 Тоа е она што се случува во насловот лента на вашиот интернет пребарувач. 819 00:40:12,950 --> 00:40:15,810 Имаме линк ознака што врски во надворешен стил лист. 820 00:40:15,810 --> 00:40:19,880 А потоа имаме скрипта која повлекува од надворешен JavaScript, како и. 821 00:40:19,880 --> 00:40:23,750 >> А потоа внатре нашето тело е всушност она што добива прикажани на оваа страница. 822 00:40:23,750 --> 00:40:28,210 Имаме став, а потоа сликата во тој став. 823 00:40:28,210 --> 00:40:32,000 Оваа една е слика на мачиња. 824 00:40:32,000 --> 00:40:35,840 Забележите дека сликата таг самата затвора. 825 00:40:35,840 --> 00:40:41,760 Така, наместо на отворањето со слика а потоа прави уште еден / на сликата, можете 826 00:40:41,760 --> 00:40:47,500 само треба оваа мала коса црта тука, што се затвора. 827 00:40:47,500 --> 00:40:53,670 И сликата таг, исто така, има овој клуч вредноста на атрибутот наречен алт. 828 00:40:53,670 --> 00:40:56,970 Тоа е алтернативен текст кој што се случува кога ќе лебдат над неа. 829 00:40:56,970 --> 00:41:03,170 >> Повеќето HTML елементи имаат некои клучни вредност работи кои можете да го даде, разни 830 00:41:03,170 --> 00:41:04,420 прилагодување. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Да. 833 00:41:08,705 --> 00:41:09,955 >> ПУБЛИКАТА: [нечујни]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA ЛИ: Па, па тоа е атрибут на етикетата. 836 00:41:19,680 --> 00:41:25,320 Значи, ако сте биле со користење на веб, можете да направи изберете image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 А потоа можете да пребарувате за добие ALT атрибут. 838 00:41:27,930 --> 00:41:31,040 И тоа ќе ви даде мачиња. 839 00:41:31,040 --> 00:41:37,400 Ако се сеќавате форми во HTML, влез елементи ќе имаат име атрибути. 840 00:41:37,400 --> 00:41:41,870 И тоа е она што PHP се користи за испраќање барања кога е поднесено форма. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Публика: Дали ќе се спомене нешто за тоа како ако користите kittens.jpg или 843 00:41:50,064 --> 00:41:54,410 нешто што има недостасува датотеки, папки или други датотеки? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA ЛИ: Да. 845 00:41:54,750 --> 00:41:57,010 Значи ова е она што се нарекува релативна пат, бидејќи јас не давам 846 00:41:57,010 --> 00:41:58,740 ќе ја целосната патека. 847 00:41:58,740 --> 00:42:05,160 Ова е како кога во C ако не fopen некои датотеки, ако fopen hi.txt, дека 848 00:42:05,160 --> 00:42:09,190 hi.txt се очекува да биде во истата директориум, освен ако не го даде повеќе 849 00:42:09,190 --> 00:42:11,530 сложен пат. 850 00:42:11,530 --> 00:42:14,900 >> ПУБЛИКАТА: Значи можете да наведете кој фолдер [нечујни]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA ЛИ: Да. 852 00:42:17,660 --> 00:42:19,370 И може да се погледне нагоре како да го направите тоа. 853 00:42:19,370 --> 00:42:23,480 Но, ако јас сакав да се добие kittens.jpg надвор на главниот директориум, јас би го направил 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Да. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Жал. 859 00:42:33,760 --> 00:42:34,045 Да. 860 00:42:34,045 --> 00:42:35,700 О човек, го заборавив прашање. 861 00:42:35,700 --> 00:42:36,460 Она што беше прашањето? 862 00:42:36,460 --> 00:42:39,570 Ох, прашањето беше е, kittens.jpg се очекува да биде во истиот директориум? 863 00:42:39,570 --> 00:42:40,630 И во овој случај, тоа е. 864 00:42:40,630 --> 00:42:44,030 Но вие исто така може да го даде одреден пат така што тоа не мора да биде. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Добар? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Значи, CSS, како HTML, не е програмски јазик. 870 00:42:55,420 --> 00:42:58,250 CSS е само една серија на стил правила. 871 00:42:58,250 --> 00:43:00,130 Таа се залага за Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 И ќе ја користи во комбинација со HTML и стил страници. 873 00:43:03,910 --> 00:43:08,140 Па така постојат три начини можете да го вклучиш. 874 00:43:08,140 --> 00:43:11,950 Еден начин можете да го направите тоа е во главата дел од вашиот HTML, можете само 875 00:43:11,950 --> 00:43:15,410 отвори стил таг а потоа се држи некои CSS правила во таму. 876 00:43:15,410 --> 00:43:16,759 Тоа е прилично добро. 877 00:43:16,759 --> 00:43:17,228 Да. 878 00:43:17,228 --> 00:43:21,449 >> Публика: Може ли да се стави оние стил тагови меѓу нив, нека 879 00:43:21,449 --> 00:43:22,860 да речеме, на телото и / тело. 880 00:43:22,860 --> 00:43:27,400 А потоа ќе биде стајлинг само во телото. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA ЛИ: Вие би можеле да. 882 00:43:28,840 --> 00:43:29,590 Тоа ќе работат. 883 00:43:29,590 --> 00:43:33,990 Но вие не треба, затоа што стил е вид на метаподатоци кои треба да одат во 884 00:43:33,990 --> 00:43:35,890 главата на вашиот документ. 885 00:43:35,890 --> 00:43:38,280 Тело навистина треба да содржи само она што е, всушност, ќе 886 00:43:38,280 --> 00:43:39,420 појавиш на вашата страница. 887 00:43:39,420 --> 00:43:42,155 >> ПУБЛИКАТА: Значи сакаш стави стил во вашата глава да стил на 888 00:43:42,155 --> 00:43:43,930 целиот веб страница, нели? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA ЛИ: Да. 890 00:43:44,300 --> 00:43:50,470 Па стави стил тука, овие правила CSS ќе важи за целата страница врз основа на 891 00:43:50,470 --> 00:43:52,100 нивните селектори. 892 00:43:52,100 --> 00:43:57,090 Па подобар начин да го направите тоа е наместо да се има стил таг во вашата глава, 893 00:43:57,090 --> 00:44:00,430 имате овој линк за да надворешен стил лист како што ви покажа во 894 00:44:00,430 --> 00:44:01,980 претходниот пример. 895 00:44:01,980 --> 00:44:05,920 Што тоа не е се обидува и се наоѓа на поднесе style.css а потоа повлекува тоа 896 00:44:05,920 --> 00:44:08,470 и користи дека како стилови за оваа страница. 897 00:44:08,470 --> 00:44:10,500 И вашиот style.css би само да изгледа вака. 898 00:44:10,500 --> 00:44:13,330 Тоа само ќе биде еден куп на CSS. 899 00:44:13,330 --> 00:44:16,210 >> И конечно, тука е уште еден начин можете може да вклучуваат CSS, која навистина 900 00:44:16,210 --> 00:44:17,480 не треба да некогаш стори. 901 00:44:17,480 --> 00:44:18,950 Тоа е повик РЕГИСТРАЦИЈА стил. 902 00:44:18,950 --> 00:44:22,650 И така сите HTML елемент може, исто така, земе стил атрибут. 903 00:44:22,650 --> 00:44:26,320 И тогаш во тој стил атрибут, можете да го даде CSS правила. 904 00:44:26,320 --> 00:44:29,140 Значи во овој случај, без оглед div јас сум дефинирање токму тука, тоа се случува да 905 00:44:29,140 --> 00:44:32,580 имаат црна позадина и бела боја текстот. 906 00:44:32,580 --> 00:44:35,620 Но вие не треба да го направите ова, затоа што она што тоа не е тоа става вашиот стил 907 00:44:35,620 --> 00:44:36,850 во внатрешноста на вашиот HTML. 908 00:44:36,850 --> 00:44:40,530 >> И знам дека ние сме биле зборува за HTML е структура и CSS е стил. 909 00:44:40,530 --> 00:44:42,790 Ако го направите ова, се меша заедно. 910 00:44:42,790 --> 00:44:44,550 И тоа не е многу чиста. 911 00:44:44,550 --> 00:44:45,800 Па не го правам тоа. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Користење на пример на CSS, таму горе, ние само одберете телото на HTML 914 00:44:52,100 --> 00:44:52,380 документарен филм. 915 00:44:52,380 --> 00:44:55,110 И ние сме како, сè е ќе биде Стрип Sans. 916 00:44:55,110 --> 00:44:57,290 Јас, исто така не се препорачува за тоа. 917 00:44:57,290 --> 00:44:59,940 Но вие можете да го направите тоа. 918 00:44:59,940 --> 00:45:03,140 >> Второто правило, токму тука, тоа се случува за да изберете елемент на 919 00:45:03,140 --> 00:45:04,880 страница со проект главната. 920 00:45:04,880 --> 00:45:11,690 Значи она што HTML елемент, реков проект = Главни, јас ќе одам да им даде дека 921 00:45:11,690 --> 00:45:16,020 20-пиксели маргина и да ги усогласат сè, целиот текст, во центарот. 922 00:45:16,020 --> 00:45:19,030 Последното нешто што го избира од страна на CSS класа. 923 00:45:19,030 --> 00:45:24,450 Значи било кој елемент на страница, која Дадов делот класа, јас ќе одам да се направи тоа 924 00:45:24,450 --> 00:45:26,602 боја на позадина на светло сина. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Да. 927 00:45:30,040 --> 00:45:30,700 Тоа е се што имаме. 928 00:45:30,700 --> 00:45:30,890 Прашање? 929 00:45:30,890 --> 00:45:34,020 >> Публика: Што значи hashtag пред главната направам? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA ЛИ: Прашањето е, она што го прави хаштагот пред главната Дали? 931 00:45:36,310 --> 00:45:40,770 Во овој случај, на хаш во CSS значи изберете од проект. 932 00:45:40,770 --> 00:45:47,490 Значи, ако имав некои HTML елемент, како divID = главната, оваа CSS правило избира 933 00:45:47,490 --> 00:45:49,260 нешто со проект главната. 934 00:45:49,260 --> 00:45:53,940 И слично, рокот во предниот дел на секција е да изберете од CSS класа или 935 00:45:53,940 --> 00:45:56,558 изберете од HTML класа. 936 00:45:56,558 --> 00:46:00,940 >> Публика: Зошто има има пред 6 во боја на позадината? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA ЛИ: Да. 938 00:46:01,270 --> 00:46:03,360 Значи, прашањето е, зошто е таму хаш пред 6? 939 00:46:03,360 --> 00:46:05,320 Ова е различно од тоа хаш. 940 00:46:05,320 --> 00:46:09,500 Ова значи дека ти си даваат хексадецимално боја. 941 00:46:09,500 --> 00:46:14,260 Па хексадецимален бои, ова е само претставува боја. 942 00:46:14,260 --> 00:46:17,860 И се сеќавате RGB тројки, кога ти го направи криминолошки науки pset? 943 00:46:17,860 --> 00:46:18,770 Ова е слично. 944 00:46:18,770 --> 00:46:21,590 Првите две цифри претставуваат колку црвена е во боја. 945 00:46:21,590 --> 00:46:23,260 Вторите два претставуваат колку зелена. 946 00:46:23,260 --> 00:46:25,450 И третиот претставува колку сини. 947 00:46:25,450 --> 00:46:30,060 И хаш е ова се случува да претставуваат боја. 948 00:46:30,060 --> 00:46:35,660 >> Па нешто од 0, 0, 0, 0, 0, 0 до F, F, F, F, F, F е правилен. 949 00:46:35,660 --> 00:46:39,550 Тоа е некој валиден боја што може да бидат прикажани од страна на вашиот интернет пребарувач. 950 00:46:39,550 --> 00:46:39,790 Прашање? 951 00:46:39,790 --> 00:46:43,590 >> Публика: Што е разликата помеѓу користење од страна на проект и со класа? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA ЛИ: Прашањето е она што е разликата помеѓу 953 00:46:46,470 --> 00:46:48,950 користење од страна на проект и класа? 954 00:46:48,950 --> 00:46:54,390 Можеш да имаш само еден елемент во една HTML документ кој има дадено проект. 955 00:46:54,390 --> 00:46:58,660 Па само една работа на мојата страница е дозволено да имаат проект главната. 956 00:46:58,660 --> 00:47:02,580 Така да ја користите за ова е насловот. 957 00:47:02,580 --> 00:47:03,850 Ова е навигација. 958 00:47:03,850 --> 00:47:05,230 Ова е подножјето. 959 00:47:05,230 --> 00:47:09,070 Класите се различни, затоа што може применуваат класи на што повеќе HTML елементи 960 00:47:09,070 --> 00:47:10,100 како сакате. 961 00:47:10,100 --> 00:47:15,860 >> Така на пример, јас не класа секција, бидејќи таму е веројатно повеќе од еден 962 00:47:15,860 --> 00:47:17,540 делот на мојата страница. 963 00:47:17,540 --> 00:47:20,200 Сте само дозволено да имаат што повеќе елементите на страната со истиот 964 00:47:20,200 --> 00:47:23,190 класа, но само една со одреден проект. 965 00:47:23,190 --> 00:47:25,600 >> ПУБЛИКАТА: Значи точка претставува класа? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA ЛИ: Да. 967 00:47:26,090 --> 00:47:27,380 А точка претставува класа. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Кул. 970 00:47:31,540 --> 00:47:32,370 Тоа е се што имам, момци. 971 00:47:32,370 --> 00:47:33,544 Ви благодарам. 972 00:47:33,544 --> 00:48:13,380 >> [Аплауз] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA Чан: Здраво, сите. 974 00:48:14,290 --> 00:48:14,880 Јас сум Zamyla. 975 00:48:14,880 --> 00:48:18,830 Одам да се покриваат PHP, MVC, и SQL денес. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Голем дел од материјалот што ќе бидам покривање ќе биде доста 978 00:48:26,110 --> 00:48:29,100 право надвор од pset7. 979 00:48:29,100 --> 00:48:29,700 Во ред е. 980 00:48:29,700 --> 00:48:31,180 Значи она што е PHP? 981 00:48:31,180 --> 00:48:35,150 PHP се залага за PHP Хипертекст Препроцесори. 982 00:48:35,150 --> 00:48:38,740 Така што, само по себе, е рекурзивен Името, кое е прилично кул. 983 00:48:38,740 --> 00:48:42,220 PHP е сервер-side scripting јазик, и тоа обезбедува заднинската 984 00:48:42,220 --> 00:48:44,610 така и логичките основи на нашата веб страница. 985 00:48:44,610 --> 00:48:48,520 >> Па Ангела зборуваше многу за HTML и CSS која ќе го направи структурата 986 00:48:48,520 --> 00:48:49,530 на веб страната. 987 00:48:49,530 --> 00:48:53,210 Но што ако сакате да се смени содржината динамички или ако тоа варира 988 00:48:53,210 --> 00:48:55,240 врз основа на корисникот или одредени услови? 989 00:48:55,240 --> 00:48:57,060 Тоа е каде што PHP влегува внатре 990 00:48:57,060 --> 00:49:02,610 Сега, обично, PHP може да потрае неколку помалку линии за спроведување на истото 991 00:49:02,610 --> 00:49:07,380 во C. Тоа е затоа што PHP се справува со меморијата управување за програмер, 992 00:49:07,380 --> 00:49:11,170 што е спротивно на нас да мора да Примерок бесплатно, такви работи. 993 00:49:11,170 --> 00:49:15,430 >> Но, бидејќи PHP е извршителот јазик, обично, тоа би можело да се изврши 994 00:49:15,430 --> 00:49:19,540 малку побавно од C, која е составена јазик. 995 00:49:19,540 --> 00:49:23,150 Затоа што ние сме се движат програмирање јазици, ајде да погледнеме како 996 00:49:23,150 --> 00:49:24,570 синтакса ќе се разликуваат. 997 00:49:24,570 --> 00:49:28,770 Ајде да бидеме многу внимателни да не се се збунети со тоа. 998 00:49:28,770 --> 00:49:33,750 Па со PHP синтакса, дали сте вградување на вашиот PHP внатрешноста на HTML 999 00:49:33,750 --> 00:49:40,430 датотека или во рамките на. php фајл себе, треба да приложи кодот на отворено 1000 00:49:40,430 --> 00:49:45,270 PHP и затворени PHP тагови како следува, како на екранот. 1001 00:49:45,270 --> 00:49:46,660 >> Променливи во PHP. 1002 00:49:46,660 --> 00:49:51,490 Секој променлива ќе започне со долари знак проследено со името на 1003 00:49:51,490 --> 00:49:53,150 вашата променлива. 1004 00:49:53,150 --> 00:49:56,530 Сега, променливи во PHP се лабаво отчукува, што значи дека не треба 1005 00:49:56,530 --> 00:50:00,030 да се укаже на тоа каков тип на податоци е кога ќе го прогласи. 1006 00:50:00,030 --> 00:50:03,505 Сепак, ова не значи дека тие немаат никакви видови на сите. 1007 00:50:03,505 --> 00:50:09,370 Значи, ако јас декларирате променлива и само го поставите тоа е еднаква на 1, а потоа Изјавувам 1008 00:50:09,370 --> 00:50:15,140 друга променлива, го постави еднаква на "1" , а потоа уште еден 1,0, добро, 1009 00:50:15,140 --> 00:50:19,410 во зависност од видот на еднаквост оператори јас го користам, ако сакам да се споредат 1010 00:50:19,410 --> 00:50:21,830 во сите видови, потоа тие ќе бидат еднакви. 1011 00:50:21,830 --> 00:50:25,570 Но ако сакам да бидете сигурни дека видови се еднакви, PHP сеуште може да направи 1012 00:50:25,570 --> 00:50:28,690 дека, иако ние не укажуваат на каков тип е кога ние 1013 00:50:28,690 --> 00:50:31,170 Првиот се направи датотека. 1014 00:50:31,170 --> 00:50:33,990 >> Сега, во PHP, иако ние сме префрлување во текот на програмирање 1015 00:50:33,990 --> 00:50:39,360 јазици од C, ние сеуште имаме сигурен ако состојба, исто како и оваа. 1016 00:50:39,360 --> 00:50:43,270 Ние се уште имаме додека петелки, само вака, каде што ќе ги ставите во вашиот 1017 00:50:43,270 --> 00:50:47,300 состојба, а потоа Телото на јамка. 1018 00:50:47,300 --> 00:50:50,360 А потоа ние исто така имаме за телефонска линија, кои обично изгледа вака. 1019 00:50:50,360 --> 00:50:55,330 Значи, ако сакав да iterate во текот на сите девет psets и да ги достават и повик 1020 00:50:55,330 --> 00:50:58,960 функција submitPset, тогаш можам да го направите тоа тука, што вие момци имаат сите 1021 00:50:58,960 --> 00:50:59,830 направено од страна на оваа точка. 1022 00:50:59,830 --> 00:51:01,080 Алал да му е, патем. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> За камерата, луѓето рече, ви благодарам. 1025 00:51:07,550 --> 00:51:11,220 Сега, ако не сакате само да ја користите оваа за телефонска линија, тогаш PHP, всушност, исто така, 1026 00:51:11,220 --> 00:51:13,580 има нешта наречени foreach петелки. 1027 00:51:13,580 --> 00:51:22,210 Значи, ако имав низа од цели броеви, 0 до 8, се чуваат во низата psets, 1028 00:51:22,210 --> 00:51:27,290 тогаш јас би можеле да имаат foreach циклусот што iterates над секој број во psets. 1029 00:51:27,290 --> 00:51:30,640 И тогаш би можел да се јавите на истиот функционираат осум пати, 1030 00:51:30,640 --> 00:51:31,910 онака како што беше порано. 1031 00:51:31,910 --> 00:51:36,480 Па ова за секој циклус е убаво, бидејќи вие не мора да се ако не знаете 1032 00:51:36,480 --> 00:51:39,470 точната должината на низата што ќе се, а потоа со користење на овој foreach циклусот 1033 00:51:39,470 --> 00:51:42,800 ќе се грижи за тоа за вас. 1034 00:51:42,800 --> 00:51:45,410 >> Па сум направил psets како низа. 1035 00:51:45,410 --> 00:51:46,700 Да ги погледнеме на тоа. 1036 00:51:46,700 --> 00:51:51,290 Низи во PHP се обично исто како оние кои имавме во C, каде 1037 00:51:51,290 --> 00:51:52,960 можете да прогласи низа. 1038 00:51:52,960 --> 00:51:59,200 И тука, можам да се изјаснам како празна низа а потоа се изгради динамички со користење на 1039 00:51:59,200 --> 00:52:00,850 индекси, како цели броеви. 1040 00:52:00,850 --> 00:52:04,140 Така индекс 0, јас ќе одам да се сместат цел број наречен 1. 1041 00:52:04,140 --> 00:52:09,210 На индекс 1 на мојата листа, јас ќе одам за чување на вредноста 2. 1042 00:52:09,210 --> 00:52:12,670 Како и во третиот индекс, но вториот број, јас ќе одам да 1043 00:52:12,670 --> 00:52:14,870 чување на број 12. 1044 00:52:14,870 --> 00:52:17,250 >> Сега, ова е парична казна во тој работи работи добро. 1045 00:52:17,250 --> 00:52:21,310 Но велат дека тоа е важно за мене она што секој индекс држи. 1046 00:52:21,310 --> 00:52:24,500 За мене, индексот 0 значи како многу мачки имам. 1047 00:52:24,500 --> 00:52:27,400 А индексот 1 значи како многу бувови имам. 1048 00:52:27,400 --> 00:52:29,450 А следниот значи колку кучиња. 1049 00:52:29,450 --> 00:52:34,140 Па, тогаш тоа да се каже дека, наместо на морале да се сеќавам 0 однесува на 1050 00:52:34,140 --> 00:52:38,090 мачки и 1 до бувови, можам да користам асоцијативни низи, што значи дека 1051 00:52:38,090 --> 00:52:42,260 наместо на цели броеви како мојот индекси, Јас всушност може да се користат стрингови. 1052 00:52:42,260 --> 00:52:43,290 >> Значи ова е доста корисна. 1053 00:52:43,290 --> 00:52:47,130 И сте во основа, само замени цели броеви со жици. 1054 00:52:47,130 --> 00:52:50,074 И таму имате асоцијативна низа. 1055 00:52:50,074 --> 00:52:51,930 Да. 1056 00:52:51,930 --> 00:52:55,800 >> Публика: Дали постои причина зошто има црта за вториот 1057 00:52:55,800 --> 00:52:58,750 дел, бидејќи мојата листа има низа. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: Прашањето беше, е постои причина зошто таму е 1059 00:53:01,330 --> 00:53:03,320 истакне меѓу моите и листа? 1060 00:53:03,320 --> 00:53:03,610 Бр. 1061 00:53:03,610 --> 00:53:06,878 Тоа е само колку сум именување мојата променлива. 1062 00:53:06,878 --> 00:53:11,670 >> ПУБЛИКАТА: На првите линија, тоа е еден збор. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Мојот извинување. 1064 00:53:12,560 --> 00:53:13,410 Јас ќе го поправам тоа. 1065 00:53:13,410 --> 00:53:13,620 Да. 1066 00:53:13,620 --> 00:53:15,460 Тие треба да бидат исти името на променливата. 1067 00:53:15,460 --> 00:53:16,710 Добар улов. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Па ајде да се движат за да стринг конкатенација. 1071 00:53:22,610 --> 00:53:27,500 Ако сакав да се земе две жици, тогаш можам да ги CONCATENATE 1072 00:53:27,500 --> 00:53:28,550 со операторот точка. 1073 00:53:28,550 --> 00:53:32,440 Па ако имам Мило како прво име и Банана како презиме, тогаш 1074 00:53:32,440 --> 00:53:35,430 надоврзување со операторот точка и тогаш ставање на просторот помеѓу 1075 00:53:35,430 --> 00:53:39,210 ќе се направи стринг кој содржи Мило Банана, за што јас тогаш може да се ехо или, 1076 00:53:39,210 --> 00:53:41,280 Наместо тоа, испечатите. 1077 00:53:41,280 --> 00:53:44,465 >> Говорејќи на ехо, ајде да разговараме за неколку корисни - 1078 00:53:44,465 --> 00:53:44,920 Упс. 1079 00:53:44,920 --> 00:53:46,030 Жал ми е. 1080 00:53:46,030 --> 00:53:52,920 Неколку корисни PHP функции. 1081 00:53:52,920 --> 00:53:56,240 Значи имаме - 1082 00:53:56,240 --> 00:53:57,444 технички тешкотии. 1083 00:53:57,444 --> 00:53:58,694 Една секунда. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Јас го испрати. 1086 00:54:19,550 --> 00:54:22,320 PowerPoint проблеми. 1087 00:54:22,320 --> 00:54:29,200 И ние сме назад со PHP функции. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 И ние сме назад со PHP функции. 1090 00:54:35,150 --> 00:54:39,890 >> Значи имаме потреба функција, каде што ако помине во датотека, тука е само 1091 00:54:39,890 --> 00:54:43,300 пример за датотека која Јас може да помине внатре 1092 00:54:43,300 --> 00:54:47,605 Тогаш тоа ќе вклучуваат кодот PHP од таа датотека дека јас укажуваат. 1093 00:54:47,605 --> 00:54:49,940 И тоа ќе се оцени дека внатре 1094 00:54:49,940 --> 00:54:54,450 Тогаш ние исто така имаат ехо, која е паралелно со printf. 1095 00:54:54,450 --> 00:54:57,710 Излез е паралелен да се скрши, кој излегува на блок од 1096 00:54:57,710 --> 00:54:58,570 код кој сте внатре 1097 00:54:58,570 --> 00:55:03,180 А потоа празни проверува дали дадена променлива е како нула или нула или 1098 00:55:03,180 --> 00:55:08,482 она што се изедначува со се празни. 1099 00:55:08,482 --> 00:55:09,438 Да. 1100 00:55:09,438 --> 00:55:15,341 >> ПУБЛИКАТА: За низа сплет точка операторот еден, во PHP, е дека 1101 00:55:15,341 --> 00:55:20,158 исти како и во вклучите Javascript каде што тоа е со користење дот за конкатенација значи плус? 1102 00:55:20,158 --> 00:55:27,440 Значи за целосно име и презиме, може да имаат долар се регистрирате прво + и потоа + трае? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA Чан: Да. 1104 00:55:27,720 --> 00:55:32,150 Значи, прашањето беше дали во PHP ние можете да го користите истиот стринг конкатенација 1105 00:55:32,150 --> 00:55:33,890 како и во вклучите Javascript со предности. 1106 00:55:33,890 --> 00:55:35,410 И Јосиф ќе навлегувам во тоа подоцна. 1107 00:55:35,410 --> 00:55:36,620 Мислам дека тој има слајд на тоа. 1108 00:55:36,620 --> 00:55:37,570 Всушност, тоа е различно. 1109 00:55:37,570 --> 00:55:41,310 Така во JavaScript, треба да користите плус да CONCATENATE жици. 1110 00:55:41,310 --> 00:55:43,280 А во PHP, ќе мора да користете оператор точка. 1111 00:55:43,280 --> 00:55:44,530 Па тие се различни. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Па сега дека ние сме опфатени сите овој PHP, каде што се врши 1115 00:55:49,500 --> 00:55:50,490 навистина дојде во рака? 1116 00:55:50,490 --> 00:55:54,470 Па, тоа доаѓа во рака кога ќе може да се комбинираат со нашите HTML. 1117 00:55:54,470 --> 00:55:59,550 Па нашите PHP ќе ни даде моќ да промените HTML содржина на страницата, пред 1118 00:55:59,550 --> 00:56:00,000 нејзините вчитување. 1119 00:56:00,000 --> 00:56:04,270 Па врз основа на различни услови, обично специфичниот корисник тоа е 1120 00:56:04,270 --> 00:56:07,520 ме, ние може да се прикаже различни информации. 1121 00:56:07,520 --> 00:56:08,800 Линда, дали имате некое прашање? 1122 00:56:08,800 --> 00:56:15,510 >> ПУБЛИКАТА: Можете ли да CONCATENATE цел број, исто така,? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA Чан: Да, можеш. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Значи, прашањето беше дали можете CONCATENATE броеви или други 1126 00:56:23,270 --> 00:56:28,920 variable.s сега, ние се движи кон MVC, кој е парадигма што се користеа во 1127 00:56:28,920 --> 00:56:33,380 pset7 и многу веб дизајнери користат за организирање на код во датотека 1128 00:56:33,380 --> 00:56:34,490 во нивниот веб-сајт. 1129 00:56:34,490 --> 00:56:35,870 М стои за модел. 1130 00:56:35,870 --> 00:56:41,450 И во основа, модел датотеки ќе се справи со интеракции со базата на податоци. 1131 00:56:41,450 --> 00:56:44,640 Прикажи фајлови, тие се однесуваат на естетиката на веб-сајтот. 1132 00:56:44,640 --> 00:56:47,550 И контролор рачки барања на корисникот, парсира 1133 00:56:47,550 --> 00:56:49,230 податоци, врши и други логика. 1134 00:56:49,230 --> 00:56:52,520 >> Во pset7, ние се комбинираат модел и контролорот. 1135 00:56:52,520 --> 00:56:55,880 А ние само ги повика контролери и ги стави во јавниот именик. 1136 00:56:55,880 --> 00:57:01,730 И преглед на датотеки, ние ги користат како Шаблони во директориумот со шаблони. 1137 00:57:01,730 --> 00:57:07,260 Па овој дијаграм тука, исто така, претставува тоа ист вид на поделба со 1138 00:57:07,260 --> 00:57:10,510 модел и контролорот во пурпурно тука на левата и 1139 00:57:10,510 --> 00:57:12,770 поглед на правото. 1140 00:57:12,770 --> 00:57:16,020 Значи ова е шематски дека некои од вас може да се види на работното време или 1141 00:57:16,020 --> 00:57:19,130 дијаграми кои бевме цртање како што се пронајдат вашиот pset. 1142 00:57:19,130 --> 00:57:25,030 >> Значи тука, во даден контролор, модел контролор, имаме функции 1143 00:57:25,030 --> 00:57:30,490 кои се однесуваат на доведување во прашање на SQL база на податоци, извршување PHP логика. 1144 00:57:30,490 --> 00:57:32,370 Можеби ќе се погледне нагоре акции во Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Финансиите. 1146 00:57:34,590 --> 00:57:37,390 Или можеби, вие само ќе провери за да види дали корисникот го поднел 1147 00:57:37,390 --> 00:57:40,250 формираат веќе пред да имаат посети вашата страница. 1148 00:57:40,250 --> 00:57:43,390 А потоа ќе направат форма овде. 1149 00:57:43,390 --> 00:57:48,210 По барањето било поднесено таа форма од страна на корисникот, акцијата, која беше 1150 00:57:48,210 --> 00:57:53,470 наведени во HTML таг форма на ќе укажуваат на страницата кој 1151 00:57:53,470 --> 00:57:55,620 се враќа дека податоците да. 1152 00:57:55,620 --> 00:57:59,460 >> Па сите тие информации би било испратен назад во вашиот контролер. 1153 00:57:59,460 --> 00:58:02,620 Тогаш веројатно ќе се направи малку повеќе логика на тоа и можеби изврши неколку 1154 00:58:02,620 --> 00:58:06,510 повеќе прашања во SQL база на податоци и потоа, конечно, излезе со убаво 1155 00:58:06,510 --> 00:58:11,930 спакувани збир на информации кои што би помине во во некои други дефиниција 1156 00:58:11,930 --> 00:58:13,950 кои покажуваа таа информација. 1157 00:58:13,950 --> 00:58:17,030 Сега, како да ние всушност пакет таа информација до? 1158 00:58:17,030 --> 00:58:23,980 Па, имаме функција наречена Рендерирање која беше во functions.php датотека во 1159 00:58:23,980 --> 00:58:29,950 pset7, каде ќе помине во името на датотека, на име на дефиниција. 1160 00:58:29,950 --> 00:58:32,160 >> И тогаш исто така се помине во асоцијативна низа. 1161 00:58:32,160 --> 00:58:37,150 И така што асоцијативна низа претставува различни информации 1162 00:58:37,150 --> 00:58:39,040 кој сакате да го помине внатре 1163 00:58:39,040 --> 00:58:43,460 Сега, она што се случува да биде постојана во овие примери е дека клучевите или, 1164 00:58:43,460 --> 00:58:47,070 Наместо тоа, клучевите од асоцијативни низи, тие се она што се случува да биде 1165 00:58:47,070 --> 00:58:51,050 очекува да биде константно со дефиниција, бидејќи тоа го знае тоа треба 1166 00:58:51,050 --> 00:58:53,990 нешто што се нарекува порака или наречен име. 1167 00:58:53,990 --> 00:58:56,940 А потоа работи на право, вистинските вредности, така што во овој случај, кој е 1168 00:58:56,940 --> 00:59:00,750 добро момче и Мило, тие се случува да биде вредностите кои се менуваат 1169 00:59:00,750 --> 00:59:05,610 дека контролорот менува секој пат или врз основа на одредени услови и 1170 00:59:05,610 --> 00:59:07,120 ќе помине дека внатре 1171 00:59:07,120 --> 00:59:12,790 >> Па тука во шаблони, можеме да видиме дека ние се користи HTML специјални карактери, 1172 00:59:12,790 --> 00:59:16,370 кои само во основа значи дека ние сакаме за да го добиете пер стринг кој го 1173 00:59:16,370 --> 00:59:17,580 корисникот стави внатре 1174 00:59:17,580 --> 00:59:20,880 И ние сакаме да се замени порака во таму. 1175 00:59:20,880 --> 00:59:26,110 Па тогаш кога ние всушност ја видите датотеката, специфични 1176 00:59:26,110 --> 00:59:28,700 информации е донесен внатре 1177 00:59:28,700 --> 00:59:33,850 Имајте на ум дека клучот како прават дела е дека клучевите на асоцијативниот 1178 00:59:33,850 --> 00:59:37,170 низи, оние стане променлива имиња тука. 1179 00:59:37,170 --> 00:59:40,720 И така вредностите на тој клуч во асоцијативна низа тогаш станува 1180 00:59:40,720 --> 00:59:41,970 вредноста на променлива. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Сега, ајде да се движат за да SQL. 1183 00:59:46,040 --> 00:59:48,010 Таа се залага за Структурно Јазик за пребарување. 1184 00:59:48,010 --> 00:59:50,460 И така ова е само програмирање јазик наменета 1185 00:59:50,460 --> 00:59:51,880 за управување со бази на податоци. 1186 00:59:51,880 --> 00:59:56,860 И дојде во удобен за нас во нашите pset7 финансии веб-сајт. 1187 00:59:56,860 --> 01:00:00,510 Во суштина, тоа е само лесен начин да се следење и управување со предмети и табели 1188 01:00:00,510 --> 01:00:02,070 и да ги поврзе едни со други. 1189 01:00:02,070 --> 01:00:06,860 Сега, мислам на вашиот SQL база на податоци во основа како датотека Excel, можеби, 1190 01:00:06,860 --> 01:00:10,040 со повеќе јазичиња листови. 1191 01:00:10,040 --> 01:00:13,820 >> Па може да има повеќе табели, можеби, кои се поврзани една со друга. 1192 01:00:13,820 --> 01:00:19,420 И многу како Excel, имаме многу функционалноста дека го сакаме. 1193 01:00:19,420 --> 01:00:22,300 На пример, ние може да избере одредени редови. 1194 01:00:22,300 --> 01:00:24,110 Ние можеме да вметнете информации. 1195 01:00:24,110 --> 01:00:25,560 Ние може да се ажурираат редови. 1196 01:00:25,560 --> 01:00:27,440 И ние исто така може да го избришете нешта. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> SQL Избери дела со избирање редови или ред на наведената колони од 1199 01:00:36,560 --> 01:00:39,640 база на податоци кои одговараат на одреден критериуми кои укажуваат. 1200 01:00:39,640 --> 01:00:44,930 Па овде кога ќе видам select * from волшебници, каде куќа = Ravenclaw, тогаш 1201 01:00:44,930 --> 01:00:48,340 Јас сум изборот *, што значи јас сум избирање секој колона со тоа, што 1202 01:00:48,340 --> 01:00:56,340 ред од волшебници маса, но само ако куќата колона еднаква Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Сега, ова е чиста или SQL. 1204 01:00:57,840 --> 01:01:02,680 Па ако отидов во phpMyAdmin, кој е специфичниот начин кои ние ги користиме да управуваат со 1205 01:01:02,680 --> 01:01:07,040 нашите SQL бази на податоци, тогаш би можел да се вметне дека во веб phpMyAdmin. 1206 01:01:07,040 --> 01:01:08,290 И дека ќе се изврши. 1207 01:01:08,290 --> 01:01:11,280 >> Но ние всушност сакате да го направите дека на страна PHP. 1208 01:01:11,280 --> 01:01:12,580 Па, како го правиме тоа? 1209 01:01:12,580 --> 01:01:20,180 Па, ние ги користиме на пребарување функција, која основа извршува дека SQL пребарување. 1210 01:01:20,180 --> 01:01:21,830 Користите? 1211 01:01:21,830 --> 01:01:25,850 како случаеви, може да се помине во одредени вредности на нашата стринг кој ние 1212 01:01:25,850 --> 01:01:26,920 сакате да се замени. 1213 01:01:26,920 --> 01:01:32,110 Па можеби јас сум чување различни вредности во curr_house, кои 1214 01:01:32,110 --> 01:01:34,400 претставува сегашна куќа дека ќе одам преку. 1215 01:01:34,400 --> 01:01:39,040 За да можам да го положат дека во како случаеви со прашалник. 1216 01:01:39,040 --> 01:01:43,290 А потоа јас во основа ќе го изврши Истото како што го направив порано, освен 1217 01:01:43,290 --> 01:01:45,550 сега, јас сум во PHP. 1218 01:01:45,550 --> 01:01:51,300 >> И барањето ќе се врати асоцијативна низа. 1219 01:01:51,300 --> 01:01:53,470 И јас одам да го чувате во редови. 1220 01:01:53,470 --> 01:01:56,880 Сега, пребарување секогаш може да пропадне. 1221 01:01:56,880 --> 01:02:02,870 Можеби SQL упит не може да се изврши бидејќи на табелата не постои. 1222 01:02:02,870 --> 01:02:04,310 Или можеби, во колоната не постои. 1223 01:02:04,310 --> 01:02:05,400 Нешто тргнало наопаку. 1224 01:02:05,400 --> 01:02:08,170 Па, во тој случај, ќе сакате да бидете сигурни дека ќе провери дали 1225 01:02:08,170 --> 01:02:09,700 пребарување врати лажна. 1226 01:02:09,700 --> 01:02:15,590 И тоа е со користење на тројниот еднакво операција таму. 1227 01:02:15,590 --> 01:02:19,660 >> И тогаш јас се извинувам, што е уште CS50 функција, поминува во пораката. 1228 01:02:19,660 --> 01:02:23,435 И ако се погледне во извини, сето тоа навистина не е направила apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Да. 1231 01:02:26,410 --> 01:02:29,630 >> Публика: Може ли да се објасни она што ѕвезда прави помеѓу одберете и од? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA Чан: Да, апсолутно. 1233 01:02:30,710 --> 01:02:35,220 Па ѕвездата помеѓу одберете и од значи дека сакам да го изберете целата 1234 01:02:35,220 --> 01:02:37,440 целиот ред од мојата маса. 1235 01:02:37,440 --> 01:02:41,900 Јас би можеле да го посочи изберете име, година, куќата. 1236 01:02:41,900 --> 01:02:46,160 И јас само ќе се добијат овие три колумни во мојата маса. 1237 01:02:46,160 --> 01:02:51,560 Но ако кажам одберете *, потоа јас ќе се добие сè што во таа колона. 1238 01:02:51,560 --> 01:02:53,760 Тогаш јас ќе одам да одите во задниот прв план. 1239 01:02:53,760 --> 01:02:57,656 >> ПУБЛИКАТА: Значи ова е уште во SQL, нели? 1240 01:02:57,656 --> 01:02:59,610 Дали е ова пребарување или ова е PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Ние сме во барањето. 1242 01:03:00,550 --> 01:03:01,940 Па ова е во PHP. 1243 01:03:01,940 --> 01:03:06,280 Значи со користење на PHP функцијата за пребарување, ние сме извршување на SQL query. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Публика: Дали е ништо во SQL со мали букви, како да изберете 1246 01:03:15,364 --> 01:03:17,834 или волшебници или куќа? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA Чан: Дали е ништо во SQL мали букви? 1248 01:03:20,050 --> 01:03:21,760 Јас верувам дека е така, да. 1249 01:03:21,760 --> 01:03:24,620 Верувам дека Одберете и од и каде се со мали букви. 1250 01:03:24,620 --> 01:03:25,535 Не? 1251 01:03:25,535 --> 01:03:27,500 >> Роб BOWDEN: Значи, тоа е токму спротивното. 1252 01:03:27,500 --> 01:03:32,030 Колоната имиња и масата средства, сите од нив се со мали букви. 1253 01:03:32,030 --> 01:03:35,470 Но, секој од клучните MySQL зборови, како Одберете, и каде, оние кои не се 1254 01:03:35,470 --> 01:03:36,140 мали букви. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Па спротивното од она што реков. 1257 01:03:37,780 --> 01:03:40,420 Така што сите на MySQL клучни зборови - 1258 01:03:40,420 --> 01:03:42,670 изберете од, каде што - оние не се со мали букви. 1259 01:03:42,670 --> 01:03:44,630 Но, сè друго е. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Вие во фронт. 1262 01:03:46,500 --> 01:03:52,041 >> Публика: Ако сум $ редови во однос на повеќе од еден ред, дали тоа значи е 1263 01:03:52,041 --> 01:03:53,640 само станува асоцијативна низа? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA Чан: Значи, прашањето беше дали редови има повеќе од еден ред во тоа, не 1265 01:03:59,550 --> 01:04:01,800 тоа да стане асоцијативна низа? 1266 01:04:01,800 --> 01:04:05,680 Па тоа е низа на асоцијативниот низи веќе. 1267 01:04:05,680 --> 01:04:10,730 Па дури и ако има само еден ред врати, тогаш ќе треба да се оди на 1268 01:04:10,730 --> 01:04:12,690 индекс 0 од тој резултат. 1269 01:04:12,690 --> 01:04:15,316 И тогаш ќе го имаат тоа првиот ред. 1270 01:04:15,316 --> 01:04:17,482 Да, Белинда? 1271 01:04:17,482 --> 01:04:21,258 >> Публика: Кога користите ===, дали е ова само пример? 1272 01:04:21,258 --> 01:04:22,210 Или постојат други? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA Чан: Значи во овој случај, === е споредба низ типови. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Жал. === Е споредба што го споредува типови. 1276 01:04:34,050 --> 01:04:37,620 А потоа == споредува низ сите видови. 1277 01:04:37,620 --> 01:04:41,620 >> Публика: Можете ли да објасните што редови е во оваа ситуација? 1278 01:04:41,620 --> 01:04:45,120 Е тоа ред на податоци? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: Во следниот слајд, јас сум ќе се објасни она редови е. 1280 01:04:48,100 --> 01:04:49,890 Па ако не ти пречи држи исклучување на тоа. 1281 01:04:49,890 --> 01:04:50,620 А потоа можете во грб? 1282 01:04:50,620 --> 01:04:54,699 >> ПУБЛИКАТА: За функции како пребарување, направат и се извини [нечујни]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: Прашањето е дали овие функции - на прашањето, се извинувам, 1285 01:05:03,050 --> 01:05:04,510 и ја даде - 1286 01:05:04,510 --> 01:05:05,930 се одржуваат низ PHP. 1287 01:05:05,930 --> 01:05:09,460 Овие се оние кои CS50 напиша за pset7. 1288 01:05:09,460 --> 01:05:09,910 И Џеј? 1289 01:05:09,910 --> 01:05:15,333 >> Публика: Кога ви треба да се каже $ _SESSION, Е дека само за лични карти? 1290 01:05:15,333 --> 01:05:17,310 Или може да ви се рече дека овде? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA Чан: Значи, прашањето е, кога ние ги користиме $ _SESSION, тоа беше специфична 1292 01:05:23,440 --> 01:05:25,290 глобалната променлива, дека ние сме користење. 1293 01:05:25,290 --> 01:05:32,080 Тука оваа променлива ќе да бидат локални на нашата функција. 1294 01:05:32,080 --> 01:05:36,588 Па ние сме само прогласување нова променлива. 1295 01:05:36,588 --> 01:05:38,460 >> Публика: Како се извини спроведува? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: Прашањето беше, како се извинувам спроведува? 1297 01:05:40,960 --> 01:05:44,180 И мислам дека ова е всушност прилично добра практика за вас момци да одат во 1298 01:05:44,180 --> 01:05:49,260 на functions.php секција и се погледне на извини и да видиме како може да имаат 1299 01:05:49,260 --> 01:05:50,670 направи го тоа сами. 1300 01:05:50,670 --> 01:05:55,620 Па јас може да го оставиме тоа за вас, но само велат дека ако се погледне во извини, 1301 01:05:55,620 --> 01:06:02,110 тогаш е потребно пораката која што поднесени се извини, а потоа 1302 01:06:02,110 --> 01:06:06,570 прави таа порака. 1303 01:06:06,570 --> 01:06:08,240 Повеќе прашања? 1304 01:06:08,240 --> 01:06:08,710 Го сакам прашања. 1305 01:06:08,710 --> 01:06:09,555 Па ги задржиме доаѓаат. 1306 01:06:09,555 --> 01:06:11,888 >> ПУБЛИКАТА: [нечујни] 1307 01:06:11,888 --> 01:06:13,840 ехо или да ги печатите таму? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: Прашањето беше, не може само ние да се стави 1309 01:06:15,900 --> 01:06:17,000 ехо или да ги печатите таму. 1310 01:06:17,000 --> 01:06:19,710 Така што би го направиле нешто малку поинаква. 1311 01:06:19,710 --> 01:06:23,750 Што би се печатени пребарување не успеа во тоа - 1312 01:06:23,750 --> 01:06:27,420 добро, токму сега, ние сме всушност во нашата контролер. 1313 01:06:27,420 --> 01:06:30,350 Па ние не, всушност треба HTML постави тука. 1314 01:06:30,350 --> 01:06:34,946 Извини преку давање apologize.php всушност води до apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Па сега, ајде да одат за да се одговори на прашање од порано за тоа што 1318 01:06:45,880 --> 01:06:47,330 навистина е редови. 1319 01:06:47,330 --> 01:06:51,960 Па, барањето ќе се врати низа на редови. 1320 01:06:51,960 --> 01:06:55,020 И секој ред е претставена од страна на асоцијативна низа. 1321 01:06:55,020 --> 01:07:02,840 Значи, ако јас сум извршува некои SQL пребарување и Сум се чуваат резултатот во редови, а потоа 1322 01:07:02,840 --> 01:07:07,850 користење на foreach циклусот, тогаш низата име е првиот таму - редови. 1323 01:07:07,850 --> 01:07:13,170 А потоа јас ќе одам да се јавите секој ред таму $ ред. 1324 01:07:13,170 --> 01:07:20,060 >> Па процесирањето над тоа, јас потоа може да пристап до дадената ред името колона, 1325 01:07:20,060 --> 01:07:22,340 година колона, и куќа колона. 1326 01:07:22,340 --> 01:07:28,010 Имајте на ум дека јас не би биле во можност да го направите тоа со редови, бидејќи редови индекс 1327 01:07:28,010 --> 01:07:29,290 име не постои. 1328 01:07:29,290 --> 01:07:31,970 Редови е само низа од асоцијативни низи. 1329 01:07:31,970 --> 01:07:34,870 Па имате два степени. 1330 01:07:34,870 --> 01:07:37,170 Откако ќе имаат низа на редови, мора да навлегувам во тоа. 1331 01:07:37,170 --> 01:07:39,110 А потоа можете да пристапите до колони. 1332 01:07:39,110 --> 01:07:41,636 Дали кои го прават тоа јасно? 1333 01:07:41,636 --> 01:07:42,520 Да, пред? 1334 01:07:42,520 --> 01:07:45,490 >> ПУБЛИКАТА: [нечујни] отворите загради за [нечујни]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA Чан: Извинете ме? 1336 01:07:46,220 --> 01:07:49,740 >> Публика: отворена голема заграда. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Овие тука? 1338 01:07:52,420 --> 01:07:58,520 Тоа е што ми дозволивте да се вклучат таа променлива. 1339 01:07:58,520 --> 01:07:58,670 Да. 1340 01:07:58,670 --> 01:08:01,900 >> Публика: Кога ќе се печати, дали сте печатење на HTML код? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA Чан: Да. 1342 01:08:03,110 --> 01:08:07,720 Кога ќе печати, овој овде е внатре мојата дефиниција сега, па 1343 01:08:07,720 --> 01:08:10,310 мојот поглед на MVC метод. 1344 01:08:10,310 --> 01:08:12,750 Па јас сум печатење во HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Публика: Значи, ако отидовме во инвеститорот алатки после водење ова, ние би можеле да 1346 01:08:16,670 --> 01:08:17,160 кои, всушност, во кодот? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA Чан: Тоа е одлична прашање, да. 1348 01:08:18,410 --> 01:08:22,359 Па ако отиде во инвеститорот алатки во Firefox со користење на светулка или 1349 01:08:22,359 --> 01:08:26,109 Хром, тогаш да, можете да види специфичните HTML. 1350 01:08:26,109 --> 01:08:28,470 Така што не ќе покаже $ ред ["name"]. 1351 01:08:28,470 --> 01:08:32,524 Тоа ќе покаже кое име е со тоа, што ред. 1352 01:08:32,524 --> 01:08:36,268 >> Публика: Само општ проблем, она што се tr и td дефинирани како? 1353 01:08:36,268 --> 01:08:37,672 Зошто би ние [нечујни]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Табела ред tr, маса, тогаш ТД колона. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Публика: Да, тоа е табела на податоци. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: Табела на податоци. 1361 01:08:58,770 --> 01:08:59,894 Да. 1362 01:08:59,894 --> 01:09:08,670 >> ПУБЛИКАТА: Тоа е ред, во која ред се третира како колоната? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Извини. 1364 01:09:08,910 --> 01:09:10,570 Можете да го повторите тоа? 1365 01:09:10,570 --> 01:09:14,450 >> Публика: Како би ја визуелизира редови? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA Чан: Како би ја визуелизира редови во каков вид на начин? 1367 01:09:16,310 --> 01:09:21,796 Дали сте зборуваме за овие редови тука или tr редови? 1368 01:09:21,796 --> 01:09:22,630 >> Публика: реда. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Овие редови тука? 1370 01:09:25,229 --> 01:09:28,620 Би се визуелизира ова како Јас изврши ми пребарување. 1371 01:09:28,620 --> 01:09:38,729 И таа вели, во ред, имам или 0 до n износот на редови кои се совпаѓаат со критериумите 1372 01:09:38,729 --> 01:09:40,510 дека сте имале достапен. 1373 01:09:40,510 --> 01:09:43,740 Па имам некои бројот на редови. 1374 01:09:43,740 --> 01:09:51,450 Па редови, $ редови, продавници секоја еден од оние редови во низа. 1375 01:09:51,450 --> 01:09:58,110 Па дури и ако тоа е само еден од нив, тоа е уште низа на редови кои се поклопат. 1376 01:09:58,110 --> 01:10:03,010 >> Па тогаш, на пример, тоа е слични на кога ќе Земени 1377 01:10:03,010 --> 01:10:05,390 кешот од корисниците. 1378 01:10:05,390 --> 01:10:10,810 И критериумите имаше каде ID еднаква на сесијата проект. 1379 01:10:10,810 --> 01:10:14,250 Постојат навистина само еден ред кои би можеле да одговараат на тоа. 1380 01:10:14,250 --> 01:10:18,960 Но сепак редови само што се врати еден ред. 1381 01:10:18,960 --> 01:10:22,620 Па ќе мора да одат на редови, индекс 0, индексот на кешот за 1382 01:10:22,620 --> 01:10:26,195 всушност стигнете до вашата кешот. 1383 01:10:26,195 --> 01:10:29,650 >> Публика: Дали е функција за печатење во ехо истото? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA Чан: Да. 1385 01:10:30,670 --> 01:10:31,190 Да. 1386 01:10:31,190 --> 01:10:33,304 Печати ехо на истиот. 1387 01:10:33,304 --> 01:10:42,400 >> Публика: Дали foreach циклусот на Единствениот начин да се индексира во редови? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Дали е foreach циклусот единствениот начин на кој можете да 1389 01:10:46,110 --> 01:10:47,030 iterate преку редови? 1390 01:10:47,030 --> 01:10:47,180 Бр. 1391 01:10:47,180 --> 01:10:51,000 Исто така можете да го користите за телефонска линија, под услов дека знаете должина 1392 01:10:51,000 --> 01:10:53,024 на низа на спорот. 1393 01:10:53,024 --> 01:10:58,500 >> Публика: Може ли да го пристап користење ред како [нечујни]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA Чан: Па не можете да имате пристап до него само со користење ред ако немаат 1395 01:11:01,640 --> 01:11:05,160 foreach јамка под услов не се изјасниле ред. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Да. 1398 01:11:09,660 --> 01:11:10,810 Да, во бело. 1399 01:11:10,810 --> 01:11:13,990 >> Публика: Па што tr и td направам? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Значи tr и ТД се HTML тагови. 1401 01:11:16,790 --> 01:11:19,590 tr укажува на почетокот на табелата. 1402 01:11:19,590 --> 01:11:26,625 И секој ТД укажува на нова табела на податоци колона. 1403 01:11:26,625 --> 01:11:32,275 >> ПУБЛИКАТА: За визуелна на она ред е како, замислете на SQL, како 1404 01:11:32,275 --> 01:11:33,510 тие имаат по ред. 1405 01:11:33,510 --> 01:11:35,980 [Нечујни]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA Чан: Да. 1407 01:11:36,390 --> 01:11:37,630 Тоа е голема точка. 1408 01:11:37,630 --> 01:11:41,510 Може да се визуелизира редови како само како во табела Excel, само 1409 01:11:41,510 --> 01:11:44,540 листата на редови. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Во ред е. 1412 01:11:47,230 --> 01:11:50,740 Па сега дека ние сме поминале над изберете, ако не постојат никакви други прашања, ние ќе 1413 01:11:50,740 --> 01:11:52,970 поминат врз внесување. 1414 01:11:52,970 --> 01:11:58,220 Значи, ако сакав да вметнете во некои маса и да внесете одредени колона 1415 01:11:58,220 --> 01:12:02,320 вредности, би можел да си го вметнете во Ravenclaw во 7 година. 1416 01:12:02,320 --> 01:12:07,245 Но понекогаш може да има дупликат вредности, како што видовме во pset7 кога ние 1417 01:12:07,245 --> 01:12:09,240 беа ажурирање нашето портфолио. 1418 01:12:09,240 --> 01:12:15,610 >> Значи во овој случај, ние сакаме да го користите на Дупликат клучот ажурирање, така што ние не 1419 01:12:15,610 --> 01:12:18,280 чување на повеќе редови со истата вредност, туку надградба на тоа. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Тогаш ние всушност имаат ажурирање, која не е внесување. 1422 01:12:25,560 --> 01:12:30,100 Тоа е само надградба, каде што се ажурира во одредена маса со даден 1423 01:12:30,100 --> 01:12:34,403 критериуми, а потоа, конечно, избришете, кој не е многу слична работа. 1424 01:12:34,403 --> 01:12:40,200 >> Публика: Може ли накратко одиме во текот на дупликат клучот? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA Чан: Да. 1426 01:12:40,850 --> 01:12:48,340 Во суштина тука, имам INSERT INTO gringotts, е, galleons, овие вредности. 1427 01:12:48,340 --> 01:12:56,900 Но проект, веројатно, е уникатен клуч вредност се постави во MySQL табела. 1428 01:12:56,900 --> 01:13:06,750 Значи, ако јас веќе тој проект се постави, тогаш не можам да ја внесе нов ред. 1429 01:13:06,750 --> 01:13:10,961 Значи, ако тоа не постои веќе, тогаш морам да го ажурирате. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 Во средината во бело. 1432 01:13:17,722 --> 01:13:21,570 >> ПУБЛИКАТА: Значи вметнете, ажурирање, бришење, и изберете, се оние сите достапни 1433 01:13:21,570 --> 01:13:22,875 локално [нечујни]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Значи вметнете, ажурирање, бришење и 1436 01:13:29,630 --> 01:13:31,120 изберете сите SQL queries. 1437 01:13:31,120 --> 01:13:34,970 Па кога сте со користење на SQL, ќе имаат оние кои се достапни. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> ПУБЛИКАТА: Назад кон минатото квизови - 1440 01:13:40,706 --> 01:13:44,178 имаше прашање кои се занимаваат со ако сте имале маса и сакаше да 1441 01:13:44,178 --> 01:13:52,610 вметнете тест резултатите во една и ќе го вметнете Вашето име, па тоа нема да ве 1442 01:13:52,610 --> 01:13:54,594 [Нечујни] тест резултат на вашиот пријател. 1443 01:13:54,594 --> 01:13:59,060 Како ќе го стори тоа со вметнување? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA Чан: Значи, прашањето беше за претходна среднорочен прашање. 1445 01:14:02,490 --> 01:14:04,320 Јас не сум свесен за кои еден е во право сега. 1446 01:14:04,320 --> 01:14:06,790 Па можеби потоа, ако сакате да излезе и да покаже мене, тогаш можам 1447 01:14:06,790 --> 01:14:08,155 сигурно ви даде совети. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Но, зборувајќи на вметнување работи, како земајќи нечија резултат кога ќе 1450 01:14:15,460 --> 01:14:18,800 не треба, ајде да зборуваме за SQL инјекција напади. 1451 01:14:18,800 --> 01:14:22,050 Па SQL инјекција напад е во суштина каде што некој ги зема 1452 01:14:22,050 --> 01:14:27,680 предностите на ниска безбедноста на начин на кој ќе се одвиваат во податоците. 1453 01:14:27,680 --> 01:14:35,660 >> Значи тука, исто како и во CS50 финансии, кога ќе се најавите, ние може да влезе во 1454 01:14:35,660 --> 01:14:39,510 корисничко име во формуларот за најава, првиот текст, и 1455 01:14:39,510 --> 01:14:41,570 потоа внесете во лозинка. 1456 01:14:41,570 --> 01:14:45,610 Можеби нашите PHP код може да изгледа нешто како ова, каде што $ корисничко име 1457 01:14:45,610 --> 01:14:51,410 е пост-податоци корисничко име и лозинка е пост-податоци лозинка. 1458 01:14:51,410 --> 01:14:55,110 А потоа ние едноставно ја извршиме нашата пребарување, да речеме, Добро, добро, нашите барањето ќе 1459 01:14:55,110 --> 01:14:57,990 изберете од нашите корисници, каде што корисничкото име е на 1460 01:14:57,990 --> 01:14:58,970 оној дека тие се поднесе. 1461 01:14:58,970 --> 01:15:06,870 И лозинка е лозинка, што значи дека лозинките се совпаѓаат. 1462 01:15:06,870 --> 01:15:12,670 >> Сега, што ако наместо всушност поднесување вистински лозинка, како 1463 01:15:12,670 --> 01:15:16,850 12.345 и Сомневајќи се во бода во која се вели лозинка и се обидува да се пробие на нивните 1464 01:15:16,850 --> 01:15:21,460 сметка, што ако, наместо тие поднеле ова. 1465 01:15:21,460 --> 01:15:24,380 Тие би можеле да напишете во можеби погоди во лозинка. 1466 01:15:24,380 --> 01:15:30,480 А потоа тие ќе завршат Цитат потоа внеси или 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Тоа би темпо директно во SQL пребарување да изгледа нешто како ова. 1468 01:15:35,160 --> 01:15:38,200 Изберете од корисници каде корисничко име = Цевчиња и лозинка 1469 01:15:38,200 --> 01:15:41,450 еднакво крин или 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Значи или лозинката има да биде точна или 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 кој е секогаш точно. 1472 01:15:47,870 --> 01:15:52,780 Значи во овој случај, во основа, корисникот може да ги искористат предностите на овој и само се логираат 1473 01:15:52,780 --> 01:15:55,240 себе во и hack сметка нечија. 1474 01:15:55,240 --> 01:15:58,950 Па тоа е причината зошто сакаме да се избегне некој мора да го направите тоа. 1475 01:15:58,950 --> 01:16:03,890 Но, за среќа, барањето функција од страна на преминува во местата за чување, ќе се 1476 01:16:03,890 --> 01:16:04,800 се грижи за тоа за вас. 1477 01:16:04,800 --> 01:16:08,570 Исто така, никогаш нема најчесто сакаат за да всушност ги достави лозинки 1478 01:16:08,570 --> 01:16:09,310 себе. 1479 01:16:09,310 --> 01:16:14,115 Тоа е причината зошто ние hashed или енкриптирани нив во CS50 финансии. 1480 01:16:14,115 --> 01:16:17,553 >> Публика: Минатото квиз зборуваше за MySQL бегство жици. 1481 01:16:17,553 --> 01:16:21,800 Ние мора да се грижите за тоа? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA Чан: Тоа е добро прашање. 1483 01:16:22,670 --> 01:16:29,050 На MySQL бегство жици е дефинитивно функција која се користи во нашите пребарување. 1484 01:16:29,050 --> 01:16:30,420 Но дефинитивно се погледне во тоа. 1485 01:16:30,420 --> 01:16:32,950 Јас би рекол дека е фер игра да знаете дека ќе треба да се јавите дека 1486 01:16:32,950 --> 01:16:34,370 функционираат на конец. 1487 01:16:34,370 --> 01:16:35,245 Да, Белинда? 1488 01:16:35,245 --> 01:16:38,606 >> Публика: Како знаеш, кога тоа е единечен наводник или двојни наводници? 1489 01:16:38,606 --> 01:16:43,516 И, исто така, се чувствувам како во предавање ќе нешто за што не има 1490 01:16:43,516 --> 01:16:48,426 на [нечујни] или нешто или на Вториот сингл понуда на крајот. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Мислам дека тој посочи во предавање кое си требал да има апостроф 1 1493 01:17:00,825 --> 01:17:04,290 и тогаш не треба апострофи или нешто слично. 1494 01:17:04,290 --> 01:17:05,540 >> ПУБЛИКАТА: [нечујни]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Публика: Работата е последната една Цитат таму во таа втората кутија 1497 01:17:18,657 --> 01:17:19,391 не треба да биде таму. 1498 01:17:19,391 --> 01:17:21,840 [Нечујни] 1499 01:17:21,840 --> 01:17:26,730 Затоа што кога ќе се земе дека последен сингл цитирам надвор и одговара на овие за содржина 1500 01:17:26,730 --> 01:17:30,522 каде лозинка е, ако немаш што пребарување, има еден цитат на 1501 01:17:30,522 --> 01:17:31,340 крајот веќе. 1502 01:17:31,340 --> 01:17:36,580 Сакате да го користите дека една понуда како оној кој се соочува со еден 1503 01:17:36,580 --> 01:17:37,574 [Нечујни]. 1504 01:17:37,574 --> 01:17:42,820 Значи она што е, всушност, во тој текст кутија не треба да го имаат тоа. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Ќе го промени тоа. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Ако не постојат било какви прашања, тогаш ќе помине над неа, на Џозеф да се зборува 1509 01:18:00,435 --> 01:18:04,332 за да го вклучите Javascript, итн. 1510 01:18:04,332 --> 01:18:09,540 >> [Аплауз] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Па ние се работи малку зад себе. 1512 01:18:11,660 --> 01:18:13,280 Значи, ако имате да ја напуштат, тоа е во ред. 1513 01:18:13,280 --> 01:18:16,540 Но, ние бараме да одржите вашиот главите надолу ако сте во средината, па можете 1514 01:18:16,540 --> 01:18:19,560 не го блокира камерата и ќе се користат задниот излез, ако имате да. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Јас сум Џозеф на патот. 1517 01:18:26,306 --> 01:18:27,556 Здраво. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Тест, тест. 1520 01:18:38,630 --> 01:18:39,630 Дан, тоа што Добар? 1521 01:18:39,630 --> 01:18:40,880 Кул. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Па на видео, исто така, ќе бидат објавени на интернет, за оние кои 1524 01:18:47,600 --> 01:18:48,850 мора да ја напушти сега. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Непријатно. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Па квиз преглед. 1530 01:18:59,730 --> 01:19:00,980 Ова е една мачка. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Сега, да го вклучите Javascript, која можеби не е како aww за некои од вас момци. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Значи тоа е првиот, се потсетиме од Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Се сеќавам дека PHP е работи на сервер. 1536 01:19:11,270 --> 01:19:15,230 И многу пати, вие момци напиша петелки во PHP за печатење на HTML, нели? 1537 01:19:15,230 --> 01:19:19,170 Па еднаш дека кодот се извршува, што HTML излез што ќе испечатите 1538 01:19:19,170 --> 01:19:20,500 добива испратен до корисникот. 1539 01:19:20,500 --> 01:19:25,960 И еднаш што се случува, не повеќе PHP може да да се кандидира, ако ја вчитате истата страница, на 1540 01:19:25,960 --> 01:19:27,660 Курсот, кој reexecutes на PHP. 1541 01:19:27,660 --> 01:19:30,080 Но штом ќе испечатите дека HTML, вие не може да оди никаде. 1542 01:19:30,080 --> 01:19:33,580 >> Така што HTML е испратен во текот на корисникот, кој е пребарувач овде, каде што 1543 01:19:33,580 --> 01:19:35,470 Мило е со користење на компјутер. 1544 01:19:35,470 --> 01:19:40,340 И толку добро, постојат неколку работи Откако ќе се испрати HTML на корисникот. 1545 01:19:40,340 --> 01:19:43,350 Понекогаш сакаме да се направи нешто како кога ќе кликнете на нешто, сакаме 1546 01:19:43,350 --> 01:19:47,350 алармирање кутии за да pop-up, оние видови на интеракции, како кога ќе притиснете на 1547 01:19:47,350 --> 01:19:50,740 клуч, кога ќе кликнете нешто на страница, сакам нешто да се случи. 1548 01:19:50,740 --> 01:19:54,550 Добро, вие не може да reexecute PHP кодот еднаш дека HTML е поставена. 1549 01:19:54,550 --> 01:19:55,900 Па, како го правиш ова? 1550 01:19:55,900 --> 01:19:59,930 >> Ние се воведе нов јазик наречен JavaScript, која работи во прелистувачот 1551 01:19:59,930 --> 01:20:02,890 кој ви овозможува да се прават работите во HTML откако ќе го добиете 1552 01:20:02,890 --> 01:20:04,020 ги од серверот. 1553 01:20:04,020 --> 01:20:07,050 И ова е причината зошто ние го клиентска страна јавите програмски јазик. 1554 01:20:07,050 --> 01:20:09,110 Таа работи на вашиот компјутер - 1555 01:20:09,110 --> 01:20:11,400 на клиентот. 1556 01:20:11,400 --> 01:20:13,830 Било какви прашања во врска со тоа досега? 1557 01:20:13,830 --> 01:20:15,650 Таа парадигма има смисла за народот? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Добро. 1560 01:20:16,790 --> 01:20:17,340 Во ред е. 1561 01:20:17,340 --> 01:20:20,850 Па првото нешто е да се напомене е да го вклучите Javascript не е PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Тие имаат некои различни синтакса, кои ќе одат во. 1563 01:20:23,010 --> 01:20:24,530 И тие имаат многу различни намени. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, повторно, за вашиот пребарувач, за клиентот. 1565 01:20:26,640 --> 01:20:30,640 Сервер работи некаде на некој друг компјутер, кој испраќа информации 1566 01:20:30,640 --> 01:20:31,720 за вас, точно? 1567 01:20:31,720 --> 01:20:36,730 Па ако бараме од вас да се напише PHP код на испит прашање, не го пишувам 1568 01:20:36,730 --> 01:20:38,710 Го вклучите Javascript-и обратно. 1569 01:20:38,710 --> 01:20:41,710 Вие само ќе изгуби поени, и тоа нема да биде во право. 1570 01:20:41,710 --> 01:20:43,690 >> Па ајде стигнете во некој синтакса разлики - 1571 01:20:43,690 --> 01:20:46,140 JavaScript на левата и PHP на правото. 1572 01:20:46,140 --> 01:20:48,670 Првото нешто што ќе забележите со JavaScript, ние декларираат променливи со 1573 01:20:48,670 --> 01:20:49,440 на var клучни зборови - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP се користи на знакот за долар, како Zamyla дискутирано и порано. 1575 01:20:53,590 --> 01:20:57,570 Ако сакате да ја прогласи асоцијативна низа, можеме да видиме на познати синтакса на 1576 01:20:57,570 --> 01:20:59,030 на десната страна со PHP. 1577 01:20:59,030 --> 01:21:01,630 На левата страна, наместо го користите кадрава загради. 1578 01:21:01,630 --> 01:21:03,280 А потоа вашите клучеви се на левата страна. 1579 01:21:03,280 --> 01:21:04,670 Тогаш имате дебелото црево. 1580 01:21:04,670 --> 01:21:06,560 И тогаш го имате вредности што сакате. 1581 01:21:06,560 --> 01:21:09,840 >> Значи ова е како би го сториле тоа во PHP на десната страна со тоа втор 1582 01:21:09,840 --> 01:21:10,955 линија која започнува во Мило. 1583 01:21:10,955 --> 01:21:14,540 А тоа е како ќе го направи тоа за левата страна во JavaScript, ако сакате 1584 01:21:14,540 --> 01:21:16,110 она што ние го нарекуваме објектот. 1585 01:21:16,110 --> 01:21:19,340 И предмети во вклучите Javascript-се само асоцијативни низи. 1586 01:21:19,340 --> 01:21:23,710 Значи, ако сакате да пристапите области, PHP да ја користите оваа заградата синтакса. 1587 01:21:23,710 --> 01:21:27,170 И на овој начин, можете да преназначаване Овој Сопственички поле, за да Лорен. 1588 01:21:27,170 --> 01:21:30,150 >> Па, во JavaScript, ако некој сака да пристапите поле и менуваат, можете да 1589 01:21:30,150 --> 01:21:31,370 користете точка синтакса. 1590 01:21:31,370 --> 01:21:33,860 Исто така можете да го користите заградата синтакса. 1591 01:21:33,860 --> 01:21:35,550 Но вие не може да ги користат точка синтакса во PHP. 1592 01:21:35,550 --> 01:21:36,525 Тоа нема да функционира. 1593 01:21:36,525 --> 01:21:38,910 Се работи само во PHP. 1594 01:21:38,910 --> 01:21:42,060 И, конечно, да печати работи на конзола, можете да користите console.log, која 1595 01:21:42,060 --> 01:21:43,720 вие момци користи многу во pset8. 1596 01:21:43,720 --> 01:21:45,260 Можете да console.log тоа. 1597 01:21:45,260 --> 01:21:50,030 >> Ако сакате да се печати низа во PHP, мора да се користат печати r. 1598 01:21:50,030 --> 01:21:53,240 И на десната страна, ќе видите јас хаш низа сплет таму. 1599 01:21:53,240 --> 01:21:54,070 Некој праша порано. 1600 01:21:54,070 --> 01:21:55,850 Јас користам еден плус во JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Ако сакам да CONCATENATE нешто во PHP, јас го користам точка. 1602 01:21:59,800 --> 01:22:00,800 Овие се различни. 1603 01:22:00,800 --> 01:22:03,420 Ако сте пишување PHP код, не користете плус. 1604 01:22:03,420 --> 01:22:06,810 Ако сте пишување вклучите Javascript- код, не го пишувам точка. 1605 01:22:06,810 --> 01:22:08,230 Тоа ќе биде во ред. 1606 01:22:08,230 --> 01:22:09,640 И ќе биде тажен. 1607 01:22:09,640 --> 01:22:11,000 >> Па синтакса разлики. 1608 01:22:11,000 --> 01:22:14,710 Знаете вашата синтакса, бидејќи ако треба да пишува прашање и да го користите синтакса 1609 01:22:14,710 --> 01:22:16,890 од погрешен јазик, таа нема да работи. 1610 01:22:16,890 --> 01:22:19,520 И тоа ќе биде во ред. 1611 01:22:19,520 --> 01:22:22,420 Па ајде да зборуваме за некои контрола проток разлики, како да користите 1612 01:22:22,420 --> 01:22:24,040 јамки во секоја од нив. 1613 01:22:24,040 --> 01:22:26,610 Zamyla преминале од десната страна. 1614 01:22:26,610 --> 01:22:27,780 Работи на десната страна треба да биде запознаен. 1615 01:22:27,780 --> 01:22:29,670 Да ги погледнеме на на левата страна. 1616 01:22:29,670 --> 01:22:34,830 >> Кога ќе го користите за n јамка во JavaScript, Вашиот јамка променлива, var i таму, 1617 01:22:34,830 --> 01:22:37,210 јамки низ клучевите на низата. 1618 01:22:37,210 --> 01:22:39,150 Така што гледате име, куќа, и улога. 1619 01:22:39,150 --> 01:22:42,440 Ако јас сум console.log, да се добие име, куќа, и улога. 1620 01:22:42,440 --> 01:22:44,720 Тоа се клучевите. 1621 01:22:44,720 --> 01:22:50,080 Во JavaScript, на foreach циклусот оди во текот на вредности од оваа низа. 1622 01:22:50,080 --> 01:22:52,040 Така ќе забележите дека тие се двете i. 1623 01:22:52,040 --> 01:22:56,000 Но тука на страна на PHP, отпечатоци надвор Мило, CS50, и маскота. 1624 01:22:56,000 --> 01:22:57,390 Тоа се вредности во PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Значи овие се како овие две се различни во различни јазици. 1626 01:23:00,180 --> 01:23:02,970 Значи, ако сте со користење на foreach јамка, не се претпостави дека 1627 01:23:02,970 --> 01:23:03,760 ви дава клучеви. 1628 01:23:03,760 --> 01:23:08,010 И ако сте со користење на за n јамка, не претпостави дека ви дава вредности. 1629 01:23:08,010 --> 01:23:10,420 Дали ова има смисла досега? 1630 01:23:10,420 --> 01:23:13,630 На следниот слајд ќе ви покаже како можете да пристапите на спротивната во 1631 01:23:13,630 --> 01:23:15,160 секој од нив. 1632 01:23:15,160 --> 01:23:18,550 >> Па, ако имате клуч во вклучите Javascript- и сакате вредноста надвор, 1633 01:23:18,550 --> 01:23:20,440 можете само индекс во низа со тоа. 1634 01:23:20,440 --> 01:23:23,640 Па Мило на јас ќе ти добие она што сакате - на вредности. 1635 01:23:23,640 --> 01:23:25,260 Има оваа различни синтакса во PHP. 1636 01:23:25,260 --> 01:23:28,140 Ако навистина сакате да го знам тоа, јас не дека ние сме му го покажа на вас сеуште. 1637 01:23:28,140 --> 01:23:31,740 Но, ако сте заинтересирани, можете да го користите оваа дополнителна синтакса на десната 1638 01:23:31,740 --> 01:23:35,130 страна кои, всушност, ќе ви овозможи да се добие клучеви во PHP кога сте со користење на 1639 01:23:35,130 --> 01:23:35,880 foreach циклусот. 1640 01:23:35,880 --> 01:23:39,640 Па само малку trivia ако сте заинтересирани. 1641 01:23:39,640 --> 01:23:42,630 >> Па тоа е само за да се демонстрира разликите помеѓу овие две рунди. 1642 01:23:42,630 --> 01:23:47,060 Не ги измеша кога сте програмирање прашање. 1643 01:23:47,060 --> 01:23:49,774 Било какви прашања во врска со тоа. 1644 01:23:49,774 --> 01:23:50,770 Кул. 1645 01:23:50,770 --> 01:23:51,310 Во ред е. 1646 01:23:51,310 --> 01:23:52,250 Го вклучите Javascript-објекти. 1647 01:23:52,250 --> 01:23:53,040 Зборував за нив. 1648 01:23:53,040 --> 01:23:54,650 Тие се како асоцијативни низи. 1649 01:23:54,650 --> 01:23:57,730 Едно нешто би сакал да се напомене тука е тоа што вредност во асоцијативна 1650 01:23:57,730 --> 01:23:59,540 низа може да биде ништо во JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Тоа дури може да биде во функција, како таму. 1652 01:24:02,240 --> 01:24:04,600 Имам функција која е вредноста на клучот. 1653 01:24:04,600 --> 01:24:07,030 И ако сакам да се јавам таа функција, Јас само пристап до кората. 1654 01:24:07,030 --> 01:24:08,490 А потоа ја ставив на загради после тоа. 1655 01:24:08,490 --> 01:24:09,790 И дека работи. 1656 01:24:09,790 --> 01:24:15,570 Па било какви прашања? 1657 01:24:15,570 --> 01:24:16,370 Не? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Добро. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, како PHP, е лабаво отчукува. 1661 01:24:20,130 --> 01:24:20,970 Што значи тоа? 1662 01:24:20,970 --> 01:24:22,380 >> Тоа го прави да типови. 1663 01:24:22,380 --> 01:24:24,800 Но кога ќе прогласат го вклучите Javascript- променлива, велиш var i. 1664 01:24:24,800 --> 01:24:25,850 Ти не го каже. 1665 01:24:25,850 --> 01:24:26,460 Тоа не е работа. 1666 01:24:26,460 --> 01:24:28,000 Вие само велат дека тоа е променлива. 1667 01:24:28,000 --> 01:24:31,590 А потоа го вклучите Javascript-ќе се справи со видови под хауба за вас. 1668 01:24:31,590 --> 01:24:34,390 Можеме слободно да конвертирате помеѓу видови поради ова. 1669 01:24:34,390 --> 01:24:37,360 Па јас започнува како голем број во овој случај. 1670 01:24:37,360 --> 01:24:38,790 И тогаш имам стринг. 1671 01:24:38,790 --> 01:24:39,710 И јас го додадете i за тоа. 1672 01:24:39,710 --> 01:24:41,810 И јас го распореди назад во i. 1673 01:24:41,810 --> 01:24:43,640 >> Па на првата линија, i е број. 1674 01:24:43,640 --> 01:24:47,310 На втората линија, јас сега станува конецот после правам прераспоредување. 1675 01:24:47,310 --> 01:24:52,820 И тука, јас сум само надоврзување тој број кон стринг. 1676 01:24:52,820 --> 01:24:56,210 Така што гледате дека иако бев цел број во првиот дел, тоа е еден вид 1677 01:24:56,210 --> 01:24:58,500 на како да се конвертира во низа и потоа се додава 1678 01:24:58,500 --> 01:25:00,510 врз кои здраво стринг. 1679 01:25:00,510 --> 01:25:02,340 И така тоа е она што сакам да кажам од страна на лабава пишување. 1680 01:25:02,340 --> 01:25:04,760 Тоа е тоа што конвертирате помеѓу видови многу лесно. 1681 01:25:04,760 --> 01:25:08,840 И тоа не фрлаат предупредувања на тебе како C прави. 1682 01:25:08,840 --> 01:25:12,420 >> Па јас сега содржи здраво 123 на стрингот. 1683 01:25:12,420 --> 01:25:13,270 Следната. 1684 01:25:13,270 --> 01:25:15,610 Ние исто така може слободно спореди помеѓу видовите. 1685 01:25:15,610 --> 01:25:19,310 Значи, ако сте само користење ==, многу како во PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 прави нешто слично. 1687 01:25:20,480 --> 01:25:24,780 Стрингот 123 е иста како и бројот 123 кога користите двојно еднакви. 1688 01:25:24,780 --> 01:25:27,820 Кога се користи трокреветни еднаквите, исто така, сака да бидете сигурни дека 1689 01:25:27,820 --> 01:25:29,240 тип е иста. 1690 01:25:29,240 --> 01:25:31,960 Така, бидејќи тоа е стринг, а тоа е голем број, иако тие се двете 1691 01:25:31,960 --> 01:25:35,280 123, кога ќе го користите трокреветни еднакво, ќе добиете лажни. 1692 01:25:35,280 --> 01:25:39,330 Во двојно еднаква на случај, ќе добиете точно, затоа двојно изнесува не го прави тоа 1693 01:25:39,330 --> 01:25:40,020 се грижат за тип. 1694 01:25:40,020 --> 01:25:42,500 Трокреветни еднаквите се грижи за тип. 1695 01:25:42,500 --> 01:25:43,750 Прашања? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> И уште нешто во врска со JavaScript е опсегот е вид на глобалната освен ако не сте 1699 01:25:52,870 --> 01:25:53,460 во функција. 1700 01:25:53,460 --> 01:25:55,660 И тоа функционира на ист начин во PHP, всушност. 1701 01:25:55,660 --> 01:25:57,500 Па ајде да одиме преку овој пример. 1702 01:25:57,500 --> 01:25:59,110 Јас седнав до 999. 1703 01:25:59,110 --> 01:26:00,900 А потоа одам во тоа за јамка. 1704 01:26:00,900 --> 01:26:06,110 Значи, ако јас сум печатење јас во овој за јамка, очекувам 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Стигнам до i = 4. 1706 01:26:07,390 --> 01:26:10,770 Тоа јас го наголемува сега до 5 на на крајот на за јамка. 1707 01:26:10,770 --> 01:26:13,300 А потоа го скрши надвор од циклусот, бидејќи тоа не ги исполнува 1708 01:26:13,300 --> 01:26:14,550 условува повеќе. 1709 01:26:14,550 --> 01:26:16,650 >> Што мислите дека следната console.log отпечатоци од? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Значи тоа е она што би го направил во C. Во C, затоа што ако имаш како var i надвор 1712 01:26:24,790 --> 01:26:28,855 и имаш var i внатре во јамка, како за јамка, а потоа тоа го прави така што 1713 01:26:28,855 --> 01:26:30,690 тоа е scoped дека двете Јас се различни. 1714 01:26:30,690 --> 01:26:34,630 Во JavaScript, тоа само ќе се третираат како на истиот i. 1715 01:26:34,630 --> 01:26:37,870 Јас се 5, бидејќи тоа е вредност после тоа излезе надвор од јамка. 1716 01:26:37,870 --> 01:26:39,120 Па оние што се на иста i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Дали тоа има смисла? 1719 01:26:44,130 --> 01:26:45,720 >> Па, тоа го прави смисла од го вклучите Javascript гледна точка. 1720 01:26:45,720 --> 01:26:49,510 Но исто парадигма не прави носат во текот на В Тие имаат 1721 01:26:49,510 --> 01:26:50,310 различни опсегот правила. 1722 01:26:50,310 --> 01:26:50,630 Да. 1723 01:26:50,630 --> 01:26:52,566 >> ПУБЛИКАТА: [нечујни] 1724 01:26:52,566 --> 01:26:54,990 надвор од функција [нечујни]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Значи надвор кои функционираат? 1726 01:26:58,340 --> 01:27:00,810 Па јас ќе дојдеме до тоа во само една секунда. 1727 01:27:00,810 --> 01:27:02,580 Па ние го нарекуваме foo (i). 1728 01:27:02,580 --> 01:27:06,920 Ова поминува јас во foo, наголемува него, а потоа го најавува. 1729 01:27:06,920 --> 01:27:07,750 Па тоа беше 5. 1730 01:27:07,750 --> 01:27:09,210 Значи станува 6. 1731 01:27:09,210 --> 01:27:11,670 Но, она што јас зборувам за е дека јас во таа функција. 1732 01:27:11,670 --> 01:27:14,430 Затоа што тоа е параметар, тоа е scoped да таа функција. 1733 01:27:14,430 --> 01:27:17,800 Така еднаш бев всушност се излезе од таа функција, тоа е сега се случува да одам 1734 01:27:17,800 --> 01:27:19,860 назад кон стариот јас. 1735 01:27:19,860 --> 01:27:23,000 Дека јас само scoped бидејќи тоа е во функција. 1736 01:27:23,000 --> 01:27:24,200 И ние имаме обемот и функции. 1737 01:27:24,200 --> 01:27:29,080 Но, ние не треба обем надвор на функции во JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Дали тоа има смисла? 1739 01:27:31,170 --> 01:27:31,320 Да. 1740 01:27:31,320 --> 01:27:31,660 Прашање. 1741 01:27:31,660 --> 01:27:34,030 >> ПУБЛИКАТА: Ист [нечујни]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Значи је. 1743 01:27:34,500 --> 01:27:36,260 Во PHP, тоа е истиот тип на работа. 1744 01:27:36,260 --> 01:27:37,680 Има мало суптилност всушност. 1745 01:27:37,680 --> 01:27:40,130 Но може да ме прашате за дека по преглед. 1746 01:27:40,130 --> 01:27:43,930 Вие навистина не треба да знаете дека суптилност за квизот. 1747 01:27:43,930 --> 01:27:47,600 За сите намерите и целите, како променливи, глобалната и PHP, освен ако 1748 01:27:47,600 --> 01:27:49,150 тие се во функција, исто работа во JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Да. 1750 01:27:49,480 --> 01:27:52,890 >> ПУБЛИКАТА: Зошто е ова дозволено во Вклучите Javascript-и нема каде на друго место? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Значи, зошто е тоа дозволено во JavaScript и не во C? 1752 01:27:55,010 --> 01:27:58,180 Тоа е само оној кој дојде со Го вклучите Javascript-одлучи дека ова е во ред во 1753 01:27:58,180 --> 01:27:59,510 Го вклучите Javascript-. 1754 01:27:59,510 --> 01:28:02,430 Па тоа е само како програмски јазик Конвенција како би рекле. 1755 01:28:02,430 --> 01:28:02,580 Да. 1756 01:28:02,580 --> 01:28:04,480 >> Публика: Па зошто оди 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Значи таа отиде 6-5, бидејќи кога јас поминав во foo, дека 1758 01:28:08,280 --> 01:28:13,420 Јас внатрешноста на foo е сега scoped да foo, бидејќи обемот постои во функции во 1759 01:28:13,420 --> 01:28:15,050 Го вклучите Javascript-. 1760 01:28:15,050 --> 01:28:18,720 Но, штом еднаш ќе излезам од тука, бидејќи тоа беше scoped на функцијата, јас сум само 1761 01:28:18,720 --> 01:28:24,300 користење на регуларни i кој беше внатре остатокот на контрола на проток. 1762 01:28:24,300 --> 01:28:25,210 Смисла? 1763 01:28:25,210 --> 01:28:26,910 Може ли да се преселат на? 1764 01:28:26,910 --> 01:28:27,320 Во ред е. 1765 01:28:27,320 --> 01:28:29,180 Кул. 1766 01:28:29,180 --> 01:28:31,890 >> Прифаќањето на оваа е објекти се пренесуваат по референца. 1767 01:28:31,890 --> 01:28:33,990 Знаете како кога ќе помине низа во C можете да 1768 01:28:33,990 --> 01:28:35,810 всушност менувате низата? 1769 01:28:35,810 --> 01:28:37,350 Тоа е истото во JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Ако јас помине објект, во овој случај, јас помина Мило во оваа catify функција. 1771 01:28:42,960 --> 01:28:44,490 Мило почнува. 1772 01:28:44,490 --> 01:28:46,310 Неговото име е Мило банана. 1773 01:28:46,310 --> 01:28:51,670 Јас помине тој објект во функција затоа што тоа е објект, асоцијативна 1774 01:28:51,670 --> 01:28:53,730 низа во JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Кога ќе се изврши операција во таа функција, тоа ќе 1776 01:28:57,110 --> 01:28:58,560 всушност промена на објектот. 1777 01:28:58,560 --> 01:29:01,720 Значи ова само ќе се случи за објекти во JavaScript, исто како што се случува 1778 01:29:01,720 --> 01:29:09,230 за низи внатрешноста на име C. Значи на Milo всушност, ќе стане мачка сега. 1779 01:29:09,230 --> 01:29:10,090 Дали тоа има смисла? 1780 01:29:10,090 --> 01:29:11,840 Значи ова работи само за објекти. 1781 01:29:11,840 --> 01:29:13,090 Објекти се донесени од страна на референцата. 1782 01:29:13,090 --> 01:29:13,400 Да. 1783 01:29:13,400 --> 01:29:16,850 >> Публика: Значи ти си велејќи дека за разлика од променливата i. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Да. 1785 01:29:17,240 --> 01:29:20,330 Кој променлива бев само голем број, нели? 1786 01:29:20,330 --> 01:29:25,280 Тоа е како во C кога ќе го положат цел број еден, тоа го прави копија. 1787 01:29:25,280 --> 01:29:28,130 И кога ќе помине низа, тоа всушност менува вистинските низа во 1788 01:29:28,130 --> 01:29:32,870 В Истото се случува со Вклучите во овој случај. 1789 01:29:32,870 --> 01:29:34,070 Во ред е. 1790 01:29:34,070 --> 01:29:38,134 И следниот, Мило е тажен затоа тој е сега една мачка. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Тоа беше всушност Мило по некои посета на ветеринар. 1793 01:29:45,060 --> 01:29:46,860 >> Така како ние да го користите вклучите Javascript- во веб-страница? 1794 01:29:46,860 --> 01:29:47,790 Можеме да го вклучат. 1795 01:29:47,790 --> 01:29:50,090 Ова е HTML код со лента тагови. 1796 01:29:50,090 --> 01:29:51,300 Па морам лента тагови таму. 1797 01:29:51,300 --> 01:29:54,820 А потоа ја ставив некои го вклучите Javascript- кодот во рамките на сценариото тагови. 1798 01:29:54,820 --> 01:29:56,390 А потоа го извршува ова. 1799 01:29:56,390 --> 01:29:58,830 Кога јас само го прават тоа како овој, тоа е наречен РЕГИСТРАЦИЈА вклучите Javascript-. 1800 01:29:58,830 --> 01:30:02,400 Тоа е вид на неуредна, затоа што JavaScript е всушност во HTML. 1801 01:30:02,400 --> 01:30:07,010 >> А подобар начин да го направите ова, многу поубав, е да се напише вашиот JavaScript во 1802 01:30:07,010 --> 01:30:10,920 надворешен фајл, а потоа се обезбеди сценариото таг со извор. 1803 01:30:10,920 --> 01:30:14,920 И ова ќе одат на таа вклучите Javascript-датотека и прочитајте го вклучите Javascript-кодот од 1804 01:30:14,920 --> 01:30:15,960 таа датотека наместо тоа. 1805 01:30:15,960 --> 01:30:18,820 И на овој начин, вие не мора многу Го вклучите Javascript-на почетокот на вашиот 1806 01:30:18,820 --> 01:30:20,760 HTML датотека, што го прави тоа навистина неуредна. 1807 01:30:20,760 --> 01:30:21,860 Можете само да го стави некаде на друго место. 1808 01:30:21,860 --> 01:30:24,310 И тогаш тоа ќе го читаат од таму. 1809 01:30:24,310 --> 01:30:25,560 Дали тоа има смисла? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Поставување прашања. 1812 01:30:29,640 --> 01:30:32,620 Во конкретниов случај, сценариото е пред телото. 1813 01:30:32,620 --> 01:30:36,090 Па кога ќе се изврши тоа, нема ништо во телото уште. 1814 01:30:36,090 --> 01:30:39,920 Можеби ова ќе се направи малку повеќе смисла, кога јас ја прикажете следниот дел. 1815 01:30:39,920 --> 01:30:43,210 Во овој случај, сценариото доаѓа по div. 1816 01:30:43,210 --> 01:30:46,620 Така всушност се појавува div на првата страница. 1817 01:30:46,620 --> 01:30:49,470 Токму тука во овој мал црвен круг, ќе видите се појавува текстот. 1818 01:30:49,470 --> 01:30:51,810 А потоа на алармирање се појавува. 1819 01:30:51,810 --> 01:30:54,890 >> Во првиот случај, бидејќи сценариото беше пред div, на 1820 01:30:54,890 --> 01:30:56,170 алармирање се појавува во прв план. 1821 01:30:56,170 --> 01:30:59,250 А потоа div појавува по ја отфрлите кутија. 1822 01:30:59,250 --> 01:31:01,330 Па извршувањето важно. 1823 01:31:01,330 --> 01:31:02,290 Па ние ќе се задржи ова на ум. 1824 01:31:02,290 --> 01:31:03,640 Ова ќе биде важно во малку. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Толку добро, како да се почека до целата страница е преполн тогаш пред да 1828 01:31:12,750 --> 01:31:13,580 изврши некој код? 1829 01:31:13,580 --> 01:31:15,540 Ние ќе дојдеме во овој малку малку подоцна премногу. 1830 01:31:15,540 --> 01:31:19,016 Но само продолжи оваа поставеност прашања во умот кога ние 1831 01:31:19,016 --> 01:31:20,570 дојде до друг слајд. 1832 01:31:20,570 --> 01:31:22,030 >> Па ние да се ДОМ сега. 1833 01:31:22,030 --> 01:31:23,550 И она што е ДОМ? 1834 01:31:23,550 --> 01:31:26,830 Значи, ако се погледне на HTML код, тоа е само еден куп на текстот на екранот. 1835 01:31:26,830 --> 01:31:30,560 Па како не го вклучите Javascript-се знае дека ова е HTML елемент? 1836 01:31:30,560 --> 01:31:33,410 Значи ние треба да имаат некои меморија застапеност на овој 1837 01:31:33,410 --> 01:31:34,930 структура што го имаме. 1838 01:31:34,930 --> 01:31:40,240 И секогаш кога имаме оваа меморија застапеност во JavaScript, ние го нарекуваме 1839 01:31:40,240 --> 01:31:41,750 дека ДОМ. 1840 01:31:41,750 --> 01:31:45,130 И тоа е само начинот на кој луѓето одлучија дека ние треба да претставува овој 1841 01:31:45,130 --> 01:31:46,400 HTML структура како. 1842 01:31:46,400 --> 01:31:47,940 >> И она што го прави ова ДОМ изгледа? 1843 01:31:47,940 --> 01:31:50,460 Па, во меморијата застапеност, ние ја искористам оваа текстот. 1844 01:31:50,460 --> 01:31:52,870 И ние ја претвори во меморијата застапеност. 1845 01:31:52,870 --> 01:31:54,400 Значи ова е HTML. 1846 01:31:54,400 --> 01:31:58,090 Па ние прво да дознаете што секој DOM-стебло има документ. 1847 01:31:58,090 --> 01:31:59,400 Тоа изгледа како дрво. 1848 01:31:59,400 --> 01:32:03,550 И документот содржи HTML ознака, всушност се 1849 01:32:03,550 --> 01:32:05,150 внатрешноста на оваа сега. 1850 01:32:05,150 --> 01:32:06,970 HTML таг има две деца. 1851 01:32:06,970 --> 01:32:08,630 Таа има глава. 1852 01:32:08,630 --> 01:32:12,380 Дека главата, ако се погледне на вовлекување таму на тоа како е структурирана 1853 01:32:12,380 --> 01:32:14,960 меѓу блиски тагови, главата има дете. 1854 01:32:14,960 --> 01:32:17,130 Детето е насловот. 1855 01:32:17,130 --> 01:32:18,370 Токму така. 1856 01:32:18,370 --> 01:32:21,000 >> Сега, имаме тело дете. 1857 01:32:21,000 --> 01:32:24,870 И тогаш тоа тело има дете наречен семејство. 1858 01:32:24,870 --> 01:32:27,950 И дека семејството има три деца - 1859 01:32:27,950 --> 01:32:29,550 Најстарата, средината и најмладите. 1860 01:32:29,550 --> 01:32:31,960 Така што треба да знаете како да се подготви дијаграм вака кога бараме од вас како 1861 01:32:31,960 --> 01:32:34,270 да се подготви дијаграм кога даваме ви го HTML на левата страна. 1862 01:32:34,270 --> 01:32:36,350 Знаете како да се произведе DOM-стебло. 1863 01:32:36,350 --> 01:32:38,930 И во внатрешноста на овие работи, има само некој текст, што сум претставен 1864 01:32:38,930 --> 01:32:40,180 малку кутии. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Дали ова ДОМ дрво структура направи смисла и она ДОМ е? 1867 01:32:47,980 --> 01:32:49,300 Значи она што го прави стр штанд за? 1868 01:32:49,300 --> 01:32:51,850 Овде, на стр таму во таа ознака претставува 1869 01:32:51,850 --> 01:32:54,510 став таг во HTML. 1870 01:32:54,510 --> 01:32:57,080 Па можете да го погледот. 1871 01:32:57,080 --> 01:32:59,290 Но, тоа само значи дека некои простор за текст. 1872 01:32:59,290 --> 01:33:02,910 И има некои стандардно CSS стил, затоа што тоа е став таг. 1873 01:33:02,910 --> 01:33:05,130 Но навистина не се грижат за тој дел премногу. 1874 01:33:05,130 --> 01:33:07,510 Само знам дека е случаеви за некој текст. 1875 01:33:07,510 --> 01:33:08,480 Да. 1876 01:33:08,480 --> 01:33:10,200 Прашање? 1877 01:33:10,200 --> 01:33:11,021 Да. 1878 01:33:11,021 --> 01:33:12,374 >> Публика: Вие само споменати CSS. 1879 01:33:12,374 --> 01:33:15,492 Хаш семејството и хаш сите нешта е во основа 1880 01:33:15,492 --> 01:33:17,400 претставуваат лични карти во CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Да, точно. 1882 01:33:18,440 --> 01:33:20,380 Јас ќе добиете на она што овие хашови значи во секунда. 1883 01:33:20,380 --> 01:33:23,480 Кога Ангела заврши над CSS, таа зборуваше за CSS селектори. 1884 01:33:23,480 --> 01:33:26,770 Овие се CSS селектори кои таа беше зборува. 1885 01:33:26,770 --> 01:33:28,268 Да, Роб? 1886 01:33:28,268 --> 01:33:32,060 >> Роб BOWDEN: Јас, исто така, сакаше да коментира дека ДОМ внатрешноста на титулата таг 1887 01:33:32,060 --> 01:33:35,385 е исто така текстот јазол. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Право. 1889 01:33:36,070 --> 01:33:38,370 Па внатрешноста на титулата таг, Имам некој текст ДОМ. 1890 01:33:38,370 --> 01:33:42,730 Значи, навистина, овој наслов треба да има како мала кутија доаѓа надвор од неа, како и. 1891 01:33:42,730 --> 01:33:45,740 Но, тоа не е навистина важно, премногу во овој случај. 1892 01:33:45,740 --> 01:33:49,620 Ние навистина не се грижат за текст јазли, како што ние ги нарекуваме, премногу. 1893 01:33:49,620 --> 01:33:50,270 Добро, што правиме. 1894 01:33:50,270 --> 01:33:51,520 Очигледно, тоа го правиме. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 И јас ќе го поправам тоа кога Јас го испратите повторно. 1897 01:33:57,100 --> 01:33:59,830 Дали тоа има смисла? 1898 01:33:59,830 --> 01:34:01,160 >> Па, како да се работи со ДОМ? 1899 01:34:01,160 --> 01:34:03,790 Секогаш кога ќе се справи со ДОМ во JavaScript, постојат два чекори. 1900 01:34:03,790 --> 01:34:05,030 Изберете ДОМ елемент. 1901 01:34:05,030 --> 01:34:06,580 А потоа ќе се прават работите на него. 1902 01:34:06,580 --> 01:34:11,480 Значи во овој случај, апстрактно, јас сум избрани средината елемент. 1903 01:34:11,480 --> 01:34:14,530 А потоа еден пример на вршење на работи да тоа ќе биде промена на текстот. 1904 01:34:14,530 --> 01:34:16,020 Кои се користат да биде на Боб. 1905 01:34:16,020 --> 01:34:19,930 Сега, она што го направив за да тоа беше Ја променив Боб да Мило во овој случај. 1906 01:34:19,930 --> 01:34:22,130 >> Па, како да ние всушност го направите ова? 1907 01:34:22,130 --> 01:34:23,440 Како го правиме на избирање? 1908 01:34:23,440 --> 01:34:26,560 И како го правиме на прави нешта да нешто еднаш сме го земе? 1909 01:34:26,560 --> 01:34:30,470 Па, начинот на кој вие момци го научиле во оваа класа е со користење на нешто што 1910 01:34:30,470 --> 01:34:32,420 наречен jQuery. 1911 01:34:32,420 --> 01:34:33,910 Значи она што е jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery е библиотека која го прави Го вклучите Javascript-полесно да се пишува. 1913 01:34:37,220 --> 01:34:39,500 Па некој го зеде време и напиша jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery е всушност напишан во JavaScript. 1915 01:34:41,530 --> 01:34:44,550 А потоа, бидејќи тие го направи ова, ние сега имаат целиот куп на функции кои 1916 01:34:44,550 --> 01:34:46,020 можеме да го користиме кои го прават нашите живее навистина лесно. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Значи она што се некои од работи го прави тоа? 1919 01:34:50,030 --> 01:34:51,650 Тоа го прави изборот елементи полесно. 1920 01:34:51,650 --> 01:34:54,020 Тоа го прави промена на HTML, додавање на класи полесно. 1921 01:34:54,020 --> 01:34:55,360 Тоа го прави Ајакс полесно. 1922 01:34:55,360 --> 01:34:58,230 Ние ќе дојдеме до дека во една секунда. 1923 01:34:58,230 --> 01:35:00,630 >> И тоа е аналогно на C библиотеки. 1924 01:35:00,630 --> 01:35:03,090 Така да вклучуваат string.h, ќе добиете strlen. 1925 01:35:03,090 --> 01:35:04,680 Ќе добиете strcpy, сите од овие работи. 1926 01:35:04,680 --> 01:35:09,650 Кога ќе го вклучите jQuery, можете да се добие убав начини за да изберете елементи за да се промени 1927 01:35:09,650 --> 01:35:10,390 работи, и така натаму. 1928 01:35:10,390 --> 01:35:12,990 Ќе добиете дополнителна функционалност која Го вклучите Javascript-не ви даде. 1929 01:35:12,990 --> 01:35:15,310 Па jQuery не е да го вклучите Javascript. 1930 01:35:15,310 --> 01:35:18,660 jQuery е библиотека која е напишано во Го вклучите Javascript-што го прави го вклучите Javascript- 1931 01:35:18,660 --> 01:35:20,440 полесно да се пишува. 1932 01:35:20,440 --> 01:35:23,170 >> Па jQuery не е програмски јазик. 1933 01:35:23,170 --> 01:35:24,540 Но го вклучите Javascript-е. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 направи. 1936 01:35:27,590 --> 01:35:30,420 Сигурни дека ќе добиете на вашиот терминологија право. 1937 01:35:30,420 --> 01:35:32,490 Било какви прашања? 1938 01:35:32,490 --> 01:35:33,882 Да. 1939 01:35:33,882 --> 01:35:35,132 Дали е тоа прашање? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Во ред е. 1942 01:35:38,350 --> 01:35:40,080 Па, како да го користите jQuery? 1943 01:35:40,080 --> 01:35:42,390 Добро, кога сте пишување на некои JavaScript код и може да вклучи 1944 01:35:42,390 --> 01:35:45,570 jQuery на врвот на вашата датотека како скрипта датотека, можете да користите на знакот за долар 1945 01:35:45,570 --> 01:35:47,310 сега за да добиете пристап до jQuery. 1946 01:35:47,310 --> 01:35:49,860 И ова е различно од на знакот за долар во PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Тоа е истиот симбол што тип на вашата тастатура. 1948 01:35:51,590 --> 01:35:52,780 Но тие значат многу различни нешта. 1949 01:35:52,780 --> 01:35:56,090 Знакот за долар во PHP значи дека оваа е како јас декларирате променлива. 1950 01:35:56,090 --> 01:35:59,120 Во JavaScript, кога сте вклучени jQuery, таа се залага за jQuery. 1951 01:35:59,120 --> 01:36:01,280 Па задржи дека во умот. 1952 01:36:01,280 --> 01:36:03,420 Па како може да се селектира ДОМ елементи? 1953 01:36:03,420 --> 01:36:06,500 Па, кога ќе го направи тоа грдото го вклучите Javascript- начин, можете да пристапите до 1954 01:36:06,500 --> 01:36:08,240 документира глобалната променлива. 1955 01:36:08,240 --> 01:36:11,170 И тогаш ќе го добиете елемент од проект семејство. 1956 01:36:11,170 --> 01:36:15,270 Ова е навистина долга и разточен и не многу убаво. 1957 01:36:15,270 --> 01:36:18,190 >> Или можете да ги добиете сите елементи кои се P таг. 1958 01:36:18,190 --> 01:36:20,080 Која работи премногу во JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Но никогаш не сме навистина покажа можете синтаксата премногу. 1960 01:36:22,470 --> 01:36:24,620 Она што ние покажа дека си jQuery. 1961 01:36:24,620 --> 01:36:28,720 Така што целиот селектор таму дека беше изразено во JavaScript само добива 1962 01:36:28,720 --> 01:36:33,320 кондензирана на овој многу убаво долар потпишат hashtag семејство. 1963 01:36:33,320 --> 01:36:38,480 И $ p, само каде што тоа е како тоа. 1964 01:36:38,480 --> 01:36:41,690 Ако сакате да изберете сите p тагови во внатрешноста на семејството, ние се стави простор 1965 01:36:41,690 --> 01:36:42,890 помеѓу двете. 1966 01:36:42,890 --> 01:36:44,815 И сега, ние ги добиете сите p тагови внатре во семејството. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> И изгледа познато? 1969 01:36:50,380 --> 01:36:52,880 Па, Ангела зборуваше за CSS селектори. 1970 01:36:52,880 --> 01:36:54,200 Дај ми една секунда. 1971 01:36:54,200 --> 01:36:57,230 И така со цел да изберете елемент, само користење на истото како што 1972 01:36:57,230 --> 01:36:58,530 би направиле со CSS селектор. 1973 01:36:58,530 --> 01:37:00,910 Ако се стави хаш пред од него, го избира од страна на проект. 1974 01:37:00,910 --> 01:37:02,220 А точка избира по класи. 1975 01:37:02,220 --> 01:37:06,230 Ако само има нешто без хашови или точки, тоа го избира овие тагови. 1976 01:37:06,230 --> 01:37:07,140 Прашања. 1977 01:37:07,140 --> 01:37:07,470 Да? 1978 01:37:07,470 --> 01:37:11,510 >> Публика: Кога ние ги користиме точка во нашата HTML, е дека не jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: точка во нашите HTML е да го вклучите Javascript работа. 1980 01:37:13,520 --> 01:37:14,750 Тоа не е jQuery работа. 1981 01:37:14,750 --> 01:37:17,620 Начинот на кој вие момци го научиле со jQuery е да го користите. HTML. 1982 01:37:17,620 --> 01:37:21,510 И тогаш ќе го донесе она што HTML кодот е и ќе биде. 1983 01:37:21,510 --> 01:37:23,480 Па јас ќе дојдеме до тоа во само втор всушност. 1984 01:37:23,480 --> 01:37:27,800 Така како ние да направи нешто за да се елемент еднаш ние сме го одбрани? 1985 01:37:27,800 --> 01:37:30,130 Па тоа е пример за изборот на елемент. 1986 01:37:30,130 --> 01:37:32,280 Па сега, ние сакаме да го работи на него. 1987 01:37:32,280 --> 01:37:35,730 >> Значи во овој случај, да се навратам на претходниот слајд. 1988 01:37:35,730 --> 01:37:37,360 Тоа беше Боб порано. 1989 01:37:37,360 --> 01:37:40,660 И јас сакам да го промени тоа внатре HTML да Мило. 1990 01:37:40,660 --> 01:37:43,240 Па јас го нарекувам HTML функција од елементот. 1991 01:37:43,240 --> 01:37:45,580 Дека HTML функција е метод на елемент. 1992 01:37:45,580 --> 01:37:47,430 И тогаш јас го даде она што Сакам HTML да биде. 1993 01:37:47,430 --> 01:37:50,560 И тоа само го заменува она што е внатре на таа ознака со она што јас го даде. 1994 01:37:50,560 --> 01:37:50,830 Да. 1995 01:37:50,830 --> 01:37:51,170 Прашање? 1996 01:37:51,170 --> 01:37:57,397 >> Публика: hashtag се користи за само jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Нечујни] 1998 01:37:59,313 --> 01:38:01,230 ние не ќе го користи тоа. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Да, точно. 2000 01:38:01,960 --> 01:38:03,750 Но, не грижете се премногу за чиста вклучите Javascript-. 2001 01:38:03,750 --> 01:38:06,670 Јас само сакам вие момци да се фокусира на тоа како можете ќе го стори тоа со jQuery, бидејќи 2002 01:38:06,670 --> 01:38:10,020 тоа ќе биде важно дел на квизот. 2003 01:38:10,020 --> 01:38:10,400 Во право. 2004 01:38:10,400 --> 01:38:10,880 Токму така. 2005 01:38:10,880 --> 01:38:16,025 Па ќе видите дека hashtag, така што одговара да изберете елемент со 2006 01:38:16,025 --> 01:38:18,310 лична средината поради тоа hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag значи проект. 2008 01:38:19,670 --> 01:38:22,870 И овој елемент има проект на средината. 2009 01:38:22,870 --> 01:38:24,366 Значи тоа е елемент ние избираме. 2010 01:38:24,366 --> 01:38:27,160 >> ПУБЛИКАТА: [нечујни]. 2011 01:38:27,160 --> 01:38:31,090 знакот за долар hashtag [нечујни]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Значи бр. 2013 01:38:31,710 --> 01:38:33,280 Прашањето е можете да го користите. Вредност. 2014 01:38:33,280 --> 01:38:36,445 И. Вредност работи само на елементи кои се влезови. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 Во jQuery, тоа ќе биде . Вал, не. Вредност. 2017 01:38:45,495 --> 01:38:49,080 Па јас ќе дојдеме до еден мал пример дека покажува сето тоа во комбинација 2018 01:38:49,080 --> 01:38:49,850 во втор. 2019 01:38:49,850 --> 01:38:53,130 Но мислам дека ова служи малку програмка Логично е да се луѓе досега. 2020 01:38:53,130 --> 01:38:55,450 Сакате да го смените HTML, јавете се на HTML метод. 2021 01:38:55,450 --> 01:38:56,432 Да. 2022 01:38:56,432 --> 01:38:58,200 >> Публика: Можете ли да објасните методот повторно? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Значи метод е само функција која припаѓа на една, во овој 2024 01:39:01,900 --> 01:39:04,590 случај, една од овие ДОМ елементи, затоа што те гледам јас 2025 01:39:04,590 --> 01:39:05,940 избрани елемент прво. 2026 01:39:05,940 --> 01:39:07,320 Всушност, дозволете ми да го користите глувчето. 2027 01:39:07,320 --> 01:39:09,330 Јас избрани елемент во прв план. 2028 01:39:09,330 --> 01:39:12,310 А потоа се јавив овој HTML функција која ја имаа. 2029 01:39:12,310 --> 01:39:15,710 И поради оваа функција му припаѓа на ова нешто, ние го нарекуваме метод. 2030 01:39:15,710 --> 01:39:19,480 Тоа е само фенси име за него. 2031 01:39:19,480 --> 01:39:20,730 Кажам дека повторно. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Значи се сеќавам, ние избрани елементот сега. 2034 01:39:25,170 --> 01:39:27,810 И ние го стави во внатрешноста на елемент променлива. 2035 01:39:27,810 --> 01:39:28,600 Точно? 2036 01:39:28,600 --> 01:39:34,380 >> Па кога ќе сакате да го смените HTML на внатре, затоа што тоа беше Боб пред тоа, 2037 01:39:34,380 --> 01:39:36,420 сакате да се смени текст на Мило. 2038 01:39:36,420 --> 01:39:37,920 Па ние го нарекуваме HTML. 2039 01:39:37,920 --> 01:39:41,610 И ние го кажам она што на HTML во внатрешноста тој елемент треба да биде сега. 2040 01:39:41,610 --> 01:39:44,107 И затоа таа се менува во Мило, бидејќи јас ја даде Мило. 2041 01:39:44,107 --> 01:39:46,542 >> ПУБЛИКАТА: Значи тие си работат заедно. 2042 01:39:46,542 --> 01:39:47,030 [Нечујни] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Да, да. 2044 01:39:47,390 --> 01:39:48,180 Тие си работат заедно. 2045 01:39:48,180 --> 01:39:50,210 Па еден од нив го избира елемент прво. 2046 01:39:50,210 --> 01:39:52,863 А вториот не нешто на него. 2047 01:39:52,863 --> 01:39:53,790 Да. 2048 01:39:53,790 --> 01:39:56,168 >> ПУБЛИКАТА: [нечујни]. 2049 01:39:56,168 --> 01:40:01,280 Ако овој метод е различен од во HTML имате метод еднакви вистински. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Да. 2051 01:40:01,560 --> 01:40:03,370 Кој е различен метод. 2052 01:40:03,370 --> 01:40:04,670 Кој е различен метод. 2053 01:40:04,670 --> 01:40:07,860 И ние може да ги покрие дека во само една секунда кога ќе го добиеме на пример. 2054 01:40:07,860 --> 01:40:12,000 Сакам да бидете сигурни дека ние се забрза бидејќи ние сме работи надвор од времето. 2055 01:40:12,000 --> 01:40:15,360 Но ние сме се кандидира начин со текот на времето сега. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Кул. 2058 01:40:16,430 --> 01:40:20,130 Значи, ако сакате да додадете класа, има исто така додаток класа метод. 2059 01:40:20,130 --> 01:40:24,300 Ова е само еден пример на она што можете да го направите со jQuery. 2060 01:40:24,300 --> 01:40:25,950 Дека само додава класа. 2061 01:40:25,950 --> 01:40:28,660 >> Ако сакате да го отстраните, можете да се јавите отстрани. 2062 01:40:28,660 --> 01:40:32,280 Тоа е само уште една работа што можете да направите. 2063 01:40:32,280 --> 01:40:35,680 Толку повеќе примери на она што можете да направите. 2064 01:40:35,680 --> 01:40:37,510 Па можам само да го стави во врвот вака? 2065 01:40:37,510 --> 01:40:38,760 Најмладиот отстрани. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Ако јас само се изврши дека го вклучите Javascript-на врвот на мојата датотека, која ќе функционира? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Во право. 2070 01:40:48,920 --> 01:40:50,530 Бидејќи средината сеуште не постои. 2071 01:40:50,530 --> 01:40:51,840 Значи ова не е оди на работа. 2072 01:40:51,840 --> 01:40:52,800 Извршување ред. 2073 01:40:52,800 --> 01:40:55,040 Тоа оди до врвот во прв план. 2074 01:40:55,040 --> 01:40:55,540 Што? 2075 01:40:55,540 --> 01:40:57,450 >> Публика: Најмлад сеуште не постои? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Да. 2077 01:40:57,810 --> 01:40:58,710 Најмладиот уште не постои. 2078 01:40:58,710 --> 01:40:59,600 Токму така. 2079 01:40:59,600 --> 01:41:01,320 >> Публика: Вие рековте средината. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Извини. 2081 01:41:01,510 --> 01:41:02,720 Најмладиот уште не постои. 2082 01:41:02,720 --> 01:41:04,510 И друга работа е што не треба вклучени на jQuery 2083 01:41:04,510 --> 01:41:06,580 поднесе побара скрипта src. 2084 01:41:06,580 --> 01:41:07,960 Така што нема да работат. 2085 01:41:07,960 --> 01:41:09,580 Всушност, јас не го стори тоа во следниот слајд, кое е 2086 01:41:09,580 --> 01:41:10,700 би требало да се утврдат дека било. 2087 01:41:10,700 --> 01:41:14,120 Но начинот на кој го правиме ова е да го вклучите Javascript е управувано настан. 2088 01:41:14,120 --> 01:41:17,410 Значи она што го правиме е ние ги користиме настан управувачот за да се случи ова. 2089 01:41:17,410 --> 01:41:19,510 И така јас изберете го документот постави прв план. 2090 01:41:19,510 --> 01:41:23,810 Велам, во ред, кога документот е подготвени, дозволете ми да извршувате функција. 2091 01:41:23,810 --> 01:41:25,470 Па тоа е се што синтакса средства. 2092 01:41:25,470 --> 01:41:27,100 >> Јас избрани документот. 2093 01:41:27,100 --> 01:41:29,530 Сега, кога документот е подготвени, се кандидира на функцијата. 2094 01:41:29,530 --> 01:41:32,970 И така овде кога документот е подготвени, што значи дека сите HTML има 2095 01:41:32,970 --> 01:41:36,140 натоварени, тогаш јас се кандидира на функцијата која се отстранува тој елемент. 2096 01:41:36,140 --> 01:41:40,270 И така сега, кога јас ја извршите оваа функција дека јас помина во подготвена, јас сум 2097 01:41:40,270 --> 01:41:43,780 гарантира дека сите HTML на страница се случува да постои во прв план. 2098 01:41:43,780 --> 01:41:44,100 Да. 2099 01:41:44,100 --> 01:41:44,425 Прашање? 2100 01:41:44,425 --> 01:41:48,200 >> Публика: Што е случај клучни зборови во рамките на функцијата? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Значи тој настан клучен збор во функција е само параметар кој 2102 01:41:51,750 --> 01:41:53,490 добива предадена на функција за секој случај. 2103 01:41:53,490 --> 01:41:55,470 Тоа е само нешто што ќе добиете бесплатно. 2104 01:41:55,470 --> 01:41:59,320 Кога ќе се користи клучот ракувачи во pset8, тој настан би можел да ти кажам, за 2105 01:41:59,320 --> 01:42:01,350 пример, кој клуч ќе притисне на. 2106 01:42:01,350 --> 01:42:05,540 Во овој случај, за подготвени настан, тоа е, всушност, не супер корисни. 2107 01:42:05,540 --> 01:42:08,640 Но за клучните надолу настан, тоа е повеќе корисни, затоа што сте се да се знае кој 2108 01:42:08,640 --> 01:42:12,330 Клучни сте притиснати од пристапот кон клучните код исклучи дека настанот објект. 2109 01:42:12,330 --> 01:42:13,530 Точно? 2110 01:42:13,530 --> 01:42:15,160 Дали тоа има смисла? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Да. 2113 01:42:16,580 --> 01:42:17,150 Прашање? 2114 01:42:17,150 --> 01:42:19,290 >> ПУБЛИКАТА: Значи може да се стави на скрипта таг пониски надолу? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Значи је. 2116 01:42:19,940 --> 01:42:21,500 Може да се стави на сценариото таг пониски надолу. 2117 01:42:21,500 --> 01:42:23,090 Но, тогаш тоа само станува навистина неуредна. 2118 01:42:23,090 --> 01:42:26,590 И ние сакаме да се централизира сите на нашите код на едно место. 2119 01:42:26,590 --> 01:42:28,290 И тоа ќе ни овозможи да го направи тоа. 2120 01:42:28,290 --> 01:42:32,010 Се сеќавам порано реков, тука е поубав начин да се осигура дека елементите се 2121 01:42:32,010 --> 01:42:33,880 на оваа страница пред да се изврши код? 2122 01:42:33,880 --> 01:42:36,079 И ова е само убав начин ќе се постигне тоа. 2123 01:42:36,079 --> 01:42:37,329 >> ПУБЛИКАТА: [нечујни]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Да. 2126 01:42:42,230 --> 01:42:43,460 Се уште ќе треба да се, нели? 2127 01:42:43,460 --> 01:42:46,930 Бидејќи се сеќавам, вклучени поднесе на врвот на страната. 2128 01:42:46,930 --> 01:42:49,890 Па затоа се случува да се изврши пред да ќе стигнете до дното на оваа страница. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Така што исто така може да додадете различни тип на настан управувачот. 2132 01:42:59,210 --> 01:43:00,640 Оваа една само процеси кликне. 2133 01:43:00,640 --> 01:43:03,910 Кога ќе кликнете на најмладите, а потоа тоа ќе pop-up со предупредување. 2134 01:43:03,910 --> 01:43:05,440 Ова е само поинаков тип на настан. 2135 01:43:05,440 --> 01:43:08,840 Што е спротивно на готовс настан, сега користете кликнете настан кога ќе примите 2136 01:43:08,840 --> 01:43:10,190 кликне на елементот. 2137 01:43:10,190 --> 01:43:13,860 >> И така во овој случај, се сеќавам, на клик управувачот е во прилог на најмладите. 2138 01:43:13,860 --> 01:43:16,080 Значи тоа се случува само кога Јас кликнете на најмладите. 2139 01:43:16,080 --> 01:43:19,510 И во другиот, подготвени настан беше спроведен на документот. 2140 01:43:19,510 --> 01:43:23,750 Па тоа го чека документот да биде подготвен. 2141 01:43:23,750 --> 01:43:25,120 Смисла? 2142 01:43:25,120 --> 01:43:26,190 Мислам дека може да се движат натаму. 2143 01:43:26,190 --> 01:43:26,610 Да. 2144 01:43:26,610 --> 01:43:26,980 Прашање? 2145 01:43:26,980 --> 01:43:28,230 >> ПУБЛИКАТА: [нечујни]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 во овој случај треба да користите [нечујни]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: О, да, затоа што во овој случај, морам да чекам за најмладите 2149 01:43:36,650 --> 01:43:40,740 елемент да се појави на екранот прва пред да може да се закачите на клик управувачот за да се 2150 01:43:40,740 --> 01:43:43,062 , која е причината зошто го ставив внатре на документ подготвен. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 И следната, така што ова е голем пример за како ќе се комбинираат сè. 2154 01:43:52,390 --> 01:43:55,930 Ова е само форма валидација пример сте виделе во предавање. 2155 01:43:55,930 --> 01:43:58,410 Па се земе тоа, чекор по чекор како ќе поминат низ ова. 2156 01:43:58,410 --> 01:43:59,590 И тоа ќе биде сосема во ред. 2157 01:43:59,590 --> 01:44:01,400 Само го читаат од врвот до дното. 2158 01:44:01,400 --> 01:44:03,030 >> Имам форма на дното. 2159 01:44:03,030 --> 01:44:07,590 Кога документот е подготвен, јас прикачите поднесе управувачот на форма, како што 2160 01:44:07,590 --> 01:44:12,910 кога ќе ги достават форма, да се добие вредностите во секоја од овие влезови. 2161 01:44:12,910 --> 01:44:14,560 И јас се провери дали тоа е празно. 2162 01:44:14,560 --> 01:44:17,090 Ако тоа е празно, ќе се вратам лажни, бидејќи Не сакам да ги достават форма, 2163 01:44:17,090 --> 01:44:18,950 бидејќи форма е во ред. 2164 01:44:18,950 --> 01:44:22,040 Ако лозинката е празно или тоа е помалку од осум карактери, јас не ги достават 2165 01:44:22,040 --> 01:44:24,470 форма, бидејќи тоа е, исто така, не е во ред. 2166 01:44:24,470 --> 01:44:28,150 И враќање лажни само спречува форма од поднесување и 2167 01:44:28,150 --> 01:44:30,150 одат на нова страница. 2168 01:44:30,150 --> 01:44:31,310 >> И се надевам дека ова има смисла. 2169 01:44:31,310 --> 01:44:34,650 Мислам дека вие момци треба да прошетка низ овој код чекор по чекор за своја. 2170 01:44:34,650 --> 01:44:38,350 И штом еднаш ќе се разбере она што одберете елементи и направи нешто за да го 2171 01:44:38,350 --> 01:44:40,520 всушност подразбира, ова ќе направи многу смисла за вас. 2172 01:44:40,520 --> 01:44:41,295 Да? 2173 01:44:41,295 --> 01:44:44,150 >> Публика: Што значи име = корисничко име значи? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Значи име = корисничко име и име = лозинката само значи да се погледне на 2175 01:44:48,530 --> 01:44:50,730 атрибут на она што сте изборот. 2176 01:44:50,730 --> 01:44:51,790 И тогаш тоа треба да се совпаѓаат. 2177 01:44:51,790 --> 01:44:53,870 Значи одиме во регистрацијата. 2178 01:44:53,870 --> 01:44:56,240 А потоа ќе се разгледаат сите влезови и регистрација. 2179 01:44:56,240 --> 01:44:59,990 А потоа ние го изберат оној каде што името атрибут е еднакво на корисничко име. 2180 01:44:59,990 --> 01:45:04,040 Така што првиот селектор само избира корисничко име влез. 2181 01:45:04,040 --> 01:45:08,220 И дека вториот селектор само избира лозинка, бидејќи тие имаат 2182 01:45:08,220 --> 01:45:12,240 нивното име атрибути постави како што тие би требало да биде. 2183 01:45:12,240 --> 01:45:12,575 Прашање? 2184 01:45:12,575 --> 01:45:17,030 >> ПУБЛИКАТА: На поднесување, како не на долниот дел реши горниот дел? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Значи тоа е затоа што на настанот управувачот. 2186 01:45:19,350 --> 01:45:23,000 Па ние сме чекајќи ги достават настан кој добива отпуштен од форма. 2187 01:45:23,000 --> 01:45:24,730 И тоа е сè што е поднесе. 2188 01:45:24,730 --> 01:45:26,080 Зошто јас го нарекувам достават до таму? 2189 01:45:26,080 --> 01:45:28,870 Таа вели дека, кога се поднесува форма, Јас добие поднесе настан. 2190 01:45:28,870 --> 01:45:33,480 Па дозволете ми да го пресретнат дека и потоа ја извршите оваа код наместо тоа. 2191 01:45:33,480 --> 01:45:33,823 Да? 2192 01:45:33,823 --> 01:45:35,866 >> ПУБЛИКАТА: Зошто имате да имаат функција настан? 2193 01:45:35,866 --> 01:45:38,580 Зошто да не може да ви само [нечујни]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Бидејќи во JavaScript, мора да се декларираат функции. 2195 01:45:41,140 --> 01:45:42,910 Тоа е само како тоа функционира во JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Мора да се каже што се случува за да извршувате функција. 2197 01:45:44,800 --> 01:45:47,290 Па ти си тоа го кажувам дека ти си очекувајќи функција тука, наместо на 2198 01:45:47,290 --> 01:45:48,260 само големите загради. 2199 01:45:48,260 --> 01:45:50,460 >> Публика: А функција е она што следува? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Да. 2201 01:45:50,650 --> 01:45:52,790 Функцијата е она што е внатре на тркалезните загради по 2202 01:45:52,790 --> 01:45:53,630 таа функција клучен збор. 2203 01:45:53,630 --> 01:45:54,045 Да? 2204 01:45:54,045 --> 01:45:55,295 >> ПУБЛИКАТА: [нечујни]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: За поднесе? 2207 01:46:00,660 --> 01:46:03,520 >> ПУБЛИКАТА: Не, за функцијата без настанот. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Да. 2209 01:46:03,770 --> 01:46:05,610 Значи без настанот, можете да го имаат тоа. 2210 01:46:05,610 --> 01:46:08,480 Ако не треба настанот, тогаш само може да го изостави. 2211 01:46:08,480 --> 01:46:12,220 Но, ако го направите, тогаш ќе само да го стави таму. 2212 01:46:12,220 --> 01:46:12,520 Да. 2213 01:46:12,520 --> 01:46:13,190 Брзи прашање? 2214 01:46:13,190 --> 01:46:14,440 >> ПУБЛИКАТА: [нечујни]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Да. 2217 01:46:21,440 --> 01:46:24,550 Затоа што она што ви треба да се направи, document.ready само вели чека за сите 2218 01:46:24,550 --> 01:46:26,540 HTML кодот на страницата да се вчита во прв план. 2219 01:46:26,540 --> 01:46:30,510 И обично, сакате вашиот елементи во место, пред да ја стартувате која било код. 2220 01:46:30,510 --> 01:46:31,030 Во ред е. 2221 01:46:31,030 --> 01:46:32,180 Ние мора да се добие во Ајакс. 2222 01:46:32,180 --> 01:46:33,110 Ние немаме многу време. 2223 01:46:33,110 --> 01:46:35,170 Па добрите и лошите страни. 2224 01:46:35,170 --> 01:46:37,450 JavaScript е полесно обид пишуваат со jQuery. 2225 01:46:37,450 --> 01:46:38,930 Но jQuery е вид на бавно. 2226 01:46:38,930 --> 01:46:42,290 >> Тоа е како PHP е побавно од C, затоа што тоа е толкува. 2227 01:46:42,290 --> 01:46:45,690 И jQuery е малку побавно од JavaScript, бидејќи тоа го прави многу 2228 01:46:45,690 --> 01:46:46,630 работите под хаубата. 2229 01:46:46,630 --> 01:46:48,660 И така, ако сте со користење на веб, тоа е само малку побавно од 2230 01:46:48,660 --> 01:46:51,630 JavaScript, иако тоа ви дава убав елеганција. 2231 01:46:51,630 --> 01:46:53,970 И, конечно, Ајакс. 2232 01:46:53,970 --> 01:46:59,170 Досега со Ајакс, не сте виделе Ајакс во однос на pset7 сепак, бидејќи 2233 01:46:59,170 --> 01:47:01,150 кога ќе го направите, ќе ги достават форма да го цитирам. 2234 01:47:01,150 --> 01:47:02,350 Се вчитува нова страница. 2235 01:47:02,350 --> 01:47:04,440 Па ќе го добиете овој голем бел блесок на оваа страница додека таа 2236 01:47:04,440 --> 01:47:06,820 втората страница товари, точно? 2237 01:47:06,820 --> 01:47:08,780 >> Тоа би било навистина убаво ако не имаат овој флеш. 2238 01:47:08,780 --> 01:47:11,600 Како што се Фејсбук, ако само дојдете до на дното, се додава нова содржина 2239 01:47:11,600 --> 01:47:13,490 без освежување на целата страница. 2240 01:47:13,490 --> 01:47:15,420 Па нешто како ова ќе биде убаво. 2241 01:47:15,420 --> 01:47:17,370 Ова е JavaScript код на левата страна. 2242 01:47:17,370 --> 01:47:19,390 Вие добие она што е внатре на тој влез. 2243 01:47:19,390 --> 01:47:21,340 Ќе го добиете акции информации од Yahoo! 2244 01:47:21,340 --> 01:47:27,440 А потоа ќе се направи голема стринг кој вели, во ред, ова е пораката што сакам 2245 01:47:27,440 --> 01:47:28,400 да се покаже на екранот. 2246 01:47:28,400 --> 01:47:32,280 А потоа ќе се стави на таа порака во внатрешноста на некои HTML елемент кој добива 2247 01:47:32,280 --> 01:47:33,970 прикажани на екранот. 2248 01:47:33,970 --> 01:47:35,540 >> Па тоа е се што се случува овде. 2249 01:47:35,540 --> 01:47:39,410 Значи, во основа, бидејќи тоа е за сите Вклучите Javascript-и не треба да се кандидира 2250 01:47:39,410 --> 01:47:42,980 повеќе PHP, тоа ќе бидете сигурни дека дека страницата не освежи. 2251 01:47:42,980 --> 01:47:47,470 Значи ова е само една апстрактна идеја дека јас велам овде за сега. 2252 01:47:47,470 --> 01:47:50,630 Апстрактен идеја е дека ако го направи тоа сите во JavaScript, немаат 2253 01:47:50,630 --> 01:47:52,330 страница освежи. 2254 01:47:52,330 --> 01:47:53,800 Но како да всушност го направите ова? 2255 01:47:53,800 --> 01:47:56,230 >> Па, всушност, ајде да зборуваме за проблем со овој прв. 2256 01:47:56,230 --> 01:47:59,340 А проблем е во JavaScript, извршување е синхронизирана. 2257 01:47:59,340 --> 01:48:02,000 Па ќе мора да почека за еден линија да заврши пред да 2258 01:48:02,000 --> 01:48:03,370 изврши на следната линија. 2259 01:48:03,370 --> 01:48:06,130 И што ако јас одам во текот на Yahoo!, и нивните сервери се навистина бавно, и 2260 01:48:06,130 --> 01:48:08,790 таа ги зема три секунди за да дај ми врати дека акциите инфо? 2261 01:48:08,790 --> 01:48:12,620 Кога ќе се погоди таа цена линија, ако извршување е синхронизиран, исто како што не 2262 01:48:12,620 --> 01:48:15,390 Стандардно, што е само случува да направите е да Вашиот прелистувач ќе го одложи за 2263 01:48:15,390 --> 01:48:15,930 три секунди. 2264 01:48:15,930 --> 01:48:18,900 И вие нема да бидете во можност да го стори ништо додека таа добива податоците. 2265 01:48:18,900 --> 01:48:20,010 Тоа се случува да бидат замрзнати. 2266 01:48:20,010 --> 01:48:20,800 >> И тоа е лошо. 2267 01:48:20,800 --> 01:48:23,390 Вие не сакате корисникот да имаат замрзнати веб-страница. 2268 01:48:23,390 --> 01:48:24,170 Точно? 2269 01:48:24,170 --> 01:48:25,480 Тоа е само лош. 2270 01:48:25,480 --> 01:48:26,770 Сите се согласуваат? 2271 01:48:26,770 --> 01:48:29,270 Ако сте во прелистувањето на Фејсбук и замрзнува и не можете да направите ништо, 2272 01:48:29,270 --> 01:48:31,920 се навистина фрустрирани. 2273 01:48:31,920 --> 01:48:34,960 Значи решението е правиме нешто асинхрони наместо тоа. 2274 01:48:34,960 --> 01:48:38,910 Значи сето ова асинхрони работа вели дека е, јас ќе одам да прашам ова 2275 01:48:38,910 --> 01:48:40,280 URL за некои податоци. 2276 01:48:40,280 --> 01:48:41,610 А потоа јас ќе одам да продолжувам да одам. 2277 01:48:41,610 --> 01:48:45,330 Јас сум само ќе го задржи извршувањето што код, кој беше после тоа. 2278 01:48:45,330 --> 01:48:49,290 >> И тогаш кога податоците е подготвена, тогаш јас ќе го обработи. 2279 01:48:49,290 --> 01:48:50,540 Тоа е се што се кажува. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> ПУБЛИКАТА: Ајакс само прави кодот асинхрони? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Тоа е асинхрони начин на преземање на податоци. 2283 01:48:58,560 --> 01:49:01,230 Така првото нешто за Ајакс е тоа ми овозможува да се добијат податоци 2284 01:49:01,230 --> 01:49:03,170 од надворешен веб-сајт. 2285 01:49:03,170 --> 01:49:07,045 А втората работа е тоа го прави сигурни дека мојата страница не се одложи додека сум 2286 01:49:07,045 --> 01:49:07,970 преземање на податоците. 2287 01:49:07,970 --> 01:49:09,600 Тоа е асинхрони дел од неа. 2288 01:49:09,600 --> 01:49:13,040 Поради тоа што заминува некаде на друго место, затоа велам јас продолжувам да одам додека ја 2289 01:49:13,040 --> 01:49:14,900 тоа е преземање на податоците, што го прави асинхрони. 2290 01:49:14,900 --> 01:49:17,170 Продолжувам извршување. 2291 01:49:17,170 --> 01:49:18,960 >> Така да тоа асинхрони идеја во умот. 2292 01:49:18,960 --> 01:49:22,010 И јас ќе ви покажам што разликата е. 2293 01:49:22,010 --> 01:49:23,920 Синхрони верзија се наоѓа на левата страна. 2294 01:49:23,920 --> 01:49:26,240 Асинхрони верзија е на десната страна. 2295 01:49:26,240 --> 01:49:29,170 Се погледне на броеви за да ја видите кои чекори одговараат на она што 2296 01:49:29,170 --> 01:49:30,610 извршува на секоја линија. 2297 01:49:30,610 --> 01:49:32,730 Таму, на алармирање се појавува во прв план. 2298 01:49:32,730 --> 01:49:34,590 Бидејќи добивање акции информации од Yahoo! 2299 01:49:34,590 --> 01:49:37,250 зема три секунди, прегради за три секунди. 2300 01:49:37,250 --> 01:49:39,880 И тогаш тоа предупредува цена по оние три секунди. 2301 01:49:39,880 --> 01:49:43,690 >> Па сега, кој алармирање емисии во тоа време - 2302 01:49:43,690 --> 01:49:44,610 три секунди внатре 2303 01:49:44,610 --> 01:49:47,670 И тогаш тоа предупредува од после тоа. 2304 01:49:47,670 --> 01:49:48,930 Па тоа само оди чекор по чекор. 2305 01:49:48,930 --> 01:49:51,200 Тоа е како што вие момци ќе го прифати, точно? 2306 01:49:51,200 --> 01:49:54,170 Со асинхрони извршување, ве извести во прв план. 2307 01:49:54,170 --> 01:49:57,410 Тогаш ќе одам на оваа URL-то. 2308 01:49:57,410 --> 01:49:59,530 И ви кажам, јас одам да се само прашувајте за податоци. 2309 01:49:59,530 --> 01:50:01,170 А потоа јас ќе одам да процесот подоцна. 2310 01:50:01,170 --> 01:50:04,230 Така што веднаш ги извршува следната линија откако ќе го направат тој 2311 01:50:04,230 --> 01:50:05,710 асинхрони барање. 2312 01:50:05,710 --> 01:50:08,920 >> Па 0,001 секунди, ќе видите алармирање Здраво. 2313 01:50:08,920 --> 01:50:10,960 Изврши таа функција, предупредување чао. 2314 01:50:10,960 --> 01:50:14,240 И бидејќи јас даде ветување дека јас ќе ги обработува податоците подоцна, што 2315 01:50:14,240 --> 01:50:17,920 се случува е дека кога податоците се враќа три секунди подоцна, тогаш јас ја стартувате таа 2316 01:50:17,920 --> 01:50:21,380 функција што имам таму. 2317 01:50:21,380 --> 01:50:21,870 Да? 2318 01:50:21,870 --> 01:50:25,750 >> Публика: Може ли да наведете или се разјасни што Ајакс значи? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Значи Ајакс е начин дека ако јас треба податоци кога сум на веб-сајт и јас 2320 01:50:30,460 --> 01:50:34,690 не сакаат да се освежи страница, а потоа Ја користам оваа технологија наречена Ајакс. 2321 01:50:34,690 --> 01:50:40,630 Што во суштина само значи, оди донеси податоци од друг веб-сајт. 2322 01:50:40,630 --> 01:50:43,724 И направете го тоа на начин на кој само не го одложи мојата веб-страница. 2323 01:50:43,724 --> 01:50:46,650 >> Публика: Така е тоа вродено дел од JavaScript или jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Значи некој напишал начин да се направи ова во JavaScript одамна. 2325 01:50:50,590 --> 01:50:52,050 Во еден момент, таа не постои. 2326 01:50:52,050 --> 01:50:56,630 И така некој измислен оваа техника да им овозможи на луѓето да бараат овие податоци 2327 01:50:56,630 --> 01:50:57,680 во оваа мода. 2328 01:50:57,680 --> 01:50:59,550 И тие напиша некои работи да го стори тоа за вас. 2329 01:50:59,550 --> 01:51:01,605 И jQuery само ви дава оваа многу убав начин да го направи тоа 2330 01:51:01,605 --> 01:51:03,112 со овој $. добие функција. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 прашања? 2333 01:51:09,480 --> 01:51:11,560 Можам да одговори на прашања за Ајакс потоа премногу. 2334 01:51:11,560 --> 01:51:13,870 Јас ќе бидам тука. 2335 01:51:13,870 --> 01:51:16,390 >> Па тоа нека ни пренесам податоци без освежите страницата. 2336 01:51:16,390 --> 01:51:18,200 И тоа нека ни го прават тоа во асинхрони начин што 2337 01:51:18,200 --> 01:51:19,450 не замрзне страница. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Премногу долго, не си го прочитал, ако тоа објаснување беше премногу долго за вас. 2340 01:51:27,310 --> 01:51:29,430 Значи, конечно, крос-сајт Скриптирање напади. 2341 01:51:29,430 --> 01:51:30,910 Ние го виде тоа со Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Ако во мојата база на податоци некој има ова име, која е оваа скрипта таг, и јас 2343 01:51:34,285 --> 01:51:38,280 има некои код на мојата страница која отпечатоци надвор имињата на луѓето по ред, или јас ќе треба 2344 01:51:38,280 --> 01:51:43,310 некои JavaScript код кој внесува ова име во страница, 2345 01:51:43,310 --> 01:51:45,680 она што HTML добива произведени? 2346 01:51:45,680 --> 01:51:47,290 Па, јас печати од HTML таг. 2347 01:51:47,290 --> 01:51:48,390 Јас печатење на сите овие тагови. 2348 01:51:48,390 --> 01:51:50,740 >> Стигнам до делот каде што јас сум за печатење со другарките. 2349 01:51:50,740 --> 01:51:52,980 Јас печати Лорен надвор. 2350 01:51:52,980 --> 01:51:54,200 Го испечатите Мило надвор. 2351 01:51:54,200 --> 01:51:56,810 А потоа моето име во базата на податоци е скрипта пост 2352 01:51:56,810 --> 01:51:58,060 unflattering статус на Фејсбук. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Бидејќи јас вметнува ова во страница поради тоа што изгледа како JavaScript, кога 2355 01:52:04,330 --> 01:52:07,930 оваа страница добива испратен до корисникот, станува погубен како го вклучите Javascript-. 2356 01:52:07,930 --> 01:52:10,800 И така тоа е она што ние го нарекуваме крос-сајт скриптирање напади. 2357 01:52:10,800 --> 01:52:14,570 Некој го става злонамерни информации во вашата база на податоци кои би можеле да одговараат на 2358 01:52:14,570 --> 01:52:17,080 некои дополнителни стринг или некои го вклучите Javascript-стринг. 2359 01:52:17,080 --> 01:52:20,130 >> И кога станува отпечатени на страница во оваа мода, тогаш што 2360 01:52:20,130 --> 01:52:22,580 се случува е дека лош код добива извршува дека јас не планираат 2361 01:52:22,580 --> 01:52:25,110 за тоа да се извршуваат. 2362 01:52:25,110 --> 01:52:28,230 И тоа е се крос-сајт скриптирање напад е. 2363 01:52:28,230 --> 01:52:31,790 И начинот на кој ви се околу ова е како Zamyla рече. 2364 01:52:31,790 --> 01:52:34,340 Вие само заврши работите во HTML специјални карактери. 2365 01:52:34,340 --> 01:52:39,460 И ова HTML специјални карактери е PHP функција која ќе се спречи овој вид 2366 01:52:39,460 --> 01:52:42,000 на работа од случување со тебе ако имате малициозен 2367 01:52:42,000 --> 01:52:43,830 стринг во вашата база на податоци. 2368 01:52:43,830 --> 01:52:47,650 Тоа само го бега, така што тоа не го прави се толкува како HTML. 2369 01:52:47,650 --> 01:52:50,960 Тоа ја заменува малку загради со она што ние го нарекуваме лица. 2370 01:52:50,960 --> 01:52:52,250 И отидовме во текот на овој во предавање премногу. 2371 01:52:52,250 --> 01:52:55,800 Па мислам дека вие момци треба да имаат добро разбирање за тоа. 2372 01:52:55,800 --> 01:52:57,420 Прашања? 2373 01:52:57,420 --> 01:52:57,820 Да. 2374 01:52:57,820 --> 01:53:00,860 >> Публика: Па, како би на [нечујни]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Кажи го тоа повторно. 2376 01:53:01,555 --> 01:53:02,500 >> Публика: Како би монитор - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Право. 2378 01:53:02,860 --> 01:53:06,080 Па имате нешто што вели, кога Јас се регистрирате, тип во мое име. 2379 01:53:06,080 --> 01:53:09,390 Јас само напишете во тоа поле, моето име е stript пост непријатен Фејсбук 2380 01:53:09,390 --> 01:53:11,570 статус блиски сценариото таг. 2381 01:53:11,570 --> 01:53:15,690 И дека само добива се стави во база на податоци, бидејќи не можам да кажам некој 2382 01:53:15,690 --> 01:53:18,260 во светот не имаат име со левата стрелка во неа или 2383 01:53:18,260 --> 01:53:19,036 Зборот скрипта во неа. 2384 01:53:19,036 --> 01:53:21,330 Што воопшто не се направи смисла. 2385 01:53:21,330 --> 01:53:24,560 Па јас само треба да бидете сигурни дека јас дезинфенкцирам нешто пред да го печати 2386 01:53:24,560 --> 01:53:25,420 до страницата. 2387 01:53:25,420 --> 01:53:27,140 >> ПУБЛИКАТА: Значи HTML специјални картички спречува скрипта тагови? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Да. 2389 01:53:28,710 --> 01:53:29,960 Па тоа не ги спречува сценариото тагови. 2390 01:53:29,960 --> 01:53:32,320 Тоа само ги прави сигурни дека скрипта тагови не се 2391 01:53:32,320 --> 01:53:35,120 толкува како HTML или - 2392 01:53:35,120 --> 01:53:35,400 Да. 2393 01:53:35,400 --> 01:53:38,470 Тоа само доаѓа до како што што всушност е. 2394 01:53:38,470 --> 01:53:39,220 Во ред е. 2395 01:53:39,220 --> 01:53:40,930 Така што беше разгледување квиз. 2396 01:53:40,930 --> 01:53:41,830 Кул. 2397 01:53:41,830 --> 01:53:45,088 >> [Аплауз]