>> R.J. AQUINO: Давайце проста пачаць.
Так што гэта Віктарына 1.
Вось некаторая інфармацыя высокага ўзроўню.
Аб старонкі для віктарыны з'яўляецца ў гэтым ня URL, больш не CS50.net, хоць гэта
будзе па-ранейшаму працаваць.
Гэта CS50.harvard.edu/quizzes/2013/1.
Гэта вялікі Аб старонцы, кажу вам, дзе і калі, а менавіта ў наступную сераду
ў кучу нумароў.
І ў наступную сераду, я значыць праз два дні.
Уся гэтая інфармацыя ёсць.
Але гэта назапашваецца.
>> Так што усё, што ад першай палове год патэнцыйна на віктарыне,
таму што вы не можаце сапраўды зрабіць пашыраны рэчы ў C без, калі ўмовы і
для завес і таму падобнае.
Але будзе акцэнт на пройдзены матэрыял з Віктарына 0,
пачынаючы з структурамі і File Ўводу / вываду Гэта, як правіла, больш
складанай, чым Віктарына 0.
Сярэдняя ацэнка, як правіла, ніжэй.
Вучыцца.
>> У той час як вы вучыцеся, не забудзьцеся выкарыстоўваць CS50/discuss каб задаць свае пытанні
і чытаць пытанні іншых людзей.
Так што, калі вы не маеце любыя пытанні, увайсці і чытаць
пытанні вашых сяброў.
Яны, верагодна, добрыя пытанні.
І прыняць практычныя тэсты.
Мы даючы віктарыны для сем ці восем гадоў.
Яны ўсе ў Інтэрнэце.
Будучыя пытанні падобныя каб старыя пытанні.
Вось як мы робім іх.
>> Віктарына пакуль не існуе.
Ніхто з нас не бачыў яго.
Але гэта будзе выглядаць папярэднія віктарыны.
Па гэтай агляднай сесіі, гэта не вычарпальны спіс тэм.
Вы не можаце проста прысутнічаць у гэтым, а затым быць зусім гатовы да віктарыны.
У адваротным выпадку, гэта не было б што вялікая частка віктарыны.
І гэта таксама не абавязкова усё, што вы павінны ведаць аб любой
дадзеная тэма.
Гэта прызначаецца, каб падвергнуць вас рэчаў мы разгледзелі, нагадаць вам, што мы
пакрытыя, і тое, як у якія мы разгледзелі яго.
Але вам прыйдзецца пайсці далей і глыбей, калі вы вывучаеце, каб пераправерыць
што вы ведаеце ўсё пра любы дадзены тэма і што вы запоўнілі
усе куты, якія былі пакрыта лекцыі.
>> Тэст адзначае сказаць вам, каб перайсці да пісец нататкі, гадзіны лекцый відэа.
Гэта добры спосаб пераканацца, што вы маеце пакрыты ўсе вашыя базы.
Так пачынаецца, калі я зрабіў гэта слайды, я спрабаваў паставіць, дзе я знайшоў
інфармацыя.
Такім чынам, для файла ўводу / высновы, напрыклад, тыдзень 7, Панядзелка лекцыя, і адказваў
Раздзел 6 і праблема Набор ўсіх ёсць інфармацыя аб файле ўводу / вываду Я зрабіў
гэта для кожнай тэме.
Так што тыя назва горкі могуць быць карысна для вас.
>> Так вось у нас файла ўводу / вываду Памятаеце, што ў Праблема Set 5, мы выкарыстоўвалі FOPEN, FClose,
FWRITE, FREAD і FSEEK.
Акрыяўшы 30ish ў фармаце JPEG і таго, зменены і заблыталіся з
растравыя выявы, вы павінны быць вельмі знаёмыя з гэтымі функцыямі
і як яны працуюць.
ня Калі вы больш не знаёмыя, вызначана разгледзець іх.
І пераканайцеся, што вы разумееце, што розныя аргументы,
калі яны выкарыстоўваюцца.
>> Але агульныя звязаных з файламі памылкі Вас могуць папрасіць аб -
добра, калі вы забыліся, каб праверыць, Еореп сапраўды працаваў, перш чым класціся
змяніць файл.
Гэта можа быць дрэнна.
Калі вы забыліся FClose файл што вы fopened, што падобна на
ўцечка памяці.
Гэта вельмі дрэнна.
І, забыўшыся праверыць, калі ў Вас ёсць дасягнулі канца файла перад вамі
пачаць пісаць да яго.
>> Так што, калі вы кажаце, эй, я на канца файла.
Дайце мне яшчэ 5 байт.
Ну, гэта, верагодна, не збіраецца працаваць так, як вы чакаеце.
Вось ужо гэта для файлавага ўводу / вываду, таму што мы зрабілі так шмат,
з ўсталяваць праблема.
Так што, калі вы зразумелі, што адбываецца у Архіў задач 5, памятаю bitmats
і ў фармаце JPEG, то вы, верагодна ўсё набор для файлавага ўводу / вываду Калі гэта крыху
недакладныя, безумоўна, перагледзець гэтую праблему ўсталяваць і звязаны з ім матэрыял.
>> Структуры былі тэмай, што былі на лінія паміж Quiz 0 і віктарыны 1.
Не цалкам зрабіць разрэз для віктарыны 0.
Такім чынам, яны вызначана будзе на Віктарына 1, тыдзень 7, панядзелак.
Што гэта структура?
Тут мы паказваем структуру.
Гэта як новага тыпу.
Гэта як кантэйнер для некалькіх палёў.
>> У гэтым выпадку, мы абвясцілі структуру студэнт, які мае два поля -
Радок, мы называем імя і унутр што мы называем ўзросту.
Таму, калі я абыйсці студэнтаў або я змяніць студэнтаў, я буду ў стане
доступ да іх імя і іх узрост.
Давайце паглядзім на код для гэтага.
Тут мы бачым, што я абвясціў студэнт з, гэтак жа, як
Я заяўляю, любую зменную -
унутр х, унутр у, і гэтак далей.
>> Вось студэнт с.
Ён пачынае з чым на яго палях.
Так давайце ўсталюем іх.
Вы ўсталёўваеце поля структуры з кропкі.
Так што я сказаў тут, што s.name = RJ.
І s.age = 21.
Вы таксама можаце абнавіць поля гэтак жа, як вы б абнавіць
Значэнне зменнай.
Таму я хачу, каб змяніць сваё імя ад RJ з няма перыяды да R.J. пішацца
правільны шлях.
Было б s.name = RJ, тое ж самае як мы сказалі гэта адпачатку.
І тады вы можаце атрымаць да іх доступ.
>> Так мы ўсталявалі іх.
Мы абнавілі іх.
Вы таксама можаце атрымаць доступ да іх у тым жа самым шляху.
Дык вось, я друкую R.J. З'яўляецца 21 гадоў.
І я доступ да гэтых значэнні з s.name і s.age.
Дык вось доступу Структуры з кропкавай натацыі.
Так, пытанне?
>> АЎДЫТОРЫЯ: Ці ёсць прычына, па папярэдні слайд, што вы не ставіў
студэнт у верхняй радку, як ЬурейеЕ структура студэнт, а затым
студэнт у канцы?
>> R.J. AQUINO: Такім чынам, пытанне было, на На гэтым слайдзе, мы звычайна бачылі
ЬурейеЕ структуры вузла, а затым поля ў структуры і
тое слова вузел.
І як жа тут я не казаў, TypeDef структура студэнт, а затым
поля ў структуры, а затым студэнтам?
Прычына ў тым, што я не трэба доступ да яго ўнутры структуры.
Так што гэта нармальна, каб пакінуць яго без імя.
Я магу проста пакінуць яго як ананімны структура.
>> Прычына мы робім гэта для звязаных спісаў і рэчы ў тым, што ўнутры вы павінны
для спасылкі на іць вузлоў зорку.
Такім чынам, структура павінна мець імя, так што вы можаце атрымаць доступ да яго пазней.
Гэта нязначная дэталь.
Але вы, як правіла, гл ЬурейеЕ структуры фігурныя дужкі, калі вам не трэба
найменне і ЬурейеЕ структуры некаторых імя затым у фігурныя дужкі, калі вы будзеце
трэба імя.
Так што гэта добрае пытанне.
>> І ў той момант, мы, як правіла, каб змяніць Структуры і абысці Структуры па
даведка, а не па значэнні.
Так што мы проста абыйсці паказальнікі на Структуры замест перадачы вакол
Структуры сябе.
Такім чынам, вы вельмі часта будзе выкарыстоўваючы, у гэтым выпадку, студэнт * ці
структура вузла * ці вузел * замест са студэнтаў або вузлоў.
Дык вось, я сказаў, добра, пераменная PTR будзе таксама адрас с.
Гэта будзе паказальнік студэнту R.J.
>> Такім чынам, мы можам атрымаць у гэтых галінах гэтак жа, як мы атрымліваем нічога.
Па-першае, ID спасылацца паказальнік каб атрымаць структуру.
Гэта * паказальнік, а затым кропка, а затым ўзрост.
Так для доступу да поля, і я абнавіў гэта цяпер да 22, таму што, давайце
скажам, гэта быў мой дзень нараджэння.
Там у ярлык сінтаксіс з дапамогай стрэлкі тут.
Так PTR стрэлка ўзрост проста гэтак жа, як * ptr.age.
Дык вось, гэта тое, што вы будзеце мець запамінаць і памятаць.
>> Вы выкарыстоўвалі яго шмат у pset6, арфаграфіі PSET.
Але гэта на самай справе тое, што адбываецца на пад капотам.
Гэта разнаймення а затым да яго доступ.
Пытанне?
>> АЎДЫТОРЫЯ: [неразборліва].
>> R.J. AQUINO: Дык чаму ж мы, выкарыстоўваючы паказальнікі як структур замест
Структуры сябе?
Прычына будзе, калі вы праходзіце структура ў залежнасці, вы, верагодна,
хачу перадаць вакол толькі 4 ці так байт, якія ўяўляюць паказальнік, як
супрацьлегласць патэнцыйна 30 або 40 байт, якія структуры.
Так праходжання нешта ў функцыю лягчэй, калі справа
менш, карацей кажучы.
Пытанне?
>> АЎДЫТОРЫЯ: Вы, магчыма, згадаў пра гэта ў пачатку, але ёсць
іншыя слайды на [неразборліва]?
>> R.J. AQUINO: Гэтыя слайды будзе пасля сесіі па правядзенні агляду.
Мы апублікуем іх на сайце.
Так рухацца далей і рухацца па ледзь-ледзь хутчэй, мы збіраемся казаць аб дадзеных
структур.
Ёсць шмат.
Мы разгледзелі кучу з іх.
Вось тое, што вы павінны разумець, аб структуры дадзеных.
>> Вы павінны сапраўды зразумець на высокім ўзровень, што кожная структура з'яўляецца.
Ці можаце вы растлумачыць на англійскай мове, каб ваш сябар, які не прыняў да CS50, як
мы арганізацыі нашы дадзеныя і чаму мы б выкарыстоўваць што-то на гэтым шляху?
Гэта рэч адзін.
Рэч два, разумеюць рэалізацыя.
Так разумею, як выкарыстоўваць гэтыя рэчы ў C. І мы будзем ісці па гэтай нагоды.
>> А потым, што тры будуць ведаць працуюць раз і абмежаванні
розныя структуры, якія вы выкарыстоўваеце.
Так разумею, чаму вы павінны выкарыстоўваць замест масіва хэш-табліцы.
Зразумець, як хутка, у сярэднім, доступу да хэш-табліцу ёсць.
Зразумець, што аперацыі хутка на звязаны спіс, але павольна на масівах і
наадварот.
Такім чынам, каб зразумець, што, вам прыйдзецца зразумець абазначэння Big-O проста ведаць
як казаць пра іх Ці мала што.
І мы будзем казаць пра гэта.
>> Так першая рэч, звязаныя спісы.
Вось высокага ўзроўню малюнак звязанага спісу.
Пакажам гэта ў класе.
Мы звычайна маюць 10 чалавек стоячы на ​​сцэне.
Але ў нас ёсць шэраг вузлоў, дзе кожны вузел мае некаторы значэнне і паказальнік
яго наступнага значэнні.
Такім чынам, каб дабрацца ад аднаго вузла да іншага, вы проста сказаць, дайце мне наступны вузел.
У вас ёсць, што вузел.
Дайце мне наступны вузел.
У вас ёсць, што вузел.
Дайце мне наступны вузел і г.д. пакуль няма вузел левай.
>> Так працягваюць казаць пра гэта на высокім узроўні.
Гэта вельмі лёгка ўставіць рэчы у складны спіс.
Калі вы не клапоціцеся аб парадку, вы можаце проста кінуць яго
у самым пачатку.
Гэта пастаянная часу.
Але цяжка знайсці значэнне.
Калі вы спрабуеце спытаць, складае сем у маім спісе?
Вы павінны прайсці кожны значэнне.
Гэта сем?
Зноў і зноў.
І гэта Аб (п).
Так пры вывучэнні для віктарыны, параўнайце гэта з масівамі.
>> Хіба што ў парадку?
Святло згасла цьмяным.
ОК.
Калі гэта звязаны спіс лепш?
Калі гэта масіў лепш?
Так што давайце паглядзім на код.
Вось патэнцыйны вузел.
Гэта структура.
Ён мае Int N, якія будзе наша каштоўнасць.
І яна мае структуру вузел * наступны, які наша паказальнік на наступны вузел.
Дык вось, мы бачым, што мы выпадкова каб паставілі Int ў нашым вузле.
Але калі б гэта было звязана спіс гольца зоркі або звязаны спіс паплаўкоў, мы
цалкам можа зрабіць гэта.
>> Памятаеце, у pset6, вы, верагодна, мелі звязаны спіс знакавых зорак ці проста
статычныя масівы знак.
Давайце паглядзім тут аперацыі.
Таму мы хочам, каб ўставіць новы п у нашай звязанага спісу.
Мы пачынаем з галавы паказальнік, які паказальнік на гэты вузел, які мае
значэнне п і побач паказальніка, што паказвае на гэты вузел з'яўляецца значэннем
п і бліжэйшых нуль, таму што гэта апошні вузел.
Такім чынам, у мэтах эканоміі часу, я буду пакласці увесь код на экране.
І мы будзем ісці праз яго некалькі радкоў за адзін раз.
>> Дык вось код.
Я спадзяюся, што гэта чытаецца.
Першае, што мы робім, мы Malloc новы вузел.
Так што мае паказальнік на новы вузел, што не зусім ёсць любая пастаноўка
ў ім няма.
Мы правяраем, каб пераканацца, што новы вузел не з'яўляецца нулявым.
У адваротным выпадку, мы павінны здавацца.
Так праверыўшы, што, мы цяпер ўсталяваць значэння ў вузле.
Такім чынам, мы паставіць новы п у нашу н вобласці.
І мы ўсталявалі наступны паказальнік, каб паказаць на арыгінальная галава, так што мы можам
зараз ўставілі гэта вузел у нашым спісе.
>> Нарэшце, у нас ёсць глабальную кропку галавы на наш новы вузел, так што калі б мы павінны былі
пачынаюцца ў галаве, мы былі б на гэта Новы першы вузел замест
стары першы вузел.
І калі гэтая функцыя выходзіць, ня пераменная новы сайт больш не існуе,
таму што гэта было лакальнымі для функцыі.
Так што гэта стан свету.
Наш глабальны кіраўнік паказвае на наш новы Першы вузел, які паказвае на наш
Арыгінальны першы вузел, якія кропкі да вузла пасля гэтага.
>> Гэта было ўстаўкі.
Я спадзяюся, што было адносна проста прытрымлівацца.
Калі вы сумняваецеся, намаляваць карціну.
Так што я лічу, што казаць пра звязаныя спісы і гледзячы на
Код вельмі ня карысна.
У той час як, гледзячы на ​​карціны звязаны спіс дазваляе мне думаць, ох, як
У мяне ёсць гэты вузел тут.
Але, калі я аднаўлю гэты паказальнік, яна сканчаецца адключаны.
І я забыўся, дзе вузел ідзе.
І код выходзіць.
І ў вас ёсць некалькі вузлоў што адключаныя.
І вы не ў канчатковым выніку з спіс вы хочаце.
>> Так што калі вы малюеце карціну і зрабіць гэта крок за крокам, мы спадзяемся, вы ўбачыце
правільны парадак рэчаў у тэрмінах абнаўленне паказальнікаў, каб пераканацца,
што спіс прыходзіць разам.
Устаўка адносна простая.
Больш складаным будзе ўстаўкі ў адсартаваны спіс.
Больш складаная функцыя выдалення і знайсці, такім чынам праглядаючы спіс на
ўбачыць, калі там нешта ёсць.
Можа быць, вы зрабілі гэта ў pset6 калі вы патрапілі ў ваш хэш-табліцы, і Вы сказалі,
ну, гэта слова яблык ў маім звязанага спісу?
>> Такім чынам, вы, магчыма, ужо зрабілі гэта.
Але вызначана, асвяжыць вашу памяць і паспрабаваць паўторна рэалізаваць знаходку і
перавызначыць выдаліць для звязанага спісу.
Весялосьць нататка боку, ёсць таксама двусвязный спісы, дзе ў вас ёсць
паказальнікі, якія паказваюць як наперад, так і таму, так што вы маглі б пайсці на
наступны вузел і да папярэдняга вузла.
І паўстала пытанне аб леташніх віктарына гэтага тыпу, казаць
аб двусвязный спісы.
>> Дык вось, гэта структура, што ты адносна знаёмыя, таму што большасць
з вас, верагодна, выкарыстоўвалі іх на pset6.
Вось адзін, што крыху менш знаёмыя.
У якасці заўвагі, я думаю, што Віктарына 1 у першую чаргу складаней, чым Віктарына 0, таму што
матэрыял, які вы робіце, вы не зрабілі больш.
Каб змясціць гэта яшчэ адзін спосаб, для Quiz 0, вы напісалі шмат C. І мы
пытаўся вас пра С.
>> Для Віктарына 1, мы збіраемся спытаць вас аб PHP і JavaScript, якія вы
ня напісаў столькі.
Мы збіраемся спытаць вас аб C-кода, Вы не напісалі столькі,
гэты прасунуты C матэрыял.
Так вызначана, практыка таго, што мы казалі ў лекцыі, што вы
не абавязкова рабіць па праблеме ўсталяваць.
>> Кажучы пра гэта, вы не напісалі стэк па праблеме ўсталяваць.
Але гэта было ў лекцыі.
Вось высокага ўзроўню карціна стэкі, што мы паказваем кожны год.
Гэта стэк латкоў у Mather сталовая.
На высокім узроўні, стэкі ў мінулым прыйшоў, першым сышоў структуры дадзеных.
Гэта азначае, што вы збіраецеся навесці -
1, 3, 7, 12, 14, адмоўны 0.
Адзінае, што я не мог мець сказаў - адмоўны 3, 0.
Вы паставіць усе гэтыя рэчы цалі
І апошняе вы паклалі ў першы той, які збіраецца выйсці.
>> Так у вас ёсць дзве аперацыі -
штурхаць і поп-музыкі.
Усе пакласці ў тым, што я быў жэстыкулюючы, падобныя да гэтага, штуршок.
А потым, калі я дасягаю, каб захапіць нешта ці дасягнуць на вяршыні, каб захапіць
нешта, гэта поп-музыкі.
Такім чынам, мы збіраемся рэалізаваць стэкі.
І мы паказалі ім у лекцыі выкарыстанні масіваў.
Але вы маглі б зрабіць іх з дапамогай звязаных спісаў.
Стэк ўяўляе сабой канцэптуальную дадзеных Структура, не падабаецца
ад канкрэтнай рэалізацыі адной.
>> Так што ён павінен выглядаць?
Гэта будзе выглядаць накшталт як гэта.
Вы павінны былі б цэлае памер.
І вам прыйдзецца масіў значэнняў, што мы называем латкі, таму што гэта
што карціна была для нам - Int латкі -
, А затым некаторыя максімальная ёмістасць.
Так што будзе настойваць выглядае?
Ну, калі ў нас ёсць стэка с, затым націснуць нешта на с, мы атрымаем
памер з.
І што будзе наступным адкрытае месца нашага масіва.
Так што, калі ў нас ёсць тры рэчы ў нашай стэка, Затым латкі 3 будзе наступным
адкрытае месца, таму што 0, 1, і 2 ужо запоўненыя.
>> Такім чынам, мы змясціць значэнне ў s.trays [s.size], трэцяе месца.
А потым мы павялічваем s.size сказаць, эй, у нас было тры рэчы, перш чым.
Цяпер у нас ёсць чатыры.
Таму ў наступны раз вы націскаеце, вы збіраецца пакласці што-то ў 4.
Або ў наступны раз, калі вы поп, вы збіраецеся глядзець на 3, а не 4 або любы іншы.
А потым мы вернемся верны скажам, эй, нам гэта ўдалося.
Гэта працавала.
Як правіла, калі функцыя гэта павінны вярнуцца сапраўдным або
хлусня заўсёды вяртае ісціну, вы можаце зрабілі нешта не так.
Так гэта працуе?
>> Ну, яна выдатна працуе на працягу 1, і 2 і 3, і 4, і пяць.
Але, дапусцім, я дасягну сваёй магутнасці.
Я тады сутыкнуліся з праблемай, таму што калі памер такой жа, як здольнасці, я
цяпер спрабуе пакласці нешта ў масіў, у якім у мяне няма месца.
Так кароткая праверка, каб выправіць гэта.
Калі s.size == магутнасці, вяртанне ілжывым.
У адваротным выпадку, пайсці і зрабіць тое, што мы зрабілі.
Так, што яшчэ мы маглі папрасіць аб для стэкаў?
Што яшчэ варта вучыцца?
Што яшчэ вы павінны практыкаваць?
>> Ну, рэалізацыі поп-музыкі.
Мы ўжо зрабілі штуршок.
Я гэта выправім.
Рэалізацыя не-масіў, дзе Вы выкарыстоўваеце звязаны спіс, магчыма.
Рэалізацыя без унутр.
Мы зрабілі цэлымі тут.
Але яна магла б быць паплаўкі.
Я мог бы быць радкамі.
Гэта магло б быць знакавыя зоркі.
Паглядзіце на апошнія тэсты для відаў пытанні мы папрасілі аб стэкаў.
>> Скажу, што мы разгледзелі стэкі вакол гэтак жа, як мы разгледзелі іх у
апошнія гады.
Такім чынам, пытанні віктарыны павінны быць добрым паказчыкам.
Рухаючыся наперад яшчэ хутчэй, чэргі.
Яны як стэкі.
Але яны спачатку ўвайшоў, першым выйшаў.
Калі ты ангелец чарзе слова верагодна, зрабіў шмат сэнсу для вас.
У адваротным выпадку, вы можаце мець чулі пра яго ў выглядзе лініі.
Яны працуюць як лініі ў краме Apple.
Першым чалавекам, каб паказаць у 3:00 раніцай першы
чалавек, які купіць яго IPad.
>> Таму ў нас ёсць дзве аперацыі -
паставіць у чаргу і з чаргі.
Ставіць ставіць кагосьці ў лініі.
Dequeue цягне першы чалавек з лініі.
Зноў жа, мы можам рэалізаваць гэта з масівам.
Так у чым жа структура ў нас паказаў у лекцыі?
Гэта быў адзін.
Зноў жа, колькасці.
Зноў жа, памер і гэтая новая рэч фронт.
Чаму існуе нешта, званае пярэдняй?
Гэта індэкс на наступны элемент з чаргі.
Гэта проста ўнутрана адсочванне першы хлопец, каб паказаць, каб мы
выцягнуць яе, калі мы павінны.
>> Вызначана глядзець на лекцый і паспрабуйце для рэалізацыі Enqueue і Dequeue
пры вывучэнні для віктарыны.
Важныя рэчы, каб думаць.
Упаковачнай вакол, калі пярэдняя плюс Памер сканчаецца больш, чым магчымасцяў.
Зноў жа, калі ваша структура запоўненая, Вы будзеце мець праблемы.
Хэш-табліцы вы бачылі раней.
Большасць з вас, верагодна, рэалізуецца іх на pset6.
Гэта структура, якая імкнецца да O (1) ўстаўкі сталая часу і O (1)
Пастаянная часу пошуку.
>> У CS50, мы рэалізавалі гэта як масіў звязаных спісаў.
Ключавым кампанентам у хэш-табліцу з'яўляецца хэш-функцыя.
Так ён пераўтворыць ваш ўклад, скажам, слоўнікавае слова, у лік,
якая будзе наш індэкс.
І мы будзем выкарыстоўваць гэты індэкс у нашым масіве.
Такім чынам, вось мілы маленькі карціна ад study.50.net.
Які кідаецца ўсе словы ў наш хэш-функцыя.
І хэш-функцыя кажа нам дзе паставіць гэтыя словы.
>> Гэта ўсё выдатна на зямлі, дзе ёсць толькі адно слова для кожнага слота.
Але, як вы памятаеце з pset6, ёсць больш словаў, чым слотаў.
Так што ж адбываецца, калі вы атрымаць сутыкнення?
Замест таго каб захоўваць адно значэнне ў, скажам, хэш-табліцу 3, вы
захоўваць звязаны спіс.
І так замест таго, дыня тут, вам прыйдзецца звязаны спіс,
дзе першы вузел дыня.
А на наступны вузел кошка.
І трэці вузел сутыкнення, давайце сказаць, таму што ўсе гэтыя словы пачынаюцца
з С.
>> Так што большасць з вас зрабілі гэта для pset6.
Калі вы не зрабілі хэш-табліцу на pset6 і вы спрабавалі нешта накшталт
сінтаксічнага дрэва, безумоўна, перагледзець хэш-табліцы.
Калі ты зрабіць гэта на pset6, безумоўна, разгледзець хэш-табліцы.
І калі вы зрабілі гэта на pset6 і гэта не так выпрацаваць цалкам маюць рацыю і вас
было шмат непрыемнасцяў з ім, безумоўна, разгледзець хэш-табліцы.
Так што ўрок сапраўды, безумоўна, разгледзець хэш-табліцы.
>> Пераважная меншасць з вас спрабаваў з прымярае pset6.
Высокага ўзроўню малюнка.
Гэта нешта накшталт гэтага, дзе кожны вузел мае мноства дзяцей, дзе кожны
дзіця адпавядае літары.
І кожны вузел таксама кажа, эй, я ні слова.
Такім чынам, у дадзеным выпадку, слова Максвел, калі вы будзеце прытрымлівацца М да А да
X-W-E-L-L, а затым прытрымлівацца яму яшчэ адзін.
І вы атрымаеце гэты сімвал, дэльта, якая мы азначаюць азначае гэтае слова.
Так Максвел гэтае слова.
Гэтыя дэльты ўсёй якое азначае якія рэчы з'яўляюцца словы і якія
рэчы не.
>> Такім чынам, у pset6, дадзеныя мы захавалі разам любы з нашых вузлоў было "Я
слова. "І выдатна, што пра спробаў будзе яны дэманструюць ўстаўкі і
пошук у O (даўжыня слова).
Так што проста прайсці праз Максвелла, гэта M-A-X-W-E-L-L. Так сем ці восем -
Я не магу злічыць -
крокі, каб атрымаць да канца і праверыць рэчы.
Так хуткае ўкараненне тут.
Роб прайшоў звязаны пералічыць у яго пасмяротных.
Так праверыць гэта.
Выбачайце.
Прайшоў выглядзе дрэва ў яго пасмяротных.
Так праверыць гэта.
>> Але вы ў прынцыпе ёсць кожны вузел мае 27 паказальнікі на бліжэйшыя вузлоў і аднаго
Boolean бо я баюся слова.
Праверце пасмяротна Роба за тое, як гэта на самай справе рэалізуецца.
Наша канчатковая структура, нашы дрэвы і бінарныя дрэвы пошуку.
Так, гледзячы на ​​іх, яны былі пакрытыя зусім нядаўна Тыдзень 8, панядзелак.
Дрэва падобна на выглядзе дрэва, акрамя вас не абавязкова павінны 27 вузлоў на
кожная кропка.
І ў вас няма гэтых дадзеных адзін на крок, які азначае -
шлях не мае значэння.
У той час як сінтаксічнага дрэва, шлях зверху знізу, Максвел, было важна для нас.
>> Але кожны вузел мае некалькі дзеці, магчыма.
У нас ёсць яшчэ трохі слоўнікавы запас.
Корань дрэва з'яўляецца на самым версе.
І мы кажам, што вельмі ніжні вузлы, якія не маюць
дзеці лісце.
Так як сінтаксічнага дрэва, дрэва Структура вузлоў.
Распаўсюджаны тып дрэва, што мы збіраемся пагаварыць пра бінарнае дрэва, дзе
кожны вузел не мае дзяцей або адно дзіця або двое дзяцей.
Так гэтая карціна тут не бінарнае дрэва, таму што
вузел 3 мае траіх дзяцей.
>> Але калі б мы павінны былі ігнараваць тых, астатняе гэтага з'яўляецца бінарнае дрэва, таму што гэта
дэманструецца ўласцівасць, што кожны вузел мае нуль, адзін ці два дзіцяці.
Так як жа мы выказваем гэта ў кодзе?
Мы маглі б мець вузел, дзе кожны вузел мае цэлым лікам ўнутры яго, а таксама
як паказальнік на дрэве злева і паказальнік на дрэве
Права, так двух дзяцей.
Як гэта карысна?
Ну, калі мы зробім правілы аб тым, дзе мы пакласці вузлоў, мы можам зрабіць пошук хутчэй.
>> Так што ёсць паняцце бінарнага пошуку дрэва, дзе ўсе вузлы
левае поддерево мае меншае значэнне чым вузел, мы глядзім на.
І усе вузлы правага поддерево маюць вялікую каштоўнасць
чым каранёвага вузла.
Цяпер, што выглядае, як шмат слоў.
Я збіраюся паставіць яго ўнутры двайны цытаты і паказаць вам фатаграфію.
Дык вось прыклад бінарнае дрэва.
Глядзіце, што мы пачынаем з 10.
Усе злева 10 менш, чым гэта.
І ўсё, што правей больш, чым гэта.
>> Але больш, чым, што кожны вузел у дрэва выказвае гэтую нерухомасць.
Такім чынам, вузел 7 мае 3 да налева і 9 направа.
Так што ўсе тыя, менш, чым 10.
Але, гледзячы на ​​толькі тых, 7 мае Ад 3 да злева і 9 па яго права.
І сапраўды гэтак жа справа, 15 мае 14 каб яго левая і 50 да яго права.
Такім чынам, тры вузла там, 15, 14, і 50, таксама дзейнічае бінарнае дрэва
i сапраўдны бінарнае дрэва.
І ўсе яны больш, чым 10.
Такім чынам, яны могуць быць на права там.
Ёсць пытанне?
>> АЎДЫТОРЫЯ: Як вы спраўляецеся, калі ў вас ёсць дзве сямёркі?
>> R.J. AQUINO: Так.
Як вы спраўляецеся з двума значэннямі што адны і тыя ж?
Некаторыя бінарныя дрэвы пошуку сказаць, што вам ігнараваць дублікаты, таму што мэта складаецца
толькі, каб сказаць, што я бачыў гэтыя рэчы да гэтага часу.
Некаторыя бінарныя дрэвы пошуку, можна сказаць, ёсць лічыльнік ўнутры вузла.
Іншыя могуць сказаць, што ўсё ў левы менш або роўна.
І ўсё, што правей больш.
>> Усё залежыць ад таго, што Праблема ў тым, вы вырашаеце.
Так у слоўніку, напрыклад, вы не будзе клапаціцца аб дублікатаў.
Вы б выкінуць іх.
Але іншыя праблемы вы маглі б клапаціцца.
>> АЎДЫТОРЫЯ: Ці можна ёсць 1 злева ад 15, які
менш за 10?
>> R.J. AQUINO: Не.
Калі 14 тут былі 1, то гэта ня быць дапушчальным бінарнае дрэва,
таму што ўсе правей 10 павінна быць больш, чым гэта.
І мы ўбачым, чаму.
Калі ў зямлі пошуках мая мэта знайсці 14, я пачынаю ў корані.
Так што я з нецярпеннем.
ОК.
Мы збіраемся пачаць у корані.
Паглядзіце на 10.
>> Ну, 14, наша мэта, больш, чым 10.
Так павінна быць справа.
Гэта вельмі падобна на ўсю тэлефоне кніга, што мы зрабілі, двайковы
шукаць там.
Але замест двайковага пошуку ў масіве, мы двайковы
пошук у гэтым дрэве.
Такім чынам, мы ўсё яшчэ шукаем 14.
Ну, 14 менш, чым 15.
Так што, калі гэта ў нашым дрэве, ён павінен быць у гэтай галіне тут.
Яна павінна быць справа ад 10 і налева да 15 гадоў.
>> І таму мы правяраем гэты вузел.
І яй, мы знайшлі 14.
Я не збіраюся ісці праз яго.
Але вось код.
Гэта на самай справе адносна проста,
таму што гэта рэкурсіўнай.
Што мы маглі спытаць вас зрабіць на віктарыне?
Мы маглі б папрасіць вас напісаць гэты код.
Мы маглі б папрасіць вас, каб паглядзець на гэтага кода і змяніць гэты код і растлумачыць, што
ён робіць.
Так.
Пытанне?
>> АЎДЫТОРЫЯ: Ці з'яўляюцца гэтыя горкі будзе даступныя, як яны былі ў апошні раз?
>> R.J. AQUINO: Так.
Такім чынам, гэтыя горкі, безумоўна, будуць размешчаны.
>> АЎДЫТОРЫЯ: Яны на самай справе адказваў Прама зараз на сайце.
Дэвід толькі што зрабіў гэта.
>> R.J. AQUINO: Горкі Прама зараз на сайце.
Я, верагодна, залатаць пару памылкі друку я адзначыў і выправіць іх.
Але ёсць ток версія на сайце.
Іншыя рэчы, якія мы маглі папрасіць вас зрабіць -
напісаць ўстаўкі.
Напісаць итеративный версію рэкурсіўная функцыя, мы проста паказалі вам
ці казаць пра гэтыя рэчы, як і ў пункты, на словах, у прапановах.
Параўноўваючы часу працы і тлумачачы тое, што вы хацелі б выкарыстоўваць двайковы
дрэва пошуку для замест хэш-табліцу, напрыклад.
>> Так разумею, гэтыя структуры на даволі глыбокім узроўні.
Зразумець, як іх пісаць, як выкарыстоўваць іх, як казаць пра іх.
І вы будзеце ўсё гатова.
Пытанне?
>> АЎДЫТОРЫЯ: Калі вы пішаце бінарнае дрэва пошуку, як вы
вызначыць, якое значэнне зрабіць гэта як корань?
>> R.J. AQUINO: Такім чынам, пытанне было, што значэнне вы робіце як корань?
У залежнасці ад вашага кода, вы можа мець глабальны корань.
Такім чынам, вы, магчыма, хутчэй за ўсё, меў на pset6 глабальная хэш-табліцы.
Ці вы маглі б прайсці корань ў якасці аргументу.
Так што гэта функцыя пошуку тут прымае аргумент вузла *.
І таму ўсё, што вузел вам здарыцца быць гледзячы на ​​тое, што вам лечыце
ў якасці кораня, калі вы праходзіце яго цалі
І я ўсё гатова.
Такія мае слайды.
Наступны чалавек можа прыйсці своп у наўтбуку і мікрафон.
>> ROB BOWDEN: Я думаю, што, магчыма, прыйдзецца інтэрпрэтаваць гэтае пытанне па-рознаму.
Але я інтэрпрэтаваў гэта як, калі ў вас ёсць колькасці 1, 2, і 3, як мы
ведаць, каб зрабіць 2 корань у адрозненне ад 1 або 3?
Калі мы зробім 2 кораня, то гэта прыгожа 1 і 3, каб левы і правы.
Але калі 1 з'яўляецца коранем, то гэта ад 1 да зверху, 2 права, 3 направа.
Таму па змаўчанні вы не ведаеце, што рабіць корань.
І для любога алгарытму мы чакаем, каб даць вам, толькі першае, што вы
устаўка будзе корань.
Ці мы дамо вам бінарнае дрэва, што ўжо існуе, што мае корань.
Але іншыя алгарытмы такая, што корань будзе абнаўляць, так што калі вам
ў канчатковым выніку ў сітуацыі, дзе гэта 1, 2, 3, было б аўтаматычна абнаўляць ў
зрабіць 2 новага кораня, так што яна па-ранейшаму добра збалансаваны.
>> Анжэла Л.І.: Круто.
Гэй, хлопцы.
Я Анёла.
І я збіраюся завяршыць наш C , А затым перайсці ў некаторыя з нашых вэб
тэхналогіі -
HTTP, HTML, і CSS.
Таму першае, што з'яўляецца буфер Перапаўненне нападаў.
Так што давайце зірнем на гэты код.
Гэта даволі проста.
Там у функцыі Foo.
І гэта нічога не вяртае.
Але гэта займае ў паказальнік ў радок пад назвай бар.
>> І ён збіраецца заявіць пра гэта буфер, які ўяўляе сабой сімвал
Масіў, мае 12 слотаў.
І ён выкарыстоўвае тетсру, які знаходзіцца ўсяго ў функцыя, копіі з аднаго адрасы
ў іншы.
Так што гэта спрабуе скапіяваць у наш буфер ад таго, што
бар паказвае на.
Так хоць разумееце, што здарылася з гэтым кодам?
>> АЎДЫТОРЫЯ: Калі бар даўжэй З, яны будуць перазапісаны.
>> Анжэла Л.І.: Так, менавіта так.
У нас няма гарантый таго, што бар будзе менш, чым 12.
Мы проста зрабілі некаторы адвольнае лік 12.
І мы былі як, будзем спадзявацца, што наш карыстацкі ўвод менш
12 знакаў.
Такім чынам, у ідэальным свеце, калі б наш ўваход заўсёды, як чакалася, то мы атрымаем
нешта накшталт: Прывітанне.
Гэта менш, чым 12 знакаў.
Ён атрымлівае чытаць у знак з.
А потым мы нешта з ім зрабіць.
Гэта сапраўды не мае значэння.
>> Але зламыснік мог зрабіць нешта большае, як гэта, дзе яны
даць нам усё, што бар паказвае на, гэта будзе паказваць на гэты велізарны масіў
проста гадоў.
І гэта шлях даўжэй, чым 12 гадоў.
Так ён збіраецца прайсці ўвесь шлях тут, дзе вяртанне
адрас раней.
Так скажам, гэтую функцыю называецца Foo.
Можа быць, Foo называлі некаторыя іншыя Функцыя, якая называлася па асноўнай.
Таму, калі Foo працуе, ён павінен ведаць, дзе б вярнуцца.
>> Калі Foo называўся некаторай функцыяй імя Баз, ён павінен ведаць, што гэта
павінны вярнуцца да Баз.
І вось што гэта зваротны адрас тут кажа нам.
Але калі мы перазапісаць яго з некаторымі іншымі адрас, у дадзеным выпадку, гэта
ўяўленне выступе на самага пачатку гэтага буфера, то
што на самой справе адбудзецца ў тым, што замест таго каб вярнуцца назад у Баз,
які называецца наша функцыя, гэта проста збіраецца ісці на фронт гэтага кода.
>> І калі гэта было там, таму што хакер чувак прыйшоў і
ўводзяць гэта, то, магчыма, гэтая сума з пяцёркі на самай справе не гадоў.
І гэта на самай справе проста код, які перапынкі ваш кампутар ці нешта.
Такім чынам, каб абараняцца аб такога роду рэч, у вас ёсць, каб ніколі не дапусціць, што
карыстацкі ўвод пэўная колькасць знакаў.
Напрыклад, калі вы рабілі арфаграфіі, вы сказалі, што словы былі
толькі будзе 40 сімвалаў доўга максімум.
І гэта было добра.
>> Але калі няма, то вы павінны былі б пераканайцеся, што толькі для чытання ў 45
знакаў адначасова.
У адваротным выпадку, вы можаце перазапісаць ваш буфер.
Любыя пытанні па што.
Так.
>> АЎДЫТОРЫЯ: Ці не маглі б вы проста пагаварыць трохі больш пра іх?
>> Анжэла Л.І.: Выбачайце.
Так.
>> АЎДЫТОРЫЯ: мікрафон толькі для відэа.
Я паспрабую і праект.
Прывітанне, хлопцы.
Sup?
Так што давайце пяройдзем некалькі рэчаў у Бібліятэка CS50, якія вы карыстаецеся
ўвесь семестр, у асноўным каб атрымаць карыстацкі ўвод.
Як вы ведаеце, вы ўключаеце CS50 бібліятэка, проста робячы CS50.h, які
змяшчае ўсе прататыпы Функцыі, якія можна выкарыстоўваць, як
GetString і GetInt, і GetFloat, і гэтак далей.
І ёсць у гэтым адна лінія ў CS50 бібліятэка, якая вызначае радок, якая
вы, хлопцы, ўсе ведаем, да цяперашняга часу гэта проста сімвал *.
>> Але давайце зірнем на як GetString працуе.
Гэта вельмі скарочаны варыянт.
Вы можаце падцягнуць бібліятэчныя файлы CS50 ад, я думаю, manuals.CS50.net.
І вы можаце прачытаць фактычная функцыя.
Але гэта пакрывае некаторыя з важныя часткі.
Такім чынам, мы стварылі некаторы буфер з некаторай магутнасці.
І тое, што мы робім, мы атрымліваем адзін знак за адзін раз з стандартнага с.
Вось дзе карыстальнік ўводзіць Тэкст у кансолі.
>> І такім чынам мы збіраемся, каб чытаць у характар ​​тых часоў, пакуль гэта не новая
лінія, і гэта не канец файла, які гэта канец стандартнага ўводу.
І для кожнага знака, што мы чытаем у, калі гэты сымбаль заканчваецца дадання
да ліку знакаў мы чыталі ў, і гэта больш, чым нашых магчымасцяў,
тое, што мы робім, мы проста змяніць памер нашага буфер так, каб гэта ўдвая даўжэй.
Такім чынам, яшчэ раз, гэта абараняе ад буфера Перапаўненне атакі, таму што вы прачыталі ў
персанаж адначасова.
І калі ў нейкі момант вы чытаеце ў занадта многія, вы проста пашырыць свой буфер.
Вы памножце яго на два.
І тады ў вас ёсць больш магчымасцяў.
>> У адваротным выпадку, вы проста дадаць персанаж у буфер.
І пасля таго як вы лічылі ўсе персанажы, ён будзе паменшаны буфер
назад да нармальнага памеру, дадаць нуль тэрмінатар, а затым вярнуцца.
Цяпер, давайце паглядзім на GetInt.
Можа вы, хлопцы гэта прачытаць?
Я магу павялічыць няшмат.
Я не ведаю, як кампутары працуюць.
Не бярыце ў галаву.
Я не магу павялічыць належным чынам.
>> Гэта сапраўды цяжка.
Мне вельмі шкада.
Давайце проста паглядзім на гэта.
Так што GetInt робіць гэта спачатку чытае у радку з GetString, які
мы рэалізавалі раней.
І важная частка адзначыць, ці з'яўляецца гэта абмен, што ў канчатковым выніку
чытанне як на самой справе не ў радок, то мы проста вяртаем INT_MAX да
ўяўляюць збой.
Чаму мы вяртаемся INT_MAX замест адмоўнага 1 або 1?
Ёсць ідэі?
>> АЎДЫТОРЫЯ: [неразборліва] адмоўны 1 на адзін.
>> Анжэла Л.І.: Так, менавіта так.
Дык ты спосаб часцей проста хачу на ўваход 1 або адмоўнай 1 пры запыце
для п-га і ўсё, што п вычарпаны.
Гэта велізарная.
Вы, напэўна, не будзе яго выкарыстоўваць.
Так што гэта, як дызайнерскае рашэнне, каб пераканайцеся, што вы выпадкова не
вяртае памылку ці вы не вярнуць 1, які можа быць разабраны
як правільны адказ.
Так што, калі радок не існуе, мы вернемся INT-MAX.
У адваротным выпадку, мы выкарыстоўваем Sscanf, якая, як зсапЕ.
Але ён счытвае з радка.
>> І ў нас ёсць гэта адфарматаваць Радок, якая з'яўляецца% I% с.
І мы стараемся і спалучаць гэта з што карыстальнік даў нам.
Мы хочам, каб колькасць падабраных рэчаў за 1, што азначае, што мы толькі
сапраўды хочаце, каб адпавядаць цэлае у асяроддзі, можа быць, белы
прастору, можа і няма.
У гэтым выпадку, калі вы пакладзеце ў чымсьці як бар, бар не адпавядае наогул,
таму што павінна быць цэлае ў самым пачатку.
Так не sscan не ўключалі 0.
Так што вам не вярнуцца, што.
>> З іншага боку, калі вы пакладзеце ў чымсьці як 1, 2, 3, A, B, C, якое адпавядае
як цэлае, але і характар ​​пасля яго.
Так Sscanf вернецца 2, якія таксама не з'яўляецца ідэальным.
Вы ж не хочаце 1, 2, 3,, У, З, каб быць сапраўдным унутр.
Так што таксама не працуе.
Але сказаць, вы паклалі ў нешта накшталт 50.
, Які будзе адпавядаць% I, а гэта значыць, ён будзе атрымліваць чытаць у п.
А цяпер, п будзе ўтрымліваць лік 50.
І тады вы можаце вярнуць яго.
>> У адваротным выпадку, вы патрапілі Паўтарыць.
А потым ён проста не ідзе зноў, пакуль вы атрымліваеце правільнае ўвод ад карыстальніка.
Ёсць пытанні па гэтай нагоды?
>> АЎДЫТОРЫЯ: Так што калі вы былі раздрукаваць значэнне GetInt на [неразборліва]
было б проста цэлы лік, а макс?
>> Анжэла Л.І.: Так.
Так што калі вы выкарыстоўваеце GetInt, вы павінны ўзяць на сябе што вы не хочаце п-й максімум да
быць сапраўдным уваход, таму што вы збіраецеся выказаць здагадку, што гэта было дрэнна.
>> АЎДЫТОРЫЯ: Калі ў нас не было сімвал з і хтосьці паклаў у 1, 2, 3, Сэм, ці не праўда
па-ранейшаму працаваць на працягу 1, 2, 3?
>> Анжэла Л.І.: Я думаю, што гэта будзе працаваць.
Але вы не хочаце, каб 123Sam быць дапушчальным для ўводу карыстальнікам.
Гэта не зусім унутр.
Так што не здаецца справядлівым разабраць яго ў выглядзе цэлага ліку.
ОК.
У гэтым выпадку, давайце пяройдзем на да Інтэрнэту.
Так HTTP не з'яўляецца мовай.
HTTP гэта ўсяго толькі набор стандартаў для як вы адправіць рэчы ад кліентаў,
вось вы, да сервераў.
Гэта іншыя людзі ў Інтэрнэце.
>> Так HTTP выступае за гіпертэксту Пратакол перадачы.
Гэта сэрца і душа ўсёй сеткі.
Гіпертэкст частка проста ставіцца да HTML.
Перадача з'яўляецца кліенты, як вы будзеце адпраўляць запыты
серверы, якія даюць адказы.
І пратакол проста, як зрабіць вы чакаеце сервер паводзіць сябе?
І як вы мяркуеце паводзіць сябе такім чынам, што вы можаце упарадкаваць гэты
працэс камунікацыі?
>> Так HTTP запыты вельмі падобныя ў гэтым.
GET з'яўляецца тып запыту.
Вы, хлопцы, бачылі запыты GET і POST запыты.
Гэта другое, што там, / я, гэта толькі URI або URL, дзе вы
хачу пайсці ў гаспадара.
Так гэтая просьба просіць старонкі, як www.facebook.com / мяне.
І гэта запыт GET.
А потым гэты HTTP/1.1, вось толькі версія HTTP вы выкарыстоўваеце.
Гэта амаль заўсёды 1.1.
>> А тут яшчэ куча іншых рэчаў таксама.
Вы можаце ўбачыць іх, калі вы адкрыць кансоль, калі вы
прагляду вэб-старонак.
Адказы выглядаць больш як гэта.
У верхняй частцы, зноў жа, тып HTTP вы карыстаецеся
з наступным кодам стану.
Так 200 ОК з'яўляецца ўсё абышлося.
Вось ваш кантэнт.
Ваша ўтрыманне будзе прытрымлівацца.
А потым ён раскажа вам, якія зместу і іншыя рэчы таксама.
>> Коды стану, ёсць некалькі важныя тыя, якія вы павінны ведаць.
200 ОК, як залаты усё ў парадку.
Усё працуе.
403 Forbidden.
Гэта вы, напэўна, бачылі, калі вы забыліся ўсталяваць правы нешта няправільна.
Гэта азначае, што ў вас няма правоў на стварэнне
доступу, што на серверы.
Гэта як, не, вы не можаце бачыць гэта.
404 азначае, што рэч не існуе.
Не знойдзена.
Вы, напэўна, бачылі, што шмат.
>> 500 Унутраная памылка сервера, як правіла, як нешта пайшло не так на баку
сервера.
Такім чынам, калі вы былі рэалізацыі pset7, калі ў вас памылкі PHP, вы маглі б
фактычна перайсці на старонку і паглядзець цэлая куча PHP памылкі рэчы.
Але гэта звычайна не адбываецца, таму сайты сапраўды не хачу, каб
скажу вам, чаму іх сайт зламаны.
Яны, напэўна, проста вярнуцца 500 Унутраная памылка сервера.
>> А тут яшчэ 418 я чайнік.
Там цэлая гісторыя пра чаму гэта рэч.
Але вы можаце прачытаць пра тое, што у вольны час.
Там цэлая куча іншыя коды статусу таксама.
Але гэта тыя, вы павінны ведаць.
Такім чынам, давайце пагаворым аб HTML.
HTML, памятайце, не мова праграмавання.
Гэта мова разметкі.
Гэта азначае, што яна апісвае змест.
Гэта кажа вам, што HTML дакумент выглядае як ці ня, як ён выглядае
але, як гэта структураваны.
>> Так што вызначае структуру і Семантыка вэб-старонак.
Гэта як, гэта пункт.
Гэта спарадкаваны спіс.
Гэта як частцы маёй старонцы.
Вось назоў.
Ён робіць такія рэчы, як, што.
Гэта не стыль любы з што, паколькі гэта тое, што вы робіце ў CSS.
І гэта выглядае як серыя ўкладзеных тэгаў.
Такім чынам, каб выкарыстоўваць прыклад сапраўды асноўны HTML старонкі, у вас ёсць DOCTYPE
Дэкларацыя там.
>> Гэта DOCTYPE дэкларацыя кажучы, мы з дапамогай HTML5.
Тады ў вас ёсць вялікі HTML тэг.
Ён змяшчае галаву і цела.
Ўнутры галавы, у вас ёсць тытул.
Гэта тое, што ідзе ў назве радку вашага браўзэра.
У нас ёсць спасылка тэг, які звязвае у знешняй табліцы стыляў.
І тады ў нас ёсць сцэнар, які цягне ад знешняга JavaScript, а таксама.
>> А потым ўнутры нашага цела на самай справе тое, што можна на старонцы.
У нас ёсць пункт, а затым малюнак ўнутры гэтага пункта.
Гэта адна карціна кацянят.
Звярніце ўвагу, што малюнак тэг закрывае сябе.
Такім чынам, замест адкрыцця з выявай а затым робіць яшчэ адзін / малюнак, вы
проста гэтую маленькую рысу тут, які закрывае яго.
І тэг малюнка таксама мае гэты ключ значэнне атрыбуту называецца ALT.
Гэта альтэрнатыўны тэкст, што адбываецца пры навядзенні мышы на яго.
>> Большасць элементаў HTML ёсць значэнне ключа рэчы, якія вы можаце даць яго, розныя
налады.
Так.
>> АЎДЫТОРЫЯ: [неразборліва].
>> Анжэла Л.І.: Ну, так што гэта атрыбут тэга.
Так што калі вы выкарыстоўваеце JQuery, вы маглі б зрабіць абярыце image.getAttribute.
І тады вы можаце шукаць атрымаць атрыбут ALT.
І гэта дасць вам кацянят.
Калі вы памятаеце формы ў HTML, уваход элементы будуць мець атрыбуты імёнаў.
І вось што PHP выкарыстоўвае для адпраўкі запыты, калі формы.
>> АЎДЫТОРЫЯ: Вы ўжо нешта аб тым, як, калі вы выкарыстоўваеце kittens.jpg або
тое, што мае зніклых без вестак тэчкі або іншыя файлы файл?
>> Анжэла Л.І.: Так.
Так што гэта тое, што называецца адноснай Шлях, таму што я не даю
Вы поўны шлях.
Гэта як калі ў C, калі вы робіце Еореп некаторыя файл, калі вы Еореп hi.txt, што
hi.txt як чакаецца, будзе ў тое ж самае каталог, калі вы не даць яму больш
Комплекс шлях.
>> АЎДЫТОРЫЯ: Такім чынам, вы можаце паказаць у якой тэчцы [неразборліва]?
>> Анжэла Л.І.: Так.
І вы можаце паглядзець, як гэта зрабіць.
Але калі б я хацеў, каб kittens.jpg з бацькоўскага каталога, я хацеў бы зрабіць
.. / Kittens.jpg.
Так.
Выбачайце.
Так.
Аб чалавек, я забыўся пытанне.
Які быў пытанне?
О, пытанне было ёсць, kittens.jpg Чакаецца, што ў тым жа каталогу?
І ў гэтым выпадку, гэта так.
Але вы таксама можаце даць яму пэўны шлях так, што ён не павінен быць.
Добра?
>> CSS.
Так CSS, як HTML, якія не мова праграмавання.
CSS гэта проста серыя правілаў мадэлявання.
Яна выступае за каскадныя табліцы стыляў.
І вы выкарыстоўваць яго ў спалучэнні з HTML на старонках стылю.
Такім чынам, ёсць тры спосабу Вы можаце ўключыць яго.
Адзін са спосабаў вы можаце зрабіць гэта ў галаве частка вашага HTML, вы можаце проста
адкрыць тэг стылі, а затым прытрымлівацца некаторыя CSS правілы там.
Гэта даволі ў парадку.
Так.
>> АЎДЫТОРЫЯ: Ці не маглі б вы паставіць тых, Тэгі стылю паміж імі, давайце
скажам, цела і / цела.
І тады вы б стыль толькі ў целе.
>> Анжэла Л.І.: Вы маглі б.
Яна будзе працаваць.
Але вы не павінны, таму што кладка выгляд метададзеных, якія павінны ісці ў
кіраўнік дакумента.
Цела павінна сапраўды змяшчаюць толькі што на самой справе адбываецца, каб
адлюстроўвацца на вашай старонцы.
>> АЎДЫТОРЫЯ: Такім чынам, вы б паставіў стыль ў вашай галаве, каб стыль
Уся вэб-старонкі, ці не так?
>> Анжэла Л.І.: Так.
Так пакласці стыль тут, гэтыя правілы CSS будзе прымяняцца да ўсёй старонцы, заснаванай на
іх селектары.
Такім чынам, лепшы спосаб зрабіць гэта замест наяўнасці тэг стыль у вашай галаве,
ў вас ёсць гэтая спасылку на вонкавы стыль ліст, як я паказаў вам у
Папярэдні прыклад.
Гэта трэба, ён спрабуе і знаходзіць файл style.css, а затым цягне яго
і выкарыстоўвае ў тым, што ў якасці стылі для старонкі.
І ваш style.css б проста паглядзіце, як гэта.
Гэта будзе проста куча CSS.
>> І, нарэшце, ёсць яшчэ адзін спосаб, якім Вы можа ўключаць у сябе CSS, якія вы сапраўды
ніколі не павінны рабіць.
Гэта выклік убудаванага стылю.
І таму любы HTML элемент можа таксама ўзяць атрыбут стылю.
А потым у гэтым атрыбут стылю, вы можаце даць яму правілы CSS.
Такім чынам, у гэтым выпадку, што б ні спраў я вызначэнні прама тут, гэта будзе
ёсць чорны фон і колер белы тэкст.
Але вы не павінны гэтага рабіць, таму што гэта будзе ён ставіць свой стыль
ўнутры вашага HTML.
>> І я ведаю, што мы казалі пра HTML з'яўляецца структура і CSS з'яўляецца стыль.
Калі вы зробіце гэта, ён змешваецца іх разам.
І гэта не вельмі чыста.
Так што не рабіце гэтага.
На прыкладзе CSS, там, мы проста выберыце цела HTML
дакументальны фільм.
І мы, як, усё ў будзе Comic Sans.
Я таксама не рэкамендую.
Але вы маглі б зрабіць гэта.
>> Другое правіла прама тут, гэта будзе каб выбраць элемент на
старонка з ID магістралі.
Таму, што б HTML элемент, я сказаў ID = Асноўны, я збіраюся даць, што
Рэнтабельнасць 20 пікселяў і выраўнаваць усе, увесь тэкст, да цэнтра.
Апошняе, што выбірае па класе CSS.
Такім чынам, любы элемент на старонцы, што я даў клас раздзел, я збіраюся зрабіць гэта
Колер фону светла-блакітны.
Так.
Вось усё, што я атрымаў.
Пытанне?
>> АЎДЫТОРЫЯ: Што азначае хэштэгу перад асноўным рабіць?
>> Анжэла Л.І.: Пытанне ў тым, што робіць хэштэгу перад галоўнай спраў?
У гэтым выпадку, хэш ў CSS азначае абярыце па ID.
Так што, калі ў мяне былі некаторыя HTML элемент, як DIVID = асноўныя, гэта правілы CSS выбірае
рэч з ID магістралі.
І сапраўды гэтак жа, перыяд перад раздзел Выбар па класе CSS ці
абярыце па HTML класа.
>> АЎДЫТОРЫЯ: Чаму існуе мае перад 6 у колер фону?
>> Анжэла Л.І.: Так.
Такім чынам, пытанне, чаму існуе хэш да 6?
Гэта адрозніваецца ад таго хэш.
Гэта азначае, што вы даяце шаснаццатковае колер.
Так шасцігранныя колеру, гэта проста ўяўляе сабой колер.
І вы памятаеце RGB троек, калі Вы зрабілі PSET судова-медыцынскай экспертызы?
Гэта аналагічна.
Першыя дзве лічбы ўяўляюць колькі чырвоны ў колеры.
Другія два ўяўляюць колькі зялёны.
І трэці ўяўляе колькі сіні.
І хэш гэта будзе прадстаўляць колер.
>> Так што нічога ад 0, 0, 0, 0, 0, 0 да F, F, F, F, F, F дзейнічае.
Гэта нейкі сапраўдны колер, які можа адлюстроўвацца ў вашым браўзэры.
Пытанне?
>> АЎДЫТОРЫЯ: У чым розніца паміж карыстання ID і класа?
>> Анжэла Л.І.: Пытанне ў тым, што розніца паміж
карыстання ID і класа?
Вы можаце мець толькі адзін элемент у HTML дакумент, які мае дадзены ідэнтыфікатар.
Такім чынам, толькі адна рэч, на маёй старонцы дазваляецца мець ID магістраль.
Такім чынам, вы выкарыстоўваць яго для гэтага з'яўляецца загаловак.
Гэта навігацыі.
Гэта склеп.
Класы адрозніваюцца, таму што вы можаце ўжываць класы, як шмат элементаў HTML
як вы хочаце.
>> Так, напрыклад, я зрабіў раздзел класа, таму што, напэўна, больш, чым адзін
падзел на маёй старонцы.
Ты проста дазволена мець да элементы на старонцы з тым жа
клас, але толькі адзін з пэўным ID.
>> АЎДЫТОРЫЯ: Так кропка ўяўляе клас?
>> Анжэла Л.І.: Так.
Кропка ўяўляе клас.
Крута.
Вось і ўсё, у мяне, хлопцы.
Дзякуй.
>> [Апладысменты]
>> ZAMYLA Чан: Прывітанне, усім.
Я Zamyla.
Я збіраюся пакрываць PHP, MVC, і SQL сёння.
Шмат матэрыялу, што я буду пакрыццё будзе ў значнай ступені
прама з pset7.
Добра.
Так што ж такое PHP?
PHP расшыфроўваецца як PHP гіпертэксту Препроцессор.
Так што, само па сабе, з'яўляецца рэкурсіўным імя, якое даволі халаднавата.
PHP уяўляе сабой сервер мова сцэнарыяў, і гэта забяспечвае базавую праграму
і лагічныя падмацавання на нашым сайце.
>> Так Анжэла шмат казалі пра HTML і CSS, што зробіць структуру
сайта.
Але што, калі вы хочаце змяніць, што Змест дынамічна або калі ён змяняецца
на аснове карыстальніка або пэўныя ўмовы?
Вось дзе PHP прыходзіць цалі
Цяпер, як правіла,, PHP можа заняць некалькі менш лініі для ажыццяўлення тое ж самае
у С. Гэта таму, што PHP апрацоўвае памяць Кіраванне для праграміста,
у адрозненне ад нас таго, каб Таноса бясплатна, і таму падобнае.
>> Але так як PHP з'яўляецца інтэрпрэтатыўнае мова, як правіла, гэта можа выканаць
трохі павольней, чым C, якая з'яўляецца кампіляваная мову.
Таму што мы рухаемся праграмаванне мовы, давайце паглядзім на тое, як
Сінтаксіс будзе адрознівацца.
Давайце быць вельмі асцярожныя, каб не заблытацца з гэтым.
Так з сінтаксісам PHP, знаходзіцеся вы ўкладанне вашага PHP ўнутры ад HTML
файл або ў межах. файл PHP сябе, вы трэба заключаць код у адкрытым
PHP і закрытыя PHP тэгі, як наступным чынам, як і на экране.
>> Зменныя ў PHP.
Кожны пераменная пачнецца з знак $ ідуць па імя
пераменная.
Цяпер, зменныя ў PHP слаба набралі, Гэта азначае, што вам не трэба
, Каб паказаць, які тып дадзеных гэта калі вы абвясціўшы яе.
Аднак гэта не азначае, што яны не маюць ніякіх відаў на ўсё.
Так што калі я абвясціць зменную і проста ўсталяваць яго роўным 1, а затым я абвяшчаю
яшчэ адна пераменная, ўсталюйце яго роўным "1" а потым яшчэ адзін 1.0, ну,
У залежнасці ад тыпу роўнасці аператары я выкарыстоўваю, калі я хачу, каб параўнаць
ўсіх тыпаў, а затым яны будуць роўныя.
Але калі я хачу, каб пераканацца, што тыпы роўныя, PHP можа да гэтага часу
што, хоць мы і не паказваюць які тып гэта, калі мы
спачатку зрабіць файл.
>> Зараз, у PHP, хоць мы пераключэння з праграмаваннем
мовы з C, у нас яшчэ ёсць наш Надзейны, калі ўмова, гэтак жа, як гэта.
У нас яшчэ ёсць нашы рамкі, будучы, як раз як гэта, дзе вы паклалі ў вашым
стан, а затым Цела цыклу.
А потым у нас таксама ёсць цыкл, якія звычайна выглядае наступным чынам.
Так што, калі я хацеў перабрацца ўсе дзевяць psets і прадставіць і выклікаць
Функцыя submitPset, то я магу зрабіць гэта тут, што вы, хлопцы, усё
зроблена да гэтага моманту.
Віншуем, дарэчы.
>> Для камеры, людзі сказаў, дзякуй.
Цяпер, калі вы не хочаце, каб проста выкарыстоўваць гэта цыкл, то PHP на самай справе таксама
ёсць рэчы, называецца FOREACH завесы.
Так што, калі ў мяне быў масіў цэлых лікаў, 0 па 8, захоўваюцца ў psets масіва,
то я мог бы мець цыкл па кожнаму элементу, што перабірае кожны нумар у psets.
А потым я мог бы назваць тое ж самае функцыянаваць у восем разоў,
гэтак жа, як я рабіў раней.
Так што гэта для кожнага цыклу прыемна, таму што Вы не павінны, калі вы не ведаеце,
Дакладная даўжыня масіва, што вы ўжо, то з дапамогай гэтага цыкл па кожнаму элементу
будзе клапаціцца аб тым, што для вас.
>> Так што я зрабіў psets як масіў.
Давайце паглядзім на гэта.
Масівы ў PHP, як правіла, гэтак жа, як тыя, якія мы мелі ў З, дзе
Вы можаце абвясціць масіў.
І тут, я магу абвясціць пусты масіў а затым стварыць дынамічна з дапамогай
Індэксы ў выглядзе цэлых лікаў.
Так індэкс 0, я збіраюся захоўваць цэлае імя 1.
У індэксам 1 майго спісу, я збіраюся для захоўвання значэння 2.
І на трэцім індэксаваць дадзеныя, але Другое лік, я збіраюся
захаваць нумар 12.
>> Цяпер, гэта выдатна, што працуе ён добра працуе.
Але сказаць, што гэта мае значэнне для мяне што кожны індэкс трымае.
Для мяне, індэкс 0 азначае, як многія кошкі ў мяне ёсць.
А індэкс 1 азначае, як многія совы ў мяне ёсць.
А наступны азначае, як шмат сабак.
Ну, тады гэта паказаць, што, замест таго, каб таго, каб памятаць 0 ставіцца да
кошкі і ад 1 да сов, я магу выкарыстоўваць асацыятыўныя масівы, а гэта значыць, што
замест цэлых лікаў, як маіх паказчыкаў, Я магу на самой справе выкарыстаць радка.
>> Так што гэта вельмі карысна.
І вы ў асноўным проста замяніць цэлыя лікі са радкамі.
І там вы маеце асацыятыўны масіў.
Так.
>> АЎДЫТОРЫЯ: Ці ёсць прычына, чаму існуе падкрэслення для другога
частка, таму што мой спіс мае масіў.
>> ZAMYLA Чан: Пытанне было, ёсць Ёсць прычына, чаму ёсць
падкрэсліваюць паміж маім і спісу?
Няма.
Вось толькі, як я наймення мой зменнай.
>> АЎДЫТОРЫЯ: На першы лінія, гэта адно слова.
>> ZAMYLA Чан: Мае прабачэнні.
Я гэта выправім.
Так.
Яны павінны быць такімі ж імя зменнай.
Добры ўлоў.
ОК.
Так што давайце пяройдзем да радка аб'яднанне.
Калі б я хацеў узяць два радкі, то я магу аб'яднаць іх
з дапамогай аператара кропка.
Так што, калі ў мяне ёсць Міла як імя і Банан як прозвішчы, а затым
аб'яднання з аператарам кропка і затым пакласці прастору паміж
зробіць радок, якая змяшчае Milo Банан, які я магу затым рэха ці,
хутчэй, раздрукаваць.
>> Гаворачы аб рэха, давайце пагаворым аб некаторых карысна -
упс.
Мне вельмі шкада.
Некалькі карысных функцый PHP.
Таму ў нас ёсць -
тэхнічныя цяжкасці.
Адна секунда.
Я паслаў яго.
Праблемы PowerPoint.
І мы вярнуліся з PHP функцый.
>> Такім чынам, мы функцыю патрабуюць, дзе калі вы перадаеце ў файле, вось толькі
Прыклад файла, які Я мог бы прайсці цалі
Тады, што будзе ўключаць у сябе код PHP з гэтага файла, што я паказваць.
І ён будзе ацэньваць, што цалі
Тады ў нас таксама ёсць рэха, якое з'яўляецца паралельна Е.
Выхад паралельная зламаць, які выходзіць з блока
код, які вы цалі
А потым пустыя правярае, ці з'яўляецца дадзены зменная, як нуль або нуль ці
што прыраўноўваецца да паражняком.
Так.
>> АЎДЫТОРЫЯ: Для аб'яднання радкоў кропка аператар адзін, у PHP, з'яўляецца тое, што
ж, як у JavaScript, дзе ён з дапамогай кропка для аб'яднання азначае плюс?
Такім чынам, для поўнага імя, вы маглі б долар падпісаць першы +, а затым + у апошні раз?
>> ZAMYLA Чан: Так.
Такім чынам, пытанне, ці была ў PHP мы можна выкарыстоўваць той жа аб'яднанне радкоў
як у JavaScript з плюсаў.
Іосіф атрымаеце ў гэтым пазней.
Я думаю, што ў яго ёсць слайд на што.
На самай справе, усё па-іншаму.
Такім чынам, у JavaScript, вы павінны выкарыстоўваць плюс для аб'яднання радкоў.
А ў PHP, вы павінны выкарыстоўваць аператар кропка.
Так што яны розныя.
>> ОК.
Так што цяпер, калі мы разгледзелі ўсе гэта PHP, дзе робіць гэта
сапраўды спатрэбіцца?
Ну, гэта вельмі зручна, калі мы можа аб'яднаць яго з нашага HTML.
Такім чынам, наш PHP дасць нам сілу змяніць змест HTML-старонкі перад
яго загрузка.
Такім чынам, на аснове розных умоў, звычайна канкрэтны карыстальнік, гэта
ўвайшлі ў сістэму, мы можам паказаць розная інфармацыя.
Лінда, ты ёсць пытанні?
>> АЎДЫТОРЫЯ: Ці можаце вы аб'яднаць цэлае таксама?
>> ZAMYLA Чан: Так, можна.
Такім чынам, пытанне было, калі можна аб'ядноўваць цэлыя або іншыя
variable.s зараз, мы пяройдзем да MVC, якая гэта парадыгма, што мы выкарыстоўвалі ў
pset7 і шмат вэб-дызайнераў выкарыстоўваць для арганізацыі кода ў файлах
у іх вэб-сайце.
М пазначае мадэлі.
А ў прынцыпе, файлы мадэлі будзе займацца з ўзаемадзеяння з базай дадзеных.
Прагляд файлаў, яны ставяцца да эстэтыка сайце.
І ручкі кантролера запыты карыстальнікаў, аналізуе
Дадзеныя, робіць іншую логіку.
>> У pset7, мы аб'ядналі мадэль і кантролер.
І мы проста назваў іх кантралёры і змясціць іх у агульны каталог.
І праглядаць файлы, мы выкарыстоўваем іх у якасці шаблоны ў каталог шаблонаў.
Так што гэта схема тут таксама ўяўляе што ж гэта за падзел з
мадэль і кантролер у фіялетавы тут злева і
выгляд справа.
Так што гэта схематычны, што некаторыя з вас Магчыма, вы бачылі ў непрацоўны час або
дыяграмы, якія мы малявалі, як вы былі высветліць свой PSET.
>> Такім чынам, тут, у дадзеным кантролер, мадэль кантролер, у нас ёсць функцыі
, Якія адносяцца да запытваючы SQL У базе, выканання логікі PHP.
Можа быць, вы будзе шукаць акцыя ў Yahoo!
Фінансы.
Або можа быць, вы б проста праверыць, гл, ці былі прадстаўлены карыстальнік
сфармаваць ўжо да таго, зайшлі на вашу старонку.
І тады вы б аказаць ўтвараюць тут.
Пасля гэтага форма была прадстаўлена карыстальнікам, дзеянне, якое было
паказана ў формы HTML тэга паказвала б на стар што ён
вяртае гэтыя дадзеныя для.
>> Так усё, што інфармацыя будзе адпраўленыя назад да кантролер.
Тады вы, верагодна, зрабіць трохі больш Логіка на што і, магчыма, выканаць некалькі
больш запытаў у базе дадзеных SQL і вось, нарэшце, прыдумаць прыгожа
спакаваныя набор інфармацыі, якую вы б пройдзе ў ў нейкую іншую пра шаблон
што адлюстроўваецца гэтую інфармацыю.
Цяпер, як мы на самай справе пакет што інфармацыя да?
Ну, у нас ёсць функцыя пад назвай рэндэр што было ў файле functions.php ў
pset7, дзе вы праходзіце ў імя файл, імя шаблону.
>> І тады вы таксама праходзяць у асацыятыўны масіў.
І так, што асацыятыўны масіў ўяўляе розная інфармацыя
што вы хочаце перадаць цалі
Цяпер, тое, што збіраецца быць сталым у Гэтыя прыклады ў тым, што ключы, або,
хутчэй, ключы ад асацыятыўнай масівы, тыя, што будзе
Чакаецца, што канстанта шаблонам, таму што ведае, ён павінен
тое, што называецца паведамленне або называюць імя.
А потым рэчы аб праве, фактычныя значэння, так што ў дадзеным выпадку, хто
добры хлопчык і Міла, тыя збіраюцца быць значэнні, якія мяняюцца
што кантролер мяняецца кожны раз, або на аснове пэўнага стану і
пройдзе, што цалі
>> Дык вось у шаблонах, мы бачым, што мы карыстаецеся HTML спецыяльныя сімвалы,
якія проста ў асноўным азначае, што мы хочам каб атрымаць экспертную радок,
Карыстальнік уставіў
І мы хочам, каб замяніць паведамленне ёсць.
Такім чынам, калі мы на самай справе глядзець файл, удзельная
Інфармацыя перадаецца цалі
Звярніце ўвагу, што ключ, як аказаць работ з'яўляецца што ключы асацыятыўнай
масівы, тыя становяцца зменнай імёны тут.
І таму значэнні гэтага ключа ў асацыятыўны масіў становіцца
Значэнне зменнай.
>> Зараз давайце пяройдзем да SQL.
Яна выступае за Структураванае Query Language.
І так гэта проста праграмаванне мова, распрацаваны
для кіравання базамі дадзеных.
І гэта спатрэбілася для нас у наш фінансавы сайт pset7.
Па сутнасці, гэта проста лёгкі спосаб адсочваць і кіраваць аб'екты і табліцы
і злучыць іх адзін з адным.
Цяпер, думаю, вашай базы дадзеных SQL у асноўным у выглядзе файла Excel, мабыць,
з некалькімі ўкладкамі лістоў.
>> Такім чынам, можна мець некалькі табліц, магчыма, што звязаны адзін з адным.
І гэтак жа, як Excel, у нас ёсць шмат функцыянальныя магчымасці, якія мы хочам.
Напрыклад, мы можам выбраць пэўныя радка.
Мы можам ўставіць інфармацыю.
Мы можам абнаўляць радка.
І мы можам таксама выдаліць рэчы.
>> SQL абярыце работ выбраўшы радкоў або шэраг названых слупкоў з
база дадзеных, якая адпавядае вызначаная крытэрыі, якія вы паказваеце.
Так тут, калі я бачу SELECT * FROM чараўнікі, дзе дом = Равенкло, то
Я выбіраю *, які азначае, што я выбіраючы кожны адзін слупок у тым, што
радок з табліцы чараўнікоў, але толькі тады, калі слупок дом роўная Равенкло.
Цяпер, гэта ў чыстым выглядзе або SQL.
Так што, калі я ўвайшоў у PHPmyadmin, што канкрэтны спосаб, які мы выкарыстоўваем для кіравання
нашы базы дадзеных SQL, то я мог бы ўставіць што на вэб-сайце PHPMyAdmin.
І, што б выканаць.
>> Але мы на самай справе хочам зрабіць што на РНР баку.
Так як жа нам гэта зрабіць?
Ну, мы выкарыстоўваем функцыю запыту, які у асноўным выконвае, што SQL-запыт.
Выкарыстанне?
ў якасці запаўняльніка, мы можам перадаць у некаторых значэння ў нашай радкі, што мы
хочаце замяніць.
Так што, магчыма, я захоўваю розныя Значэння ў curr_house, якія
ўяўляе бягучы дом што я іду праз.
Так я магу перадаць, што ў якасці запаўняльніка з пытальным знакам.
І тады я буду ў асноўным выканаць ж самае, што я рабіў раней, за выключэннем таго,
зараз, я ў PHP.
>> І запыт верне асацыятыўны масіў.
І я збіраюся захоўваць яго ў шэрагі.
Цяпер, запыт заўсёды можа пацярпець няўдачу.
Магчыма, SQL запытаў не ўдалося выканаць таму што табліца не існуе.
Ці, магчыма, ў Стоўбцах не існуе.
Нешта пайшло не так.
Ну, у такім выпадку, вы хочаце, каб зрабіць Пераканайцеся, што вы правяраеце ці
запыт вярнуў хлусня.
І вось з дапамогай патройны роўная аперацыю там.
>> А потым я прашу прабачэння, што з'яўляецца яшчэ адным Функцыя CS50, праходзячы ў паведамленні.
І калі вы паглядзіце на прабачэнні, усё гэта сапраўды з'яўляецца аказанне apology.php.
Так.
>> АЎДЫТОРЫЯ: Ці не маглі б вы растлумачыць, што гэта зорка робіць паміж выберыце і ад?
>> ZAMYLA Чан: Так, абсалютна.
Так зорка паміж выберыце і ад азначае, што я хачу, каб выбраць ўвесь
увесь шэраг ад майго стала.
Я мог бы паказана абярыце Імя па бацьку, год, дом.
І я хацеў бы атрымаць толькі тыя тры слупкі ў маім стале.
Але калі я кажу SELECT *, то я буду атрымаць усё ў гэтым слупку.
Тады я пайду вам ў спіну ў першую чаргу.
>> АЎДЫТОРЫЯ: Так што гэта яшчэ ў SQL, ці не так?
Ці з'яўляецца гэта запыт ці гэта PHP?
>> ZAMYLA Чан: Мы ў запыце.
Так што гэта ў PHP.
Такім чынам, выкарыстоўваючы функцыю PHP запыт, мы выканання SQL запыту.
>> АЎДЫТОРЫЯ: Нешта ў SQL з улікам рэгістра, як выбраць
ці майстры або дом?
>> ZAMYLA Чан: што-небудзь ў SQL з улікам рэгістра?
Я веру ў гэта, так.
Я лічу, што Выберыце і адну з і дзе ўводзяцца з улікам рэгістра.
Няма?
>> ROB BOWDEN: Так, усё наадварот.
Імёны слупкоў і сродкі стол, ўсіх тых, з улікам рэгістра.
Але любы з ключавых слоў MySQL, як ВЫБАР, і куды, тым не
з улікам рэгістра.
ОК.
Такім чынам, супрацьлеглае таму, што я сказаў.
Так усе ключавыя словы, MySQL -
выбраць, ад, дзе - тыя, не адчувальныя да рэгістра.
Але ўсё астатняе.
ОК.
Вы ў пярэдняй часткі.
>> АЎДЫТОРЫЯ: Калі я $ радкоў ў тэрмінах больш аднаго радка, ці значыць гэта з'яўляецца
проста становіцца асацыятыўны масіў?
>> ZAMYLA Чан: Такім чынам, пытанне было калі радкі мае больш чым адзін радок у ім, робіць
яна стала асацыятыўным масівам?
Так што гэта масіў асацыятыўных масівы ўжо.
Такім чынам, нават калі ёсць толькі адзін радок вярнуўся, то вы павінны былі б пайсці на
індэкс 0 з гэтага выніку.
І тады вам давядзецца, што першы шэраг.
Так, Белинда?
>> АЎДЫТОРЫЯ: Пры выкарыстанні ===, гэта адзіны выпадак?
Ці ёсць іншыя?
>> ZAMYLA Чан: Так што ў гэтым выпадку, === параўнанне розных тыпаў.
Выбачайце. === Параўнанне , Які параўноўвае тыпы.
А потым == параўноўвае ўсіх тыпаў.
>> АЎДЫТОРЫЯ: Ці можаце вы растлумачыць, што радкоў у гэтай сітуацыі?
Хіба радок дадзеных?
>> ZAMYLA Чан: У наступным слайдзе, я збіраюся растлумачыць, што радкі з'яўляецца.
Так што, калі вы не пярэчыце правядзення прэч на што.
І тады вы ў спіну?
>> АЎДЫТОРЫЯ: Для функцый, такіх як запыт, аказаць і папрасіць прабачэння [неразборліва]?
>> ZAMYLA Чан: Пытанне, ці быў гэтыя функцыі - запытаў, папрасіць прабачэння,
і зрабіць -
з'яўляюцца агульнымі для PHP.
Гэта тыя, якія CS50 напісаў для pset7.
І Джэй?
>> АЎДЫТОРЫЯ: Калі вам трэба сказаць $ _SESSION, З'яўляецца тое, што толькі для ідэнтыфікатараў?
Ці, можа, вы сказалі, што тут?
>> ZAMYLA Чан: Такім чынам, пытанне было, калі мы выкарыстоўваем $ _SESSION, што быў канкрэтны
глабальная пераменная, што мы выкарыстоўваем.
Вось гэтая пераменная будзе быць лакальным для нашай функцыі.
Так што мы проста абвясціўшы новая пераменная.
>> АЎДЫТОРЫЯ: Як папрасіць прабачэння рэалізаваны?
>> ZAMYLA Чан: Пытанне было, якім чынам папрасіць прабачэння рэалізаваны?
І я думаю, што гэта на самай справе даволі добрая практыка для вас, хлопцы, каб увайсці ў
секцыя functions.php і паглядзець на Прыносім свае прабачэнні і паглядзець, як вы маглі б
зроблена гэта самастойна.
Так што я, магчыма, пакіну гэта для вас, але проста кажуць, што калі вы паглядзіце на свае прабачэнні,
Затым ён прымае паведамленне, якое вы прадстаўлены папрасіць прабачэння, а потым
аказвае гэтае паведамленне.
Ёсць яшчэ пытанні?
Я люблю пытанні.
Так што трымаеце іх чакаць.
>> АЎДЫТОРЫЯ: [неразборліва]
рэха ці раздрукаваць там?
>> ZAMYLA Чан: Пытанне было, мы маглі б не толькі паставілі
рэха ці раздрукаваць там.
Так што зрабіў бы нешта трохі адрозніваецца.
Гэта было б надрукавана запыт не ўдалося ў тым, што -
добра, прама цяпер, мы на самай справе у нашым кантролеры.
Такім чынам, мы на самай справе не маюць HTML наладзіць тут.
Apologize шляхам аказання apologize.php на самай справе перанакіроўвае вас на apology.php.
ОК.
>> Так што цяпер, давайце пяройдзем да вырашэння Пытанне ад раней пра тое, што
сапраўды радкоў.
Ну, запыт верне масіў радкоў.
І кожны радок прадстаўлена на асацыятыўны масіў.
Так што, калі я выканаў некалькі SQL запытаў і Я захоўвацца вынік у радках, то
выкарыстоўваючы цыкл па кожнаму элементу, то масіў Назва з'яўляецца першым там - радка.
І тады я буду называць кожны радок у там $ запар.
>> Так ітэрацыі, што, я магу доступ слупок імя публічна на гэтым шэрагу, у
год калонка, і дом калонка.
Звярніце ўвагу, што я не быў бы ў стане зрабіць гэта з радамі, таму што радкоў індэкса
імя не існуе.
Радкі толькі масіў асацыятыўныя масівы.
Так у вас ёсць два ўзроўні там.
Калі ў вас ёсць масіў радкоў, вы павінны атрымаць на гэта.
І тады вы можаце атрымаць доступ слупкі.
Хіба што даць зразумець?
Так, перад?
>> АЎДЫТОРЫЯ: [неразборліва] адкрыць кранштэйны для [неразборліва]?
>> ZAMYLA Чан: Прабачце мяне?
>> АЎДЫТОРЫЯ: Адкрытыя дужкі.
>> ZAMYLA Чан: Яны тут?
Вось што дазволіла мне ўключыць гэтая пераменная.
Так.
>> АЎДЫТОРЫЯ: Пры друку, вы друк на HTML кода?
>> ZAMYLA Чан: Так.
Калі я друкаваць, гэта вось ўнутры мой шаблон зараз, так
мой выгляд метаду MVC.
Так што я друку ў HTML.
>> АЎДЫТОРЫЯ: Дык што, калі мы ўвайшлі ў распрацоўніка інструменты пасля запуску гэтага, мы маглі б
што на самой справе ў кодзе?
>> ZAMYLA Чан: Гэта вялікі пытанне, так.
Так што калі вы ўвайшлі ў прылады распрацоўніка у Firefox з дапамогай Firebug або
Хром, то так, вы маглі б ўбачыць канкрэтныя HTML.
Так што не будзе паказваць $ радок ["Імя"].
Было б паказаць залежнасці ад таго, клічуць у гэтым радку.
>> АЎДЫТОРЫЯ: Проста агульная праблема, якія ПДР і тд вызначаецца як?
Навошта нам [неразборліва]?
>> ZAMYLA Чан: Радок табліцы тр, Табліца затым г.д слупок.
ОК.
>> АЎДЫТОРЫЯ: Так, гэта таблічныя дадзеныя.
>> ZAMYLA Чан: дадзеныя ў табліцы.
Так.
>> АЎДЫТОРЫЯ: Гэта радок, у якой радок трактуецца як калона?
>> ZAMYLA Чан: Выбачайце.
Ці можаце вы паўтарыць?
>> АЎДЫТОРЫЯ: Як бы вы візуалізаваць радкоў?
>> ZAMYLA Чан: Як бы вы сабе радкі ў які спосаб?
Вы кажаце пра іх радкоў тут або ТР радкоў?
>> АЎДЫТОРЫЯ: Радкі.
>> ZAMYLA Чан: Гэтыя радкі тут?
Я бы сабе гэта як Я выканаю мой запыт.
І гэта кажа, добра, у мяне ёсць альбо 0 да п колькасць радкоў, якія адпавядаюць крытэрам
што вы паставіў пад сумнеў.
Таму ў мяне ёсць некаторая колькасць радкоў.
Так радкоў, то $ шэрагі, крамы кожны адзін з тых радкоў у масіве.
Такім чынам, нават калі гэта ўсяго толькі адзін з іх, гэта яшчэ масіў радкоў, якія адпавядаюць яго.
>> Такім чынам, тое, напрыклад, гэта падобна на калі вы за вушы
кэш ад карыстальнікаў.
І крытэрыі было дзе ID складае ідэнтыфікатар сеанса.
Там сапраўды толькі адзін радок , Якія маглі б адпавядаць.
Але ўсё ж радкоў толькі што вярнуўся адзін шэраг.
Такім чынам, вы павінны былі б пайсці на радкі, індэкс 0, індэкс кэша
на самай справе атрымаць у кэш.
>> АЎДЫТОРЫЯ: Ці з'яўляецца функцыя друку ў рэха тое ж самае?
>> ZAMYLA Чан: Так.
Так.
Надрукаваць рэха тое ж самае.
>> АЎДЫТОРЫЯ: Ці з'яўляецца цыкл па кожнаму элементу Адзіны спосаб індэкса ў шэрагі?
>> ZAMYLA Чан: Ці з'яўляецца цыкл па кожнаму элементу адзіны спосаб, якім вы можаце
перабору радкоў?
Няма.
Вы таксама можаце выкарыстоўваць для цыклу, пры ўмове, што вы ведаеце даўжыню
з масіва ў радкі.
>> АЎДЫТОРЫЯ: Ці не маглі б вы да яго доступ выкарыстоўваючы радок як [неразборліва]?
>> ZAMYLA Чан: Такім чынам, вы не можаце атрымаць да яго доступ толькі з дапамогай радкі, калі ў вас няма
цыкл па кожнаму элементу пры ўмове, што Вы не заявілі шэраг.
Так.
Так, у белым.
>> АЎДЫТОРЫЯ: Дык што ж тр і тд рабіць?
>> ZAMYLA Чан: Так тр і TD з'яўляюцца HTML-тэгі.
тр паказвае на пачатак з радка табліцы.
І кожны тд паказвае новы слупок дадзеных табліцы.
>> АЎДЫТОРЫЯ: Для візуальнага што шэраг ўсё роўна, што, уявіце сабе SQL, як
яны маюць шэраг.
[Неразборліва].
>> ZAMYLA Чан: Так.
Гэта выдатная кропка.
Вы можаце візуалізаваць радкоў, проста як у табліцы Excel, проста
Спіс радкоў.
ОК.
Добра.
Так што цяпер мы перайшлі выберыце, калі няма ніякіх больш пытанняў, мы будзем
перайсці на ўстаўкі.
Так што, калі я хацеў ўставіць у некаторыя стол і ўставіць пэўны слупок
значэнні, я мог ўставіць сабе у Рейвенкло у год 7.
Але часам там можа быць дублікатам значэнні, як мы бачылі ў pset7 калі мы
абнаўляюць наш партфель.
>> Такім чынам, у гэтым выпадку, мы хочам выкарыстаць ПА Дублікат ключа UPDATE, так што мы не
захоўваць некалькі радкоў з тым жа цэнім, а абнавіць яго.
Тады ў нас сапраўды ёсць абнаўленне, які ня ўстаўкі.
Гэта проста абнаўленне, дзе вы абнавіць ў пэўным табліцы з зададзеным
крытэры і вось, нарэшце, выдаліць, які робіць вельмі падобныя рэчы.
>> АЎДЫТОРЫЯ: Ці не маглі б вы каротка перайсці дубліката ключа?
>> ZAMYLA Чан: Так.
Па сутнасці тут, у мяне ёсць INSERT INTO Грынгатс, з'яўляецца, галеоны, гэтыя значэння.
Але ID, па-відаць, з'яўляецца унікальным ключом значэнне, усталяванае ў табліцы MySQL.
Так што, калі я ўжо, што ID наладзіць, то я не магу ўставіць новую радок.
Так што, калі ён не існуе ўжо, то ў мяне ёсць, каб абнавіць яго.
У сярэдзіне ў белым.
>> АЎДЫТОРЫЯ: Так ўстаўкі, абнаўлення, выдалення, і абярыце, тыя ўсе наяўныя
лакальна [неразборліва]?
>> ZAMYLA Чан: Так ўставіць, абнаўленне, выдаленне, і
выбраць усе запыты SQL.
Таму, калі вы карыстаецеся SQL, вы будзеце мець тыя, якія даступныя.
>> АЎДЫТОРЫЯ: Назад у мінулае віктарыны -
паўстала пытанне, што меў справу з калі вы былі стол і хацеў
ўставіць вынікі тэстаў у адным і ўстаўцы ваша імя, так што не дазволіць вам
[Неразборліва] адзнака тэсту вашага сябра.
Як бы вы гэта зрабілі з укладышам?
>> ZAMYLA Чан: Такім чынам, пытанне было аб папярэдняя сярэднетэрміновай пытанне.
Я не ў курсе з якіх адзін гэта прама цяпер.
Таму, магчыма, пасля гэтага, калі вы хочаце прыдумаць і паказаць мне, то я магу
безумоўна, дасць вам парады.
Але, кажучы аб унясенні рэчаў, як прымаючы чыю-то кошт, калі вы
не павінна, давайце пагаворым аб Нападаў з укараненнем SQL.
Так атака ін'екцыі SQL, па сутнасці, дзе хто-то бярэ
Перавага нізкай бяспекі спосаб, што вы прымаеце ў дадзеных.
>> Так тут, як і ў CS50 фінансаў, калі мы ўвайшлі ў сістэму, мы можам увайсці ў
імя карыстальніка ў форме ўваходу, першае тэкставае поле, і
затым увядзіце у паролі.
Магчыма, наш PHP код можа выглядаць нешта накшталт гэтага, дзе $ імя карыстальніка
з'яўляецца імя карыстальніка і пароль пасля дадзеных паролем пост-дадзеных.
А потым мы проста выканаць наш запыт, скажам, Добра, добра, наш запыт будзе
выбраць з нашых карыстальнікаў, дзе імя карыстальніка з'яўляецца
той, які яны прадставілі.
І пароль гэта пароль, Гэта азначае, што паролі супадаюць.
>> Цяпер, што калі замест фактычна падачы фактычны пароль, як
12345 і гадаць на зубец, што кажа пароль і спрабуе зламаць іх
рахунак, што, калі замест таго, каб яны прадставілі гэта.
Яны маглі б увесці ў магчыма здагадка паролем.
А потым яны б скончыць цытата затым увядзіце або 1 = 1.
Гэта было б хадзіць непасрэдна ў SQL запытваць глядзець нешта накшталт гэтага.
Абярыце з карыстальнікаў, дзе імя карыстальніка = Зубцы і пароль
роўная лілеі або 1 = 1.
>> Так што альбо пароль мае каб быць правільным ці 1 = 1,
які заўсёды дакладна.
Такім чынам, у гэтым выпадку, у асноўным, карыстальнік можа скарыстацца гэтым і проста ўвайсці
самі ў і хак чыйсьці кошт.
Дык вось чаму мы хочам пазбегнуць хтосьці неабходнасці рабіць гэта.
Але, на шчасце, функцыя запыту на пераходзячы ў запаўняльнікаў адбудзецца
догляд за гэта для вас.
Акрамя таго, вы не будзеце звычайна не хачу на самай справе прадставіць паролі
самі.
Вось чаму мы хэшируется або зашыфраваныя іх у CS50 фінансаў.
>> АЎДЫТОРЫЯ: Мінулае віктарыны казалі пра ўцёкі радка MySQL.
Ці ёсць у нас турбавацца пра гэта?
>> ZAMYLA Чан: Гэта добры пытанне.
Кіраўнікі радка MySQL, безумоўна, функцыя, якая выкарыстоўвалася ў нашым запыце.
Але вызначана глядзець на гэта.
Я б сказаў, што гэта сумленная гульня, каб ведаць што вам трэба патэлефанаваць, што
функцыянаваць на радок.
Так, Белинда?
>> АЎДЫТОРЫЯ: Як вы ведаеце, калі гэта адзінарныя двукоссі або двайныя двукоссі?
А таксама, я адчуваю, што ў лекцыі вы іншым сказаў нешта пра якія не маюць
[Неразборліва] або што-небудзь ці Другі сінгл цытатай у канцы.
Я думаю, што ён паказаў у лекцыі, што вы павінны мець апостраф 1
а потым не мець апострафы ці нешта.
>> АЎДЫТОРЫЯ: [неразборліва].
>> АЎДЫТОРЫЯ: Справа ў тым, апошні сінгл цытата там у гэтым другім акне
там быць не павінна.
[Неразборліва]
Таму што, калі вы бераце, што апошні сінгл цытую, і яны супадаюць на ўтрыманне
дзе пароль, калі ў вас ёсць, што запыт, ёсць адзінарныя двукоссі ў
канец ужо.
Вы жадаеце выкарыстоўваць гэты адзінарныя двукоссі як той, які звернуты да аднаго
[Неразборліва].
Так што на самай справе ў гэтым тэксце скрынка не павінна мець, што.
>> ZAMYLA Чан: Я буду змяніць гэтую сітуацыю.
ОК.
Калі няма ніякіх пытанняў, то я буду перадаць яго на Язэпу казаць
аб JavaScript, і гэтак далей.
>> [Апладысменты]
>> Іосіф Онг: Так мы бяжым трохі ззаду.
Так што калі ў вас ёсць, каб сысці, гэта нармальна.
Але мы просім, каб вы захоўваеце вашыя галовы ўніз калі вы знаходзіцеся ў сярэдзіне, так што вы
не блакуюць камеру і выкарыстанні таму выхад, калі вам прыйдзецца.
Я Іосіф дарэчы.
Прывітанне.
Тэст, тэст.
Дэн, гэта добра?
Крута.
>> Такім чынам, відэа таксама будуць размешчаны онлайн для тых, хто
павінны сысці зараз.
Нязграбны.
ОК.
Так віктарыны водгук.
Гэта кошка.
Цяпер, JavaScript, які, можа быць, ня як AWW для некаторых з вас, хлопцы.
ОК.
Дык вось спачатку, памятаеце з Zamyla.
Памятаеце, што PHP з'яўляецца выконваюцца на серверы.
І шмат разоў, вы, хлопцы, пісаў завесы у PHP раздрукаваць HTML, праўда?
Таму, як толькі што код выконваецца, што HTML выхад Вам раздрукаваць
адпраўляецца карыстальніку.
І як толькі гэта адбудзецца, не больш за PHP можа быць запушчаны, калі вы не перазагрузіце старонку, з
Курс, які паўторна выконвае на PHP.
Але як толькі вы раздрукаваць гэтай HTML, вы не можаце пайсці куды заўгодна.
>> Так што HTML пасылаецца да карыстача, што браўзэр тут, дзе
Міла выкарыстоўвае кампутар.
І так добра, ёсць некалькі рэчаў, як толькі мы пасылаем HTML для карыстальніка.
Часам мы хочам зрабіць нешта накшталт пры націску на нешта, мы хочам
абвесткі скрынкі ўсплываў, тыя віды ўзаемадзеяння, як пры націску
клавіша пры націску нешта на старонкі, я хачу каб нешта адбылося.
Ну, вы не можаце паўторна выканаць PHP Код раз, што HTML усталяваны.
Такім чынам, як вы гэта робіце?
>> Ўвядзем новы мову пад назвай JavaScript, які працуе ў браўзэры
што дазваляе рабіць рэчы у HTML пасля атрымання
іх з сервера.
І менавіта таму мы называем гэта на баку кліента мова праграмавання.
Ён працуе на вашым кампутары -
кліент.
Любыя пытанні аб тым, што да гэтага часу?
Гэтая парадыгма мае сэнс для людзей?
ОК.
Добра.
Такім чынам, першае, што трэба адзначыць, з'яўляецца JavaScript ня PHP.
>> У іх ёсць трохі іншы сінтаксіс, якія мы пойдзем у.
І ў іх ёсць вельмі розныя прымянення.
JavaScript, зноў жа, для вашага браўзэр, для кліента.
Сервер працуе дзесьці на чужой кампутар, які пасылае інфармацыю
Вам, правільна?
Так што, калі мы просім вас напісаць PHP код на пытанне экзамен, не пішыце
JavaScript, і наадварот.
Вы проста страціце акуляры, і гэта не будзе правільна.
>> Такім чынам, давайце ў некаторыя сінтаксічныя адрозненні -
JavaScript злева і PHP справа.
Першае, што вы заўважыце, з JavaScript, мы аб'яўляем зменныя з
вар ключавое слова -
У-А-Р. PHP выкарыстоўваецца знак даляра, як Zamyla абмяркоўвалася раней.
Калі вы хочаце аб'явіць асацыятыўную Масіў, мы бачым знаёмую сінтаксісам
правая бок з PHP.
На левай баку, а не Вы выкарыстоўваць фігурныя дужкі.
І тады вашыя ключы злева.
Тады ў вас ёсць двукроп'е.
І тады ў вас ёсць значэнні што вы хочаце.
>> Так што гэта, як вы маглі б зрабіць гэта ў PHP на правай баку з гэтай другой
радок, якая пачынаецца на майл.
І гэта, як вы маглі б зрабіць гэта на Левы бок у JavaScript, калі вы хочаце
што мы называем аб'ект.
І аб'екты ў JavaScript з'яўляюцца за ўсё асацыятыўныя масівы.
Так што калі вы хочаце атрымаць доступ да палёў, у PHP вы выкарыстоўваеце гэты сінтаксіс кранштэйн.
І такім чынам, вы можаце перапрызначыць гэты ўладальнік поле з Ларэн.
>> Ну, у JavaScript, калі хочаце доступ да поля і змяніць яго, вы можаце
выкарыстоўваць сінтаксіс з кропкай.
Вы таксама можаце выкарыстоўваць сінтаксіс кранштэйн.
Але вы не можаце выкарыстоўваць Сінтаксіс кропка ў PHP.
Гэта не будзе працаваць.
Яна працуе толькі ў PHP.
І, нарэшце, раздрукаваць рэчы Кансоль, вы выкарыстоўваеце console.log, які
вы, хлопцы выкарыстоўваюць шмат у pset8.
Вы можаце console.log што.
>> Калі вы хочаце надрукаваць масіў у PHP, вы павінны выкарыстоўваць друк р.
І на правай баку, вы бачыце, я хэш аб'яднанне радкоў там.
Нехта спытаў раней.
Я выкарыстоўваю плюс у JavaScript.
Калі я хачу аб'яднаць нешта у PHP, я выкарыстоўваю кропку.
Яны адрозніваюцца.
Калі вы пішаце PHP код, не выкарыстоўвайце ў плюс.
Калі вы пішаце наяўнасць Код, не пішыце кропку.
Гэта будзе няправільна.
І вы будзеце сумаваць.
>> Так сінтаксічныя адрозненні.
Ведай свайго сінтаксісу, таму што, калі ў вас ёсць, каб напісаць пытанне, і вы выкарыстоўваць сінтаксіс
ад незразумелай мове, ён не будзе працаваць.
І гэта будзе не так.
Такім чынам, давайце пагаворым аб некаторых кантролю цячы адрозненні, як вы карыстаецеся
завес ў кожным з іх.
Zamyla падышоў з правага боку.
Матэрыял на правай баку павінны быць знаёмыя.
Давайце паглядзім на на левай баку.
>> Пры выкарыстанні для п завесы ў JavaScript, ваша пераменная цыклу, пераменная я там,
цыкл па ключоў масіва.
Такім чынам, вы бачыце імя, дом, і ролю.
Калі я console.log I, я атрымліваю імя, дом, і ролю.
Тыя, ключы.
У JavaScript, цыкл па кожнаму элементу ідзе па значэннях гэтага масіва.
Такім чынам, вы заўважыце, што яны абодва я.
Але тут на PHP баку, ён друкуе з Міла, CS50, і Талісман.
Такія значэння ў PHP.
>> Так што гэта, як гэтыя два адрозніваюцца на розных мовах.
Так што калі вы выкарыстоўваеце Еогеасп цыкл, не думайце, што гэта
дае вам ключы.
І, калі вы карыстаецеся для н завесы, ня Выкажам здагадку, што гэта дае вам значэння.
Ці мае гэта сэнс да гэтага часу?
На наступным слайдзе збіраецца паказаць вам, як вы можаце атрымаць доступ супрацьлеглае ў
кожнага з іх.
>> Ну, калі ў вас ёсць ключ у JavaScript і вы хочаце, каб значэнне па-за,
вы проста індэкс ў Масіў з гэтым.
Так Міла я атрымаю вам, што Вы хочаце - значэння.
Там гэтая іншы сінтаксіс ў PHP.
Калі вы сапраўды хочаце ведаць, я не думаю, што мы паказалі яго вам яшчэ.
Але калі вам цікава, вы можаце выкарыстоўваць гэты дадатковы сінтаксіс справа
бок, якая на самой справе дазваляюць атрымаць Ключы ў PHP, калі вы карыстаецеся
цыкл па кожнаму элементу.
Так што проста трохі дробязі калі вы зацікаўленыя.
>> Так вось проста, каб прадэманстраваць Адрозненні паміж гэтымі двума завесамі.
Не змешвайце іх, калі вы праграмаванне пытанне.
Любыя пытанні аб тым, што.
Крута.
Добра.
JavaScript аб'екты.
Я казаў пра іх.
Яны як асацыятыўныя масівы.
Адзінае, што я хацеў бы звярнуць Вашу ўвагу у тым, што значэнне ў асацыятыўнай
Масіў можа быць што заўгодна ў JavaScript.
>> Ён нават можа быць функцыяй, як там.
У мяне ёсць функцыя, што гэта значэнне ключа.
І калі я хачу назваць гэтую функцыю, Я проста доступ кару.
А потым я паклаў дужкі пасля гэтага.
І гэта працуе.
Таму любыя пытанні?
Няма?
ОК.
Добра.
JavaScript, як PHP, свабодна набралі.
Што гэта значыць?
>> У яго ёсць віды.
Але калі вы аб'яўляеце наяўнасць зменная, вы кажаце вар я.
Вы не кажаце гэта.
Гэта не рэч.
Вы проста сказаць, што гэта зменная.
А потым JavaScript будзе апрацоўваць тыпы пад капотам для вас.
Мы можам свабодна канвертаваць паміж тыпы з-за гэтага.
Так што я пачынаецца як колькасці ў гэтым выпадку.
А потым мяне ёсць радок.
І я дадаць я яму.
І я перапрызначыць яго назад у I.
>> Так што на гэтай першай лініі, я гэты лік.
На другім радку, я зараз становіцца радок пасля я раблю перапрызначэння.
І вось, я проста аб'яднання што колькасць на радку.
Такім чынам, вы бачыце, што нават пры тым, што я быў цэлы лік у першай частцы, гэта свайго роду
накшталт былі ператвораныя ў радок, а затым дадаюцца
на што Прывітанне радка.
І вось што я маю на ўвазе па друзлай друкаваць.
Вось, што вы канвертаваць паміж тыпы вельмі лёгка.
І гэта не кідае папярэджання на вас, як Сі робіць.
>> Так што я цяпер ўтрымлівае прывітанне 123 да радка.
Наступная.
Мы таксама можам свабодна параўнаць паміж тыпамі.
Так што калі вы проста карыстаецеся ==, вельмі як у PHP, JavaScript
робіць падобную рэч.
Радок 123 такое ж, як колькасць 123 пры выкарыстанні падвойных роўных.
Пры выкарыстанні патройныя роўных, ён таксама хоча, каб пераканацца, што
Тып такі ж.
Так таму, што гэта радок, і гэта шэраг, хоць яны абодва
123, пры выкарыстанні патройны роўна, вы атрымліваеце ілжывае.
У двайны роўная выпадак, вы атрымаеце сапраўднае, таму падвойныя роўна не
клапоцяцца аб тыпу.
Трехмясцовый роўна робіць хвалюе тыпу.
Пытанні?
ОК.
>> І яшчэ аб JavaScript з'яўляецца Сфера збольшага глабальная, калі вы не
у функцыі.
І гэта працуе так жа, спосаб у PHP на самай справе.
Так давайце пройдзем гэтым прыкладзе.
Я сэце я да 999.
А потым я іду ў гэты цыкл.
Так што, калі я друкую я ў гэта для цыкл, я чакаю, 0, 1, 2, 3, 4.
Я атрымліваю г = 4.
Гэта павялічвае я цяпер да 5 у канец для завесы.
А потым ён ламае з пятлі, таму што гэта не адпавядае
стан больш.
>> Што вы думаеце, што ў наступным console.log друкуе?
Дык вось што ён будзе рабіць на C. У C, таму што, калі ў вас ёсць, як вар я па-за
і ў вас ёсць уаг I ўнутры цыклу, як цыкл, то гэта робіць яго такім чынам, што
гэта вобласць бачнасці, што два я 'розныя.
У JavaScript, ён проста будзе разглядаць яго як адно я.
Я атрымліваю 5, таму што гэта было значэнне калі яна выходзіла з пятлі.
Так тыя, якія я з'яўляюцца аднолькавымі я.
Ці мае гэта сэнс?
>> Ну, гэта мае сэнс з кропка гледжання JavaScript.
Але тое ж самае парадыгма ня пераносяцца на C. Яны маюць
розныя правілы вобласці.
Так.
>> АЎДЫТОРЫЯ: [неразборліва]
па-за функцыі [неразборліва]?
>> Іосіф Онг: Так, за межамі якой функцыя?
Так што я дабяруся да гэтага ўсяго за секунду.
Так мы называем Foo (я).
Гэта праходзіць, я ў Фу, прырашчэння гэта, а затым рэгіструе яго.
Так было 5.
Так ён становіцца 6.
Але тое, што я кажу пра тое, што я ў гэтай функцыі.
Таму што гэта параметр, гэта абмяжоўваецца толькі гэтым функцыі.
Таму, як толькі я на самой справе выйсці з гэтага Функцыя, то зараз будзе ісці
вярнуцца да старога I.
Гэта я толькі ў галіне бачнасці, таму што гэта знаходзіцца ў функцыі.
І ў нас ёсць аб'ём і функцыі.
Але мы не маем сферу за межамі функцый у JavaScript.
Ці мае гэта сэнс?
Так.
Пытанне.
>> АЎДЫТОРЫЯ: Тое ж [неразборліва]?
>> Іосіф Онг: Так што так.
У PHP, гэта той жа самы тып рэчы.
Там у невялікі тонкасць фактычна.
Але вы можаце спытаць мяне аб што пасля агляду.
Вы сапраўды не трэба ведаць што тонкасць для віктарыны.
Для ўсіх намераў і мэтаў, як зменныя, глабальныя і PHP, калі
яны знаходзяцца ў залежнасці, такі ж рэч у JavaScript.
Так.
>> АЎДЫТОРЫЯ: Чаму гэта дало магчымасць у JavaScript і не дзе яшчэ?
>> Іосіф Онг: Дык чаму ж гэта дазволіла у JavaScript, а не ў З?
Гэта проста той, хто прыдумаў JavaScript вырашыў, што гэта было ў парадку ў
JavaScript.
Так што гэта проста, як мова праграмавання Канвенцыя як мы сказалі б.
Так.
>> АЎДЫТОРЫЯ: Дык чаму ж гэта пайсці ад 6 да 5?
>> Іосіф Онг: Так працягвалася ад 6 да 5, таму што, калі я прайшоў I у Foo, што
я ўсярэдзіне Foo зараз у вобласці бачнасці Foo, таму сфера існуе ў функцыі ў
JavaScript.
Але як толькі я выйду адсюль, таму што гэта быў у вобласці бачнасці функцыі, я проста
з выкарыстаннем рэгулярных I, які быў усярэдзіне астатняя частка патоку кіравання.
Сэнс?
Ці магу я рухацца далей?
Добра.
Крута.
>> Прыняцце гэта аб'екты перадаюцца па спасылцы.
Вы ведаеце, як, калі вы праходзіце масіў у C вы маглі
на самай справе змяніць масіў?
Гэта тое ж самае ў JavaScript.
Калі б я перадаць аб'ект, у дадзеным выпадку, я прайшло майле у гэтую функцыю catify.
Міла пачынаецца.
Яго клічуць Міла Банан.
Я перадаць гэты аб'ект у функцыю таму што гэта аб'ект, асацыятыўная
Масіў у JavaScript.
>> Калі я выканаць аперацыю ў гэтай функцыі, ён будзе
на самай справе змяніць аб'ект.
Так што гэта адбудзецца толькі для аб'ектаў у JavaScript, гэтак жа, як гэта адбываецца
для масіваў ўнутры імя С. Так што майле на самай справе стане котка цяпер.
Ці мае гэта сэнс?
Так гэта працуе толькі для аб'ектаў.
Аб'екты перадаюцца па спасылцы.
Так.
>> АЎДЫТОРЫЯ: Дык вы кажаце, што у адрозненне ад зменнай I.
>> Іосіф Онг: Так.
Якія зменнай я быў проста шэраг, ці не так?
Гэта як у C, калі вы праходзіце цэлае, ён робіць копію.
І калі вы перадаць масіў, на самай справе змяняецца фактычнае масіў у
С. Тое ж самае адбываецца з JavaScript ў гэтым выпадку.
Добра.
А побач, Майл сумна, таму што ён цяпер кошка.
Гэта было на самай справе Міла пасля некаторыя паездкі да ветэрынара.
>> Так як мы выкарыстоўваем наяўнасць на вэб-старонцы?
Мы можам ўключыць яго.
Гэта HTML код з тэгамі паласы.
Так што ў мяне тэгі Газа.
А потым я стаўлю некаторыя наяўнасць Код у тэгах сцэнара.
А потым ён выконвае гэта.
Калі я толькі зрабіць гэта так, што гэта называецца убудаваны JavaScript.
Гэта свайго роду брудным, таму што JavaScript на самай справе ў HTML.
>> Лепшы спосаб зрабіць гэта, значна прыемней, гэта напісаць свой наяўнасць у
знешні файл, а затым даць тэг скрыпт з крыніцай.
І гэта пойдзе на гэты файл JavaScript і прачытаць код JavaScript з
што файл замест.
І такім чынам, вы не павінны шмат JavaScript ў пачатку вашага
HTML файл, што робіць гэта сапраўды брудна.
Вы проста пакласці яго недзе ў іншым месцы.
А потым ён будзе чытаць яго адтуль.
Справа не ў гэтым ёсць сэнс?
>> Пытанні размяшчэння.
У дадзеным канкрэтным выпадку Сцэнар да цела.
Таму, калі я выконваю, што ёсць нічога ў арганізме яшчэ.
Можа быць, гэта зробіць крыху больш адчуваю, калі я паказваю гэтую наступную частку.
У гэтым выпадку сцэнар прыходзіць пасля дзіваў.
Таму на самай справе з'явіцца спраў на старонцы ў першую чаргу.
Прама тут, у гэтай маленькай чырвонай акружнасцю, вы бачыце адлюстроўваецца тэкст.
І тады трывога з'яўляецца.
>> У першым выпадку, таму што сцэнар было да DIV,
папярэджанне з'яўляецца ў першую чаргу.
І тады штука з'яўляецца пасля закрыцця акна.
Такім чынам, выкананне мае значэнне.
Такім чынам мы будзем мець гэта на ўвазе.
Гэта будзе важна ў трохі.
ОК.
Так добра, як ня вы пачакайце, пакуль ўся старонка загружаецца, то перад вамі
выконваць некаторы код?
Мы ўвойдзем у гэта крыху Крыху пазней таксама.
Але проста трымаць гэта месца размяшчэння пытанні на ўвазе, калі мы
прыйсці на іншы слайд.
>> Такім чынам, мы атрымліваем, каб DOM цяпер.
А што такое DOM?
Так што, калі вы паглядзіце на HTML кода, гэта проста куча тэксту на экране.
Так як жа JavaScript ведаем, што гэта HTML элемент?
Такім чынам, мы павінны мець некаторы аб'ём памяці прадстаўленне гэтага
структура, якая ў нас ёсць.
І кожны раз, калі ў нас ёсць гэта ў памяці прадстаўніцтва ў JavaScript, мы называем
што DOM.
І гэта ўсяго толькі спосаб, якім людзі вырашылі што мы павінны прадставіць гэта
Структура HTML як.
>> І што ж гэта DOM выглядае?
Ну, ва ўяўленні памяці, мы бярэм гэты тэкст.
І мы ператварыць яго ў памяці прадстаўленне.
Так што гэта HTML.
Такім чынам, мы ўпершыню даведаліся, што кожны ДОМ дрэва мае дакумент.
Гэта выглядае як дрэва.
І дакумент утрымлівае HTML тэг, на самай справе ўсё
ўнутры гэта цяпер.
HTML тэгаў мае дваіх дзяцей.
Ён мае галаву.
Гэта галава, калі вы паглядзіце на водступ там, як яна структураваная
паміж які закрывае тэгамі, галоўка мае дзіця.
Дзіця назва.
Менавіта так.
>> Цяпер у нас ёсць цела дзіцяці.
А потым, што цела мае дзіця называецца сям'ёй.
І, што сям'я мае траіх дзяцей -
Найстарэйшы, сярэдні і малодшы.
Такім чынам, вы павінны ведаць, як намаляваць схему як гэта, калі мы просім вас, як
намаляваць дыяграму, калі мы даем Вы HTML злева.
Ведаць, як вырабіць DOM дрэва.
А ўнутры гэтых рэчаў, ёсць толькі некаторы тэкст, які я ўяўляў
як маленькія скрыначкі.
>> Ці робіць гэта DOM дрэва структура сэнс і тое, што DOM з'яўляецца?
Такім чынам, што ж р азначае?
Сюды, стар там у гэтым тэгу ўяўляе
тэг пункт у HTML.
Такім чынам, вы можаце паглядзець яго.
Але гэта проста азначае, што гэта некаторыя прастору для некаторага тэксту.
І ў яго ёсць CSS стыль па змаўчанні, таму што гэта пункт тэг.
Але на самой справе не турбавацца аб што частка занадта шмат.
Проста ведаю, што гэта запаўняльнік на працягу некаторага тэксту.
Так.
Пытанне?
Так.
>> АЎДЫТОРЫЯ: Вы толькі што згадалі CSS.
Сям'я хэш і хэш усё гэта дабро ў асноўным
прадстаўляюць ідэнтыфікатараў ў CSS?
>> Іосіф Онг: Так, менавіта так.
Я вярнуся да якой гэтыя хэшы значыць у секунду.
Калі Анжэла падышла CSS, яна казалі аб CSS селектар.
Такія CSS селектары, што яна кажа.
Так, Роб?
>> ROB BOWDEN: Я хацеў бы таксама пракаментаваць што DOM ўнутры тэг загалоўку
таксама тэкставы вузел.
>> Іосіф Онг: Дакладна.
Так ўнутры тэг загалоўка, У мяне ёсць тэкставы DOM.
Так на самай справе, гэта назва павінна быць як маленькая скрыначка сыходзіць яго таксама.
Але гэта не мае вялікага значэння занадта шмат у дадзеным выпадку.
Мы сапраўды не клапоцяцца аб тэкставых вузлоў, як мы іх называем, занадта шмат.
Добра, што мы робім.
Мяркуючы па ўсім, што мы робім.
І я буду гэта выправіць, калі Я загрузіць яго зноў.
Ці мае гэта сэнс?
>> Так як жа мы працуем з DOM?
Кожны раз, калі вы маеце справу з DOM ў JavaScript, ёсць два кроку.
Вы выбіраеце DOM элемент.
А потым вы робіце рэчы да яго.
Такім чынам, у гэтым выпадку, абстрактна, у мяне абраны сярэдні элемент.
А потым прыклад рабіць рэчы да яго будзе змена тэксту.
Гэта раней Боб.
Цяпер, што зрабіў Я з ім быў я змяніў Боб майле ў гэтым выпадку.
>> Так як жа мы на самай справе гэта зрабіць?
Як мы гэта робім выбару?
І як мы робім рэчы, каб рэч, як толькі мы ўзялі гэта?
Ну, то, як вы, хлопцы даведаліся яго у гэтым класе з'яўляецца выкарыстанне тое, што мы
называецца JQuery.
Так што ж такое JQuery?
JQuery гэта бібліятэка, якая робіць JavaScript лягчэй пісаць.
Значыць, хтосьці знайшоў час, і напісаў JQuery.
>> JQuery на самай справе напісана у JavaScript.
А потым, таму што яны зрабілі гэта, мы цяпер ёсць цэлая куча функцый,
мы можам выкарыстоўваць, што зрабіць наш жыве вельмі проста.
Так што некаторыя з рэчы яна робіць?
Гэта робіць выбару элементаў лягчэй.
Гэта робіць змены HTML, дадання класаў лягчэй.
Гэта робіць Аякс лягчэй.
Мы вернемся да гэтага ў секунду.
>> І гэта аналагічна C бібліятэк.
Такім чынам, вы ўключаюць string.h, вы атрымліваеце STRLEN.
Вы атрымліваеце зЬгсру, усе гэтыя рэчы.
Пры ўключэнні JQuery, вы атрымліваеце добры спосабу выбару элементаў на змяненне
рэчы, і гэтак далей.
Вы атрымліваеце дадатковую функцыянальнасць, што JavaScript не дае вам.
Так JQuery ня JavaScript.
JQuery гэта бібліятэка, якая напісана ў JavaScript, што робіць наяўнасць
лягчэй пісаць.
>> Так JQuery ня праграмаванне мову.
Але ў JavaScript з'яўляецца.
зрабіць.
Вядома, вы атрымаеце вашу тэрміналогію правоў.
Ёсць пытанні?
Так.
Гэта пытанне?
Добра.
Так як жа вы карыстаецеся JQuery?
Ну, калі вы пішаце некаторыя JavaScript код і ўключыць
JQuery ў верхняй частцы вашага файла ў выглядзе файл сцэнара, можна выкарыстоўваць знак даляра
зараз, каб атрымаць доступ да JQuery.
І гэта адрозніваецца ад знак даляра ў PHP.
>> Гэта такі ж сімвал вам друкаваць на клавіятуры.
Але яны маюць на ўвазе зусім розныя рэчы.
Знак даляра ў PHP азначае, што гэты як я абвясціць зменную.
У JavaScript, калі вы ўключылі JQuery, ён выступае за JQuery.
Так што майце гэта на ўвазе.
Такім чынам, як мы маглі б выбраць элементы DOM?
Ну, а калі вы робіце гэта пачварнае наяўнасць чынам, вы атрымліваеце доступ да
дакументаваць глабальнай зменнай.
І тады вы атрымаеце элемент, ID сям'і.
Гэта сапраўды доўга і шматслоўна і не вельмі добры.
>> Ці вы можаце атрымаць усе элементы якія з'яўляюцца р тэгаў.
Гэта таксама працуе ў JavaScript.
Але мы ніколі не паказаў Вы сінтаксіс занадта шмат.
Тое, што мы паказалі вам было JQuery.
Так што ўся селектар ўверх там, што была выказана ў JavaScript проста атрымлівае
кандэнсуецца ў гэты вельмі добры даляра падпісаць хэштэг сям'ю.
І $ р, там, дзе гэта так.
Калі вы хочаце выбраць усе р тэгі ўнутры сям'і, мы паставіць прабел
паміж імі.
А цяпер, мы атрымліваем усё р тэгі ўнутры сям'і.
>> І выглядае знаёмым?
Ну, Анжэла казалі пра CSS селектары.
Дайце мне адну секунду.
І таму для таго, каб выбраць элемент, вы проста карыстаецеся тое ж самае, як вы
будзе рабіць з селектарам CSS.
Калі паставіць хэш перад пра гэта, ён выбірае па ID.
Кропка выбірае па класах.
Калі вы проста мець справу, ня хэшы або кропкі, ён выбірае гэтыя тэгі.
Пытанні.
Да?
>> АЎДЫТОРЫЯ: Калі мы выкарыстоўваць кропку ў нашым HTML, з'яўляецца тое, што не JQuery?
>> Іосіф Онг: Dot ў нашым HTML гэта рэч JavaScript.
Гэта не рэч JQuery.
Тое, як вы, хлопцы даведаліся яго з JQuery з'яўляецца выкарыстанне. HTML.
І тады вы перадалі яго ўсё HTML будзе.
Так што я дабяруся да гэтага ўсяго другі на самай справе.
Так як жа нам рабіць такія рэчы, да элемента як толькі мы абралі яго?
Дык вось прыклад выбару элемента.
Так што цяпер, мы хочам рабіць рэчы да яго.
>> Такім чынам, у гэтым выпадку, дазвольце мне вярнуцца да папярэдняга слайд.
Гэта быў Боб раней.
І я хачу, каб змяніць гэта ўнутры HTML да майл.
Так што я выклікаць функцыю HTML ад элемента.
Гэта HTML функцыя Спосаб элемента.
А потым я даю яму, што Я хачу, каб HTML, каб быць.
І гэта як раз замяняе, што ўнутры што тэг з тым, што я даю яму.
Так.
Пытанне?
>> АЎДЫТОРЫЯ: хэштэг выкарыстоўваецца толькі для JQuery.
[Неразборліва]
мы б не выкарыстоўваць гэта.
>> Іосіф Онг: Так, менавіта так.
Але не хвалюйцеся занадта шмат аб чыстай JavaScript.
Я проста хачу, каб вы, хлопцы, каб засяродзіцца на тым, як вы б зрабіць гэта з JQuery, таму
што будзе важна частка на віктарыне.
Дакладна.
Менавіта так.
Такім чынам, вы бачыце, што хэштэг, так што адпавядае выбраць элемент з
ID сярэдняга з-за гэтага хэштэгу.
Hashtag азначае ID.
І гэты элемент мае ідэнтыфікатар сярэдзіне.
Дык вось элемент мы выбіраем.
>> АЎДЫТОРЫЯ: [неразборліва].
знак даляра хэштэг [неразборліва]?
>> Іосіф Онг: Дык не.
Пытанне вы можаце выкарыстоўваць. Значэнне.
І значэнне. Працуе толькі на элементах што з'яўляюцца ўваходамі.
У JQuery, было б . Вал, не ад значэння ..
Так што я дабяруся да невялікага прыкладу, што дэманструе ўсё гэта ў спалучэнні
у секунду.
Але я думаю, што гэта служыць невялікі ўрывак мае сэнс для людзей, да гэтага часу.
Хочаце змяніць HTML, выклікаць метад HTML.
Так.
>> АЎДЫТОРЫЯ: Ці можаце вы растлумачыць зноў метад?
>> Іосіф Онг: Так метад проста функцыя, якая належыць да аднаго, у гэтым
так, адзін з гэтых DOM элементаў, таму што вы бачыце I
першы абраны элемент.
На самай справе, дазвольце мне выкарыстоўваць мыш.
Я абраў элемент у першую чаргу.
І тады я назваў гэтую HTML функцыянаваць, што гэта было.
І таму, што гэтая функцыя належыць гэтая рэч, мы называем гэта метад.
Гэта проста прыгожая назва для яго.
Сказаць, што зноў.
Так што памятаеце, мы абралі элемент цяпер.
І мы ўвялі яго ўнутры пераменная элемент.
Выпраўце?
>> Таму, калі мы хочам змяніць HTML на ўнутры, таму што гэта было Боб і раней, вы
хочаце змяніць гэты тэкст, каб майл.
Так мы называем HTML.
І мы сказаць яму, што HTML ўнутры што элемент павінен быць цяпер.
І так ён змяняе яго на Міла, таму што я даў яму майл.
>> АЎДЫТОРЫЯ: Так яны працуюць разам.
[Неразборліва]
>> Іосіф Онг: Так, так.
Яны працуюць разам.
Так адзін з іх выбірае элемент у першую чаргу.
І другі робіць нешта ёсць.
Так.
>> АЎДЫТОРЫЯ: [неразборліва].
Калі гэты метад адрозніваецца ад ў HTML ў вас ёсць метад роўнага актуальнай.
>> Іосіф Онг: Так.
Гэта іншы спосаб.
І мы можам пакрыць, што праз секунду калі мы дабяромся да прыкладу.
Я хачу пераканацца, што мы паскорыць таму што мы мала часу.
Але мы запускаем шлях на працягу доўгага часу цяпер.
ОК.
Крута.
Так што калі вы хочаце дадаць клас, ёсць таксама метад дадаць клас.
Гэта проста прыклад таго, што вы можаце зрабіць з JQuery.
Гэта проста дадае клас.
>> Калі вы хочаце, каб выдаліць яго, вы можаце патэлефанаваць выдаліць.
Вось толькі яшчэ адна рэч, вы можаце зрабіць.
Так больш прыкладаў таго, што вы можаце зрабіць.
Так я магу проста пакласці яго на верхняя, як гэта?
Самы малады выдаліць.
Калі я проста выканаць гэты наяўнасць у верхняя частка майго файла, будзе, што працуе?
Дакладна.
Таму што сярэдні пакуль не існуе.
Так што гэта не будзе працаваць.
Парадак выканання.
Само ў пачатак першага.
Што?
>> АЎДЫТОРЫЯ: Самы малады яшчэ не існуе?
>> Іосіф Онг: Так.
Самы малады яшчэ не існуе.
Менавіта так.
>> АЎДЫТОРЫЯ: Вы сказалі, сярэдні.
>> Іосіф Онг: Выбачайце.
Самы малады яшчэ не існуе.
І іншая справа, у мяне няма ўключалі JQuery
падаць спытаць сцэнара SRC.
Так што не збіраецца працаваць.
На самай справе, я не рабіў, што ў Наступны слайд, які з'яўляецца
мяркуецца зафіксаваць, што альбо.
Але тое, як мы робім гэта JavaScript прыводзіцца падзея.
Так што мы робім, мы выкарыстоўваем падзея маніпулятара, каб гэта адбылося.
І таму я абярыце дакумент ўсталяваць у першую чаргу.
Я кажу, добра, калі дакумент гатовыя, дазвольце мне выканаць функцыю.
Так вось усё, што сінтаксічныя сродкі.
>> Я выбраў гэты дакумент.
Цяпер, калі дакумент гатовы, запусціць функцыю.
І так тут, калі дакумент гатовы, які азначае, што ўсе HTML мае
загружаны, то я запусціць функцыю які выдаляе гэты элемент.
І вось цяпер, калі я запускаю гэтую функцыю што я перайшоў у гатовы, я
Гарантуецца, што ўсе HTML на старонка будзе існаваць у першую чаргу.
Так.
Пытанне?
>> АЎДЫТОРЫЯ: Што такое ключавое слова падзея ўнутры функцыі?
>> Іосіф Онг: Дык што ключавое слова падзеяй у функцыя проста з'яўляецца параметрам, які
перадаецца ў функцыю для любога падзеі.
Гэта проста тое, што Вы атрымліваеце бясплатна.
Пры выкарыстанні ключавых апрацоўшчыкі ў pset8, што падзея можа сказаць вам, для
Напрыклад, ключ, які вы націснулі на.
У гэтым выпадку для гатовага выпадку гэта на самай справе не супер карысна.
Але для ключавога ўніз выпадку, гэта больш карысна, таму што вы атрымаеце ведаць, якія
Ключавыя вы націснулі шляхам доступу ключ Код ад гэтага аб'екта падзеі.
Выпраўце?
Ці мае гэта сэнс?
ОК.
Так.
Пытанне?
>> АЎДЫТОРЫЯ: Дык вы можаце пакласці тэг сцэнара ніжэй?
>> Іосіф Онг: Так што так.
Вы можаце змясціць сцэнар пазначыць ніжэй.
Але тады ён проста становіцца сапраўды брудна.
І мы хацелі б цэнтралізаваць усе нашага кода ў адным месцы.
І гэта дазволіць нам гэта зрабіць.
Памятаеце раней я сказаў, што ёсць больш добры спосаб пераканацца, што элементы
на старонцы, перш чым выконваць код?
І гэта проста добры спосаб вы б дамагчыся гэтага.
>> АЎДЫТОРЫЯ: [неразборліва].
>> Іосіф Онг: Так.
Вы ўсё роўна прыйшлося б, праўда?
Таму што памятаеце, што вы ўключаны падаць у верхняй частцы старонкі.
Так ён збіраецца выканаць, перш чым Вы дабіраецеся да ніжняй частцы старонкі.
ОК.
Такім чынам, вы таксама можаце дадаць іншае тып апрацоўшчыка падзей.
Гэта адзін проста апрацоўвае пстрычкі.
Калі я націскаю на малады, то ён будзе ўсплывальнае акно з папярэджаннем.
Гэта проста іншы Тып падзеі.
У адрозненне ад гатовага выпадку, цяпер выкарыстоўваць падзея пстрычкі, калі вы атрымліваеце
пстрыкае на элеменце.
>> І таму ў дадзеным выпадку, памятаеце, пстрычка апрацоўшчык далучаецца да маладых.
Так бывае толькі тады, калі Я націскаю на малады.
І ў іншым, гатовага выпадку быў прымацаваны да дакумента.
Так што чакае дакумента быць гатовым.
Сэнс?
Я думаю, што я магу рухацца далей.
Так.
Пытанне?
>> АЎДЫТОРЫЯ: [неразборліва].
у гэтым выпадку вы карыстаецеся [неразборліва].
>> Іосіф Онг: О, так, таму што ў гэтым так, я павінен чакаць для самых маленькіх
элемент з'яўляцца на экране спачатку перш чым я змагу прыкласці апрацоўшчык пстрычкі, каб
гэта, і менавіта таму я стаўлю яго ў аб наяўнасці дакумента гатовы.
ОК.
А побач, так што гэта вялікі прыклад як бы вы сумясціць ўсё.
Гэта ўсяго толькі прыклад праверкі формы вы бачылі ў лекцыі.
Так што бярыце яго крок за крокам, як вы ідзяце праз гэта.
І гэта будзе цалкам у парадку.
Проста прачытайце яго зверху данізу.
>> У мяне ёсць форма ў ніжняй часткі.
Калі дакумент будзе гатовы, я надаю прадставіць апрацоўшчык ў форму такім чынам, каб
калі я адправіць форму, я атрымліваю значэнні ўнутры кожнага з гэтых уваходаў.
І я праверыць, калі гэта пусты.
Калі гэта пусты, я вярнуцца ілжывым, таму што Я не хачу, каб адправіць форму,
таму што форма не так.
Калі пароль пусты ці гэта менш больш за восем знакаў, я не ўявіць
форма, таму што гэта таксама няправільна.
І вяртанне ілжывых за ўсё перашкаджае форма ад прадстаўлення і
збіраецца на новую старонку.
>> І будзем спадзявацца, што гэта мае сэнс.
Я думаю, што вы, хлопцы, павінны хадзіць праз гэты код крок за крокам па сваім меркаванні.
І як толькі вы разумееце, што выбраць элементы і рабіць такія рэчы, да яго
на самай справе цягне за сабой, гэта зробіць шмат сэнсу для вас.
Да?
>> АЎДЫТОРЫЯ: Што робіць імя = імя карыстальніка на ўвазе?
>> Іосіф Онг: Такім чынам, назва = імя карыстальніка і Імя = пароль проста азначае глядзець на
атрыбутам ўсё Вы выбіраеце.
А потым, што павінен адпавядаць.
Так мы ідзем у рэгістрацыі.
А потым мы глядзім на ўсіх уваходах і рэгістрацыя.
А потым мы выбіраем той, дзе імя атрыбут роўная імя карыстальніка.
Так што першы селектар выбірае толькі Імя карыстальніка ўводу.
І, што другі селектар выбірае толькі пароль адзін, таму што тыя, у
іх атрыбуты імя ўсталяваць як тое, што яны павінны быць.
Пытанне?
>> АЎДЫТОРЫЯ: На прадстаўлення, як жа Ніжняя частка рашэння верхнюю частку?
>> Іосіф Онг: Так гэта таму, што апрацоўшчыка падзей.
Такім чынам, мы чакалі падзеі адпраўкі што звальняюць з формы.
І гэта ўсё, што ўявіць.
Чаму я называю прадставіць там?
Гэта кажа, калі форма была адпраўлена, Я атрымліваю прадставіць падзея.
Такім чынам, дазвольце мне проста перахапіць, што і затым запусціць замест гэтага кода.
Да?
>> АЎДЫТОРЫЯ: Чаму ў вас мець функцыю падзея?
Чаму ты не можаш проста [неразборліва]?
>> Іосіф Онг: Таму што ў JavaScript, вы павінны абвясьціць функцыі.
Вось толькі як гэта працуе у JavaScript.
Вы павінны сказаць, што гэта збіраецца запусціць функцыю.
Дык ты кажаш гэта, што вы чакаючы функцыю тут замест
за ўсё фігурныя дужкі.
>> АЎДЫТОРЫЯ: А функцыя з'яўляецца тое, што з гэтага вынікае?
>> Іосіф Онг: Так.
Функцыя усё, што ўсярэдзіне фігурныя дужкі пасля
што функцыя ключавых словах.
Да?
>> АЎДЫТОРЫЯ: [неразборліва].
>> Іосіф Онг: Для ўявіць?
>> АЎДЫТОРЫЯ: Не, для функцыі без падзеі.
>> Іосіф Онг: Так.
Так што без выпадку, вы можаце мець гэта.
Калі вам не трэба падзея, то вы можаце проста апускаем.
Але калі вы робіце, то вы проста пакласці яго там.
Так.
Хуткі пытанне?
>> АЎДЫТОРЫЯ: [неразборліва].
>> Іосіф Онг: Так.
Таму што тое, што вам трэба зрабіць,, document.ready проста кажа чакаць ўсе
HTML на старонцы, каб спачатку загрузіць.
І, як правіла, вы хочаце, каб вашыя элементы на месцы, перш чым запускаць любы код.
Добра.
Мы павінны дабрацца да Ajax.
Мы не так ужо шмат часу.
Так плюсы і мінусы.
JavaScript лягчэй паспрабаваць пісаць з JQuery.
Але JQuery з'яўляецца збольшага павольным.
>> Гэта як PHP працуе павольней, чым C, таму што гэта інтэрпрэтуецца.
І JQuery трохі павольней, чым JavaScript, таму што гэта робіць шмат
рэчы пад капотам.
І так, калі вы карыстаецеся JQuery, гэта толькі трохі павольней, чым
JavaScript, хоць і дае добры элегантнасць.
І, нарэшце, Аякс.
Да гэтага часу з Ajax, вы яшчэ не бачылі Ajax з пункту гледжання pset7 яшчэ і таму,
калі вы робіце, вы прадставіць форма для цытаты.
Ён загружае новую старонку.
Такім чынам, вы атрымаеце гэтую вялікую белую выбліск на старонцы ў той час як
другая старонка загружаецца, правільна?
>> Было б вельмі добра, калі вам не было гэтай ўспышкі.
Як Facebook, калі вы проста вылучыце ніжняя, ён дадае новы кантэнт
без абнаўлення ўсёй старонкі.
Так нешта накшталт гэтага было б добра.
Гэта код JavaScript на левай баку.
Вы атрымаеце тое, што знаходзіцца ўнутры гэтага ўваходу.
Вы атрымліваеце фондавы інфармацыю ад Yahoo!
А потым вы робіце вялікі радок, кажа, добра, гэта пасланне, якое я хачу
паказаць на экране.
І тады вы пакласці, што зносіны ўнутры некаторага HTML элемента, які атрымлівае
адлюстроўваецца на экране.
>> Так што ўсё, што тут адбываецца.
Так у асноўным, таму што гэта ўсё JavaScript і вам не трэба запускаць
больш PHP, гэта будзе пераканацца, што старонка не абнаўляецца.
Так што гэта проста абстрактная ідэя што я кажу тут цяпер.
Абстрактнай ідэяй з'яўляецца тое, што калі вы робіце гэта усё ў JavaScript, вы не павінны
абнаўлення старонкі.
Але як вы на самой справе гэта зрабіць?
>> Ну, на самай справе, давайце пагаворым аб Праблема з гэтым у першую чаргу.
Праблема ў тым, у JavaScript, выкананне з'яўляецца сінхронным.
Такім чынам, вы павінны чакаць аднаго лінія скончыць перад вамі
выканаць наступную радок.
А што, калі я збіраюся да Yahoo!, і іх серверы вельмі павольна, і
ім патрабуецца тры секунды, каб аддай мне, што фондавы інфармацыі?
Калі я ударыў, што кошт лініі, калі выкананне з'яўляецца сінхронным, як гэта па
па змаўчанні, што гэта проста збіраюся зрабіць, гэта Ваш браўзэр збіраецца цягнуць
тры секунды.
І вы не збіраецеся быць у стане зрабіць нічога пакуль ён атрымлівае гэтыя дадзеныя.
Гэта збіраецца быць замарожаны.
>> І гэта дрэнна.
Вы ж не хочаце, каб карыстальнік мець замарожаны вэб-старонкі.
Выпраўце?
Вось толькі дрэнна.
Усе згодныя з тым?
Калі вы праглядаеце Facebook і яго замярзае, і вы нічога не можаце зрабіць, вы
атрымаць сапраўды расчараваныя.
Такім чынам, рашэнне мы зрабіць што-то асінхронны замест гэтага.
Так што ўсё гэта асінхронны рэч кажа ёсць, я збіраюся спытаць гэта
URL для некаторых дадзеных.
А потым я збіраюся працягваць ісці.
Я проста хачу, каб трымаць выканання любы код, які быў пасля гэтага.
>> А потым, калі, што дадзеныя гатовыя, тады я буду апрацоўваць яго.
Гэта ўсё, што кажа.
>> АЎДЫТОРЫЯ: Аякс проста робіць Код асінхронны?
>> Іосіф Онг: Гэта асінхронны спосаб выбаркі дадзеных.
Таму першае, што пра Ajax гэта дазваляе мне атрымаць дадзеныя
ад знешняга сайта.
І другое гэта гарантуе, што мая старонка не спыніцца, пакуль я
здабывання гэтых дадзеных.
Гэта асінхронная часткай.
Таму што ён ідзе дзесьці ў іншым месцы, таму што я кажу, я працягваю на час
гэта выманне гэтых дадзеных, што робіць яго асінхронны.
Я трымаю выканання.
>> Так трымаць, што асінхронны Ідэя на ўвазе.
І я пакажу вам, што розніца.
Сінхронны версія знаходзіцца на левай баку.
Асінхронная версія знаходзіцца на правай баку.
Паглядзіце на лічбы, каб убачыць, якія крокі адпавядаюць таму, што
выконвае на кожнай радку.
Вунь там, папярэджанне з'яўляецца ў першую чаргу.
Таму што атрыманне малюнка Інфармацыя ад Yahoo!
займае тры секунды, гэта кіёскаў на працягу трох секунд.
А потым ён папярэджвае цану пасля гэтых трох секунд.
>> Дык вось, гэта абвесткі шоу да ў той час -
тры секунды цалі
А потым ён папярэджвае па пасля гэтага.
Так што проста ідзе крок за крокам.
Гэта як тое, што вы, хлопцы, прыме, правільна?
З асінхроннага выканання, Вы папярэдзіць ў першую чаргу.
Тады вы сыходзіце па наступным адрасе.
А вы кажаце, што я збіраюся проста папытаеце дадзеных.
А потым я збіраюся апрацаваць яго пазней.
Так што неадкладна выконвае Наступная радок пасля таго як я зрабіць гэта
Асінхронны запыт.
>> Такім чынам, 0,001 секунд, вы бачыце папярэджанне прывітанне.
Выканаць гэтую функцыю, абвесткі да пабачэння.
І таму, што я даў абяцанне, што я б апрацоўваць дадзеныя пазней, чым
адбываецца, калі гэтыя дадзеныя вяртаецца праз тры секунды, то я бягу, што
функцыя, якая ў мяне ёсць там.
Да?
>> АЎДЫТОРЫЯ: Ці не маглі б вы паказаць або ўдакладніць, што азначае Аякс?
>> Іосіф Онг: Так Аякс гэта спосаб, што калі я патрэбныя дадзеныя, калі я на сайце і я
не хачу, каб абнавіць старонку, то Я выкарыстоўваю гэтую тэхналогію пад назвай Ajax.
Гэта па сутнасьці толькі азначае, ідзі, прынясі дадзеныя з іншай вэб-сайт.
І зрабіць гэта такім чынам, што толькі ня заглухне маю вэб-старонку.
>> АЎДЫТОРЫЯ: Так гэта тое, што ўласціва частка JavaScript або JQuery?
>> Іосіф Онг: Значыць, хтосьці напісаў спосаб зрабіць гэта ў JavaScript даўным-даўно.
У нейкі момант, яна не існуе.
І такім чынам, хтосьці вынайшаў гэтую тэхніку каб дазволіць людзям, каб прасіць гэтыя дадзеныя
такім чынам.
І яны напісалі некаторыя рэчы каб зрабіць гэта за вас.
І JQuery проста дае вам гэта Вельмі добры спосаб зрабіць гэта
з гэтым $. атрымаць функцыю.
пытанні?
Я магу адказаць на пытанні аб Аякс потым таксама.
Я буду тут.
>> Так што давайце нам атрымаць дадзеныя без абнавіць старонку.
І гэта давайце нам зрабіць гэта ў асінхронны спосаб, якім
не замярзае старонку.
Занадта доўга, не чытаў, калі гэта Тлумачэнне было занадта доўга для вас.
Такім чынам, нарэшце, межсайтовый сцэнарыяў нападаў.
Мы бачылі гэта з Zamyla.
Калі ў маім кагосьці базы дадзеных мае гэтае імя, што гэты сцэнар тэг, і я
ёсць код на маёй старонцы, якая друкуе з імёнаў людзей у шэраг, ці ў мяне ёсць
некаторы код JavaScript, які ўстаўляе гэтае імя ў старонку,
што HTML атрымлівае вырабляецца?
Ну, я раздрукаваць HTML тэг.
Я раздрукаваць ўсе гэтыя тэгі.
>> Я дабрацца да часткі, дзе я друк з маімі сябрамі.
Надрукаваць Ларэн па-за.
Гэта друк майле па-за.
А потым маё імя ў базе дадзеных з'яўляецца сцэнар паведамленне
непахвальна статус Facebook.
Таму што я ўставіў гэта ў старонцы таму што гэта падобна JavaScript, калі
гэтую старонку адпраўляецца карыстачу, ён запускаецца на выкананне, як JavaScript.
І так гэта тое, што мы называем межсайтовый скріптінга атакі.
Хтосьці ставіць шкоднасны інфармацыю ў Ваша база дадзеных, якія маглі б адпавядаць
некаторыя дадатковыя радкі або некаторая радок JavaScript.
>> І калі ён атрымлівае выводзіцца на старонкі такім чынам, тое, што
адбываецца тое, што дрэнны код запускаецца на выкананне што я не мае намеру
для таго, каб атрымаць выкананы.
І гэта ўсё, межсайтовый сцэнарыяў атакі.
І тое, як вы абысці гэта як Zamyla сказаў.
Вы проста абгарнуць рэчы ў HTML спецыяльныя сімвалы.
І гэта HTML спецыяльныя сімвалы з'яўляецца PHP функцыя, якая дазволіць прадухіліць такога роду
рэчы з адбываецца з вамі калі ў вас ёсць зламысны
радок у базе дадзеных.
Гэта проста пазбягае яго, так што гэта не так інтэрпрэтуюцца як HTML.
Ён замяняе маленькія дужкі з тым, што мы называем аб'екты.
І мы пайшлі па гэтаму ў лекцыі таксама.
Таму я думаю, вы, хлопцы, павінны мець добрае ўяўленне пра тое, што.
Пытанні?
Так.
>> АЎДЫТОРЫЯ: Такім чынам, як бы [Неразборліва]?
>> Іосіф Онг: Сказаць, што зноў.
>> АЎДЫТОРЫЯ: Як бы манітор -
>> Іосіф Онг: Дакладна.
Так у вас ёсць нешта, што кажа, калі Зарэгістравацца, тып на маё імя.
Я проста набярыце ў гэтай галіне, мяне завуць знялі паведамленне непахвальныя Facebook
Статус блізка тэг сцэнара.
І гэта проста атрымлівае уведзены ў У базе, таму што я не магу сказаць, што нехта
ў свеце не ёсць імя з левай стрэлкай у ім або
Слова сцэнар ў ім.
Гэта на самай справе не мае сэнсу.
Так што я проста павінны пераканацца, што я саніраваць матэрыял перш, чым я раздрукаваць яго
да гэтай старонцы.
>> АЎДЫТОРЫЯ: Так спецыяльныя карткі HTML прадухіляе тэгі сцэнара?
>> Іосіф Онг: Так.
Дык гэта не перашкаджае тэгі сцэнара.
Гэта проста гарантуе, што тэгі сцэнара не атрымліваюць
інтэрпрэтуецца як HTML або -
так.
Гэта проста прыдумляе, як тое, што ёсць на самой справе.
Добра.
Так, каб быў агляд віктарыны.
Крута.
>> [Апладысменты]