>> R.J. Aquino: Sabihin lamang makapagsimula.
Kaya ito ay Pagsusulit 1.
Narito ang ilang impormasyon na may mataas na antas.
Ang Tungkol sa pahina para sa pagsusulit ay sa ito URL, hindi na CS50.net, bagaman na
Magkakaroon pa rin gumagana.
Ito ay CS50.harvard.edu/quizzes/2013/1.
Ito ay ang malaki Tungkol sa pahina, na nagsasabi sa iyo kung saan at kung kailan, lalo sa susunod na Miyerkules
sa isang bungkos ng mga kuwarto.
At sa pamamagitan ng susunod na Miyerkules, ako ibig sabihin ng dalawang araw mula ngayon.
Lahat ng impormasyon na ito ay doon.
Ngunit ito ay pinagsama-samang.
>> Kaya lahat ng bagay mula sa unang kalahati ng taon ay potensyal sa pagsusulit,
dahil hindi mo talaga ang magagawa advanced bagay sa C nang walang kung kundisyon at
para sa loop at ang tulad.
Ngunit magkakaroon ng diin sa mga materyal sakop dahil Pagsusulit 0,
nagsisimula sa structs at File Ako / O. Ito ay karaniwang higit pa
mapaghamong kaysa Pagsusulit 0.
Ang average na iskor ay kadalasang mas mababa.
Mag-aral nang husto.
>> Habang naka-aaral, tiyaking gamitin CS50/discuss upang mag-post ang iyong tanong
at basahin ang mga katanungan ng ibang tao.
Kaya kung wala kang anumang mga katanungan, mag-log in at basahin
tanong ng iyong mga kaibigan.
Ang mga ito ay marahil magandang tanong.
At gawin ang mga pagsusulit na kasanayan.
Na-pagbibigay namin ng mga pagsusulit para sa pito o walong taon na ngayon.
Ang mga ito ay lahat ng mga online.
Tanong hinaharap ay pareho sa lumang katanungan.
Iyon ay kung paano namin gumawa ng mga ito.
>> Ang pagsusulit ay hindi pa umiiral.
Wala sa amin na nakita ito.
Ngunit ito ay ganito ang hitsura nakaraang pagsusulit.
Para sa pagsusuri ng session na ito, hindi ito ang isang malawakan listahan ng mga paksa.
Hindi mo maaaring lamang dumalo ito at pagkatapos ay maging perpektong handa na para sa mga pagsusulit.
Kung hindi man, hindi ito magiging na karami ng isang pagsusulit.
At ito ay din hindi kinakailangang ang lahat ng kailangan mong malaman tungkol sa anumang
ibinigay na paksa.
Ito ay sinadya upang ilantad ka sa mga bagay na sakop namin, ipaalala sa iyo kung ano ang aming
sakop, at ang paraan sa na sakop namin ito.
Ngunit kailangan mong pumunta sa karagdagang at mas malalim na pag-aaral kapag mong i-double-check
na alam mo ang lahat ng bagay tungkol sa anumang naibigay na topic at na iyong napunan
lahat ang mga sulok na naging saklaw sa panayam.
>> Ang mga tala sa pagsusulit sabihin sa iyo upang pumunta sa tagasulat ng mga tala, sa panonood ng panayam video.
Iyon ay isang mahusay na paraan upang tiyakin na ikaw ay sakop lahat ng iyong mga base.
Kaya pagsisimula, kapag ginawa ko ang mga mga slide, sinubukan kong ilagay kung saan nahanap ko
impormasyon.
Kaya para sa File I / O, halimbawa, Linggo 7, Lunes ng panayam, at ang nai-post
Seksyon 6 at Problema Itakda ang lahat ng mayroon impormasyon tungkol sa File ako / O. Gumawa ako
ito para sa bawat paksa.
Kaya mga pamagat slide maaari maging kapaki-pakinabang sa iyo.
>> Kaya dito mayroon kaming File ako / O. Tandaan, sa Problema Itakda 5, ginamit namin fopen, fclose,
fwrite, fread, at fseek.
Ang pagkakaroon nakuhang muli 30ish ang mga JPEG na at pagkakaroon ng laki at messed sa
bitmaps, dapat ay medyo pamilyar may mga function
at kung paano sila gumagana.
Kung ikaw ay hindi na pamilyar, Talagang suriin ang mga ito.
At tiyakin sa iyo na maunawaan kung ano ang ang iba't ibang mga argumento ay,
kapag sila ay ginamit.
>> Ngunit ang mga karaniwang may kaugnayan sa file bug maaaring hilingin sa iyo ang tungkol sa -
well, kung nakalimutan upang suriin kung fopen aktwal na nagtrabaho bago ka pumunta sa
baguhin ang isang file.
Na maaaring maging masama.
Kung nag-nakalimutan upang fclose isang file na iyong fopened, na katulad o kapareho sa
isang tumagas memory.
Iyan ay medyo masama.
At forgetting upang suriin kung ikaw ay Naabot ang dulo ng file bago ka
simulan magsulat dito.
>> Kaya kung sabihin mo, hey, ako sa sa dulo ng file.
Bigyan mo ako ng 5 higit pang mga byte.
Well, na marahil hindi pagpunta sa ehersisyo ang paraang iyong inaasahan.
Iyon lang talaga ito para sa File I / O, dahil ginawa namin kaya magkano ng ito
may-set ang problema.
Kaya kung nauunawaan mo kung ano ang nangyayari sa Problema sa Set 5, tandaan ang bitmats
at ang mga JPEG, pagkatapos ikaw ay marahil lahat set para sa File ako / O. Kung iyon nang kaunti
malabo, suriin ang talagang problema na itakda at ang kaugnay na materyal.
>> Structs ang mga paksang iyon ay sa linya sa pagitan ng Pagsusulit 0 at Pagsusulit 1.
Ang ibig hindi pa masyadong gawin ang mga hiwa para sa Pagsusulit 0.
Kaya makikita talagang maging sila sa Pagsusulit 1, Linggo 7, Lunes.
Ano ang isang struct?
Narito nagpapakita kami ng isang struct.
Ito ay tulad ng isang bagong uri.
Ito ay tulad ng isang lalagyan para sa maramihang mga patlang.
>> Sa kasong ito, ipinahayag kami ng struct mag-aaral na may dalawang mga patlang -
isang string na aming pagtawag sa pangalan at isang int na aming pagtawag edad.
Kaya kapag pumasa ako sa paligid mga mag-aaral o ako baguhin ang mga mag-aaral, magagawa ko magagawang
access ang kanilang pangalan at ang kanilang mga edad.
Tingnan natin ang ilang code para na Hayaan.
Narito makita namin na na-ipinahayag ko isang mag-aaral s, tulad lamang ng
Ipinahahayag ko ang anumang mga variable -
int x, int y, at iba pa.
>> Narito mag-aaral s.
Nagsisimula niya na may walang anuman sa kanyang mga patlang.
Kaya ipaalam set ng mga ito.
Ikaw ang magtatakda ng mga patlang ng isang struct may tuldok.
Kaya ang sinabi ko dito na s.name = RJ.
At s.age = 21.
Maaari mo ring i-update ang mga patlang sa parehong paraan na nais mong i-update
ang halaga ng isang variable.
Kaya gusto kong baguhin ang aking pangalan mula RJ may walang mga tuldok upang R.J. ang pagbaybay sa
tamang paraan.
Ito ay s.name = RJ, parehong tulad ng sinabi namin ito orihinal.
At pagkatapos ay maaari mong ma-access ang mga ito.
>> Kaya iyong itinakda namin ang mga ito.
Na-update namin ang mga ito.
Maaari mo ring i-access ang mga ito sa pinakadulo parehong paraan.
Kaya dito, ako nagpi-print out R.J. Ay 21 taong gulang.
At ako sa pag-access sa mga halaga iyon may s.name at s.age.
Kaya na-a-access structs sa pagtatanda na tuldok.
Yep, tanong?
>> Madla: Mayroon bang isang dahilan sa ang nakaraang slide na hindi mo ilalagay
mag-aaral sa itaas na linya, tulad ng typedef struct mag-aaral at pagkatapos ay
mag-aaral sa dulo?
>> R.J. Aquino: Kaya ang tanong ay, sa slide na ito, karaniwang namin na iyong nakita
typedef struct node at pagkatapos ay ang mga patlang ng struct at
pagkatapos ay ang salita na node.
At kung paano dumating dito hindi ko sabihin, typedef struct mag-aaral at pagkatapos ay ang
mga patlang ng struct at pagkatapos ay mag-aaral?
Ang dahilan dito ay na hindi ko na kailangang i-access ito sa loob ng struct.
Kaya ito ay ang OK upang iwanan ito nang walang isang pangalan.
Maaari ko bang iwan lamang ito bilang isang hindi nakikilalang struct.
>> Ang dahilan kung bakit ginagawa namin ito para sa naka-link na mga listahan at mga bagay ay dahil kailangan mo ng loob
na banggitin ang isang struct node bituin.
Kaya ang struct ay may upang magkaroon ng isang pangalan, sa gayon ay maaari mong i-access ito sa ibang pagkakataon.
Ito ay isang menor de edad ang detalye.
Ngunit makikita mo karaniwang makita typedef struct kulot tirante kung hindi mo kailangang
ang pangalan at typedef struct ilang mga pangalan sinundan ng kulot tirante kung nasain mo
Kailangan ang pangalan.
Kaya na ay isang mahusay na tanong.
>> At sa puntong iyon, may posibilidad namin upang baguhin structs at pumasa sa paligid structs sa pamamagitan ng
isangguni, hindi sa pamamagitan ng halaga.
Kaya makikita lamang pumasa kami sa paligid ng mga payo sa structs sa halip ng pagpasa sa paligid ng
structs kanilang mga sarili.
Kaya ka napaka madalas na pagpunta sa maging ginagamit, sa kasong ito, ang mag-aaral * o
struct node * o node * sa halip out mga mag-aaral o mga node.
Kaya dito, na sinabi ko, OK, ptr ang variable ay magiging ang address ng s.
Ito ay pagpunta sa maging ang pointer upang ang mag-aaral R.J.
>> Kaya maaari naming makuha sa mga patlang ang parehong bilang makakakuha tayo ng kahit ano.
Una, isangguni ID ang pointer upang makuha ang struct.
Iyan ay * ptr at pagkatapos ay isang tuldok at pagkatapos ng edad.
Kaya upang ma-access ang patlang, at na-update ko ito ngayon sa 22, dahil, sabihin
sabihin nating, ito ay ang aking kaarawan.
Mayroong isang shortcut sa syntax gamit ang mga arrow dito.
Kaya ptr arrow edad lamang katulad ng * ptr.age.
Ngayon, na may isang bagay magkakaroon ka ng kabisaduhin at tandaan.
>> Ginamit mo ito ng maraming sa pset6, ang speller pset.
Ngunit ito ay talagang kung ano ang nangyayari sa ilalim ng hood.
Ito ay dereferencing ang pointer at pagkatapos ay ma-access ito.
Tanong?
>> Madla: [hindi marinig].
>> R.J. Aquino: Kaya bakit ay namin ang paggamit ng mga payo bilang structs sa halip na ang
structs kanilang sarili?
Ang dahilan dito ay magiging kung ikaw ay pagpasa isang struct sa isang function, marahil
nais upang pumasa sa paligid lamang ng 4 o kaya bytes na kumakatawan sa pointer, bilang
kabaligtaran sa mga potensyal na 30 o 40 bytes na ang struct.
Kaya ang pagpasa ng isang bagay sa isang function ay mas madali kapag ang bagay
ay mas maliit sa maikling.
Tanong?
>> Madla: maaaring na nabanggit mo ito sa simula, ngunit ang naroon
iba pang mga slide up sa [hindi marinig]?
>> R.J. Aquino: Ang mga slide ay magiging hanggang matapos ang pagsusuri session.
Magpo-post kami sa kanila sa website.
Kaya gumagalaw sa at paglipat sa bahagyang mas mabilis, kami ay pagpunta sa makipag-usap tungkol sa data
mga istraktura.
Maraming.
Natatakpan kami ng grupo ng mga ito.
Narito kung ano ang dapat mong maunawaan tungkol sa istraktura ng data.
>> Dapat mo talagang maunawaan sa isang mataas na antas kung ano ang bawat istraktura ay.
Maaari mong ipaliwanag sa Ingles sa iyong kaibigan na hindi nakuha CS50 paano
kami ay aayos ng aming data at kung bakit kami ay maaaring gumagamit ng isang bagay sa paraang ito?
Iyon bagay isa.
Bagay dalawa, naiintindihan ang pagpapatupad.
Kaya maunawaan kung paano gamitin ang mga bagay na ito sa C. At ipapakita namin ay pagpunta sa paglipas ng ito.
>> At pagkatapos ng tatlong bagay ay alam ang magpatakbo ng mga oras at ang mga limitasyon ng mga
iba't-ibang mga istraktura na iyong ginagamit.
Kaya maunawaan kung bakit gusto mong gamitin ang isang sa halip ng isang array hash table.
Maunawaan kung paano mabilis, sa average, access ng isang hash talahanayan ay.
Intindihin kung ano ang pagpapatakbo ay mabilis sa naka-link na listahan ngunit mabagal sa array at
kabaligtaran.
Kaya na maunawaan na, kailangan mong mag- Nauunawaan Big-O notasyon upang malaman lamang
kung paano makipag-usap tungkol sa mga ito mga uri ng mga bagay.
At muli naming makipag-usap tungkol sa na.
>> Kaya unang bagay, naka-link na mga listahan.
Narito ang isang larawan na may mataas na antas ng isang naka-link na listahan.
Ipakita namin ito sa klase.
Karaniwan naming magkaroon ng 10 mga tao nakatayo sa entablado.
Ngunit kami ay isang serye ng mga node kung saan ang bawat na node ay may ilang mga halaga at isang pointer
sa kanyang susunod na halaga.
Kaya upang makakuha ng mula sa isang node sa susunod, mo sabihin lang, ibigay sa akin ang susunod na node.
Mayroon kang na node.
Bigyan mo ako ng susunod na node.
Mayroon kang na node.
Bigyan mo ako ng susunod na node at iba pa hanggang sa walang node kaliwa.
>> Kaya patuloy na makipag-usap tungkol sa ito sa isang mataas na antas.
Ito ay mas madali upang magpasok ng mga bagay sa isang naka-link na listahan.
Kung hindi mo na nagmamalasakit sa pagkakasunud-sunod, pwede mong ilagay lang ito
karapatan sa simula.
Iyon ay pare-pareho ang panahon.
Pero mahirap na makahanap ng isang halaga.
Kung sinusubukan mong hilingin, ay pitong sa aking listahan?
Mayroon kang upang pumunta sa pamamagitan ng bawat solong halaga.
Ito ba pitong?
Nang paulit-ulit.
At iyon ang O (n).
Kaya kapag-aaral para sa pagsusulit, ihambing ito sa array.
>> OK ba iyon?
Ang mga ilaw nagpunta dim.
OK.
Kailan mas mahusay na naka-link na listahan?
Kailan mas mahusay na isang array?
Kaya tingnan natin ang ilang code ipaalam.
Narito ang isang potensyal na node.
Ito ay isang struct.
Ito ay may isang int n, na Magiging aming halaga.
At ito ay may struct node * susunod, na ay ang aming pointer sa susunod na node.
Kaya dito, maaari naming makita na ang nangyari namin upang pinagsikapan ng isang int sa aming node.
Ngunit kung ito ay isang naka-link na listahan ng pansamantalang trabaho bituin o isang naka-link na listahan ng mga kamay, namin
lahat-lahat ay maaaring gawin na masyadong.
>> Tandaan sa pset6, marahil ay nagkaroon ng isang naka-link na listahan ng mga pansamantalang trabaho bituin o lamang
static pansamantalang trabaho array.
Tingnan natin dito sa isang operasyon Hayaan.
Kaya gusto namin upang ipasok ang bagong n sa aming listahan na naka-link.
Simulan out kami sa isang ulo pointer na isang pointer sa node na may
halaga ng n at ng susunod ng isang pointer na mga punto upang ito node ay isang halaga ng
n at ng susunod ng null, dahil ito ang huling node.
Kaya sa mga interes ng oras, ay ako ilagay ang lahat ng code sa screen.
At babagtasin namin ito ng ilang linya sa isang pagkakataon.
>> Kaya narito ang code.
Umaasa ako na ito ay nababasa.
Ang unang bagay na aming ginagawa ay malloc kami ng isang bagong node.
Kaya ito ay gumawa ng isang pointer sa isang bagong node na Mukhang hindi ito ay may-set anumang bagay
hanggang sa ito pa.
Nagsusuri kami upang tiyakin na ang bagong node ay hindi null.
Kung hindi man, kami ay upang bigyan up.
Kaya nagki-check na, na namin ngayon itakda ang mga halaga sa node.
Kaya binuo namin ang bagong n sa aming n field.
At itinakda namin ang susunod na pointer upang tumuro sa ang orihinal na ulo, kaya na kaya namin
ngayon na ipinasok na ito node sa aming listahan.
>> Panghuli, mayroon kaming mga global ulo punto sa aming bagong node, upang kung kami ay sa
simulan sa ulo, gusto naming maging sa ito sa halip ng mga bagong unang node
ang lumang unang node.
At kapag lumabas ito function, ang wala na variable bagong node,
dahil ito ay lokal na pag-andar.
Kaya ito ay ang estado ng mundo.
Ang aming global ulo nagtuturo sa aming bagong unang node, na nagtuturo sa aming
orihinal na unang node, na mga punto sa node matapos na.
>> Iyon ay pagpapasok.
Umaasa ako na noon ay relatibong prangka upang sundin.
Kapag may pagdududa, gumuhit ng larawan.
Kaya mahanap ko na pakikipag-usap tungkol sa naka-link na mga listahan at pagtingin sa
code ay napaka hindi kapaki-pakinabang.
Sapagkat pagtingin sa isang larawan ng isang naka-link na Pinapayagan ka ng listahan sa akin na sa tingin, oh, kaya
Mayroon akong na ito node dito.
Ngunit kung i-update ko na ang pointer, ito ay nagtatapos up disconnect.
At nakalimutan ko na kung saan ang node Dumadaan.
At ang code lumabas.
At mayroon kang maramihang mga node na pagkakakonekta.
At hindi ka humantong sa may ang listahan na gusto mo.
>> Kaya kung gumuhit ka sa larawan at gawin ito hakbang sa pamamagitan ng hakbang na ito, sana, makikita mo ang
ang tamang pagkakasunud-sunod ng mga bagay sa mga tuntunin ng ina-update ang mga payo upang tiyaking
na ang listahan ay sama-sama.
Magsingit ay medyo prangka.
Ang isang mas komplikado ay magiging pagpapasok sa isang nakaayos na listahan.
Ang isang mas kumplikadong function ay tanggalin at hanapin, kaya naghahanap sa pamamagitan ng isang listahan sa
makita kung ang isang bagay ay doon.
Marahil mo ginawa ito sa pset6 kapag nag- Nakakuha in sa iyong talahanayan ng hash at sinabi mo,
mahusay, ay ang salita mansanas sa aking listahan ng naka-link?
>> Kaya maaari mo pa nagagawa ito.
Ngunit talagang, i-refresh ang iyong memorya at subukan upang reimplement hanapin at
reimplement tanggalin para sa isang naka-link na listahan.
Kasayahan gilid tala, mayroong doble na naka-link din mga listahan, kung saan mayroon kang
mga payo na tumuturo sa parehong pasulong at paatras, nang sa gayon ay maaari kang pumunta sa
susunod na node at sa nakaraang node.
At nagkaroon ng tanong sa ng nakaraang taon pagsusulit ng uri iyon, pinag-uusapan
tungkol sa doble na naka-link listahan.
>> Ngayon, na ang isang istraktura na ikaw ay medyo pamilyar sa, dahil ang pinaka-
ng marahil ay ginagamit ang mga ito sa pset6.
Narito ang isang bagay na medyo mas pamilyar na.
Bilang isang bahagi tala, sa tingin ko na Pagsusulit 1 ay lalo na ang mahirap kaysa sa Pagsusulit 0, dahil
ang mga bagay na ginagawa mo, mo hindi pa tapos bilang magkano.
Upang ilagay ang isa pang paraan, para sa Pagsusulit 0, ikaw ay isinulat ng maraming C. At kami
tinanong ka tungkol sa C.
>> Para sa Pagsusulit 1, kami ay pagpunta sa hilingin sa iyo ang tungkol sa PHP at JavaScript, na kung saan mo
hindi nakasulat bilang magkano ng.
Kami ay pagpunta sa hilingin sa iyo ang tungkol sa C-code na hindi mo pa nakasulat bilang magkano ng,
ang advanced C bagay-bagay.
Kaya talagang, pagsasanay ang mga bagay na namin usapan tungkol sa panayam na
ay hindi kinakailangang gawin sa ang problema set.
>> Nagsasalita ng kung saan, hindi mo pa nakasulat isang stack sa isang problema sa set.
Subalit sa panayam.
Narito ang mataas na antas na larawan ng mga stack na ipinapakita namin sa bawat taon.
Ito ay ang stack ng mga trays sa ang Mather dining hall.
Sa isang mataas na antas, mga stack ay isang huling sa, una out istraktura ng data.
Iyon ay nangangahulugang ka ng pagpunta upang ilagay ang mga bagay sa -
1, 3, 7, 12, 14, negatibong 0.
Ang isang bagay na hindi ko maaaring magkaroon ng Sinabi - negatibong 3, 0.
Ilagay mo ang lahat ng mga bagay na ito in
At ang huli ilagay mo sa ay ang unang isa na pupuntahan dumating out.
>> Kaya mayroon kang dalawang mga operasyon -
itulak at mga pop.
Ang lahat ng mga paglalagay sa na ako ay gesturing tulad nito ay push.
At pagkatapos ay kapag naabot ko in upang mang-agaw isang bagay o umabot sa tuktok upang grab
isang bagay, na pop.
Kaya kami ay pagpunta sa ipatupad ang mga stack.
At ipinakita namin ang mga ito sa panayam gamit ang array.
Ngunit maaari mong gawin ang mga ito gamit ang naka-link na mga listahan.
Ang isang stack ay isang haka-haka data istraktura, hindi gusto ang isang
pagpapatupad na tukoy sa isa.
>> Kaya ano ang magiging na mukhang?
Hitsura nito ay magiging uri ng tulad nito.
Gusto mong magkaroon ng isang sukat integer.
At gusto mong magkaroon ng isang hanay ng mga halaga na kami ay pagtawag trays, dahil iyon ang
ano ang larawan ay para sa amin - int trays -
at pagkatapos ng ilang maximum na kapasidad.
Kaya ano ang magiging hitsura itulak tulad?
Well, kung kami ay may isang stack s, pagkatapos ay i-itulak isang bagay papunta s, gusto naming makuha
ang laki ng s.
At iyon ay magiging ang susunod na bukas na puwesto sa aming mga array.
Kaya kung mayroon kaming tatlong bagay sa aming stack, pagkatapos trays 3 ay magiging ang susunod na
bukas na lugar, dahil 0, 1, at 2 naka-napuno up.
>> Kaya binuo namin ang halaga sa s.trays [s.size], sa ikatlong puwesto.
At pagkatapos ay dinagdagan namin s.size sasabihin, hey, nagkaroon kami ng tatlong bagay bago.
Ngayon, mayroon kaming apat.
Kaya sa susunod na itulak mo, handa ka pagpunta sa ilagay ang isang bagay sa 4.
O kaya naman sa susunod na pop mo, ka ng pagpunta upang tumingin sa 3 sa halip ng 4 o kahit ano.
At pagkatapos ay babalik kami sa totoo sabihin nating, hey, Nagtagumpay namin.
Ito ay nagtrabaho.
Bilang pamantayan, kung ang isang pag-andar na dapat na nagbabalik ng tunay o
hindi totoo laging nagbabalik totoo, maaari kang nagawa na mali.
Kaya ito gumagana?
>> Well, ito gumagana fine para sa 1, at 2, at 3, at 4, at lima.
Ngunit sabihin nating maabot ko ang aking kapasidad.
Ito ay nangangahulugan na ba akong magpatakbo sa isang problema, dahil kung laki ay pareho ng kapasidad, ako
ngayon sinusubukan upang ilagay ang isang bagay sa isang array kung saan wala akong puwang.
Kaya ng maikling tseke upang ayusin ito.
Kung s.size == kapasidad, bumalik hindi totoo.
Kung hindi man, pumunta at gawin kung ano ang ginawa namin.
Kaya ano pa ang maaari naming hilingin tungkol sa para sa mga stack?
Ano pa ang dapat pag-aralan mo?
Ano pa ang dapat mong pagsasanay?
>> Well, ang pagpapatupad ng mga pop.
Kami na ginawa push.
Kukunin ko ayusin iyon.
Ang isang non-array pagpapatupad, kung saan mong gamitin ang isang naka-link na listahan, marahil.
Ang isang hindi pang-int pagpapatupad.
Ginawa namin ints dito.
Ngunit ito ay maaaring naging sa kamay.
Maaari ko pa string.
Maaaring ito ay inalisan ng pansamantalang trabaho mga bituin.
Tumingin sa nakalipas na mga pagsusulit para sa mga uri ng mga katanungan na tinanong namin tungkol sa mga stack.
>> Sasabihin kong sakop namin stack sa paligid ang parehong bilang na sakop namin ang mga ito sa
taon na nakalipas.
Kaya ang mga katanungan sa pagsusulit dapat maging isang magandang pahiwatig.
Ang paglipat ng pasulong mas mabilis, queues.
Ang mga ito ay tulad ng stack.
Ngunit hindi muna sila sa, una out.
Kung ikaw ay British, ang salitang queue marahil ginawa ng maraming kahulugan sa iyo.
Kung hindi man, maaari kang magkaroon Narinig ng mga ito bilang isang line.
Gumana ang mga ito tulad ng mga linya sa tindahan ng Apple.
Ang unang tao na lumitaw ang mga sa ganap na 3:00 sa umaga ay ang unang
tao upang bumili ng kanyang iPad.
>> Kaya mayroon kaming dalawang mga operasyon -
enqueue at dequeue.
Enqueue naglalagay ng isang tao sa linya.
Dequeue pulls ang unang tao-off ang linya.
Muli, maaari naming ipatupad ito na may isang array.
Kaya kung ano ay ang struct namin Nagpakita sa lecture?
Iyon ay ang isang ito.
Muli, mga numero.
Muli, laki at ang bagong bagay na front.
Bakit mayroong isang bagay na tinatawag na front?
Ito ay ang index ng susunod na elemento upang dequeue.
Lamang Ito ay panloob pagpapanatiling track ng ang unang tao upang ipakita up, kaya na namin
Maaari bunutin ito kapag kailangan naming.
>> Talagang tumingin sa mga tala panayam at subukan ipatupad enqueue at dequeue
kapag-aaral para sa pagsusulit.
Mahalagang mga bagay upang isipin ang tungkol.
Pambalot sa paligid kung ang front pati ang ay nagtatapos up laki mas malaki kaysa sa kapasidad.
Muli, kung ang iyong istraktura ay puno na, ka pagpunta sa magkaroon ng problema.
Hash talahanayan na iyong nakita bago.
Karamihan sa mga malamang na ipinatupad mga sa pset6.
Ito ay isang istraktura na naglalayong para sa O (1) pare-pareho ang oras sa pagpapasok at O ​​(1)
pare-pareho ang oras lookup.
>> Sa CS50, ipinatupad namin ito bilang isang array ng mga naka-link na mga listahan.
Ang pangunahing bahagi sa isang hash talahanayan ay ang hash.
Kaya nag-convert ito sa iyong input, sabihin nating, ng salita sa diksyunaryo, papunta sa isang numero,
na kung saan ay pagpunta sa maging aming index.
At gagamitin namin ang index na sa aming array.
Kaya narito ang isang nakatutuwa maliit na larawan mula study.50.net.
Magtapon namin ang lahat ng mga salita sa ang aming hash.
At ang mga hash Sinasabi sa amin kung saan ilalagay ang mga salitang ito.
>> Ito ay ang lahat ng mahusay na sa lupa kung saan mayroon lamang isang salita para sa bawat slot.
Ngunit bilang iyong naaalala mula pset6, mayroong ay higit pang mga salita kaysa sa mga puwang.
Kaya kung ano ang mangyayari kapag nag- makakuha ng isang banggaan?
Sa halip na pag-iimbak ng isang halaga sa, sabihin nating, hash talahanayan 3, mo
mag-imbak ng naka-link na listahan.
At kaya sa halip ng pagkakaroon ng milong bilog dito, magkakaroon ka ng isang naka-link na listahan,
kung saan ang unang node ay milong bilog.
At sa susunod na node ay pusa.
At ang ikatlong node ay banggaan, sabihin sabihin, dahil ang lahat ang mga salitang ito magsimula
may C.
>> Kaya karamihan sa mga ginawa mo ito para sa pset6.
Kung hindi mo gawin ang isang hash talahanayan sa pset6 at tinangka ka ng isang bagay tulad ng
, suriin ang talagang isang trie hash talahanayan.
Kung ikaw mismo ang gumawa nito sa pset6, talagang suriin ang hash table.
At kung ginawa mo ito sa pset6 at ito ay hindi ehersisyo masyadong tama at mo
Nagkaroon ng maraming mga problema sa ito, talagang suriin ang hash table.
Kaya ang aralin ay tunay na tiyak suriin ang hash table.
>> Pinipili ng minorya ng iyong sinubukang out sinusubukan sa pset6.
Mataas na antas ng larawan.
Ito ay isang bagay na tulad nito, kung saan ang bawat na node ay may isang hanay ng mga bata, kung saan ang bawat
anak ay tumutugon sa isang sulat.
At bawat node sabi din, hey, ako ng isang salita.
Kaya sa pagkakataong ito, ang salitang Maxwell, kung sundin mo ang M sa A sa
X-W-E-L-L at pagkatapos ay sundin ito ng isa pa.
At kumuha ka ng simbolong ito, delta, na maging tanda ng namin upang sabihin ito ay isang salita.
Kaya Maxwell ay isang salita.
Ang mga deltas ay buong signifying na bagay ang mga salita at kung aling mga
bagay ang hindi.
>> Kaya sa pset6, ang data na naka-imbak namin sa tabi ng anuman sa aming mga node ay "Ako ay isang
salita. "At ang mga cool na bagay tungkol sa pagsusubok ay nagpapakita sila pagpapasok at
lookup sa O (haba ng isang salita).
Kaya upang makakuha lamang sa pamamagitan ng Maxwell, ito ay M-A-X-W-E-L-L. Kaya pitong o walong -
Hindi ko ma bilangin -
hakbang na ito upang makakuha ng hanggang sa dulo at suriin ang mga bagay out.
Kaya mabilis na pagpapatupad dito.
Rob nagpunta sa pamamagitan ng isang naka-link na ilista sa kanyang postmortem.
Kaya suriin na out.
Sorry.
Nagpunta sa pamamagitan ng isang trie sa kanyang postmortem.
Kaya suriin na out.
>> Ngunit isa lamang mayroon kang bawat node ay may 27 mga payo sa susunod na node at isa
Boolean para sa Ako ay isang salita.
Tingnan ang postmortem Rob para sa kung paano ito talaga ay ipinatupad.
Ang aming panghuling kaayusan, ang aming mga puno at binary paghahanap puno.
Kaya ng pagtingin sa mga ito, ang mga ito ay sakop pinaka-kamakailan Linggo 8, Lunes.
Puno A ay katulad ng isang trie, maliban sa iyo ay hindi kinakailangang magkaroon ng 27 mga node sa
bawat punto.
At wala kang ang data na ito sa bawat hakbang na Sumisimbolo kung ang -
ang path ay hindi mahalaga.
Sapagkat isang trie, ang path mula sa itaas hanggang ibaba, Maxwell, ay mahalaga sa amin.
>> Ngunit ang bawat node ay may maramihang mga anak, marahil.
Mayroon kaming ilang higit pang mga bokabularyo.
Ang ugat ng puno ay nasa tuktok napaka.
At sabihin namin na ang napaka pinakamababa node na walang
mga bata ay dahon.
Kaya tulad ng isang trie, isang puno ay isang istruktura ng mga node.
Ang isang karaniwang uri ng puno na kami ng pagpunta pag-uusapan ay isang binary tree, kung saan
bawat node ay walang mga bata o isang child o dalawang bata.
Kaya ang larawang ito dito ay hindi isang binary tree, dahil
node 3 ay may tatlong mga bata.
>> Ngunit kung kami ay upang huwag pansinin ang mga, ang ilang bahagi ng ito ay isang binary puno dahil ito
nagpapakita ng ari-arian na ang bawat node ay may zero, isa, o dalawang bata.
Kaya kung paano na maaari kaming ipahayag ito sa code?
Maaari naming magkaroon ng isang node kung saan ang bawat node ay may isang integer sa loob nito, pati na rin
bilang tagaturo patungo sa tree sa kaliwa at isang pointer sa tree sa
kanan, kaya ang dalawang bata.
Paano ay ito kapaki-pakinabang?
Well, kapag gumawa kami ng mga panuntunan tungkol sa kung saan namin ilagay nodes, maaari kaming magsagawa ng mas mabilis na paghahanap.
>> Kaya mayroong isang konsepto ng isang binary paghahanap tree, kung saan lahat ng mga node sa
iniwan subtree magkaroon ng isang mas maliit na halaga kaysa sa node kaming naghahanap sa.
At lahat ng mga node sa kanan subtree magkaroon ng mas malaking halaga
kaysa sa root node.
Ngayon, na kamukha ng maraming mga salita.
Pupunta ako sa ilagay ito sa loob ng double quotes at ipakita sa iyo ng isang larawan.
Kaya dito ay isang halimbawa ng isang binary paghahanap tree.
Tingnan na sisimulan namin ang may 10.
Lahat sa kaliwa ng 10 ay mas maliit kaysa ito.
At lahat ng bagay sa kanan ay mas malaki kaysa ito.
>> Ngunit higit pa kaya kaysa sa na, ang bawat node sa tree nagpapahayag ng property na ito.
Kaya ang node 7 May 3 sa pakaliwa at isang 9 sa kanan.
Kaya lahat ng mga ito ay mas maliit kaysa sa 10.
Ngunit pagtingin sa lamang iyon, ang 7 ay may 3 sa kanyang kaliwa at 9 sa kanyang karapatan.
At katulad sa kanan, 15 May 14 sa kanyang kaliwa at 50 sa kanan nito.
Kaya ang tatlong node banda roon, 15, 14, at 50, ay din ng isang wastong binary puno
o ng isang wastong binary paghahanap tree.
At ang mga ito ay ang lahat ng mas malaki sa 10.
Kaya ang mga ito ay pinapahintulutan upang maging sa kanan doon.
Mayroon bang isang katanungan?
>> Madla: Paano mo haharapin kapag mayroon kang dalawang sevens?
>> R.J. Aquino: Oo.
Paano mo haharapin ang mga dalawang halaga na ay pareho?
Sabihin Ang ilang mga binary search puno na huwag pansinin ang mga nauulit, dahil ang layunin ay
lamang na sabihin, nakita ko sa ngayon mga bagay na ito.
Ang ilang mga binary mga puno ng paghahanap maaari mong sabihin may isang pagbilang sa loob ng node.
Ang iba ay maaaring sabihin na ang lahat sa kaliwa ay mas mababa sa o patas sa.
At lahat ng bagay sa kanan ay mas malaki.
>> Nakadepende lang ito sa kung ano ang problema ay naka-solve.
Kaya sa isang diksyunaryo, halimbawa, mo hindi nais na nagmamalasakit sa mga duplicate.
Gusto mo itapon ang mga ito out.
Subalit ang ilan sa iba pang mga problema mo ay maaaring mahalaga sa.
>> Madla: Posible bang magkaroon ng isang 1 sa kaliwa ng 15, na
Mas mababa sa 10?
>> R.J. Aquino: Hindi.
Kung ang 14 dito ay isang 1, ito gagawin hindi maging isang wastong binary paghahanap tree,
dahil ang lahat ng bagay sa kanan ng 10 ay dapat na mas malaki kaysa ito.
At kami makita kung bakit.
Kung sa lupain ng paghahanap ng aking layunin ay upang mahanap ang 14, sisimulan ko sa root.
Kaya ko bang tingnan.
OK.
Kami ay pagpunta sa magsimula sa root.
Tumingin sa 10.
>> Well, 14, ang aming target, ay mas malaki kaysa sa 10.
Kaya dapat itong maging sa kanan.
Ito ay halos kapareho sa buong telepono aklat bagay ginawa namin, ang binary
maghanap doon.
Ngunit sa halip ng binary searching sa isang array, hindi namin binary
naghahanap sa punong kahoy na ito.
Kaya kaming naghahanap pa rin para sa 14.
Well, 14 ay mas maliit kaysa sa 15.
Kaya kung ito ay nasa aming tree, dapat ito maging sa lugar dito.
Ito dapat sa kanan ng 10 at sa kaliwa ng 15.
>> At kaya tingnan namin ito node.
At Yay, nalaman namin 14.
Hindi ako pupunta para lakarin sa pamamagitan nito.
Ngunit narito ang code.
Ito ay talagang medyo prangka,
dahil ito ay recursive.
Ano ay maaaring magtanong ka namin na gawin sa isang pagsusulit?
Maaari naming hilingin sa iyong isulat ang code na ito.
Maaari naming hilingin sa iyo upang tumingin sa ang code na ito at baguhin ang code na ito at ipaliwanag kung ano
ito ang ginagawa.
Oo.
Tanong?
>> Madla: Sigurado mga slide pagpunta sa maging ginawang magagamit habang ang mga ito ay huling na oras?
>> R.J. Aquino: Oo.
Kaya ang mga slide habilin Talagang mai-post.
>> Madla: talaga nila naipo-post ngayon sa website.
Lamang ng ginawa ni David na.
>> R.J. Aquino: Ang mga slide ay ngayon sa website.
Kukunin ko marahil mag-ayos ng isang pares ng mga ang mga typo ng nabanggit ko at aayusin ang mga ito.
Subalit mayroong isang kasalukuyang bersyon sa site.
Iba pa mga bagay na maaari kaming humingi sa iyo na gawin -
sumulat insert.
Sumulat ng isang umuulit na bersyon ng recursive function na namin ipinakita sa iyo lamang
o makipag-usap tungkol sa mga bagay na ito, tulad ng sa mga talata, sa salita, sa pangungusap.
Ang paghahambing ng mga beses run at nagpapaliwanag kung ano ang gusto mong gamitin ang isang binary
puno ng paghahanap para sa sa halip ng isang hash talahanayan, bilang halimbawa.
>> Kaya maunawaan ang mga kaayusan sa isang marikit na malalim na antas.
Intindihin kung paano sumulat ng mga ito, kung paano gamitin ang mga ito, kung paano makipag-usap tungkol sa mga ito.
At makikita mo na maitakda ang lahat.
Tanong?
>> Madla: Kapag sumusulat ka ng binary puno ng paghahanap, kung paano ito gawin
matukoy kung ano ang halaga sa gumawa ito bilang root?
>> R.J. Aquino: Kaya ang tanong ay, kung ano halaga mapapakinabangan mo bilang root?
Depende sa iyong code, mo ay maaaring magkaroon ng isang pandaigdigang ugat.
Kaya na maaari mong malamang ay nagkaroon sa pset6 isang pandaigdigang hash table.
O maaari mong pumasa sa root in bilang isang argumento.
Kaya ang paghahanap na ito function na dito tumatagal ng isang argumento isang node *.
At kaya kahit anong node mangyari mong maging pagtingin sa ay ang isa ka pagpapagamot ng
bilang iyong root kapag pinapasa mo ito in
At ako lahat ng set.
Iyon ang aking mga slide.
Ang susunod na tao ay maaaring dumating magpalitan sa isang laptop at mic.
>> Rob BOWDEN: Sa tingin ko na maaaring mayroon ako kahulugan na pinag-uusapan nang iba.
Ngunit kahulugan ko ito bilang, kung mayroon kang ang mga numero 1, 2, at 3, kung paano ginagawa namin
malaman upang gumawa ng 2 root na taliwas sa 1 o 3?
Kung gumawa kami 2 root, pagkatapos ito ay mabuti 1 at 3 sa kaliwa at kanan.
Ngunit kung ang 1 ay ang pinakamahalagang, pagkatapos ito ay 1 sa tuktok, 2 ang karapatan, 3 sa kanan.
Kaya bilang default, hindi mo alam kung ano upang gumawa ng root.
At para sa anumang mga algorithm kami ay umaasang magbibigay sa iyo, lamang ang unang bagay na sa iyo
insert ay magiging root.
O kaya nais naming bigyan ka ng isang binary puno na Umiiral na may isang root.
Ngunit iba pang mga algorithm umiiral tulad na Maa-update ang root, upang kung ikaw
hantungan ang sitwasyon kung saan ito ay 1, 2, 3, mas awtomatikong i-update sa
gawing 2 ang bagong ugat, upang ito ay pa rin ng mabuti balanced.
>> Angela li: Cool.
Uy, guys.
Ako Angela.
At ako pupunta upang matapos off ang aming C at pagkatapos ay pumunta sa ilan sa aming web
teknolohiya -
HTTP, HTML, at CSS.
Kaya ang unang bagay ay nagpapahina ng lakas pag-atake ng pag-apaw.
Kaya ipaalam sa tumagal ng isang pagtingin sa ang code na ito.
Ito ay medyo simple.
Mayroong isang function foo.
At hindi ito bumalik kahit ano.
Ngunit ito ay tumatagal sa isang pointer sa isang string na tinatawag na bar.
>> At ito ang nangyayari na idedeklara ito buffer, na isang karakter
array na may 12 mga puwang.
At ginagamit nito memcpy, na kung saan ay isa lamang function na mga kopya mula sa isa address
patungo sa isa pa.
Kaya ito ay sinusubukan upang kopyahin papunta sa ang aming buffer mula sa kahit anong
bar ay tumuturo sa.
Kaya ang anumang mga ideya kung ano ang mali may ang code na ito?
>> Madla: Kung bar ay mas mahaba kaysa C, sila patungan.
>> Angela Li: Oo, eksakto.
Mayroon kaming walang garantiya na bar ay magiging mas mababa kaysa sa 12.
Ginawa lamang kami ng ilang mga arbitrary na numero 12.
At kami ay tulad ng, ni Umaasa hayaan na ang aming pag-input ng user ay mas mababa sa
12 character ang haba.
Kaya sa isang perpektong mundo, kung ang aming input ay palaging tulad ng inaasahan, pagkatapos ay aasikasuhin namin
isang bagay tulad ng, kumusta.
Iyon ay mas mababa sa 12 mga character.
Ito ay makakakuha ng basahin sa pansamantalang trabaho c.
At pagkatapos gawin kami ng isang bagay na may ito.
Ito ay hindi talagang mahalaga.
>> Ngunit maaaring gawin ang isang nakakahamak na tao isang bagay na mas tulad nito, kung saan sila
bigyan kami ng kahit anong bar ay tumuturo sa, ito ang nangyayari upang tumuro sa ito malaking array
ng lang ang ni.
At ito ay paraan mas mahaba kaysa sa 12.
Kaya ito ay pagpunta sa pumunta lahat ng mga paraan down na dito sa kung saan ang pagbalik
address na ginamit upang maging.
Kaya ipaalam sinasabi ni ito function na ay tinatawag na foo.
Siguro foo ay tinawag sa pamamagitan ng ilang mga iba pang function, na kung saan ay tinawag sa pamamagitan ng pangunahing.
Kaya kapag foo ay tumatakbo, kailangan nito mong malaman kung saan upang bumalik sa.
>> Kung foo ay tinawag sa pamamagitan ng ilang mga pag-andar na may pangalang baz, ito ay upang malaman na ito
Nakakuha upang bumalik sa baz.
At na kung ano ang return address down na dito ay nagsasabi sa amin.
Ngunit kung patungan namin ito sa ilang mga iba pang address, sa kasong ito, ito ay isang
representasyon ng mga address sa napaka-simula ng ito buffer, pagkatapos ay
kung ano ang aktwal na pagpunta sa mangyari ay na sa halip ng mga bumabalik na bumalik sa baz,
na tinatawag na ang aming mga function, ito lamang ay pagpunta sa pumunta sa harap ng code na ito.
>> At kung ito ay doon dahil ang isang dumating nakahahamak na Hacker taong masyadong maselan sa pananamit at
injected ito, pagkatapos ay marahil ang halagang ito ng A ay hindi talagang isang ni.
At talagang ito ay code lang na break sa iyong computer o isang bagay.
Kaya maging nagtatanggol tungkol sa ganitong uri ng bagay, mayroon kang hindi kailanman ipinapalagay na
input ng gumagamit ay isang tiyak na halaga ng mga character.
Halimbawa, kapag ang iyong ginagawa speller, ikaw ay sasabihan na mga salita ay
lamang ng pagpunta sa 40 character mahaba ang maximum.
At iyon ay mabuti.
>> Ngunit kung hindi, pagkatapos ay magkakaroon ka ng mag- siguraduhin na basahin lamang sa 45
character sa isang pagkakataon.
Kung hindi man, maaari mong patungan ang iyong buffer.
Ang anumang mga katanungan sa na.
Oo.
>> Madla: ma-makipag-usap sa iyo lamang ang kaunti pa tungkol sa mga ito?
>> Angela li: Paumanhin.
Oo.
>> Madla: ang mic ay para lamang sa video.
Ako ay subukan at proyekto.
Hi, guys.
Maghapunan?
Kaya sabihin pumunta sa paglipas ng ilang mga bagay sa CS50 library, na na ginagamit mo
lahat ng semestre, karamihan upang makakuha ng input ng user.
Tulad ng alam mo, isama mo ang CS50 library sa pamamagitan lamang ng paggawa CS50.h, na
naglalaman ng lahat ng mga modelo ng mga function na maaari mong gamitin, tulad ng
GetString at GetInt, at GetFloat, at iba pa.
At mayroong isang ito linya sa CS50 library na kung saan tumutukoy sa isang string, na
ka guys alam lahat sa ngayon ay isang pansamantalang trabaho lang *.
>> Ngunit tumagal ng isang silip sa ipaalam kung paano gumagana ang GetString.
Ito ay isang napaka abridged bersyon.
Maaari mong makuha ang mga file CS50 library mula sa, sa palagay ko, manuals.CS50.net.
At maaari mong basahin sa pamamagitan ng ang aktwal na pag-andar.
Ngunit ito ay sumasaklaw sa ilan sa ang mga mahalagang bahagi.
Kaya't lumikha kami ng ilang mga buffer may ilang mga kapasidad.
At ano ang ginagawa namin makuha ay namin sa isang character sa isang pagkakataon mula sa standard n.
Iyon ay kung saan ang input ng gumagamit teksto sa console.
>> At kaya kami ay pagpunta sa basahin sa isang kaya hangga't ito ay hindi isang bagong karakter
linya at hindi ito matatapos file, na ay ang dulo ng standard input.
At para sa bawat character na binabasa namin sa, kung na character na nagtatapos up ng pagdaragdag
sa bilang ng mga character basahin namin ang sa at na ay higit pa sa aming kapasidad,
pagkatapos ano ang ginagawa namin ay naming palitan ang laki lang ang aming nagpapahina ng lakas upang ito ay dalawang beses bilang mahaba.
Kaya muli, ito maprotektahan laban sa buffer pag-atake overflow, dahil ikaw basahin sa
isang character sa isang pagkakataon.
At kung sa anumang punto mong basahin sa masyadong marami, palawakin mo lang ang iyong buffer.
I-multiply mo ito sa pamamagitan ng dalawang.
At pagkatapos ay mayroon kang higit kuwarto.
>> Kung hindi, magdagdag ka lang isang character sa buffer.
At pagkatapos mong basahin sa lahat ng mga character, ito ay paliitin ang buffer
umurong sa normal na sukat, magdagdag ng isang null Terminator, at pagkatapos ay bumalik.
Ngayon, tingnan natin GetInt ipaalam.
Maaari mo guys basahin ito?
Maaari ba akong mag-zoom in nang kaunti.
Hindi ko alam kung paano gumagana ang mga computer.
Wala iyon.
Hindi ko ma-zoom in nang maayos.
>> Ito ay talagang mahirap.
Sorry.
Tingnan lamang ni sa ito Hayaan.
Kaya kung ano ang ginagawa GetInt ay ito unang bumabasa sa isang string mula GetString, na
ipinatupad natin dati.
At ang mahalagang bahagi upang tandaan dito ay kung ito sa pagbabahagi na ito ay nagtatapos up
pagbabasa ay tulad ng hindi tunay na isang string, pagkatapos ay bumalik lang namin INT_MAX sa
pagkabigo ay kumakatawan.
Bakit sa halip namin bumalik INT_MAX ng mga negatibong 1 o 1?
Ang anumang mga ideya?
>> Madla: [hindi marinig] negatibong 1 sa isa.
>> Angela Li: Oo, eksakto.
Kaya ikaw ay paraan na mas malamang na gusto lang sa input 1 o negatibong 1 kapag sinenyasan
para sa isang nth at kahit anong nth maxes.
Ito ay malaking.
Marahil ka hindi pagpunta sa gamitin ito.
Kaya ito ay tulad ng isang desisyon disenyo upang tiyakin na hindi mo gawin nang hindi sinasadya
bumalik ng isang error o hindi mo bumalik 1, na maaaring ma-parse
bilang isang tamang sagot.
Kaya kung ang isang linya ay hindi umiiral, bumalik kami int-MAX.
Kung hindi man, ginagamit namin sscanf, na kung saan ay tulad ng scanf.
Ngunit ito bumabasa mula sa isang string.
>> At kami ay may format na ito string, na kung saan ay% i% c.
At kami subukan at tumutugma na may ano naman nagbigay sa amin ng user.
Gusto naming ang bilang ng mga tugmang mga bagay upang maging 1, na nangangahulugan na namin lamang
talagang gusto upang tumugma sa isang integer napapalibutan ng siguro puti
espasyo, siguro hindi.
Sa kasong ito, kung inilagay mo sa isang bagay tulad ng bar, bar ay hindi tumutugma sa lahat,
dahil doon ay kailangang maging isang integer sa simula.
Kaya hindi kailanman sscan naka-0.
Kaya hindi mo bumalik na.
>> Bilang kahalili, kung inilagay mo sa isang bagay tulad ng 1, 2, 3, A, B, C, na katugma
parehong integer ngunit din ang character na pagkatapos nito.
Kaya ay sscanf bumalik 2, na ding hindi perpekto.
Ayaw mong 1, 2, 3, A, B, C na maging isang wastong int.
Kaya na rin ay hindi gumagana.
Ngunit sinasabi inilagay mo sa isang bagay tulad ng 50.
Iyon ay tutugma sa% i, na nangangahulugang ito ay makakakuha ng basahin sa n.
At ngayon, n maglalaman ng bilang 50.
At pagkatapos ay maaari mong ibalik ito.
>> Kung hindi, pindutin mo ang Retry.
At pagkatapos ay muli na napupunta sa ibabaw ito lamang hanggang sa kang makakuha ng isang wastong input mula sa user.
Ang anumang mga katanungan sa iyon?
>> Madla: Kaya kung ikaw ay i-print out ang halaga ng GetInt sa [hindi marinig]
magiging lamang ng integer at max?
>> Angela Li: Oo.
Kaya kung gagamitin mo GetInt, dapat mong ipalagay na hindi mo nais nth max upang
maging isang wastong input, dahil naka-pagpunta upang ipalagay na iyon ay hindi maganda.
>> Madla: Kung hindi namin ginawa magkaroon ng pansamantalang trabaho c at may isang taong ilalagay sa 1, 2, 3, Sam, gagawin ito
gagana pa rin para sa 1, 2, 3?
>> Angela li: Sa tingin ko gusto ito ay gagana.
Ngunit hindi mo nais 123Sam sa maging isang wastong input ng isang user.
Iyan ay hindi talagang isang int.
Kaya ito ay hindi patas upang i-parse ito bilang isang int.
OK.
Sa kasong iyon, sabihin ilipat sa sa internet.
Kaya HTTP ay hindi isang wika.
HTTP lamang ang hanay ng mga pamantayan para sa paano mo magpadala ng mga bagay mula sa mga kliyente,
na sa iyo, sa mga server.
Iyon ibang tao sa web.
>> Kaya HTTP ang ibig sabihin ay Hypertext Maglipat ng Protocol.
Ito ay ang puso at kaluluwa ng buong web.
Ang hypertext bahagi lamang ay tumutukoy sa HTML.
Ang paglipat ay mga kliyente tulad ng ikaw ay magpadala ng mga kahilingan sa
mga server, na nagbibigay sa mga tugon.
At ang protocol lamang, kung paano gawin mong asahan ang isang server upang kumilos?
At paano mo dapat na kumilos tulad na maaari mong i-streamline na ito
proseso ng komunikasyon?
>> Kaya mga kahilingan ng HTTP tumingin ng maraming tulad nito.
GET ang uri ng kahilingan.
Ikaw guys na nakita ng mga kahilingan GET at POST kahilingan.
Iyon ikalawang bagay doon, / sa akin, na lamang ang URI o ang URL ng kung saan mo
gustong pumunta sa loob ng host.
Kaya ang hiling na ito ay humihingi ng mga page, katulad www.facebook.com / akin.
At ito ay isang kahilingan GET.
At pagkatapos na ito HTTP/1.1, ito lamang ay ang bersyon ng HTTP na iyong ginagamit.
Ito ay halos palaging 1.1.
>> At pagkatapos ay mayroong isang bungkos ng masyadong iba pang mga bagay-bagay.
Maaari mong aktwal na tingnan ang mga kung buksan up ang iyong console kapag handa ka
nagba-browse sa web.
Magmumukhang Tugon higit na katulad nito.
Ang nangungunang bahagi ay, muli, ang uri ng HTTP gumagamit ka ng
sinusundan ng isang code ng katayuan.
Kaya 200 OK ay ang lahat ng bagay nagtrabaho out.
Narito ang iyong nilalaman.
Ang iyong nilalaman ay pagpunta sa sundin.
At pagkatapos ay ito sabihin sa iyo kung anong uri ng masyadong nilalaman at iba pang mga bagay-bagay.
>> Ang code ng mga katayuan, may ilang mga mahalaga sa buhay na dapat mong malaman.
200 OK ay tulad ng golden ang lahat ng bagay ay.
Gumagana ang lahat.
403 Forbidden.
Ito ay marahil nakita mo kung nakalimutan mo ang sa chmod maayos ang isang bagay.
Nangangahulugan ito na wala kang ang karapatan na pagpapahintulot upang
access na sa server.
Ito ay tulad, hindi, hindi ka maaaring makakita nito.
404 Ang ibig sabihin bagay na hindi umiiral.
Hindi natagpuan.
Marahil nakita mo na ang isang pulutong.
>> 500 Internal Server Error ay karaniwang parang may nangyaring mali sa gilid
ng server.
Kaya kapag ikaw ay pagpapatupad ng pset7, kung nagkaroon ka ng mga error sa PHP, magagawa mo
talaga pumunta sa pahina at makita ang isang ang maramihang mga bagay-bagay na PHP error.
Ngunit iyon ay hindi normal mangyari, dahil website ay hindi talagang i-
sabihin sa iyo kung bakit ang kanilang mga site ay sira.
Makikita nila marahil bumalik lamang 500 Internal Server Error.
>> At pagkatapos ay mayroong 418 Isa akong tsarera.
Mayroong isang buong kuwento tungkol sa bakit iyon ang isang bagay.
Ngunit maaari mong basahin ang tungkol na sa iyong sariling oras.
Mayroong isang buong bungkos ng iba pang mga code masyadong katayuan.
Ngunit narito ang mga bago na dapat mong malaman.
Kaya hayaan-usapan natin ang tungkol sa HTML.
HTML, alalahanin, ay hindi isang programming language.
Ito ay isang markup language.
Nangangahulugan iyon na naglalarawan ito ng nilalaman.
Sinasabi nito sa iyo kung ano ang hitsura ng isang dokumentong HTML tulad o hindi kung ano ang mukhang
ngunit kung paano ito nakaayos.
>> Kaya Tinutukoy nito ang isang istraktura at mga semantika ng mga web page.
Ito ay tulad, ito ay isang talata.
Ito ay isang nakaayos na listahan.
Ito ay tulad ng isang seksyon ng aking pahina.
Narito ang pamagat.
Ito ang mga bagay-bagay tulad na.
Hindi ito estilo ng anuman sa na, dahil na kung ano ang ginagawa mo sa CSS.
At mukhang isang serye ng nested mga tag.
Kaya gamitin ang isang halimbawa ng isang talagang pangunahing HTML na pahina, mayroon kang DOCTYPE
deklarasyon up doon.
>> Ito DOCTYPE deklarasyon ay na nagsasabi, na aming ginagamit ng HTML5.
Pagkatapos ay mayroon kang malaking tag na HTML.
Ito ay nagtataglay ng isang ulo at isang katawan.
Sa loob ng ulo, mayroon ka ng mga pamagat.
Iyon ay kung ano ang napupunta sa pamagat bar ng iyong browser.
Mayroon kaming isang link na tag na nagli-link sa isang external style sheet.
At pagkatapos ay mayroon kaming isang script na pulls mula sa isang panlabas na JavaScript pati na rin.
>> At pagkatapos ay sa loob ng aming katawan talaga ano ay makakakuha ng ipinapakita sa pahina.
Nakakuha kami ng isang talata at pagkatapos ay isang larawan sa loob na talata.
Isa na ito ay isang larawan ng mga kuting.
Pansinin na ang imahe isinasara ang kanyang sarili tag.
Kaya sa halip ng pagbubukas na may imahe at pagkatapos ay ang paggawa ng isa pang / imahe, mo
mayroon lamang ito kaunti slash dito, na kung saan nagsara ito.
At ang mga tag na imahe ay mayroon ding ang key na ito halaga ng katangian na tinatawag na alt.
Iyan ang alternatibong teksto na ang mangyayari kapag hover ka sa ibabaw nito.
>> Karamihan sa mga elemento ng HTML mayroon ilang mga pangunahing halaga mga bagay na maaari mong ibigay ito, iba't-ibang
pag-customize.
Oo.
>> Madla: [hindi marinig].
>> Angela li: Well, sa gayon ito ay isang katangian ng tag.
Kaya't kung ikaw ay gumagamit ng jQuery, magagawa mo gawin piliin ang image.getAttribute.
At pagkatapos ay maaari kang maghanap para sa makuha ang alt attribute.
At ito ay magbibigay sa iyo ng mga kuting.
Kung naaalala mo ang mga form sa HTML, input mga elemento ay magkakaroon ng katangian pangalan.
At na kung ano ay gumagamit ng PHP upang magpadala ng mga kahilingan kapag ang isang form na ay isinumite.
>> Madla: babanggitin mo ba na ang isang bagay tungkol sa kung paano kung gagamitin mo kittens.jpg o
isang bagay na may nawawalang mag-file ng mga folder o iba pang mga file?
>> Angela Li: Oo.
Kaya ito ay kung ano ang tinatawag na isang kamag-anak landas, dahil hindi ako nagbibigay sa
mo ang buong path.
Ito ay tulad ng kapag nasa C kung gagawin mo fopen ang ilang mga file, kung fopen hi.txt mo, na
hi.txt ay inaasahang maging sa parehong direktoryo, maliban na lamang kung magbigay sa iyo ito ng isang mas
kumplikadong landas.
>> Madla: Kaya maaari mong tukuyin saan folder [hindi marinig]?
>> Angela Li: Oo.
At maaari kang tumingin up kung paano gawin iyon.
Ngunit kung nais kong upang makakuha ng kittens.jpg out ng mga magulang na direktoryo, gusto kong gawin
.. / Kittens.jpg.
Oo.
Sorry.
Oo.
Oh tao, nakalimutan ko ang pinag-uusapan.
Ano ang tanong?
Oh, ang tanong ay sabihin, kittens.jpg inaasahang maging sa parehong directory?
At sa kasong ito, ito ay.
Ngunit maaari mo ring bigyan ito ng isang tiyak na landas tulad na hindi ito kailangang maging.
Magandang?
>> CSS.
Kaya CSS, tulad ng HTML, ay hindi isang programming language.
CSS ay hindi lamang isang serye ng mga panuntunan sa istilo.
Ito ay nakatayo para sa Cascading Style Sheet.
At gamitin mo ito sa pagsama may HTML na pahina ng estilo.
Kaya mayroong tatlong paraan maaari mong isama ito.
Ang isang paraan na maaari mong gawin ito ay sa head bahagi ng iyong HTML, maaari mo lamang
buksan ang isang tag ng estilo at pagkatapos ay manatili tuntunin ilang mga CSS sa doon.
Ito ay medyo OK.
Oo.
>> Madla: ma ilagay mo ang mga estilo ng mga tag sa pagitan ng, sabihin
sabihin nating, katawan at / body.
At pagkatapos ay mapupunta ka sa istilo lamang sa katawan.
>> Angela li: magagawa mo.
Makikita itong gumana.
Ngunit hindi ka dapat, dahil sa istilo ay uri ng metadata na dapat pumunta sa
head ng iyong dokumento.
Katawan dapat talaga maglaman lamang kung ano ang aktwal na pagpunta sa
ipakita ang up sa iyong pahina.
>> Madla: So gusto mong ilagay estilo sa iyong ulo sa estilo ng
buong web page, i-right?
>> Angela Li: Oo.
Kaya paglalagay ng estilo dito, ang mga panuntunang ito CSS ay ilalapat sa ang buong pahina batay sa
kanilang tagapili.
Kaya ang mas mahusay na paraan upang gawin ito ay sa halip ng pagkakaroon ng isang tag ng estilo sa iyong ulo,
mayroon kang ang link na ito sa isang panlabas na estilo sheet tulad ng ipinakita ko sa iyo sa
nakaraang halimbawa.
Ano ang ginagawa ay sinusubukan ng ito at hahanapin ng maghain style.css at pagkatapos pulls ito
sa at ginagamit na bilang estilo para sa pahina.
At iyong style.css gagawin tingnan lamang na katulad nito.
Mas lamang ng grupo ng CSS.
>> At sa wakas, mayroong isa pang paraan kung paano ka maaaring magsama ng CSS, na ikaw talaga
hindi dapat kailanman gawin.
Ito ay tawag inline na estilo.
At sa gayon ang anumang elemento ng HTML maaari ring kumuha ng isang katangian ng estilo.
At pagkatapos ay sa na estilo katangian, maaari mong bigyan ito ng mga panuntunan sa CSS.
Kaya sa kasong ito, ang kahit anong div ako pagtukoy dito mismo, ito ay pagpunta sa
magkaroon ng isang itim na background at may puting kulay ng teksto.
Ngunit hindi mo dapat gawin ito, dahil kung ano na ito ay ay naglalagay nito ang iyong estilo
sa loob ng iyong HTML.
>> At alam ko na pinag-uusapan na namin ang tungkol sa HTML ay istraktura at CSS style.
Kung gagawin mo ito, mixes ito ang mga ito nang sama-sama.
At ito ay hindi masyadong malinis.
Kaya huwag gawin iyon.
Gamit ang isang halimbawa ng CSS, hanggang doon, namin piliin lamang ang mga katawan ng HTML
dokumentaryo.
At kami ay tulad, ang lahat ng bagay ay pagpunta sa maging Comic Sans.
Hindi ko rin namin na.
Ngunit maaari mong gawin iyon.
>> Ang ikalawang panuntunan dito mismo, ito ay pagpunta upang piliin ang mga elemento sa
pahina na may ID pangunahing.
Kaya kahit anong HTML element ID, sinabi ko = Main, pupuntahan ko bigyan na ang isang
20-pixel margin at ihanay ang lahat ng bagay, lahat ng teksto, sa sentro.
Ang huling bagay pumipili sa pamamagitan ng CSS class.
Kaya ang anumang elemento sa pahina na Nagbigay ako isang klase seksyon, Pupunta ako upang gawin itong
ng isang kulay ng background ng mapusyaw na asul.
Yep.
Iyon lang ang Nakatanggap ako.
Tanong?
>> Madla: Ano ang ginagawa ng hashtag bago pangunahing gawin?
>> Angela li: Ang tanong ay, kung ano ang ginagawa ang hashtag bago pangunahing do?
Sa kasong ito, ang hash sa CSS ay nangangahulugan piliin sa pamamagitan ng ID.
Kaya kung mayroon akong ilang mga elemento ng HTML, tulad ng divID = main, ito CSS pipili na panuntunan
ang bagay na may ID pangunahing.
At katulad, ang panahon sa harap ng seksyon ay piliin sa pamamagitan ng CSS klase o
piliin sa pamamagitan ng HTML class.
>> Madla: Bakit mayroong isang may bago 6 sa kulay ng background?
>> Angela Li: Oo.
Kaya ang tanong ay, kung bakit ay mayroong isang hash bago ang 6?
Ito ay naiiba kaysa na hash.
Nangangahulugan ito na kayo ay nagbibigay sa isang hexadecimal kulay.
Kaya hex kulay, ito lamang ay kumakatawan sa isang kulay.
At tandaan mo RGB triples kapag ginawa mo ang forensics pset?
Ito ay pareho.
Kumakatawan Ang unang dalawang digit kung magkano ang pula ay nasa kulay.
Ang pangalawang dalawang kumatawan kung magkano ang berde.
At ang ikatlong kumakatawan kung magkano ang asul.
At ang mga hash ay ito ay pagpunta upang kumatawan ng isang kulay.
>> Kaya kahit ano mula sa 0, 0, 0, 0, 0, 0 hanggang sa F, F, F, F, F, F ay may-bisa.
Ito ay ilang mga wastong kulay na maaari ay ipapakita ng iyong browser.
Tanong?
>> Madla: Ano ang pagkakaiba sa pagitan ng paggamit ng ID at sa pamamagitan ng klase?
>> Angela li: Ang tanong ay kung ano ang ang pagkakaiba sa pagitan ng
paggamit ng ID at klase?
Maaari lamang magkaroon ng isang elemento sa isang HTML na dokumento na may isang ibinigay na ID.
Kaya lamang ng isang bagay sa aking pahina ang pinapayagan na magkaroon ng ID pangunahing.
Kaya gamitin mo ito para ito ang header.
Ito ang navigation.
Ito ang footer.
Mga klase ay iba, dahil maaari ka ilapat ang mga klase sa bilang maraming mga elemento ng HTML
hangga't gusto mo.
>> Kaya halimbawa, ginawa ko seksyon ng klase, dahil mayroong marahil higit pa sa isang
seksyon sa aking pahina.
Lamang ka pinapayagang magkaroon ng maraming mga elemento sa pahina na may parehong
klase ngunit isa lamang na may isang tiyak na ID.
>> Madla: Kaya kumakatawan sa tuldok ang klase?
>> Angela Li: Oo.
Kinakatawan ng isang tuldok isang klase.
Cool.
Iyon lang ang mayroon ako, guys.
Salamat sa inyo.
>> [Palakpakan]
>> ZAMYLA Chan: Hi, sa lahat.
Ako Zamyla.
Pupunta ako sa ma sumasaklaw sa PHP, MVC, at SQL ngayon.
Ang isang pulutong ng mga materyal na kukunin ko na maging pantakip ay magiging kaakit-akit magkano
karapatan out sa pset7.
Ayos lang.
Kaya kung ano ang PHP?
PHP nakatayo para sa PHP Hypertext Preprocessor.
Kaya ito, sa sarili nito, ay isang recursive pangalanan, na kung saan ay medyo cool.
PHP ay isang wika na server-side scripting, at ito ay nagbibigay ng backend
at ang mga lohikal na underpinnings sa aming website.
>> Kaya Angela usapan ng maraming tungkol sa HTML at CSS na ito at gumawa ng istraktura
ng website.
Ngunit paano kung gusto mong baguhin na pabago-bago o kung ito ay nagkakaiba-iba ng nilalaman
batay sa mga gumagamit o ilang mga kundisyon?
Iyon ay kung saan ay PHP in
Ngayon, karaniwan, PHP ay maaaring tumagal ng ilang mas mababa mga linya upang ipatupad ang parehong bagay
sa C. Iyon ay dahil sa PHP humahawak ng memory pamamahala para sa mga programmer,
bilang kabaligtaran sa amin na kinakailangang i-malloc libre, ang mga bagay tulad na.
>> Ngunit dahil PHP ay isang interpretive wika, karaniwang, maaaring isakatuparan
medyo mas mabagal kaysa sa C, na ay isang pinagsama-sama wika.
Dahil kami ay gumagalaw sa programming mga wika, tingnan natin ipaalam kung paano ang
mag-iiba syntax.
Maging napaka-ingat na hindi Hayaang makakuha ng nalilito sa ito.
Kaya may syntax PHP, kung ikaw ay embed ng iyong PHP sa loob ng isang HTML
mag-file o sa loob ng isang. php file mismo, mo kailangan upang mapaligiran ang code sa bukas
PHP at ang nakasarang mga tag PHP tulad ng susunod, tulad ng sa screen.
>> Mga variable sa PHP.
Ang bawat solong variable ay magsisimula sa ang $ sign na sinusundan ng pangalan ng
ang iyong mga variable.
Ngayon, mga variable sa PHP ay maluwag nai-type, na nangangahulugan na hindi mo kailangang
upang ipahiwatig kung ano ang uri ng data ay kapag ikaw ay naka deklarasyon ito.
Gayunpaman, ito ay hindi nangangahulugan na sila Walang anumang uri sa lahat.
Kaya kung Ipinahahayag ko sa isang variable at i-set lamang ito kasing-halaga sa 1, at pagkatapos ay Ipinahahayag ko
isa pang variable, itakda ito katumbas ng "1," at pagkatapos ng isa pa 1.0, mahusay,
depende sa uri ng pagkakapantay-pantay operator ang gagamitin ko, kung gusto ko upang ihambing
sa lahat ng mga uri, pagkatapos ay i- ang mga ito ay magiging katumbas.
Ngunit kung gusto ko upang matiyak na ang mga uri ay pantay-pantay, maaari pa ring PHP gawin
na, kahit na hindi namin ipahiwatig anong uri ito ay kapag kami
gawin ang mga file muna.
>> Ngayon, sa PHP, kahit kami ay lumilipat sa ibabaw mula sa programming
wika mula sa C, mayroon pa rin namin ang aming mapagkakatiwalaan kung kundisyon, tulad nito lamang.
Mayroon pa rin namin ang aming habang loop, lamang tulad nito, kung saan inilagay mo sa iyong
kalagayan at pagkatapos ay ang katawan ng loop.
At pagkatapos ay mayroon din namin ang aming para sa loop, na kung saan ay karaniwang mukhang ganito.
Kaya kung nais kong umulit sa ibabaw ng lahat siyam psets at isumite at tawagan ang isang
function na submitPset, pagkatapos ay maaari kong gawin iyon dito, na kung saan ka guys na ang lahat
tapos na sa pamamagitan ng puntong ito.
Binabati kita, sa pamamagitan ng ang paraan.
>> Para sa mga camera, mga tao sinabing, salamat sa iyo.
Ngayon, kung hindi mo nais na gumamit lamang ito para sa loop, pagkatapos ay PHP aktwal na rin
ay mga bagay na tinatawag na foreach loop.
Kaya kung mayroon akong isang array ng integer, 0 sa pamamagitan ng 8, na naka-imbak sa array psets,
pagkatapos ay maaari kong magkaroon ng isang foreach loop na iterates sa paglipas ng bawat numero sa psets.
At pagkatapos ay maaari kong tawagan ang parehong gumana walong beses,
tulad lang ng ginawa ko dati.
Kaya ito para sa bawat loop ay maganda, dahil hindi mo kailangang i-kung hindi mo alam
ang eksaktong haba ng array na pa, pagkatapos gamit ang foreach loop
Dadalhin pag-aalaga ng na para sa iyo.
>> Kaya ginawa ko psets bilang isang array.
Tignan natin ang Hayaang.
Ang mga array sa PHP ay karaniwang ang parehong bilang sana ang mga na mayroon kaming sa C, kung saan
maaari mong magpahayag ng isang array.
At dito, maaari ba akong idedeklara isang walang laman na array at pagkatapos ay bumuo ng hanggang dynamic na sa pamamagitan ng paggamit
mga indeks ng bilang integer.
Kaya index 0, ako pagpunta sa mag-imbak isang integer na may pangalang 1.
Sa index ng 1 sa aking listahan, ako ng pagpunta upang i-imbak ang halaga 2.
At sa ikatlong index ngunit ang pangalawang numero, pupuntahan ko
mag-imbak ang numero 12.
>> Ngayon, ito ay pinong sa na Gumagana rin ito gumagana.
Ngunit sinasabi ang mahalaga ito sa akin kung ano ang bawat index hold.
Para sa akin, index 0 ibig sabihin kung paano maraming pusa Mayroon akong.
At sa index ng 1 ibig sabihin kung paano maraming owls Mayroon akong.
At sa susunod na isa ay nangangahulugan kung gaano karaming mga aso.
Well, kung gayon ito upang tukuyin iyon, sa halip ng pagkakaroon matandaan 0 magkaugnay sa
pusa at 1 sa owls, maaari ko bang gamitin ang nag-uugnay array, na nangangahulugan na ang
sa halip ng integer tulad ng aking mga indeks, Maaari ko talagang gamitin ang mga string.
>> Kaya ito ay lubos na kapaki-pakinabang.
At isa lamang mo na pinalitan lamang ang integer na may mga string.
At doon mayroon kang isang nag-uugnay array.
Oo.
>> Madla: Mayroon bang isang dahilan kung bakit may isang salungguhit para sa ikalawang
bahagi, dahil ang aking list ay ang array.
>> ZAMYLA Chan: Ang tanong ay, ay Mayroon bang isang dahilan kung bakit mayroong isang
magbigay-diin sa pagitan ng aking listahan at?
Hindi.
Iyon lang paano ako pagbibigay ng pangalan ang aking mga variable.
>> Madla: Nasa unang linya, ito ay isang salita.
>> ZAMYLA Chan: My pasensiya.
Kukunin ko ayusin iyon.
Oo.
Ito ay dapat nasa parehong pangalan ng variable.
Magandang catch.
OK.
Kaya sabihin lumipat sa string pagdudugtong.
Kung Nais kong magsagawa ng dalawang mga string, pagkatapos ay maaari kong pagdugtungin ang mga ito
may mga tuldok na operator.
Kaya kung mayroon akong Milo bilang isang unang pangalan at Saging bilang isang apelyido, pagkatapos ay
concatenating may mga tuldok operator at pagkatapos ng paglalagay ng espasyo sa pagitan ng
gagawa ang isang string na naglalaman ng Milo Saging, na maaari kong pagkatapos Echo o,
sa halip, mag-print.
>> Nagsasalita ng echo, ni makipag-usap ipaalam tungkol sa ilang mga kapaki-pakinabang -
oops.
Sorry.
Ang ilang mga kapaki-pakinabang na mga function na PHP.
Kaya mayroon kaming ang -
mga kahirapan sa teknikal.
Isang pangalawang.
Ipinadala ko ito.
Mga problema sa PowerPoint.
At ang pabalik namin sa mga function na PHP.
>> Kaya namin ang nangangailangan ng pag-andar, kung saan kung pumasa ka sa isang file, narito ay lamang
isang halimbawa ng isang file na Maaaring pumasa in ako
Pagkatapos na isama ang code na PHP mula sa na file na isaad ko.
At ito ay suriin na in
Pagkatapos ay mayroon din kami echo, na ay isang parallel sa printf.
Lumabas ay isang parallel sa masira, na kung saan lumabas ang bloke ng
code na ikaw ay in
At pagkatapos ay walang laman mga tseke kung ang isang ibinigay na variable ay tulad null o zero o
ano naman ay equated sa pagiging walang laman.
Oo.
>> Madla: Para sa mga string pagdudugtong tuldok operator ng isa, sa PHP, ay ang
katulad ng nasa JavaScript kung saan gumagamit ito ang tuldok para sa pagdudugtong nangangahulugan plus?
Kaya para sa buong pangalan, maaari kang magkaroon ng dolyar mag-sign unang + at pagkatapos + magtatagal?
>> ZAMYLA Chan: Oo.
Kaya ang tanong ay kung sa PHP namin maaaring gumamit ng parehong string pagdudugtong
bilang sa JavaScript na may plus.
At Joseph ay dumapo na sa ibang pagkakataon.
Sa tingin ko siya ay may isang slide sa na.
Talaga, iba ito.
Kaya sa JavaScript, kailangan mong gumamit ang plus upang pagdugtungin string.
At sa PHP, kailangan mong gamitin ang tuldok operator.
Kaya ang mga ito ay naiiba.
>> OK.
Kaya ngayon na nai-sakop namin ang lahat ng ito ang PHP, kung saan ginagawa nito
talagang dumating sa madaling-magamit?
Well, pagdating sa madaling-magamit na kapag kami maaari itong pagsamahin sa aming HTML.
Kaya aming PHP ay magbibigay sa amin ng kapangyarihan upang baguhin ang nilalaman ng HTML ng isang pahina bago ang
naglo-load nito.
Kaya batay sa iba't ibang mga kundisyon, karaniwang ang tiyak na user na
log in ka, maaari naming ipakita iba't ibang impormasyon.
Linda, ay may tanong ka?
>> Madla: Maaari mong pagdugtungin isang integer rin?
>> ZAMYLA Chan: Oo, magagawa mo na.
Kaya ang tanong ay kung maaari kang pagdugtungin integer o iba pang
variable.s ngayon, ilipat namin sa upang MVC, na ay isang tularan na namin ginagamit sa
pset7 at maraming web designer gamitin para sa pag-aayos ng mga code sa ang mga file
sa kanilang website.
M ang ibig sabihin ay Modelo.
At talaga, mga file modelo ay haharapin may mga pakikipag-ugnayan sa database.
Tingnan ang mga file, ng mga ito sa aesthetics ng website.
At Controller handle mga kahilingan ng gumagamit, Pina-parse
data, ang iba pang logic.
>> Sa pset7, pinagsama namin ang mga modelo at ang controller.
At tinawag lang namin ang mga ito controllers at ilagay ang mga ito sa pampublikong direktoryo.
At ang mga file view, ginagamit namin ang mga ito bilang mga template sa direktoryo template.
Kaya kumakatawan din ito diagram dito na parehong uri ng paghahati sa
modelo at ang controller sa mga lilang dito sa kaliwa at
ang view sa kanan.
Kaya ito ay isang eskematiko na ang ilan sa iyo maaaring nakakita sa Oras o sa Opisina
diagram tayo ay pagguhit ng bilang mo ay ang pag-uunawa iyong pset.
>> Kaya dito, sa isang ibinigay na controller, isang modelo controller, mayroon kaming mga pag-andar
na umuugnay sa querying ang SQL database, e-execute PHP logic.
Siguro gusto mong maghanap isang stock sa Yahoo!
Finance.
O di kaya, gusto mong tingnan lamang sa makita kung ang isang gumagamit ay nagsumite ng isang
bumubuo na bago pagkakaroon bumisita sa iyong pahina.
At pagkatapos ay nais mong i-render isang bumubuo sa paglipas dito.
Pagkatapos ng form na iyon ay naisumite sa pamamagitan ng gumagamit, ang pagkilos na noon ay
tinukoy sa tag na HTML form ni Gusto isaad ang pahina na ito
Ibinabalik ang data na iyon sa.
>> Kaya lahat ng impormasyon na iyon ay magiging ipinadala pabalik sa iyong controller.
Pagkatapos nais mong gawin marahil ng kaunti pang logic sa na at siguro execute ng ilang
higit pang mga query sa database ng SQL at pagkatapos, sa wakas, makabuo ng isang mahusay
naka-pack na hanay ng mga impormasyon na iyong gagawin pumasa sa sa ilang iba pang mga template
na ipinapakita na impormasyon.
Ngayon, paano ko kami talaga-package na impormasyon up?
Well, mayroon kaming isang function na tinatawag na render na noon ay nasa functions.php file sa
pset7, kung saan ang pumasa sa iyo sa pangalan ng isang file, ang pangalan ng isang template.
>> At pagkatapos rin pumasa ka sa isang nag-uugnay array.
At gayon ay kumakatawan na nag-uugnay array ang iba't ibang impormasyon
na gusto mong pumasa in
Ngayon, kung ano ang nangyayari upang maging pare-pareho sa mga halimbawa ay ang susi o,
sa halip, ang mga key ng nag-uugnay array, mga ay kung ano ang nangyayari upang maging
inaasahang maging pare-pareho sa pamamagitan ng mga template, dahil alam nito na kailangan nito
isang bagay na tinatawag na mensahe o tinatawag na pangalan.
At pagkatapos ay ang mga bagay sa kanan, ang aktwal na mga halaga, kaya sa kasong ito, kung sino ang
isang magandang batang lalaki at Milo, mga pupunta na maging ang mga halaga na ay nagbabago
na ang controller nagbabago sa bawat oras o batay sa isang tiyak na kalagayan at
ay pumasa na in
>> Kaya dito sa template, nakita namin na namin Gumagamit ka ng HTML mga espesyal na character,
kung saan talaga lamang ay nangangahulugan na gusto naming upang makuha ang peer string na ang
ilagay in gumagamit
At gusto naming palitan mensahe sa doon.
Kaya pagkatapos ay kapag aktwal namin tingnan ang file, ang mga partikular na
impormasyon Lumipas in
Tandaan na ang susi sa kung paano mag-render mga gawa ay na ang mga key ng nag-uugnay
array, mga maging variable mga pangalan dito.
At kaya ang mga halaga ng na key sa nag-uugnay array pagkatapos ay nagiging
halaga ng variable.
>> Ngayon, ni lumipat sa SQL ipaalam.
Ito ang ibig sabihin ay Naka-istrakturang -Query Wika.
At kaya ito ay programming lamang wika dinisenyo
para sa pamamahala ng mga database.
At ito ay dumating sa madaling-gamiting para sa amin sa aming website pananalapi pset7.
Mahalaga, ito lamang ay isang madaling paraan upang subaybayan at pamahalaan ang mga bagay at mga talahanayan
at i-link ang mga ito sa isa't isa.
Ngayon, isipin ang iyong database ng SQL talaga bilang isang Excel file, marahil,
may maramihang mga naka-tab na mga sheet.
>> Kaya maaaring mayroon kang maramihang mga talahanayan, marahil, na naka-link sa isa't isa.
At tulad ng Excel, mayroon kami ng maraming ang pag-andar na gusto naming.
Halimbawa, maaari naming piliin tiyak na mga hilera.
Maaari naming magpasok ng impormasyon.
Maaari naming i-update ang mga hilera.
At maaari naming ring tanggalin ang mga bagay.
>> SQL Ang piliin gawa sa pamamagitan ng pagpili hilera o isang hilera ng mga tinukoy na mga hanay mula sa isang
database na tumutugma sa isang tiyak na pamantayan na nagpapahiwatig sa iyo.
Kaya sa paglipas dito kapag nakita kong piliin * mula sa wizard kung saan bahay = Ravenclaw, pagkatapos ay
Ako ng pagpili *, na nangangahulugan na ako ay pagpili sa bawat solong hanay sa na
Ang hilera mula sa talahanayan wizard ngunit kung lamang ang haligi ng bahay ay katumbas ng Ravenclaw.
Ngayon, ito ay purong o SQL.
Kaya kung ako nagpunta sa PHPmyadmin, na ang partikular na paraan na ginagamit namin upang pamahalaan ang
ang aming mga database ng SQL, pagkatapos ay maaari kong magpasok ng mga na sa PHPmyadmin website.
At na nais isakatuparan.
>> Ngunit namin gusto talaga gawin na sa gilid ng PHP.
Kaya kung paano ang gagawin namin na?
Well, gagamitin namin ang mga query function, kung saan talaga executes na SQL query.
Ang paggamit?
bilang isang placeholder, maaari naming pumasa sa ilang mga mga halaga sa aming mga string na namin
gusto ninyong palitan.
Kaya marahil ako sa pag-iimbak ng iba't ibang mga halaga sa curr_house, na
ay kumakatawan sa kasalukuyang bahay na ako pupunta sa pamamagitan ng.
Kaya ang maaari kong pumasa na sa bilang placeholder may ng tandang pananong.
At pagkatapos ay ako makakakita talaga isakatuparan ang parehong bagay tulad ng ginawa ko dati, maliban
ngayon, ako sa PHP.
>> At query ay magbabalik ng isang nag-uugnay array.
At ako pupunta upang mag-imbak ito sa mga hilera.
Ngayon, ang query ay maaaring palaging mabibigo.
Marahil na ang SQL query ay hindi ma execute dahil ang talahanayan ay hindi umiiral.
O di kaya, ang haligi ay hindi umiiral.
May nangyaring mali.
Well, sa kasong iyon, makikita mo gusto upang gawing Siguraduhin na i-tsek kung ang mga
query ibinalik na hindi totoo.
At iyon sa pamamagitan ng paggamit ng triple ay katumbas ng operasyon doon.
>> At pagkatapos ay humihingi ako ng paumanhin, kung saan ay isa pang CS50 function, ang pagpasa sa isang mensahe.
At kung titingnan mo sa Humihingi, ang lahat ng ito talaga ginagawa ay render apology.php.
Oo.
>> Madla: Maaari mo bang ipaliwanag kung ano na star ginagawa sa pagitan ng piliin at mula sa?
>> ZAMYLA Chan: Oo, walang pasubali.
Kaya ang bituin sa pagitan ng mga piling at mula sa Ang ibig sabihin na gusto kong piliin ang buong
buong hilera mula sa aking mga talahanayan.
Maaari ko ang ipinahiwatig piliin ang pangalanan, taon, bahay.
At ako ay lamang makakuha ng mga tatlong mga haligi sa aking mga talahanayan.
Ngunit kung sasabihin kong piliin *, pagkatapos ay idedetalye ko makakuha ng lahat ng bagay sa hanay na iyon.
Pagkatapos pupuntahan ko pumunta ka sa unang likod.
>> Madla: Kaya ito ay pa rin sa SQL, tama?
Ay sa query na ito o ay ito na PHP?
>> ZAMYLA Chan: Kami ay sa isang query.
Kaya ito ay nasa PHP.
Kaya gamit ang query function na PHP, kami ay nagpapatupad ng isang SQL query.
>> Madla: Ay kahit ano sa SQL case-sensitive, tulad piliin
o wizard o bahay?
>> ZAMYLA Chan: Ay kahit ano sa SQL case-sensitive?
Naniniwala akong kaya, oo.
Naniniwala ako na pumili at FROM at SAAN ay case-sensitive.
Walang?
>> Rob BOWDEN: Kaya, ito ay ang kabaligtaran.
Ang mga pangalan ng haligi at ng talahanayan paraan, lahat ng mga ay case-sensitive.
Ngunit anuman sa MySQL key salita, tulad ng Piliin, MULA, at SAAN, ang mga ito ay hindi
case-sensitive.
OK.
Kaya ang katapat ng kung ano ang aking sinabi.
Kaya lahat ng mga MySQL mga keyword -
pumili, mula sa, kung saan - mga ay hindi case-sensitive.
Ngunit lahat ng iba pa ay.
OK.
Ikaw nasa harap.
>> Madla: Kung $ ko mga hilera sa mga tuntunin ng higit sa isang hilera, ang mean na
lamang ay nagiging isang nag-uugnay array?
>> ZAMYLA Chan: Kaya ang tanong ay kung hilera may higit sa isang hilera sa loob nito, ang
itong maging isang nag-uugnay array?
Kaya ito ay isang hanay ng mga nag-uugnay array na.
Kaya kahit na mayroong hilera lamang ng isang ibinalik, pagkatapos ay kailangan mong i-pumunta sa
0 index ng resultang iyon.
At pagkatapos ay nais mong magkaroon ng na unang hilera.
Oo, Belinda?
>> Madla: Kapag ginamit mo ===, ay ito lamang ang tanging pagkakataon?
O kaya ay iba pa doon?
>> ZAMYLA Chan: Kaya sa kasong ito, === ay isang paghahambing sa kabuuan ng mga uri.
Sorry. === Ay isang paghahambing na naghahambing sa mga uri.
At pagkatapos == ikinukumpara sa lahat ng mga uri.
>> Madla: Maaari mo bang ipaliwanag kung ano hilera ay sa sitwasyong ito?
Ay Ang hilera ito ng data?
>> ZAMYLA Chan: Sa susunod na slide, ako pagpunta sa ipaliwanag kung ano mga hilera ay.
Kaya kung hindi tututol kayo na may hawak na off sa na.
At pagkatapos mo sa likod?
>> Madla: Para sa mga pag-andar tulad ng query, render at humihingi [hindi marinig]?
>> ZAMYLA Chan: Ang tanong ay kung mga function - query, humihingi kami ng paumanhin,
at i-render -
ay karaniwan sa PHP.
Ang mga ito ang mga bago na CS50 Sinulat ni para pset7.
At Jay?
>> Madla: Kapag kailangan mong sabihin $ _session, Ay na lamang para sa mga ID?
O maaari kang sinabi na dito?
>> ZAMYLA Chan: Kaya ang tanong ay, kapag gumagamit kami ng $ _session, na noon ay isang tiyak na
global variable na ginagamit namin.
Narito ito variable ay pagpunta sa maging lokal sa aming mga function.
Kaya kami lamang ang deklarasyon isang bagong variable.
>> Madla: Paano ay humihingi ng paumanhin ipinatupad?
>> ZAMYLA Chan: Ang tanong ay, paano ay humihingi ng paumanhin ipinatupad?
At sa tingin ko ito ay talagang isang kaakit-akit mahusay na kasanayan para sa iyo guys upang pumunta sa
ang functions.php seksyon at tumingin sa Humihingi at makita kung paano mo maaaring magkaroon ng
tapos na ito sa iyong sarili.
Kaya maaari ko bang iwan na sa iyo ngunit lamang sabihin na kung tiningnan mo ang humihingi ng paumanhin,
pagkatapos ay madadala ang mensahe na iyong na isinumite sa Humihingi, at pagkatapos nito
nagpapagana sa mensaheng iyon.
Anumang higit pang mga tanong?
Gustung-gusto ko ang mga tanong.
Kaya panatilihin ang mga ito pagdating.
>> Madla: [hindi marinig]
echo o i-print doon?
>> ZAMYLA Chan: Ang tanong ay, maaari kaming hindi lamang pinagsikapan
echo o i-print doon.
Kaya na sana ay tapos na isang bagay bahagyang naiiba.
Iyon sana ay naka-print na query Nabigo sa na -
mahusay, sa ngayon, hindi namin talaga sa aming controller.
Kaya hindi talaga kaming Set up ang HTML dito.
Humihingi sa pamamagitan ng pag-render apologize.php talaga nagre-redirect ka sa apology.php.
OK.
>> Kaya ngayon, sabihin pumunta sa upang tugunan ang tanong mula sa mas maaga tungkol sa kung ano
ay tunay na mga hilera.
Well, ay magbabalik query isang array ng mga hilera.
At bawat hilera ay kinakatawan sa pamamagitan ng isang nag-uugnay array.
Kaya kung naipatupad na ako ng ilang SQL query at Naka-imbak ko na ang mga resulta sa mga hilera, pagkatapos ay
gamit ang isang foreach loop, pagkatapos ay ang array pangalan ay ang unang isa doon - hilera.
At pagkatapos ay ako pagpunta sa tumawag sa bawat hilera sa may $ hilera.
>> Kaya iterating sa ibabaw na, ako maaaring pagkatapos ay ma-access ang haligi ng pangalan ng ibinigay na hilera ng,
taon haligi, at haligi bahay.
Tandaan na hindi ko pa magawang i- gawin ito sa mga hilera, dahil ang mga hilera index
pangalan ay hindi umiiral.
Mga hilera ay isa lamang na hanay ng mga nag-uugnay array.
Kaya mayroon kang dalawang mga antas ng doon.
Sa sandaling mayroon ka ng mga array ng mga hilera, mayroon kang upang makakuha ng sa na.
At pagkatapos ay maaari mong ma-access ang mga hanay.
Ang ibig na gawin itong malinaw?
Oo, sa harapan?
>> Madla: [hindi marinig] buksan bracket para sa [hindi marinig]?
>> ZAMYLA Chan: Pakiulit sa akin?
>> Madla: ang open bracket.
>> ZAMYLA Chan: Ang mga dito?
Na nagbibigay-daan sa akin upang isama na variable.
Oo.
>> Madla: Kapag nag-print ka, ikaw ay nagpi-print sa HTML code?
>> ZAMYLA Chan: Oo.
Kapag i-print ko, ito dito ay nasa loob aking template ngayon, kaya
aking tanawin ng MVC pamamaraan.
Kaya ako sa pag-print sa HTML.
>> Madla: Kaya kung namin nagpunta sa developer mga tool pagkatapos tumatakbo na ito, magagawa namin
na talaga sa code?
>> ZAMYLA Chan: Iyon ay isang mahusay na pinag-uusapan, oo.
Kaya kung pinuntahan mo papunta sa mga tool ng nag-develop sa Firefox gamit Firebug o
Chrome, pagkatapos ay oo, magagawa mo makita ang tiyak na HTML.
Kaya hindi ito ay magpapakita ng $ hilera ["Pangalan"].
Gusto ito magpakita alinman ang name ay nasa hilera na.
>> Madla: lamang ng isang pangkalahatang isyu, ano ang tr at td tinukoy bilang?
Bakit namin [hindi marinig]?
>> ZAMYLA Chan: hilera tr Table, talahanayan pagkatapos td haligi.
OK.
>> Madla: Oo, ito ay ang data ng talahanayan.
>> ZAMYLA Chan: data Table.
Oo.
>> Madla: Ito ay isang hilera na kung saan ang hilera ay itinuturing tulad ng isang haligi?
>> ZAMYLA Chan: Paumanhin.
Maaari mong ulitin na?
>> Madla: Paano gagawin mo ilarawan sa isip ang mga hilera?
>> ZAMYLA Chan: Paano mo ilarawan sa isip hilera sa kung anong uri ng paraan?
Sigurado ka ng pakikipag-usap tungkol sa mga ito hilera dito o ang mga hilera tr?
>> Madla: Ang hilera.
>> ZAMYLA Chan: mga hilerang ito dito?
Gusto ko ilarawan sa isip na ito bilang Isakatuparan ko ang aking query.
At sinasabi nito, OK, mayroon akong alinman sa 0 hanggang n dami ng mga hilera na tumutugma sa pamantayang
na ikaw ay na-query.
Kaya bang makakuha ng ilang bilang ng mga hilera.
Kaya mga hilera, mga $ hilera, mga tindahan ng bawat isa sa mga hilera sa isang array.
Kaya kahit na ito ay isa lamang sa mga ito, ito ay pa rin ng isang array ng mga hilera na tumutugma ito.
>> Kaya pagkatapos ay, halimbawa, ito ay katulad ng kapag nag-fetch
ang cache mula sa mga gumagamit.
At ang pamantayan nagkaroon saan Ay katumbas ng ID ng session ID.
Mayroon talagang lamang ay isang hilera na maaaring tumugma na.
Ngunit pa rin hilera ibinalik lamang sa isang hilera.
Kaya ang kailangan mong i pumunta sa mga hilera, 0 index, index ng cache sa
talaga makapunta sa iyong cache.
>> Madla: Ay ang function sa pag-print sa Echo ang parehong bagay?
>> ZAMYLA Chan: Oo.
Oo.
I-print ka ng echo ng pareho.
>> Madla: ba ang foreach loop ang tanging paraan upang i-index sa mga hilera?
>> ZAMYLA Chan: Ay isang foreach loop ang tanging paraan na maaari mong
umulit sa pamamagitan ng hilera?
Hindi.
Maaari ka ring gumamit ng isang para sa loop, na ibinigay na alam mo ang haba
ng array ang hilera ng.
>> Madla: Maaari mo bang i-access ito gamit ang isang hilera ng [mga hindi marinig]?
>> ZAMYLA Chan: Kaya hindi mo ma-access ito kung wala kang lamang gamit ang hilera ng
foreach loop ibinigay na hindi mo pa ipinahayag hilera.
Oo.
Oo, sa puti.
>> Madla: Kaya ano ang gagawin tr at td gawin?
>> ZAMYLA Chan: Kaya tr at td ay mga tag na HTML.
tr nagpapahiwatig ng simula ng isang hilera ng talahanayan.
At bawat td ay nagpapahiwatig ng isang bagong hanay ng data ng talahanayan.
>> Madla: Para sa isang visual na ng kung ano ang isang hilera ay tulad, isipin lamang ang SQL, paano
mayroon silang isang hilera.
[Hindi marinig].
>> ZAMYLA Chan: Oo.
Iyon ay isang mahusay na punto.
Maaari mong ilarawan sa isip ang mga hilera bilang lamang tulad ng sa isang Excel talahanayan, lamang
ang listahan ng mga hilera.
OK.
Ayos lang.
Kaya ngayon na na-nawala namin sa paglipas ng piliin, kung may mga hindi anumang higit pang mga katanungan, kami ay
pumunta sa ibabaw papunta insert.
Kaya kung nais kong isingit sa ilang mesa at ipasok ang ilang mga haligi
mga halaga, maaari ko bang ipasok ang aking sarili sa Ravenclaw sa taon 7.
Ngunit minsan ay maaaring maging duplicate doon halaga, tulad ng nakita natin sa pset7 kung kailan namin
ay ina-update ang aming portfolio.
>> Kaya sa kasong ito, nais naming gamitin ON Doblehin ang KEY UPDATE, nang sa gayon ay hindi namin
mag-imbak ng maramihang mga hilera na may parehong Pinahahalagahan ngunit sa halip i-update ito.
Pagkatapos talaga kami ng pag-update, na kung saan ay hindi isang insert.
Ito ay lamang ng isang update kung saan mo i-update sa isang tiyak na talahanayan na may isang naibigay na
pamantayan at pagkatapos, sa wakas, tanggalin, na gagawin ng isang halos katulad na bagay.
>> Madla: Maaari mo bang sa madaling sabi pumunta sa ibabaw ng duplicate key?
>> ZAMYLA Chan: Oo.
Mahalaga dito, mayroon akong INSERT SA gringotts, ay, galleons, ang mga halagang ito.
Ngunit ID, siguro, ay isang natatanging key set up ang halaga sa MySQL talahanayan.
Kaya kung nai-set up ako ng ID na, pagkatapos ay hindi ko maaaring magpasok ng isang bagong hilera.
Kaya kung hindi nito umiiral na, pagkatapos Mayroon akong upang i-update ito.
Sa gitna sa puti.
>> Madla: Kaya isingit, i-update, magtanggal, at piliin, ay ang mga lahat ng mga magagamit
lokal na [hindi marinig]?
>> ZAMYLA Chan: Kaya isingit, update, magtanggal, at
piliin ang lahat ng mga query SQL.
Kaya sa tuwing gumagamit ka ng SQL, magkakaroon ka ng mga magagamit.
>> Madla: Bumalik sa nakaraang pagsusulit -
nagkaroon ng isang katanungan na may Aaksyunan kung nagkaroon ka ng isang talahanayan at nais na
magpasok ng mga marka ng pagsubok sa isa at mong isingit ang iyong pangalan kaya hindi ito ipaalam sa iyo
[Hindi marinig] test score ng iyong kaibigan.
Paano gagawin mo na may insert?
>> ZAMYLA Chan: Kaya ang tanong ay tungkol sa isang naunang tanong mid-matagalang.
Hindi ako ng kamalayan ng kung aling mga isa ito sa ngayon.
Kaya siguro pagkatapos, kung nais mong makabuo at ipakita sa akin, pagkatapos ay maaari ko
ay tiyak na magbibigay sa iyo ng mga tip.
Ngunit nagsasalita ng pagpasok ng mga bagay, tulad ng pagkuha ng kalidad ng isang tao kapag nag-
hindi dapat, makipag-usap tungkol sa ipaalam Pag-atake iniksyon SQL.
Kaya isang SQL iniksyon atake ay lubos na kung saan ang isang tao ay tumatagal ng
sulitin ang mababang seguridad ng mga paraan na ikaw ay pagkuha sa data.
>> Kaya sa dito, tulad ng sa CS50 pinansya, kapag naka-log namin in, maaari naming ipasok sa isang
username sa form sa pag-login, ang unang text box, at
pagkatapos ay ilagay sa isang password.
Marahil ay maaaring tumingin sa aming mga code na PHP isang bagay na tulad nito, kung saan $ username
ay ang username at password na post-data ay password post-data.
At pagkatapos ay isakatuparan lamang namin ang aming mga query sa, sabihin nating, OK, na rin, ang aming mga query ay pagpunta sa
pumili mula sa aming mga gumagamit, kung saan ang username ay ang
isa na sila isinumite.
At ang password ay ang password, ibig sabihin na tumutugma sa mga password.
>> Ngayon, paano kung sa halip na aktwal pagsusumite ng isang aktwal na password, tulad ng
12345 at paghula sa ngipin ng tinidor na nagsasabing password at sinusubukan mong tadtarin ang kanilang
account, kung ano kung sa halip isinumite nila ito.
Maaari nilang i-type sa siguro isang hula sa isang password.
At pagkatapos ng ang mga ito matapos ang quote pagkatapos i-type sa o 1 = 1.
Iyon Gusto mong bilis nang direkta sa SQL i-query upang tumingin ng isang bagay na katulad nito.
Pumili mula sa mga gumagamit kung saan username = Prongs at password
ay katumbas ng liryo o 1 = 1.
>> Kaya ang alinman sa password ay upang maging tama o 1 = 1,
na kung saan ay palaging totoo.
Kaya sa kasong ito, talaga, ang isang gumagamit ay maaari samantalahin ito at mag-log lamang
kanilang sarili sa at pataga account ng isang tao.
Kaya na ang dahilan kung bakit gusto naming iwasan isang tao na kinakailangang gawin ito.
Ngunit sa kabutihang-palad, ang function ng query sa pamamagitan ng ang pagpasa sa mga placeholder Dadalhin
pag-aalaga ng mga ito para sa iyo.
Gayundin, makikita mo ay karaniwang hindi kailanman nais upang aktwal na isumite ang mga password
kanilang mga sarili.
Iyon ay kung bakit namin na-hash o naka-encrypt ang mga ito sa CS50 pananalapi.
>> Madla: Ang nakaraang pagsusulit usapan tungkol sa MySQL escape mga string.
Huwag mayroon kaming mag-alala tungkol na?
>> ZAMYLA Chan: Iyon ay isang mahusay na tanong.
Ang MySQL escape mga string ay talagang isang function na ito ay ginamit sa aming query.
Ngunit tumingin sa na siguradong.
Gusto ko sabihin na patas laro upang malaman na kailangan mo upang tawagan na
gumana sa isang string.
Oo, Belinda?
>> Madla: Paano mo malalaman kapag ito ay single quote o double quote?
At din, nararamdaman ko tulad ng sa lecture mo Binanggit ng isang bagay tungkol sa hindi pagkakaroon
ang [hindi marinig] o isang bagay o ang pangalawang single quote sa dulo.
Sa tingin ko siya itinuturo out sa panayam na ka dapat na magkaroon ng kudlit 1
at pagkatapos ay walang apostrophes o isang bagay.
>> Madla: [hindi marinig].
>> Madla: bagay Ang ay ang huling single quote sa doon sa na pangalawang kahon
hindi dapat doon.
[Hindi marinig]
Dahil kapag magdadala sa iyo na huling nag-iisang Quote out at tumutugma sa mga para sa nilalaman
kung saan ang mga password ay, kung mayroon kang na query, mayroong isang solong quote sa
ang pagtatapos na.
Gusto mong gamitin na single quote bilang isa na nakaharap sa isa
[Hindi marinig].
Kaya kung ano ang nasa teksto na talaga kahon hindi dapat magkaroon ng na.
>> ZAMYLA Chan: ako makakakita baguhin iyon.
OK.
Kung walang anumang mga katanungan, pagkatapos ay idedetalye ko pumasa ito sa paglipas ng sa Joseph na makipag-usap
tungkol sa JavaScript, at iba pa.
>> [Palakpakan]
>> Joseph ONG: Kaya ay tumatakbo namin Medyo sa likod.
Kaya kung mayroon kang umalis, na OK lang.
Ngunit hinihiling namin na iyong panatilihin ang iyong ulo pababa kung ikaw ay nasa gitna, kaya mo
huwag harangan ang camera at gumagamit ka ng likod exit kung mayroon kang sa.
Ako Joseph sa pamamagitan ng ang paraan.
Hi.
Test, pagsubok.
Dan, ay ang magandang?
Cool.
>> Kaya maipo-post din ang video online para sa mga
kailangang umalis ngayon.
Alanganin.
OK.
Kaya pagsusulit sa pagsusuri.
Ito ay isang pusa.
Ngayon, JavaScript, na kung saan ay marahil hindi bilang aww para sa ilan sa inyo guys.
OK.
Kaya iyon ang una, isipin mula Zamyla.
Tandaan na PHP ay tumakbo sa server.
At maraming beses, mo guys na sinulat loop sa PHP upang i-print out ng HTML, tama?
Kaya minsan executes ang code na iyon, na HTML output na-print mo out
ay makakakuha ng ipinadala sa gumagamit.
At nang isang beses nangyari iyon, wala nang PHP maaari na patatakbuhin, maliban kung i-reload mo ang pahina, ng
Siyempre, na reexecutes ang PHP.
Ngunit sa sandaling i-print out ka na ng HTML, hindi ka maaaring pumunta kahit saan.
>> Kaya na HTML ay ipinadala sa ibabaw sa gumagamit, kung saan ay ang browser sa paglipas dito, kung saan
Milo ay gamitin ang computer.
At kaya mahusay, may ilang mga bagay minsan nagpapadala kami ng HTML sa gumagamit.
Minsan gusto naming gawin ang isang bagay tulad ng kapag nag-click ka sa isang bagay, gusto naming
mga kahon na alerto sa pop up, mga uri ng mga pakikipag-ugnayan, tulad ng kapag pinindot mo ang
key, kapag nag-click ka ng isang bagay sa pahina, gusto ko ng isang bagay na mangyayari.
Well, hindi ka maaaring reexecute PHP code nang isang beses na HTML ay nakatakda.
Kaya kung paano ang gagawin mo ito?
>> Ipakilala kami ng isang bagong wika na tinatawag na JavaScript, na kung saan ay tumatakbo sa browser
na nagbibigay-daan sa iyo upang gawin ang mga bagay sa HTML pagkatapos mong matanggap ang
ang mga ito mula sa server.
At ito ang dahilan kung bakit tinatawag naming ito sa isang client-side programming language.
Gumagana ito sa iyong computer -
sa client.
Ang anumang mga katanungan tungkol na sa ngayon?
Tularan na saysay sa mga tao?
OK.
Mahusay.
Ayos lang.
Kaya ang unang bagay na dapat tandaan ay ang JavaScript ay hindi na PHP.
>> Ang mga ito ay ilang iba't ibang mga syntax, kung saan ipapakita namin pumunta sa.
At mayroon silang ibang-iba mga gamit.
JavaScript, muli, para sa iyong browser, para sa mga client ang.
Ay nagpapatakbo ng Server sa isang lugar sa isang tao pa computer na nagpapadala ng impormasyon
sa iyo, itama?
Kaya kung tanungin ka namin na magsulat code na PHP sa isang tanong sa pagsusulit, huwag magsulat
JavaScript at vice versa.
Makikita mo lamang mawala mga puntos, at ito ay hindi magiging tama.
>> Kaya sabihin makakuha ng sa ilang mga syntax pagkakaiba -
JavaScript sa kaliwa at PHP sa kanan.
Ang unang bagay na mapapansin mo sa JavaScript, ipinahahayag namin variable sa
ang var keyword -
V-A-R. Ginamit PHP ang dollar sign, bilang mas maaga tinalakay Zamyla.
Kung nais mong magpahayag ng isang nag-uugnay array, makikita natin ang pamilyar na syntax sa
sa kanang bahagi sa PHP.
Sa kaliwang bahagi, sa halip gamitin mo kulot tirante.
At pagkatapos ay ang iyong mga susi ay sa kaliwa.
Pagkatapos mayroon kang isang tutuldok.
At pagkatapos ay mayroon kang ang mga halaga na gusto mo.
>> Kaya ito ay kung paano mo gawin ito sa PHP sa kanang bahagi sa na pangalawang
linya na nagsisimula sa Milo.
At iyon ay kung paano mo gawin ito sa kaliwa side sa JavaScript kung nais mong
ang tinatawag naming ang isang bagay.
At bagay sa JavaScript ay lamang nag-uugnay array.
Kaya kung nais mong i-access ang mga patlang, sa PHP gagamitin mo ang bracket syntax.
At ganitong paraan, maaari mong reassign patlang na may-ari na ito sa Lauren.
>> Well, sa JavaScript, kung gusto isa sa ma-access ang isang patlang at baguhin ito, maaari mong
gamitin ang tuldok na syntax.
Maaari mo ring gamitin ang bracket syntax.
Ngunit hindi mo maaaring gamitin ang tuldok syntax sa PHP.
Iyon ay hindi gagana.
Gumagana lang ito sa PHP.
At sa wakas, i-print ng mga bagay sa console, ginagamit mo console.log, na
mo guys gumamit ng maraming sa pset8.
Maaari mong console.log na.
>> Kung nais mong i-print ang isang array sa PHP, mayroon kang gamitin ang naka-print na r.
At sa kanang bahagi, makikita mo ang hash i string pagdudugtong banda roon.
May isang tao na mas maaga nagtanong.
Gamitin ko ng plus sa JavaScript.
Kung gusto kong pagdugtungin ang isang bagay sa PHP, gagamitin ko ang tuldok.
Ang mga ito ay naiiba.
Kung ikaw ay sumusulat code na PHP, huwag gumamit ng plus.
Kung ikaw ay sumusulat ng JavaScript code, huwag magsulat ng tuldok.
Magiging mali.
At makikita mo Malulungkot.
>> Kaya syntax pagkakaiba.
Alamin ang iyong syntax, dahil kung mayroon kang upang magsulat ng isang tanong at gumagamit ka ng syntax
mula sa maling wika, hindi ito gagana.
At ito ang magiging mali.
Kaya hayaan-usapan natin ang tungkol sa ilang kontrol dumaloy pagkakaiba, kung paano mo ginagamit
loop sa bawat isa sa kanila.
Zamyla nagpunta sa ibabaw ng kanang bahagi.
Bagay-bagay sa kanang bahagi Dapat na pamilyar.
Tingnan natin sa kaliwang bahagi Hayaan.
>> Kapag ginamit mo para sa n loop sa JavaScript, ang iyong mga loop na variable, var i banda roon,
loop sa ibabaw ng mga pindutan ng array.
Kaya tingnan mo pangalan, bahay, at papel.
Kung console.log ko i, nakukuha ko pangalan, bahay, at papel.
Iyon ang mga key.
Sa JavaScript, isang foreach loop napupunta sa ibabaw ng mga halaga ng array.
Kaya napansin mong ang mga ito ay parehong i.
Ngunit in dito sa gilid PHP, ito ng mga Kopya out Milo, CS50, at maskot.
Iyon ang mga halaga sa PHP.
>> Kaya ito ay kung paano ang dalawang mga magkaibang sa iba't ibang mga wika.
Kaya kung gumagamit ka ng isang foreach loop, huwag ipagpalagay na ito
Nagbibigay sa iyo ang mga susi.
At kung gumagamit ka ng para sa n loop, huwag ipinapalagay binibigyan ka nito ang mga halaga.
Gumawa ba nito ang pakiramdam sa ngayon?
Ang susunod na slide ay pagpunta upang ipakita sa iyo paano mo ma-access ang tapat sa
bawat isa sa kanila.
>> Well, kung mayroon kang ang susi sa JavaScript at gusto mo na ang halaga out,
index mo lang sa array na may mga iyon.
Kaya Milo ng i makakapagbigay sa iyo kung ano gusto mo - ang halaga.
Mayroong iba't ibang mga ito syntax sa PHP.
Kung talagang nais na malaman ito, gagawin ko hindi Sa tingin mo namin ipinakita ito sa iyo pa.
Ngunit kung ikaw ay interesado, maaari mong gamitin ang ito ng karagdagang syntax sa kanan
gilid na ang talagang ipaalam sa makuha mo ang mga susi sa PHP kapag gumagamit ka ng isang
foreach loop.
Kaya lamang ng kaunting mga bagay na walang kabuluhan kung interesado ka.
>> Kaya iyon upang ipakita lamang ang pagkakaiba sa pagitan ng dalawang mga loop.
Huwag ihalo up ang mga ito kapag ikaw ay mga programa ng tanong.
Ang anumang mga katanungan tungkol sa na.
Cool.
Ayos lang.
JavaScript bagay.
Usapan ko tungkol sa mga ito.
Ang mga ito ay tulad ng nag-uugnay array.
Ang isang bagay na Gusto ko sa iyo na tandaan dito ay na ng isang halaga sa isang nag-uugnay
array ay maaaring maging kahit ano sa JavaScript.
>> Maaari rin itong maging isang function, tulad ng banda roon.
Mayroon akong isang function na ay isang halaga ng isang key.
At kung gusto kong tumawag na function, Lamang-access ko mag-upak.
At pagkatapos ko bang ilagay ang mga panaklong pagkatapos nun.
At na gumagana.
Kaya ang anumang mga katanungan?
Walang?
OK.
Mahusay.
JavaScript, tulad ng PHP, ay maluwag na-type.
Ano ang ibig sabihin na?
>> Mayroon itong mga uri.
Ngunit kapag pinahahayag ng JavaScript variable, sabihin mo var i.
Hindi mo ito sinasabi.
Iyan ay hindi isang bagay.
Ikaw lamang sabihin ito ay isang variable.
At pagkatapos JavaScript ay mapupunta sa mga uri sa ilalim ng hood para sa iyo.
Maaari malaya kami mag-convert sa pagitan ng mga uri dahil dito.
Kaya i nagsisimula out bilang isang numero sa kasong ito.
At pagkatapos ay mayroon akong isang string.
At idagdag ko i dito.
At reassign ko ito pabalik sa i.
>> Kaya sa na unang linya, i ay ang bilang.
Sa pangalawang linya, nagiging isang i ngayon string pagkatapos kong gawin ang reassignment.
At dito, ako lamang concatenating na numero papunta sa string.
Kaya nakikita mo na kahit na i noon ay isang integer sa unang bahagi, ito ay uri
ng tulad ng pag-convert sa isang string at pagkatapos ay bilang idinagdag
papunta na kumusta string.
At kaya na kung ano ang ibig sabihin ko sa pamamagitan ng mga malubay mag-type.
Iyan ay na-convert mo sa pagitan ng mga uri ng napaka madali.
At hindi ito ihagis babala sa gusto mo C gumagana.
>> Kaya naglalaman i ngayon kumusta 123 sa string.
Susunod.
Maaari rin namin ng malayang ihambing sa pagitan ng mga uri.
Kaya kung gagamitin mo lang ==, napaka tulad ng sa PHP, JavaScript
ang ginagawa ng isang katulad na bagay.
Ang string 123 ay kapareho ng numero 123 kapag ginamit mo ang double Kapantay.
Kapag ginamit triple Kapantay, mayroon din Gusto ni upang matiyak na
ang uri ay pareho.
Kaya dahil iyon ay isang string at iyon ay isang numero, kahit na nasa parehong
123, kapag ginamit mo ang triple katumbas, makakakuha ka ng hindi totoo.
Sa double ay katumbas ng kaso, makakakuha ka ng totoo, dahil double Kapantay ay hindi
nagmamalasakit sa uri.
Triple Kapantay ay nagmamalasakit sa uri.
Mga Katanungan?
OK.
>> At isa pang bagay tungkol sa JavaScript ay na saklaw ay uri ng global maliban kung ikaw ay
sa isang function.
At ito ay gumagana sa parehong paraan sa PHP talaga.
Kaya sabihin pumunta sa pamamagitan ng halimbawang ito.
Ako magse-set i upang 999.
At pagkatapos kong pumunta sa ito para sa loop.
Kaya kung ako sa pagpi-print i out sa ito para sa loop, inaasahan ko 0, 1, 2, 3, 4.
Nakuha ko sa i = 4.
Unti itong i ngayon hanggang 5 sa sa dulo ng para sa loop.
At pagkatapos nito Pinaghihiwa-out ng loop, dahil ito ay hindi matupad ang
kondisyon na ngayon.
>> Ano ang tingin mo na ang susunod na console.log prints out?
Kaya na kung ano ang nais nitong gawin sa C. Sa C, dahil kung mayroon ka tulad ng var i labas
at mayroon kang var i loob ng loop, tulad ng isang para sa loop, pagkatapos ay ginagawang ito tulad na
ito ay scoped na ang dalawang i ay naiiba.
Sa JavaScript, ito nasain lamang ituring ito bilang parehong i.
Nakukuha ko 5, dahil iyon ay ang halaga matapos itong lumabas sa labas ng loop.
Kaya mga i ay ang parehong i.
Ba na magkaroon ng kahulugan?
>> Well ito, ang may katuturan mula sa isang JavaScript kinatatayuan.
Ngunit sa parehong tularan ang hindi Nagtitinda sa ibabaw upang C. Ang mga ito ay
iba't ibang mga panuntunan scoping.
Oo.
>> Madla: [hindi marinig]
sa labas ng function na [hindi marinig]?
>> Joseph ONG: Kaya labas na pagpapaandar?
Kaya Kukunin ko sa na sa isang segundo lamang.
Kaya tinatawag naming foo (i).
Ito ay ipinapasa i sa foo, mga palugit ito, at pagkatapos ay nagla-log ito.
Kaya ito ay 5.
Kaya ito ay nagiging 6.
Ngunit kung ano ako ng pakikipag-usap tungkol sa ay na i in na function.
Dahil ito ay isang parameter, ito ay scoped sa na function.
Kaya isang beses ko talagang makakuha ng out sa na function, ngayon ito ay pagpunta sa pumunta
bumalik sa lumang i.
I Iyon ay scoped lamang dahil ito ay nasa isang function.
At kami ay may saklaw at pag-andar.
Ngunit wala kaming saklaw sa labas ng mga function sa JavaScript.
Ba na magkaroon ng kahulugan?
Oo.
Tanong.
>> Madla: Parehong [hindi marinig]?
>> Joseph ONG: Kaya oo.
Sa PHP, ito ay ang parehong uri ng bagay.
May kaunting pag kapitaganan talaga.
Ngunit maaari mong hilingin sa akin tungkol sa na pagkatapos ng pagsusuri.
Wala ka ba talagang kailangang malaman na kapitaganan para sa pagsusulit.
Para sa lahat ng mga layunin at mga layunin, tulad ng variable, global at PHP, maliban kung
ang mga ito ay nasa isang function, parehong bagay sa JavaScript.
Oo.
>> Madla: Bakit ito pinapayagan ay sa JavaScript at walang kung saan pang dahilan?
>> Joseph ONG: Kaya bakit pinapayagan ito sa JavaScript at hindi sa C?
Ito ay lamang kung sinuman ang dumating up gamit Nagpasya JavaScript na ito ay OK sa
JavaScript.
Kaya ito ay tulad ng isang programming language convention ng kung paano namin sasabihin.
Oo.
>> Madla: Kaya bakit ginawa ito pumunta 6-5?
>> Joseph ONG: Kaya nagpunta 6-5, dahil kapag ang pumasa ko i sa foo, na
i loob ng foo ay scoped ngayon upang foo, dahil saklaw umiiral sa mga function sa
JavaScript.
Ngunit sa sandaling nakuha ko out sa dito, sapagkat ito ay scoped sa pagpapaandar, ako lamang
gamit ang mga regular na i na noon ay sa loob ang natitirang bahagi ng kontrol ng daloy.
Magkaroon ng kahulugan?
Maaari ba akong lumipat sa?
Ayos lang.
Cool.
>> Ang pagtanggap ng mga ito ay mga bagay ay ipinapasa sa pamamagitan ng sanggunian.
Alam mo kung paano kapag kayo na ipasa ang isang array sa C dati mo
talagang baguhin ang array?
Ito ay ang parehong bagay sa JavaScript.
Kung pumasa ko ba ng isang bagay, sa kasong ito, ako pumasa sa mga Milo sa ito catify function.
Milo nagsisimula out.
Ang kanyang pangalan ay Milo Saging.
Pumasa ako sa bagay na iyon sa isang function dahil lang sa isang bagay, isang nag-uugnay
array sa JavaScript.
>> Kapag nagsagawa ko ba ng operasyon sa na pag-andar, ay ito
talagang baguhin ang mga bagay.
Kaya ito ang mangyayari lamang para sa mga bagay sa JavaScript, gusto lang ito mangyayari
para sa array sa loob ng pangalan C. Kaya Milo ni ang talagang maging pusa ngayon.
Ba na magkaroon ng kahulugan?
Kaya gumagana lamang ito para sa mga bagay.
Mga bagay ay ipinapasa sa pamamagitan ng sanggunian.
Oo.
>> Madla: Kaya ka na nagsasabi na sa kabilang banda sa variable i.
>> Joseph ONG: Oo.
Aling mga variable na i noon ay lamang isang numero, i-right?
Ito ay tulad ng sa C kapag kayo na ipasa ang isang integer isang, nakakagawa ito ng kopya.
At kapag kayo na ipasa ang isang array, ito talaga nagbabago ang aktwal na array sa
C. Ang parehong bagay ang mangyayari sa JavaScript sa kasong ito.
Ayos lang.
At susunod, Milo ay malungkot dahil siya ay isang pusa ngayon.
Iyon ay talagang Milo pagkatapos ilang trip sa gamutin ang hayop.
>> Kaya paano ko gagamitin namin ang JavaScript sa isang web page?
Maaari naming isama ito.
Ito ang HTML na code ng mga strip mga tag.
Kaya Mayroon akong strip tag doon.
At pagkatapos ko bang ilagay ang ilan JavaScript code sa loob ng mga script tag.
At pagkatapos ay executes ito sa ganitong.
Kapag lamang gawin ko ito tulad nito, ito ay tinatawag na inline JavaScript.
Ito ay uri ng maraming kalat, dahil ang JavaScript ay talagang sa HTML.
>> Ang isang mas mahusay na paraan upang gawin ito, magkano nicer, ay upang isulat ang iyong JavaScript sa isang
panlabas na file at pagkatapos ay magbigay script tag na may isang pinagmulan.
At ito ay pupunta sa na JavaScript na file at basahin ang code ng JavaScript mula sa
na-file sa halip.
At sa ganitong paraan, hindi mo na kailangang ng maraming JavaScript sa unahan ng iyong
HTML file, na ginagawang ito ay talagang marumi.
Ilagay mo lamang ito sa ibang lugar.
At pagkatapos ay basahin ito mula doon.
Nakatulong ba na saysay?
>> Usapin ng Pagkakalagay.
Sa partikular na kasong ito, ang script ay bago ang body.
Kaya kapag execute ko na, may walang anuman sa katawan pa.
Siguro ito ay gumawa ng isang maliit na bit higit pa kahulugan kapag ipakita ko ito sa tabi bahagi.
Sa kasong ito, ang script nauuna matapos ang div.
Kaya talagang lumilitaw ang div sa unang pahina.
Kanan dito sa ganitong maliit na pulang bilog, nakikita mo lilitaw ang teksto.
At pagkatapos ay ang alerto ay nagpapakita up.
>> Sa unang kaso, dahil ang script ay bago ang div, ang
alerto unang nagpapakita up.
At pagkatapos ay ang div nagpapakita up pagkatapos mong bale-walain ang kahon.
Kaya mahalaga ang execution.
Kaya itinatago namin ito na nasa isip.
Ito ay magiging mahalaga sa ilang sandali.
OK.
Kaya rin, paano ko kang maghintay hanggang ang buong pahina ay malo-load pagkatapos bago ka
isakatuparan ang ilang mga code?
Susubukan naming dumapo ito ng kaunti bit mamaya masyadong.
Ngunit panatilihin lamang ang placement na ito mga bagay na nasa isip para sa kung kailan namin
dumating sa isa pang slide.
>> Kaya makuha namin sa DOM ngayon.
At ano ang DOM?
Kaya't kung tiningnan mo ang HTML code, ito ay lamang ng grupo ng mga teksto sa screen.
Kaya kung paano ang JavaScript malaman na ito ay isang elemento ng HTML?
Kaya mayroon kaming upang magkaroon ng ilang mga memory representasyon ng mga ito
istraktura na mayroon kami.
At sa tuwing mayroon kaming ito sa memory pagkatawan sa JavaScript, tinatawagan namin
na ang DOM.
At ito ay lamang ng isang paraan na nagpasya tao na dapat naming kumatawan ito
HTML istraktura ng.
>> At kung ano ang hitsura ito tulad ng DOM?
Well, sa memory representasyon, tinitingnan namin ang tekstong ito.
At itong i-namin sa memory pagkatawan.
Kaya ito ay ang HTML.
Kaya unang malaman namin na ang bawat DOM puno ay may isang dokumento.
Mukhang isang tree.
At ang mga dokumento ay naglalaman ng HTML tag, talagang lahat ng bagay
sa loob ng ito ngayon.
Ang HTML na tag ay may dalawang mga bata.
Ito ay may ulo.
Ulo na, kung tiningnan mo ang indentation banda roon sa kung paano ito nakaayos
sa pagitan ng mga malapit na tag, ulo ay may anak.
Ang bata ay pamagat.
Mismong.
>> Ngayon, mayroon kaming isang katawan ng bata.
At pagkatapos na katawan ay may tinatawag na anak ng pamilya.
At pamilya na may tatlong mga bata -
pinakalumang, gitna, at bunso.
Kaya dapat mong malaman kung paano gumuhit ng diagram ganito kapag hinihiling namin sa iyo kung paano
upang gumuhit ng isang diagram kapag binigyan namin mo ang HTML sa kaliwa.
Alamin kung paano upang makagawa ng DOM tree.
At sa loob ng mga bagay na ito, mayroong lamang ilang teksto, na aking kinakatawan
bilang maliit na kahon.
>> Ba ito DOM puno istraktura gumawa kahulugan at kung ano ang DOM ay?
Kaya kung ano ang ginagawa ng p tumayo para sa?
Sa paglipas dito, ang p banda roon sa tag na iyon ay kumakatawan sa isang
talata na tag sa HTML.
Kaya maaari mo itong tumingin hanggang.
Ngunit ito lamang ang ibig sabihin nito ang ilang espasyo para sa ilang teksto.
At ito ay may ilang mga default na CSS estilo, dahil ito ay isang tag na talata.
Ngunit huwag mag-alala talagang tungkol sa bahagi na ng masyadong maraming.
Alam lamang ito ay isang placeholder para sa ilang teksto.
Oo.
Tanong?
Oo.
>> Madla: Binanggit mo lamang CSS.
Ang pamilya hash at ang hash lahat ng mga bagay-bagay na ay isa lamang
na kumakatawan sa mga ID sa CSS?
>> Joseph ONG: Oo, eksakto.
Kukunin ko sa kung ano ang mga hashes ibig sabihin sa isang segundo.
Kapag nagpunta Angela sa paglipas ng CSS, siya usapan tungkol sa CSS tagapili.
Ito ang mga CSS tagapili na ay siya ng pakikipag-usap tungkol sa.
Oo, Rob?
>> Rob BOWDEN: Gusto ko ring magkomento na DOM sa loob ng tag na pamagat
ay din ng isang text node.
>> Joseph ONG: Mag-right.
Kaya sa loob ng tag na pamagat, Mayroon akong ilang teksto DOM.
Kaya talaga ito, sa pamagat na ito ay dapat magkaroon ng tulad ng isang maliit na kahon na nanggagaling off ng mga ito pati na rin.
Ngunit ito ay hindi talagang mahalaga masyadong marami sa kasong ito.
Hindi kami talaga nagmamalasakit sa mga node teksto, bilang tinatawag naming ang mga ito, masyadong maraming.
OK, ang ginagawa namin.
Sa malas, ang ginagawa namin.
At ako ay ayusin na kapag I-upload ko ito muli.
Ba na magkaroon ng kahulugan?
>> Kaya kung paano gumagana ang aming ginagawa sa DOM?
Sa tuwing haharapin iyo ng DOM sa JavaScript, mayroong dalawang hakbang.
Kang pumili ng isang elemento ng DOM.
At pagkatapos gawin mo bagay na ito.
Kaya sa kasong ito, abstractly, na hindi ko na napiling gitna ng elemento.
At pagkatapos ay isang halimbawa ng paggawa ng mga bagay-bagay upang ito ay ang pagbabago ng teksto.
Iyon na ginamit upang maging Bob.
Ngayon, kung ano ang ginawa kong iyon ay nagbago ako Bob sa Milo sa kasong ito.
>> Kaya paano ko talaga naming gawin ito?
Paano ginagawa namin ang pagpili?
At paano namin ang paggawa ng mga bagay na ang bagay na sa sandaling nagsagawa kami ng mga ito?
Well, ang paraan kung paano ka guys ay natutunan ito sa klase na ito ay sa pamamagitan ng paggamit ng isang bagay na namin
tinatawag jQuery.
Kaya kung ano ang jQuery?
jQuery ay isang library na ginagawang JavaScript madali upang magsulat.
Kaya ang isang tao kinuha ang oras at sinulat ni jQuery.
>> jQuery ay aktwal na nakasulat sa JavaScript.
At pagkatapos ay dahil ginawa nila ito, na namin ngayon magkaroon ang maramihang mga pag-andar na
maaari naming gamitin na gumawa ng aming mga nabubuhay talagang madali.
Kaya kung ano ang ilan sa mga mga bagay na ginagawa nito?
Ito ay gumagawa ng pagpili ng mga elemento ng mas madali.
Ito ay gumagawa ng pagbabago ng HTML, mas madali ang pagdaragdag ng mga klase.
Ginagawang mas madali Ajax.
Susubukan naming makapunta sa na sa isang segundo.
>> At ito ay kahalintulad sa C library.
Kaya isama mo string.h, ka strlen.
Makakakuha ka ng strcpy, ang lahat ng mga bagay na ito.
Kapag isinama mo ang jQuery, makakakuha ka ng maganda mga paraan upang piliin ang mga elemento sa pagbabago
mga bagay, at iba pa.
Makakakuha ka ng dagdag na pag-andar na JavaScript ay hindi nagbibigay sa iyo.
Kaya jQuery ay hindi JavaScript.
jQuery ay isang library na nakasulat sa JavaScript na gumagawa ng JavaScript
mas madaling isulat.
>> Kaya jQuery ay hindi isang programming wika.
Ngunit JavaScript ay.
gumawa.
Oo naman mo makuha ang iyong mga terminolohiya karapatan.
Ang anumang mga katanungan?
Oo.
Iyan ba ang tanong?
Ayos lang.
Kaya paano ko gagamitin mo jQuery?
Well, kapag sumusulat ka ng ilang Code ng JavaScript at isinama mo ang isang
jQuery sa tuktok ng iyong mga file bilang isang script file, gagamitin mo ang dollar sign
ngayon upang makakuha ng access sa jQuery.
At ito ay naiiba mula sa ang dollar sign sa PHP.
>> Ito ay ang parehong mga simbolo sa iyo nagta-type sa iyong keyboard.
Ngunit ibig sabihin nila ibang-iba bagay.
Dollar sign in PHP ang ibig sabihin nito ay kung paano Ipinahahayag ko sa isang variable.
Sa JavaScript, kapag ikaw Nagsama jQuery, ito ay nakatayo para sa jQuery.
Kaya panatilihin na sa isip.
Kaya kung paano maaari naming piliin ang DOM mga elemento?
Well, kapag ginawa mo ito ang pangit ng JavaScript paraan, i-access mo ang
idokumento ang global variable.
At pagkatapos mong makakuha ng mga elemento sa pamamagitan ng pamilya ID.
Ito ay talagang mahaba at labis sa mga salita at hindi napakabuti.
>> O maaari kang makakuha ng lahat ng mga elemento na isang p tag.
Iyon ay gumagana masyadong sa JavaScript.
Ngunit talaga namin kailanman ay nagpakita ng masyado kang magkano ang syntax.
Ano namin ay nagpakita sa iyo ay jQuery.
Kaya na buong tagapili up doon na ay ipinahayag sa JavaScript ang nakukuha lamang
condensed upang ito ay napakabuti dolyar mag-sign hashtag pamilya.
At $ p, lamang kung saan ito ay tulad na.
Kung gusto mong piliin ang lahat ng mga tag p sa loob ng isang pamilya, inilalagay namin ang isang puwang
sa pagitan ng dalawang.
At ngayon, makuha namin ang lahat ng mga p mga tag sa loob ng isang pamilya.
>> At tumingin pamilyar?
Well, usapan tungkol sa Angela CSS tagapili.
Bigyan ako ng isang segundo.
At kaya upang pumili ng isang sangkap, gamitin mo lang ang mga parehong bagay tulad ng sa iyo
Gusto gagawin sa isang CSS selector.
Kung inilagay mo ang isang hash sa harap ng ito, pipili na ito sa pamamagitan ng ID.
Ang isang tuldok pumipili sa pamamagitan ng mga klase.
Kung mayroon kang lamang ang bagay na walang hashes o tuldok, pipili na ito mga tag na iyon.
Tanong.
Oo?
>> Madla: Kapag ginagamit namin tuldok sa aming HTML, ay hindi na jQuery?
>> Joseph ONG: Dot sa aming HTML ay isang JavaScript na bagay.
Ito ay hindi isang jQuery bagay.
Ang paraan natutunan ito sa iyo guys sa jQuery ay ang gamitin. html.
At pagkatapos mong pumasa sa mga ito kahit ano ang HTML ay magiging.
Kaya Kukunin ko sa na in lamang isang pangalawang talaga.
Kaya kung paano ang gagawin namin bagay-bagay na elemento sa sandaling iyong pinili namin ito?
Kaya na ang isang halimbawa ng pagpili ng isang elemento.
Kaya ngayon, gusto naming gawin ang bagay-bagay dito.
>> Kaya sa kasong ito, hayaan mo akong bumalik sa naunang slide.
Iyon ay Bob bago.
At Gusto kong baguhin na sa loob ng HTML sa Milo.
Kaya tumawag ako ang function ng HTML mula sa elemento.
Iyon HTML function ay isang pamamaraan ng elemento.
At pagkatapos kong bigyan ito ng kung ano ang Gusto ko ang HTML upang maging.
At ito lamang ay pumapalit sa kung ano ang nasa loob ng na tag sa kahit anong kong bigyan ito.
Oo.
Tanong?
>> Madla: hashtag ay ginagamit para lamang sa jQuery.
[Hindi marinig]
hindi namin maaaring gamitin iyon.
>> Joseph ONG: Oo, eksakto.
Ngunit huwag mag-alala masyadong maraming tungkol sa dalisay JavaScript.
Gusto ko lang sa iyo guys upang tumuon sa kung paano mo gagawin ito sa jQuery, dahil
na pupuntahan maging mahalaga bahagi sa pagsusulit.
Mag-right.
Mismong.
Kaya nakikita mo na ang hashtag, upang tumutugon upang piliin ang mga elemento na may
ang ID gitna dahil sa na hashtag.
Hashtag nangangahulugan ID.
At ang elementong ito ay may ID ng gitna.
Kaya iyon ang elemento piliin namin.
>> Madla: [hindi marinig].
dollar sign hashtag [hindi marinig]?
>> Joseph ONG: Kaya hindi.
Ang tanong ay maaari mong gamitin. Halaga.
At halaga. Gumagana lamang sa mga elemento na input.
Sa jQuery, magiging . Val, hindi na halaga..
Kaya magagawa ko na sa isang maliit na halimbawa na nagpapakita ng lahat ng ito sa kumbinasyon
sa isang segundo.
Ngunit tingin ko Naghahain ito ng kaunti snippet saysay ang mga tao sa ngayon.
Gusto mong baguhin ang HTML, tawagan ang pamamaraan ng HTML.
Oo.
>> Madla: Maaari mo bang ipaliwanag muli ang paraan?
>> Joseph ONG: Kaya isang paraan lamang function na nabibilang sa isa, sa ganitong
kaso, ang isa sa mga elemento ng DOM, dahil nakita mo ako
napiling muna ang mga elemento.
Talaga, hayaan mo akong gamitin ang mouse.
Napiling muna ako ng elemento.
At pagkatapos ay tinatawag ko ang HTML gumana na ito ay nagkaroon.
At dahil ang pagpapaganang ito ay kabilang sa bagay na ito, tumawag namin ito ng isang pamamaraan.
Iyon lang isang magarbong pangalan para dito.
Sabihing na muli.
Kaya tandaan, namin napili ngayon ang elemento.
At binuo namin ito sa loob ng ang variable na elemento.
Itama?
>> Kaya kapag gusto naming baguhin ang HTML sa sa loob, sapagkat ito ay Bob bago, mo
gusto na baguhin ang teksto na sa Milo.
Kaya tinatawag naming HTML.
At sabihin namin ito kung ano ang HTML sa loob elemento na dapat ngayon.
At kaya ito ay nagbabago dito sa Milo, dahil Ibinigay ko ito Milo.
>> Madla: Kaya sila nagsusumikap magkasama.
[Hindi marinig]
>> Joseph ONG: Oo, oo.
Sila ay nagsusumikap magkasama.
Kaya isa sa mga ito pumipili ang elemento muna.
At ang pangalawang isa gumagana isang bagay dito.
Oo.
>> Madla: [hindi marinig].
Kung ang paraan na ito ay naiiba mula sa HTML mayroon ka ng mga pamamaraan katumbas aktwal na.
>> Joseph ONG: Oo.
Iyon ay isang iba't ibang mga paraan.
At maaari naming masaklawan na sa isang segundo lamang kapag makuha namin sa isang halimbawa.
Gusto kong tiyakin na mapabilis namin up dahil kami nauubusan ng oras.
Ngunit tumakbo kami ng paraan sa paglipas ng panahon ngayon.
OK.
Cool.
Kaya kung nais mong magdagdag ng isang klase, mayroong ding paraan add klase.
Ito ay lamang ng isang halimbawa ng kung ano ang maaari mong gawin sa jQuery.
Iyon ay nagdadagdag lamang isang klase.
>> Kung nais mong alisin ito, maaari mong tawagin ang pag-alis.
Iyon ay isa lamang bagay na maaari mong gawin.
Kaya higit pang mga halimbawa ng mga bagay na maaari mong gawin.
Kaya ko maaaring ilagay lang ito sa tuktok na tulad nito?
Bunsong-alis.
Kung execute ko lang na JavaScript sa sa tuktok ng aking mga file, na gumagana?
Mag-right.
Dahil gitna Hindi pa umiiral.
Kaya ito ay hindi pagpunta sa gumana.
Execution order.
Ito ay tumatakbo nang una sa tuktok.
Ano?
>> Madla: bunsong Hindi pa umiiral?
>> Joseph ONG: Oo.
Bunsong Hindi pa umiiral.
Mismong.
>> Madla: Sinabi mo gitna.
>> Joseph ONG: Paumanhin.
Bunsong Hindi pa umiiral.
At ang iba pang mga bagay ay mayroon akong hindi Kasama ang jQuery
maghain magtanong script SRC.
Kaya na hindi pagpunta sa gumana.
Talaga, hindi ko gawin iyon sa sa susunod na slide, na
dapat ayusin na alinman.
Subalit ang paraan gawin namin na ito JavaScript ay hinihimok ng kaganapan.
Kaya kung ano ang ginagawa namin ay ginagamit namin ang isang kaganapan handler upang gawing mangyari ito.
At kaya kong piliin ang mga dokumento set muna.
Sinasabi ko, OK, kapag ang dokumento ay handa na, hayaan mo akong magpatakbo ng isang function.
Kaya iyon ang lahat na syntax paraan.
>> Pinili ko ang dokumento.
Ngayon, kapag ang dokumento ay handa na, patakbuhin ang function.
At kaya sa paglipas dito kapag ang dokumento ay handa na, na nangangahulugan na ang lahat ng mga HTML ay
load, pagkatapos ay magpatakbo ko ang pag-andar na nag-aalis ng elemento na iyon.
At kaya ngayon, kapag nagpatakbo ako ng function na ito na ako ang pumasa sa handa na, ako
katiyakan na ang lahat ng HTML sa pahina ay pagpunta sa unang umiiral.
Oo.
Tanong?
>> Madla: Ano ang keyword kaganapan sa loob ang function?
>> Joseph ONG: Kaya na keyword kaganapan sa function ay isang parameter lamang na
ay makakakuha ng mga pumasang sa pagpapaandar na para sa anumang kaganapan.
Ito ay isang bagay lamang na kang makakuha ng libre.
Kapag ikaw ay gumagamit ng key handler sa pset8, maaaring sabihin sa iyo ang kaganapan na iyon, para sa
Halimbawa, kung aling mga key na inyong pinindot sa.
Sa kasong ito, para sa isang handa na kaganapan, ito ay talagang hindi sobrang kapaki-pakinabang.
Ngunit para sa isang key down na kaganapan, ito ay higit pa kapaki-pakinabang, dahil makakuha ng mong malaman kung aling mga
key na inyong pinindot sa pamamagitan ng pag-access key off na bagay sa kaganapan ng code.
Itama?
Ba na magkaroon ng kahulugan?
OK.
Oo.
Tanong?
>> Madla: Kaya maaari mong ilagay ang mas mababa down na script tag na ito?
>> Joseph ONG: Kaya oo.
Maaari mong ilagay ang script tag ang mas mababang pababa.
Ngunit pagkatapos ay nagiging lamang ito talagang marumi.
At gusto namin upang magsagitna ang lahat ng aming code sa isang lugar.
At ito ay magbibigay-daan sa amin upang gawin ito.
Alalahanin na noong unang sinabi ko mayroong isang nicer paraan upang matiyak na ang mga elemento ay
sa pahina bago mo isakatuparan code?
At ito ay isa lamang sa isang masarap na paraan Gusto mo tuparin iyon.
>> Madla: [hindi marinig].
>> Joseph ONG: Oo.
Gusto mo pa ring mag, tama?
Dahil tandaan, isinama mo ang maghain sa tuktok ng pahina.
Kaya ito ay pagpunta sa execute muna bago kang makakuha ng hanggang sa ibaba ng pahina.
OK.
Kaya maaari mo ring magdagdag ng iba't ibang mga uri ng handler ng kaganapan.
Isa na ito lamang pinoproseso ng mga pag-click.
Kapag nag-click ako sa bunso, pagkatapos ay ito ay pop up sa isang alerto.
Ito ay lamang ng ibang uri ng kaganapan.
Bilang kabaligtaran sa mga handa kaganapan, ngayon mo gamitin ang mga pag-click ng kaganapan kapag nakatanggap ka ng
nag-click sa isang elemento.
>> At kaya sa kasong ito, tandaan, ang pag-click handler ay naka-attach sa bunso.
Kaya ang mangyayari lamang ito kapag Click ako sa bunso.
At sa iba pang isa, ang handa kaganapan ay naka-attach sa dokumento.
Kaya naghihintay ang isang ito para sa mga dokumento upang maging handa.
Magkaroon ng kahulugan?
Sa tingin ko ang maaari kong magpatuloy.
Oo.
Tanong?
>> Madla: [hindi marinig].
sa kasong ito gamitin mo [hindi marinig].
>> Joseph ONG: Oh, oo, dahil sa ito kaso, mayroon akong maghintay para sa mga bunso
elemento na lumitaw sa screen sa unang bago ako makapag-attach ang isang humahawak ng pag-click sa
ito, na ang dahilan kung bakit ko bang ilagay ito sa loob ng handa ng isang dokumento.
OK.
At susunod, kaya ito ay isang malaking halimbawa ng kung paano mo pagsamahin ang lahat.
Ito ay isang halimbawa lamang pagpapatunay ng form na iyong nakita sa lecture.
Kaya dalhin ito hakbang sa pamamagitan ng hakbang na bilang pumunta ka sa pamamagitan ng ito.
At ito ang magiging ganap ang OK.
Basahin lamang ito mula sa itaas hanggang sa ibaba.
>> Mayroon akong isang form sa ibaba.
Kapag ang dokumento ay handa na, i-attach ko ang isang isumite ang handler sa mga form, tulad na
kapag isinumite ko ang form, nakukuha ko ang mga halaga sa loob ng bawat isa sa mga input.
At check ko kung ito ay blangko.
Kung ito ay blangko, bumalik ako ng hindi totoo, dahil Hindi ko nais upang isumite ang form,
dahil ang form na ito ay mali.
Kung ang password ay blangko o ito ay mas mababa kaysa sa walong mga character, hindi ko isumite
ang form na ito, dahil na ang mali din.
At ang return false lang pinipigilan ang form mula sa pagsusumite at
pagpunta sa isang bagong pahina.
>> At sana, ito ang may katuturan.
Sa tingin ko ka guys ay dapat maglakad sa pamamagitan ng ang code na ito hakbang-hakbang sa inyong sarili.
At sa sandaling maunawaan mo kung ano ang piliin mga elemento at gawin ang bagay-bagay dito
talaga entails, ito ay gumawa ng maraming kahulugan sa iyo.
Oo?
>> Madla: Ano ang ginagawa ng pangalan = ibig sabihin ng username?
>> Joseph ONG: Kaya ang pangalan = username at pangalan = password lamang ay nangangahulugan na tumingin sa
katangian ng kahit ano ka ng pagpili.
At pagkatapos na may upang tumugma sa.
Kaya namin pumunta sa pagpaparehistro.
At pagkatapos ay tinitingnan namin ang lahat ng input at pagpaparehistro.
At pagkatapos ay pumili namin ang isa na kung saan ang pangalan katangian ay katumbas ng username.
Kaya lamang Pinipili na unang-pili ang username ng pag-input.
At ang pangalawang tagapili pipili na lamang ang password ng isa, dahil sa mga mayroon
ang kanilang mga katangian pangalan itinakda bilang kung ano ang mga ito ay dapat na maging.
Tanong?
>> Madla: Sa pagsusumite, kung paano gumagana ang ibabang bahagi malutas ang nangungunang bahagi?
>> Joseph ONG: Kaya na ay dahil ng handler ng kaganapan.
Kaya kami ay naghihintay para sa isang isumite ang kaganapan na maipo-fired mula sa form na ito.
At iyon ang lahat na isumite.
Bakit Tinatawag kong isumite up doon?
Sinasabi nito, kapag ang form ay isinumite, Nakakuha ako ng isumite ang kaganapan.
Kaya hayaan agawin sa akin lamang na at pagkatapos patakbuhin ang code na ito sa halip.
Oo?
>> Madla: Bakit mayroon ka upang magkaroon ng pag-andar ng kaganapan?
Bakit hindi maaari mo lamang [hindi marinig]?
>> Joseph ONG: Dahil sa JavaScript, mo mayroon na idedeklara ang mga function.
Iyon lang kung paano ito gumagana sa JavaScript.
Mayroon kang upang sabihin ito ay pagpunta upang magpatakbo ng isang function.
Kaya sinasabi mo ito na ikaw ay sa halip na umaasa sa isang function dito
lamang kulot tirante.
>> Madla: At ang pag-andar ay kahit anong sumusunod?
>> Joseph ONG: Oo.
Ang function na ay kahit anong ay nasa loob ang kulot tirante pagkatapos
na pag-andar ng keyword.
Oo?
>> Madla: [hindi marinig].
>> Joseph ONG: Para isumite?
>> Madla: Hindi, para sa pagpapaandar walang kaganapan.
>> Joseph ONG: Oo.
Kaya walang kaganapan, maaari kang magkaroon ng na.
Kung hindi mo kailangan ang kaganapan, pagkatapos ay maaari mong ligtaan lamang ito.
Subalit kung gagawin mo, pagkatapos mo ilagay lang ito doon.
Oo.
Mabilis na katanungan?
>> Madla: [hindi marinig].
>> Joseph ONG: Oo.
Dahil kung ano ang kailangan mong gawin, ang lang sabi ni document.ready maghintay para sa lahat
ang HTML sa pahina upang i-load muna.
At kadalasan, nais mo ang iyong mga elemento sa lugar bago mo mapatakbo ang anumang code.
Ayos lang.
Mayroon kaming upang makapunta sa Ajax.
Wala kaming karaming oras.
Kaya pros at cons.
JavaScript ay mas madali try isulat na may jQuery.
Ngunit jQuery ay uri ng mabagal.
>> Ito ay tulad ng PHP ay mas mabagal kaysa sa C, dahil na-kahulugan.
At jQuery ay isang bit mas mabagal kaysa sa JavaScript, dahil ginagawa nito ng maraming
mga bagay sa ilalim ng hood.
At kaya kung gumagamit ka ng jQuery, ito ay lamang ng kaunti bit mas mabagal kaysa sa
JavaScript, kahit na ito Binibigyan ka ng magaling na kagandahan.
At sa wakas, Ajax.
Sa ngayon may Ajax, hindi mo pa nakita Ajax sa pang tuntunin ng pset7, dahil
kapag nagawa mo, isinumite mo isang form sa quote.
Naglo-load nito ang bagong pahina.
Kaya mo makakuha ng ito malaki puting flash sa pahina habang na
naglo-load ang ikalawang pahina, tama?
>> Mas maganda talaga kung ikaw ay hindi magkaroon ito ng flash.
Tulad ng Facebook, kung kang mag-scroll lamang upang sa ibaba, nagdadagdag ito ng bagong nilalaman
nang hindi nagre-refresh ang buong pahina.
Kaya ang isang bagay tulad na ito ay magiging maganda.
Ito ang JavaScript code sa kaliwang bahagi.
Makukuha mo ang kung ano ay nasa loob ng input na.
Makukuha mo ang mga stock ng impormasyon mula sa Yahoo!
At pagkatapos ay gumawa ka ng isang malaking string na sabi, OK, ito ang mensahe na gusto ko
upang ipakita sa screen.
At pagkatapos mong ilagay ang mensahe na loob ng ilang mga HTML element na hindi nakakaabala
ipinapakita sa screen.
>> Kaya na ang lahat na nangyayari dito.
Kaya talaga, dahil ito ay ang lahat ng JavaScript at hindi mo kailangang magpatakbo ng
ngayon PHP, ito ay tiyakin na ang pahina ay hindi i-refresh.
Kaya ito ay lamang ng isang abstract na ideya na ako sinasabi dito sa ngayon.
Ang abstract na ideya ay na kung gagawin mo ito lahat sa JavaScript, hindi mo na magkaroon ng isang
pahina ng refresh.
Ngunit paano mo talagang gawin ito?
>> Well, talaga, makipag-usap tungkol sa ipaalam isang problema sa unang ito.
Ang problema ay sa JavaScript, pagpapatupad ay hindi sabaysabay.
Kaya mayroon kang maghintay para sa isa upang tapusin bago ka linya
isakatuparan ang susunod na linya.
At paano kung ako pupunta sa ibabaw sa Yahoo!, at ang kanilang mga server ay talagang mabagal, at
ito ay tumatagal ng mga ito ng tatlong segundo sa bigyan ako pabalik na impormasyon ng stock?
Kapag pinindot ko na linya presyo, kung ang pagpapatupad ay hindi sabaysabay na ito, dahil sa pamamagitan ng
default, kung ano lang ito ng pagpunta sa gawin ay ang iyong browser ay pagpunta sa stall para
tatlong segundo.
At hindi ka pagpunta sa magawa kahit ano habang ito ay makakakuha ng data na iyon.
Ito ay pagpunta sa ma-frozen.
>> At iyon ang masama.
Hindi mo na gusto ng isang user sa magkaroon ng isang nakapirming web page.
Itama?
Iyon lamang ang masama.
Sumasang-ayon ang bawat tao'y?
Kung nagba-browse ka sa Facebook at ito freezes at hindi ka maaaring gumawa ng anumang bagay, mo
makakuha ng talagang bigo.
Kaya ang solusyon ay gumawa kami ng isang bagay asynchronous sa halip.
Kaya sabi ni ang lahat ng ito asynchronous na bagay ay, pupuntahan ko tanungin ito
URL para sa ilang mga data.
At pagkatapos ay ako pagpunta sa panatilihin ang pagpunta.
Lamang ako ng pagpunta sa panatilihin e-execute kahit anong code na noon ay matapos na.
>> At pagkatapos ay sa tuwing ang data na iyon ay handa na, pagkatapos ay ako iproseso ito.
Iyon ay ang lahat ng ito ay sinasabi.
>> Madla: lamang ginagawang Ajax asynchronous code?
>> Joseph ONG: Ito ay isang asynchronous paraan ng pagkuha ng data.
Kaya ang unang bagay na tungkol sa Ajax ay nagbibigay-daan ito sa akin kumuha ng data
mula sa isang panlabas na website.
At ang ikalawang bagay ay ito tinitiyak ng na ang aking pahina ay hindi stall habang ako
kinukuha ang data na iyon.
Iyan ang asynchronous na bahagi nito.
Dahil ito napupunta off sa ibang lugar, dahil sinasabi ko panatilihing ako pagpunta sa habang
ito ay kinukuha ang data na iyon, na Ginagawang asynchronous.
Panatilihin ko e-execute.
>> Kaya panatilihin na asynchronous ideya sa isip.
At kukunin ko na ipakita sa iyo kung ano ang pagkakaiba ay.
Ang sabaysabay na bersyon ay sa kaliwang bahagi.
Ang asynchronous na bersyon ay sa kanang bahagi.
Tumingin sa mga numero upang makita kung aling hakbang na ito ay tumutugma sa kung ano ang
executes sa bawat linya.
Sa paglipas ng doon, ay nagpapakita up ang alerto muna.
Dahil ang pagkuha ng impormasyon ng stock mula sa Yahoo!
tumatagal ng tatlong segundo, kuwadra ito para sa tatlong segundo.
At pagkatapos nito alerto ang presyo pagkatapos ng mga tatlong segundo.
>> Kaya ngayon, na palabas alerto hanggang sa oras na iyon -
tatlong segundo in
At pagkatapos ng mga alerto sa ito sa pamamagitan ng pagkatapos nito.
Kaya mangyaring hindi lang ito hakbang-hakbang.
Ito ay tulad ng kung ano ang iyong guys Gusto tanggapin, tama?
Gamit ang asynchronous na pagpapatupad, una kang alertuhan.
Pagkatapos ay pumunta ka off sa URL na ito.
At sabihin mo, pupuntahan ko magtanong lamang para sa data.
At pagkatapos ay pupuntahan ko maproseso ito sa ibang pagkakataon.
Kaya agad executes ito ang susunod na linya pagkatapos kong gawin iyon
asynchronous kahilingan.
>> Kaya isang .001 segundo, makikita mo hi alerto.
Ipatupad na pag-andar, hindi importanteng bagay alerto.
At dahil ginawa ko ng pangako na ako Gusto iproseso ang data sa ibang pagkakataon, kung ano
ang mangyayari ay kapag nanggagaling ang data na iyon pabalik tatlong segundo mamaya, pagkatapos tumakbo ko na
pagpapaandar na mayroon akong banda roon.
Oo?
>> Madla: Maaari mo bang tukuyin o linawin kung ano ang ibig sabihin Ajax?
>> Joseph ONG: Kaya Ajax ay isang paraan na kung ako kailangan data kapag ako sa isang website at ako
ayaw mong i-refresh ang pahina, pagkatapos ay Gamitin ko ang teknolohiyang ito na tinatawag Ajax.
Iyon mahalagang lamang ay nangangahulugan na, pumunta fetch data mula sa isa pang website.
At gawin ito sa isang paraan na lamang Hindi stall ang aking web page.
>> Madla: Kaya ay na taglay bahagi ng JavaScript o jQuery?
>> Joseph ONG: Isinulat ni So sa isang tao ng paraan upang gawin sa ganitong JavaScript isang mahabang panahon ang nakalipas.
Sa isang punto, hindi ito umiiral.
At gayon ang isang tao imbento sa diskarteng ito upang payagan ang mga tao upang hilingin ang data na ito
sa ganitong paraan.
At na sinulat nila ang ilang mga bagay-bagay upang gawin ito para sa iyo.
At jQuery lamang ay nagbibigay sa iyo ito napakabuti paraan upang gawin ito
may ganitong $. makakuha ng function.
tanong?
Maaari ko bang sagutin ang mga tanong tungkol sa Ajax Pagkatapos masyadong.
Makikita ko ba dito.
>> Kaya ito sabihin sa amin makuha ang data nang walang i-refresh ang pahina.
At sabihin sa amin gawin ito sa isang asynchronous paraan na
ay hindi mag-freeze ng pahina.
Masyadong mahaba, ay hindi basahin kung na paliwanag ay masyadong mahaba para sa iyo.
Kaya sa wakas, cross-site pag-atake scripting.
Nakita namin ito sa Zamyla.
Kung sa aking database ng isang tao ay may ganitong pangalan, na kung saan ay ang script na ito na tag, at ako
may ilang mga code sa aking mga pahina na mga kopya out mga pangalan ng mga tao sa isang hilera, o mayroon akong
ilang code ng JavaScript na pagsingit ang pangalang ito sa pahina,
ano HTML ay makakakuha-produce?
Well, i-print ko ang mga tag na HTML.
I-print ko ang lahat ng mga tag na ito.
>> Na nakuha ko sa mga bahagi kung saan ako sa pag-print out kasama ang aking mga kaibigan.
I-print ko Lauren out.
Nag-print Milo out.
At pagkatapos ay ang aking pangalan sa database ay script na post
unflattering katayuan Facebook.
Dahil ipinasok ko ito sa pahina dahil mukhang JavaScript, kapag
ang pahinang ito ay makakakuha ng ipinadala sa gumagamit, maipo-pinaandar bilang ang JavaScript.
At kaya ito ay ang tinatawag naming isang cross-site na pag-atake scripting.
May isang tao na naglalagay ng nakahahamak na impormasyon sa sa iyong database na maaaring tumugma sa
ilang karagdagang string o ilang string ang JavaScript.
>> At kapag ito ay makakakuha ng naka-print out sa pahina sa ganitong paraan, pagkatapos ay i-ano
ang mangyayari ay na ang masamang code ay makakakuha ng pinaandar na hindi ko nilayong
para dito upang makakuha ng pinaandar.
At iyon ang lahat ng cross-site na atake scripting ay.
At ang paraan makakuha ka sa paligid ito ay tulad ng sinabi Zamyla.
Balutin mo lang ng bagay sa HTML espesyal na karakter.
At ito espesyal na karakter HTML ay isang PHP function na ay maiwasan ang ganitong uri
ng bagay mula sa nangyayari sa iyo kung mayroon kang isang nakakahamak na
string sa iyong database.
Escapes Ito lang ito, nang sa gayon ay hindi makakuha ng mga kahulugan bilang HTML.
Pinapalitan nito ang maliit na bracket sa kung ano ang tinatawag naming mga entity.
At nagpunta kami sa paglipas ng ito sa panayam masyadong.
Kaya sa palagay ko ka guys ay dapat magkaroon isang magandang hawakang mahigpit sa na.
Mga Katanungan?
Oo.
>> Madla: Kaya kung paano gagawin ang [hindi marinig]?
>> Joseph ONG: Sabihin na muli.
>> Madla: Paano gagawin ang monitor -
>> Joseph ONG: Mag-right.
Kaya mayroon kang isang bagay na nagsasabing, kapag Ako magparehistro, uri sa aking pangalan.
Lamang nagta-type ako sa patlang na iyon, ang aking pangalan ay stript post unflattering Facebook
katayuan malapit script tag.
At na lamang ay makakakuha ng ilagay sa database, dahil hindi ko masabi ng isang tao
sa mundo ay walang pangalan may kaliwang arrow sa loob nito o ang
salita ng script sa loob nito.
Hindi iyon talagang magkaroon ng kahulugan.
Kaya Mayroon akong lamang upang matiyak na ako sanitize ang mga bagay na bago ko i-print ito
out sa pahina.
>> Madla: Kaya ang HTML espesyal na cards pinipigilan ang mga script tag?
>> Joseph ONG: Oo.
Kaya ito ay hindi maiwasan ang mga script tag.
Ginagawa lamang itong siguraduhin na ang mga script tag na huwag makuha
kahulugan bilang HTML o -
oo.
Ay lang ito up bilang kung ano ito talaga.
Ayos lang.
Kaya na ay ang pagsusuri pagsusulit.
Cool.
>> [Palakpakan]