>> [Musika nagpe-play]
Hannah: Hi, sa lahat.
Salamat guys kaya magkano para sa darating out sa karima-rimarim na panahon para sa pagsusulit isa
suriin ang session.
Bilang ka guys alam, quiz isa ay ito Miyerkules.
Kaya kami ay pagpunta sa pumunta sa pamamagitan ng grupo ng mga paksa.
DAVIN: Uy, ang maaari kong sabihin isang bagay na tunay mabilis?
Hannah: Oo, Davin ng pagpunta upang sabihin ng isang bagay na tunay na mabilis.
DAVIN: Paumanhin.
Totoong mabilis, kung mayroon kang mga katanungan tungkol sa pagsusulit, maaari kang pumunta sa online.
Pumunta sa 2,014 pagsusulit isa, tungkol sa pagsusulit.
Ang nakuha ko logistik tungkol sa kung saan pupunta, kapag pumunta.
Kung sabay-sabay na naka-enroll, hindi namin Magiging makeup quiz sa 05:30.
O kung nagpadala ka sa akin ng isang isyu, mayroon kang ilang iba pang mga isyu.
Ngunit 05:30 ay ang make-up oras sa Miyerkules.
Ngunit kung mayroon kang mga tanong, pangkalahatang tanong,
online na mayroon ng lahat ng logistik.
Kaya suriin muna doon.
>> Hannah: Kahanga-hanga.
Kaya narito ang malaking listahan ng mga paksa na kami ay pagpunta sa pumunta hanggang ngayon.
Pupunta ako upang masakop ang lahat ng mga C mga bagay-bagay, na kung saan ay ang unang haligi.
Kaya ang mga bagay C na namin sakop pagkatapos ng pagsusulit zero.
Nagsisimula sa isang naka-link na listahan, na kabilang ang mga payo.
>> Ang lahat ng mga karapatan, kaya nakita namin na ito sa huling sesyon ng pagsusuri,
kaya ako pupunta upang pumunta sa pamamagitan ng ito ay isang maliit na bit mas mabilis.
Taasan lamang ang iyong mga kamay kung ako gusto mong pabagalin o address ng isang bagay na higit pa.
Ngunit kami gumamit ng naka-link na mga listahan dahil Nagsimula kami sa C sa array.
At array ay mahusay, ngunit ang problema ay mayroon sila ng isang nakapirming laki.
Naka-link na mga listahan-daan sa amin upang lumikha ng pabagu-bagong sized na mga istraktura ng data.
>> At mayroon kaming mga pangunahing pagpapatakbo, ipasok, tanggalin, at maghanap.
At maaari naming gawin insert sa pinakamasama kaso pare-pareho ang oras
kung ilalagay lang namin ito sa pinakadulo simula.
Tanggalin at maghanap, pinakamalala kaso malaki oh ng n oras.
Kaya muli, upang i-flip lamang sa pamamagitan ng mga larawan,
Alam ko nakita natin ang mga huling oras, ngunit namin Gusto upang masubaybayan ang aming listahan na naka-link
sa pamamagitan ng pagpapanatili ng track ng ulo ng aming mga listahan na naka-link.
Dahil alam namin na ang bawat isa sa aming mga node
ay lamang ng pagpunta upang tumuro sa susunod na node sa aming listahan na naka-link.
>> Kaya na kung paano namin subaybayan.
Kahit na ang mga ito ay hindi tuloy-tuloy na piraso ng memorya,
maaari naming mahanap ang mga ito sa pamamagitan lamang pagsunod sa iba't ibang mga arrow.
Heto ang aming istraktura para sa naka-link na listahan na node.
Nakita namin ang huling oras.
Mayroon kaming aming struct node.
At mayroon itong dalawang katangian.
Numero ng isa, ang aktwal na halaga na nais naming mag-imbak.
Sa kasong ito, ito ay isang integer.
Ito ay maaaring maging isang string, ng dati maging isang pansamantalang trabaho, kahit anong gusto mo.
At pagkatapos, mayroon kaming upang masubaybayan sa susunod na node sa aming listahan na naka-link.
Kaya na magiging isang pointer sa susunod na node.
Kung ikaw ay lamang ng paggawa paghahanap, tulad ng sinabi ko bago,
kailangan mong i-sundin ang mga arrow pababa.
Insertion, gusto mong subaybayan ng kung saan ang natitira sa iyong listahan ay.
At gusto mong i-redirect ang ulo upang ituro sa mga bagong elemento, na
sa kasong ito ay isa, at pagkatapos ay ituro ang isang
upang natitira sa naka-link na listahan.
Kaya muli, alam ko na ito ay isang maliit na bit ng isang umuulit na mula sa pagsusulit zero.
Kaya mayroon kaming upang maging maingat tungkol sa pagkakasunud-sunod kung namin
gawin ang mga pointings kaya hindi namin mawala sa pagsubaybay ng likod ng listahan.
OK, ang anumang mga katanungan na may isa-isa lang na naka-link listahan?
Galing, OK, cool.
>> Kaya ngayon, kami ay pagpunta sa pumunta sa isang bagay bahagyang lang mas komplikado,
doble naka-link na mga listahan.
Kaya bilang karagdagan sa pagpapanatiling track ng susunod na node,
Gusto din namin na subaybayan ng nakaraang node.
At ito ay nagbibigay-daan sa amin upang, kung hindi kami sa ilang mga punto sa aming listahan na naka-link,
pumunta hindi lamang pasulong, ngunit umulit din pabalik.
Dahil bilang nakita natin sa isang walang katulong na naka-link listahan,
kung namin ang ilang mga node, at biglang-bigla, nagpasya kaming,
talaga, gusto kong pumunta sa ang node bago mismo sa akin,
kailangan mong i-pumunta ang lahat ang paraan pabalik sa ulo
at umulit sa pamamagitan ng hanggang sa nakita mo ang node na iyong hinahanap.
>> Kaya ito ay gumagawa ng mga bagay bahagyang mas madali bilang hindi namin
sinusubukan mong umulit sa pamamagitan ng aming listahan na naka-link.
Ngunit ito ay nangangailangan sa amin upang masubaybayan ang isang higit pa pointer, kaya isa pang node bituin.
Ang lahat ng mga karapatan, kaya dito narito ang masayang bahagi.
Kami ay pagpunta sa pagsasanay sa pagpapatupad alisin para doble naka-link na listahan.
Kaya ito ay isang bagay na talagang patas na laro para sa pagsusulit.
Ito ay nagpakita up sa mga nakaraang pagsusulit.
Kaya nga dapat ihanda sa code nang kaunti sa C.
Huwag kalimutan na sa lahat ang nakatutuwang PHP at JavaScript,
pa rin mayroon kaming matandaan gawin C. Kaya mag-ayos sa na
kung pakiramdam mo ay kalawangin.
>> Ang lahat ng mga karapatan, sabihin makita kung maaari naming gawin ito.
OK, cool.
Kaya kami ay pagpunta sa subukan i-edit sa mismong dito,
at sana ito napupunta bilang binalak.
Ang lahat ng mga karapatan, ay nais ang sinuman na ninyo ako isang mungkahi bilang sa kung paano ko dapat magsimula?
Ang tanging palagay ako paggawa ay na ko na
nagbigay ng isang istraktura, ang isa akong nagpakita sa huling pahina,
sa huling slide.
At ako sa pag-iimbak ang ulo ng aking naka-link listahan sa ilang pointer na tinatawag na listahan.
Gusto ba upang makapagsimula sa akin?
>> Madla: Maaari kang lumikha ng isang bagong node na tumawag sa listahan?
>> Hannah: Kahanga-hanga, kaya kami ay pagpunta sa gumawa
isang bagong node na i-crawl sa listahan.
Gusto ko na.
Makikita tawagan ko lang ito kung pointer na OK lang.
At kung saan dapat itong orihinal na magsimula?
>> Madla: Malamang sa ang ulo ng listahan.
Hannah: Maganda.
Gusto naming magsisimula sa ulo, na Sinabi ko ay pagpunta sa ay naka-imbak sa listahan.
Kahanga-hanga.
Sa ngayon, kaya mabuti.
At ngayon, ang aming layunin ay umulit sa listahan
hanggang sa mahanap namin ang node sa halaga n na gusto naming tanggalin.
OK?
>> Kaya ngayon ay ang bahagi kung saan gusto naming upang umulit sa pamamagitan ng.
Maaari sinuman iminumungkahi ng paraan upang umulit sa pamamagitan?
>> Madla: Ang isang loop.
>> Hannah: Isang loop.
Gustung-gusto ko ito.
Sa partikular, maaari naming subukang isang habang loop.
OK, at alam namin na naabot na namin ang Sa dulo ng aming listahan kapag ano?
Madla: Kapag pointer ay null.
Hannah: Kapag pointer ay null.
Maganda, gustung-gusto ko ito.
OK, cool.
Kaya paumanhin kung ang aking bounding suhay ay uri ng lagas screen.
Dinala namin ito pabalik.
OK, cool.
Ano ang susunod?
>> Kaya alam namin na gusto naming tanggalin ang node na may halaga n.
Kaya makahanap ng mga kaso kung saan ipaalam talaga naming makita ang aming mga node.
Kaya kung paano Gusto ko suriin na?
Gusto ko lang sabihin kung pointer, at pagkatapos ay kung ako nais upang makuha ang halaga sa labas ng pointer,
Ako arrow lamang n, katumbas n, ang parameter
na ibinigay namin sa function na ito, ang node na gusto naming talagang tanggalin.
Ang anumang mga katanungan hanggang dito?
Lahat ng karapatan.
OK, gumuhit ng isang mabilis na larawan kaya ngayon hayaan sa board upang maisalarawan ito.
>> Kaya sabihin nating mayroon ang aming kaibig-ibig na node.
At mayroon itong isang halaga, lamang Sasabihin kong apat.
At tumuturo sa tabi node sa aming listahan na naka-link.
At walang bago ito ay.
Kaya mayroon namin ang aming mga nakaraang mga na tumuturo sa wala.
Sa kasong ito, ituro namin pabalik.
OK, pagse-set up lamang ang aking listahan na naka-link sa paglipas dito.
At mayroon kaming isang listahan na tumuturo sa istraktura na ito upang magsimula sa.
Kukunin ko gumuhit ng isa pang para sa ang alang-alang ng pagiging kumpleto.
OK.
Kukunin ko ituro ito pasulong.
At kukunin ko na ituro na ang isa pabalik.
Oops, paumanhin.
Oo, nakuha ko ito pabalik.
Gawin itong muli.
OK, may pumunta namin.
Ang lahat ng mga karapatan, nakuha ko.
OK, narito ang ating larawan.
>> OK, kaya gusto naming isaalang-alang ang dalawang mga kaso.
Ang unang kaso ay kung ang node gusto naming tanggalin
ay sa pinakadulo simula ng aming listahan.
At pagkatapos, ang pangalawang kaso na gusto naming isaalang-alang ay kung saan pa man.
Nauunawaan ko na ito ng ganap walang ayos ng pagguhit sa lahat ng aking mga bura,
ngunit sana ay susubukan naming gumawa ito malinaw na may ilang mga code.
>> OK, masakop ang kaso nang sa gayon hayaan kung saan nakita namin ang aming mga node,
at ito ay sa pinakadulo magsimula ng aming mga listahan na naka-link.
Sinuman ninyo ako ng suggestion dito kung ano
Ang dapat kong gawin upang aktwal na alisin ang aming node?
Ito ay isang maliit na nakakalito.
OK?
>> Madla: Mayroon kang gumawa ng mga node na magiging bago ito
at gumawa ng ituro ito sa isa na magiging matapos na ito,
at gawin ang mga node na ay magiging matapos na ito at gumawa ng mga
ituro ito sa node bago ito.
Hannah: Mismong.
OK, kaya ito ang kaso where-- mayroon kaming dalawang mga kaso.
Mayroon kaming kaso kung saan ang node na kaming naghahanap ng para sa
ay ang harapan ng listahan.
OK, at pagkatapos ay ang kaso na inilarawan ay kung hindi man, i-right?
Ito ay sa iba pang lugar sa listahan.
Kaya't sinabi sa iyo, kailangan namin upang tingnan ang node nakaraang,
at gawin ang mga nakaraang node ituro sa susunod na node.
Kaya sabihin nating kami sinusubukan na kumuha ng limang
sa aking pinaka-maraming kalat guhit sa paglipas dito.
Gusto naming siguraduhin na ang apat na ngayon tumuturo sa anim.
Apat sa tabi ng mga punto upang anim.
At anim na nakaraang mga punto sa apat.
Iyon ay ang aming layunin dito, tama?
Ito ay kung ano ang tingin ko sa iyo Sinabi lamang doon.
>> OK, kaya hayaan makakuha ng na unang piraso.
Ay gawin ang mga may Hayaang nakaraang pointer nakaraang.
Kaya dapat ituro ang apat sa tabi ng kung ano?
Eksakto, sa kasong ito, anim.
Kaya dapat naming sabihin pointer, sa susunod.
OK?
Lahat ng karapatan.
Kaya Hinahayaan ng mapupuksa ang pangit na larawan at subukan upang gumuhit ng isang bahagyang nicer isa.
Mayroon kaming aming head listahan dito.
At na tumuturo sa unang node sa ang aming listahan na naka-link, na sinabi namin ay apat.
Narito ang aming ikalawang node, lima.
At ang aming ikatlong node, anim.
Nagsusubok lang iguhit ang eksaktong parehong larawan, lamang ng kaunti pa nang malinis.
OK, kaya apat na susunod Orihinal na tumuturo sa limang.
Limang ng susunod na mga punto sa anim.
Anim na nakaraang mga punto sa limang.
At limang ng nakaraang mga punto sa apat.
Kaya magkano nicer!
OK, cool.
>> Kaya ngayon, ano ang ginawa namin lamang dito, ang linya ng code,
na sabi ni pointer nakaraang susunod, kaya kung ano ang ibig sabihin na?
Nangangahulugan iyon na kung kaming naghahanap sa limang, pumunta sa nakaraang node,
at ito ay susunod dapat ngayon punto sa limang sa tabi.
Kaya mahalagang, kung ano na ginagawa ay na binubura ang arrow
at ginagawa itong laktawan karapatan sa paglipas ng limang.
Malinaw ba iyon?
Alam ko na maaaring maging isang maliit na bit na hindi buo.
Nakakakita ako ng ilang nods head.
Iyon ay mabuti.
OK, cool.
Ngayon, kung ano ang susunod na hakbang?
>> -Reset ko na ang susunod.
Ngayon, na iba pang mga arrow kailangan kong baguhin?
Isa ito dito mismo.
Anim na nakaraang.
Hindi namin nais anim na naunang upang tumuro sa limang na ngayon.
Gusto naming ito upang tumuro sa apat.
Ba na larawan kabuluhan?
Kaya ngayon maaari naming aktwal na tumagal ng limang out.
Kaya hayaan makakuha ng piraso iyon.
Ano ang dapat kong gawin bago ako -reset ang anim na nakaraang apat?
Ang anumang mga ideya doon?
>> Madla: Libreng mga node sa pagitan ng ang mga ito sa pamamagitan ng pagtatakda nito sa null?
Hannah: Cool.
Talagang, ang aming pagtatapos layunin ay magiging upang magbakante ang node.
Kaya maaari naming gawin iyon dito mismo.
Libreng pointer.
Oo naman.
Ngunit kahit bago iyon, just-- ng aming layunin mismo ipaalam
dito ay upang i-set pointer sa tabi nakaraang katumbas ng pointer nakaraang.
Alam ko na ito ay nagsisimula sakop up.
OK, na take-- cool na ipaalam.
Maaari makita ng lahat ang bottom line na ito?
O kaya ay ito sobrang napakaliit?
>> Kaya bago namin maisagawa ang linyang ito dito, gusto naming
upang matiyak na pointer susunod ay hindi null.
Dahil kung pointer susunod ay walang bisa, kung anong uri ng error
makakakuha ako kapag sinusubukan kong isangguni ang isang null pointer?
Madla: Seg kasalanan.
Hannah: Isang seg fault, maganda.
OK, kaya kung hindi iyon walang bisa, pagkatapos ay maaari naming i-reset.
At mayroon kaming muli ng anim na punto sa apat.
Mga Tanong up hanggang sa puntong ito?
Oo?
>> Madla: Sa iyong unang kung pahayag, ginawa mo
ibig sabihin na magkaroon ang mga arrow sa tabi, o [hindi marinig]?
Hannah: sinadya ko pointer arrow n.
Kaya talaga, kung ano ang sinusubukan ko na gawin ay sabihin, ang kasalukuyang node na ako ay
iterating sa paglipas ng, ang kasalukuyang node na Naghahanap ako sa, ako sa pag-iimbak sa pointer.
At gusto kong malaman pointer ng halaga, na sa kasong ito ay n.
At gusto kong makita, ay ang node Naghahanap ako
para sa mga node ako pagpuntirya tanggalin?
Kaya na ang dahilan kung bakit mayroon kaming dito pointer n.
>> Madla: Kaya ang arrow ng pagpunta sa n, itatakda mo ang halaga
at mag-imbak ito sa isang node tinatawag n?
>> Hannah: Kaya tulad ng kung ako ay pagpunta sa pamamagitan ng naka-link na listahan
at nagtuturo sa limang.
Kung gusto ko upang makakuha ng halagang iyon, kung Gusto kong makakuha ng mga numero na iyon, 5,
Kailangan kong gawin pointer arrow n.
Cool?
Oo.
>> Madla: ba n ang pangalan ng variable?
Hannah: Oo.
Kaya kung i-flip namin pabalik isa slide, n ay ang pangalan
ng halaga sa loob ng node sa aming listahan na naka-link.
At alam ko maaari itong makakuha ng isang maliit na bit nakakalito dahil kami rin
tumatawag ang bagay na gusto naming tanggalin n.
Kaya na kung saan na isang linya ay mula sa.
Oo?
>> Madla: Ano ang mayroon kang [Hindi marinig] kung paano sila gumagana?
Ang isang pointer [hindi marinig]?
>> Hannah: Oo naman.
Sigurado ka about-- na linya ng pakikipag-usap?
Madla: Ang huling linya [hindi marinig].
>> Hannah: Oo naman, OK.
Kaya tingnan natin ang larawan sa ipaalam Upang subukan upang ipaliwanag ito.
Sorry, para sa camera, ang tanong ay
maaari naming ipaliwanag pointer na arrow sa tabi ng pointer nakaraang.
OK, kaya sabihin nating kami sa limang at ang aming layunin ay upang tanggalin ang lima.
Kaya pointer susunod, kung alin sa mga tatlong nodes ay na nagbibigay sa atin?
Na pinagsasama-amin sa ika-anim na node, tama?
>> OK, kaya ngayon hinihiling namin sa para sa nakaraang anim na iyon.
OK?
At kami ay pag-reset ito upang maging katumbas sa apat,
na nangyari sa maging limang ng nakaraang.
Alam ko, ito ay sobrang mahirap na subaybayan ng.
Ko talagang inirerekumenda kang gumuhit ng mga larawan kung makakuha ka ng isang katanungan na tulad nito.
Oo?
>> Madla: ba ang dahilan na wala kaming isang [hindi marinig]?
>> Hannah: Mismong.
Kaya ang tanong ay, bakit hindi namin kailangan upang suriin dito?
Bakit hindi na kailangan namin upang suriin na pointer nakaraang ay hindi katumbas ng null?
At ito ay dahil hindi namin na pinaghihiwalay out
Sa kaso kung ang pointer ng sa pinakadulo simula.
Mabuti tanong.
Ano pa dito?
OK, cool.
Kaya tapusin na natin ito ipaalam.
Humihingi kami ng halos doon.
>> Kaya kung ano kung ito ay sa ulo?
Paano kung sa halip na sinusubukang tanggalin ang limang,
talaga namin nais na tanggalin ang apat?
Ano ang kailangan kong gawin?
Well, gusto kong i-reset ang aking ulo sa kung ano?
Mag-shout out ito?
Madla: Ang isa pagkatapos nito.
Hannah: Maganda.
OK, kaya ililista namin nais na tumuturo kung ano ang aming pointer susunod na node ay.
Mahusay.
At para lamang sa pagiging kumpleto ng alang-alang, kami ay
nais na suriin na ang hangga't ang aming listahan Hindi null, hangga't ang aming listahan ay hindi
walang laman, pagkatapos ay nais naming i-set aming nakaraang katumbas ng null.
Tanong sa ngayon?
Isang hakbang ang layo from--?
>> Madla: Gusto itong maging kung listahan ay hindi katumbas ng null?
>> Hannah: Oo, ikaw ay ganap na karapatan sa iyo.
Ako kaya paumanhin.
Ay listahan ay hindi kapantay sa null.
Kahanga-hanga.
Sinusubukang upang dalhin ito sa lahat sa screen.
Uri Ito ay sa lagas.
Paumanhin, guys.
At huling ngunit hindi bababa sa, lahat ng mayroon kaming gawin ay ibinalik.
OK.
Iyon ay isang maraming crammed sa tunay mabilis.
Sumakay ng ilang sandali upang tumingin ito sa ibabaw.
Sabihin sa akin kung mayroon kang anumang mga katanungan.
Oo?
>> Madla: Kung list sa ulo, then-- maghintay, Di bale na.
>> Hannah: OK, magandang.
Kaya ito ay kung ang listahan ay sa ulo, inaalis namin ito sa kung anong ipinasok na namin.
Oo?
>> Madla: Maaari mong ipaliwanag ang unang kung muli statement?
Kung ang pointer sa n ay katumbas ng n?
Hannah: Oo naman.
Kaya ang aming layunin ng buong function ay tanggalin ang node na may halaga n.
Kaya kung makita namin, pati kami iterating sa pamamagitan ng aming listahan,
ang node sa halaga n, na ang gusto naming tanggalin.
Kaya ang lahat ng mga pagtanggal mangyayari sa loob ng na malaki kung statement.
Sinusuportahan ba na may katuturan?
Ayos.
Oo?
>> Madla: Marahil hindi lamang ang makakakita ito, ngunit huwag kailangan mo rin ng isang linya
para sa pag-scroll sa listahan?
Hannah: Kahanga-hanga.
Ni dalhin ito up ng isang maliit na bit Hayaan, at ipapakita namin itapon na karapatan sa ibaba.
Siguro sa board ay nai naging isang bahagyang mas mahusay na ideya.
Kaya kung paano Gusto ko ilipat ang pointer ng pasulong?
>> Madla: Pointer ay katumbas ng pointer plus one.
>> Hannah: Maganda.
Kaya na nagbibigay-daan sa amin upang patuloy iterating sa pamamagitan ng.
OK.
Madla: Gusto hindi magkaroon ng isang tao?
Hannah: Isa pang oras?
Madla: Gusto hindi magkakaroon ng isang tao pagkatapos ng malaking gulang kung
pahayag [hindi marinig]?
Hannah: Aling mga bahagi?
Sorry.
>> Madla: Ang traversal, Hindi dapat magkaroon ng isang tao?
Hannah: Ikaw talagang ay maaaring magkaroon ng isang tao.
Dahil mayroon akong isang pabalik na karapatan doon, hindi mo kailangang isang tao.
Pero oo, mahusay na pinag-uusapan.
OK, yes?
Madla: Maaari ba kaming isipin na pointer na gumagalaw sa listahan
bilang pagkuha sa halaga ng bawat node sa listahan?
O kaya dapat naming isipin na ito bilang uri ng mga panlabas na sa listahan?
>> Hannah: Alinman sa isa ay pinong, tingin ko.
Ang paraan isipin ko ito ay Sabihin ko, OK, ako pointer.
At ako ito.
Ito ang aking kamay.
Pupunta ako sa nagtuturo sa iba't ibang mga bagay na gusto kong umulit sa pamamagitan ng.
Una, pupunta ako upang tumuro patungo sa ulo ng listahan.
At ang sinasabi sa akin ako ay pagpunta upang tumuro sa apat.
At kaya ako, pagiging panlabas na sa listahan, Maaari ko bang ituro sa bawat isa sa mga sangkap na ito.
Kaya tingin ko ng aking sarili bilang pointer.
Madla: Kaya kapag tinanggal mo isa sa mga elementong iyon,
mong tanggalin ang iyong sarili, sa gayon na magsalita.
Hannah: Mismong.
Kaya tanggalin mo ang bagay ka na tumuturo sa.
Kaya sa halimbawa na Nakita namin kung saan kami ay
sinusubukang tanggalin ang limang, kapag ako nagtuturo sa limang,
Gusto kong tanggalin ang bagay ako na tumuturo sa.
Akmang-akma.
Oo?
Madla: Nakarating na nagsagawa kami ang bahala sa kaso kung saan n ay wala sa listahan?
Hannah: Kung n ay wala sa listahan?
Lahat na pupuntahan mangyari ay ikaw pagpunta upang umulit sa pamamagitan ng at umulit
sa pamamagitan ng, at pagkatapos, na iyong pupuntahan upang makapunta sa pointer pagiging walang bisa,
at pagkatapos na iyong pupuntahan dapat gawin.
>> Madla: Kaya kailangan namin upang bumalik anumang bagay?
Hannah: kami dati.
Ang paraan na kung tinukoy ito function, lang sabihin ko na ito ay nagbabalik
magpawalang-bisa sa anuman.
Ngunit maaari kang magkaroon ng isang bagay tulad ng mga bumabalik na isang integer,
at ito bumalik 1 mga negatibong kapag nabigo ito.
Isang bagay tulad na.
Mga Tanong with-- yes?
Madla: [hindi marinig]?
Hannah: Paumanhin?
Madla: [hindi marinig]?
Hannah: Oo naman.
Kaya iyon ang actual-- sa sandaling hindi namin tapos na lahat sa trabahong ito ng paglilipat
lahat ng mga arrow na ito sa paligid, ang aming buong layunin ay upang mapupuksa ang mga node
na kaming naghahanap ng para sa.
Kaya sa kasong ito, pagbabakante pointer, kung ako nagtuturo sa limang,
ito ay tulad ng binubura ang gitnang node.
Iyan ang libreng pointer bahagi.
Iyon make kahulugan?
>> Madla: Kaya kahit naisip ginawa mo Hindi [hindi marinig]?
>> Hannah: Kaya ipinapalagay namin sa simula kami ay may ilang mga listahan na already--
sila ay ilagay ito nang magkasama.
Kaya upang bumuo ng mga ito listahan, must've sila [hindi marinig].
Ayos.
Ano pa na may ito?
Oo?
>> Madla: Paano kung ang listahan hindi katumbas ng null line?
[Hindi marinig]?
Hannah: I-right dito?
Madla: Oo.
Hannah: OK, ako lahat ako paggawa ay ako na tinitiyak lamang
na bago kong subukan sa listahan dereference, bago sinusubukan kong i-access ang nakaraang,
Gusto kong siguraduhin na hindi null kaya hindi ako makakuha ng isang seg fault.
Ayos.
>> OK, alam ko na ito ay medyo Marami upang makakuha ng sa pamamagitan ng.
Kaya slide na ito ay magiging gagawing magagamit sa iyo.
Kaya maaari kang pumunta sa pamamagitan ng ito nang mas detalyado.
Oo?
>> Madla: Bakit inaayos ng listahan [hindi marinig]?
Hannah: Oo naman.
Kaya ba talagang tumuturo sa listahan ang sangkap dito mismo,
sa unang elemento sa listahan.
Kaya hindi ito maaaring magkaroon ng mga nakaraang.
Oo?
>> Madla: ba ang pointer punto sa parehong address sa memory?
Ituro ba ito sa parehong address sa memorya bilang node
na ito ay nagtuturo sa?
>> Hannah: Oo, tumuturo ito sa node sa memorya.
>> Madla: Mag-right, kaya kapag nag-[hindi marinig]?
>> Hannah: Sa isang katuturan, oo.
OK.
Ang lahat ng mga karapatan, na patuloy sa paglakad na may ganitong ipaalam.
At kung mayroon kang higit pang mga tanong, manatili sa paligid sa dulo,
at maaari naming pumunta muli sa pamamagitan nito.
OK, cool.
Ngayon, makuha namin upang lumipat sa sa hash talahanayan, pagsubok,
at mga puno, na nakuha mo super pamilyar sa sa p-set limang, speller.
>> Kaya hash talahanayan ay isa lamang array na may isa-isa naka-link na mga listahan
o doble naka-link na mga listahan ng darating na off nito.
Kaya mayroon kaming ilang mga pag-uuri ng nag-uugnay array.
At kung paano namin alam kung alin sa mga array mga bucket upang makakuha ng in sa,
gumagamit kami ng hash.
Kaya sa kasong ito, maaari sinuman hulaan kung ano ang hash
ay ibabatay lamang sa ilang ng input at output?
>> Madla: Letter numero ng alpabeto.
Hannah: Mismong.
Inilalagay lamang ito sa kanila sa alpabetikong order.
Lahat ng bagay na nagsisimula sa isang A ay ilagay sa unang bucket.
Lahat may B ay ilalagay sa pangalawang bucket, iba pa, at iba pa.
Galing, OK.
At isang hash ay anumang function na tumatagal sa isang salita
at sasabihin sa iyo kung ano ang Bucket ito ay kabilang sa.
Kaya kung aling mga entry sa aming array ito ay kabilang sa.
>> Kaya sa tuwing Ibinibigay ko ang aking hash function na ang isang salita,
Dapat sabihin dito sa akin ang parehong ilagay bawat solong oras.
Kaya kung gagamitin namin ang mga hash mula sa nakaraang slide
kung saan kami naka-uuri-uri ng unang titik ng alpabeto,
sa bawat oras na bigyan ko ang aking hash "mansanas,"
dapat itong palaging magbibigay sa akin pabalik 0.
Kaya kung mayroon akong isang mansanas upang ilagay sa aking hash talahanayan,
kung bibigyan ako "apple" sa aking hash, dapat itong sabihin, pumunta ilagay ito sa bucket 0.
Kapag ako ay naghahanap para sa isang mansanas sa aking hash talahanayan
at sabihin ko, kung saan maaari mansanas live na, hilingin mo ang iyong hash.
At sinasabi nito, pumunta sa bucket 0.
Ang lahat ng mga karapatan?
Mga Tanong may hash function?
Kahanga-hanga.
>> Narito ang isang bahagyang higit pa detalyadong paliwanag
ng kung ano ang maaaring maging hitsura ng hash tulad.
Lahat ng karapatan.
Ngayon, ang problema sa hash mga function ay nasa isang perpektong mundo,
Gusto naming magkaroon ng isa lamang bagay sa bawat bucket.
Ngunit sa katotohanan, may Hindi isang salita lamang
na nagsisimula sa A. Mayroong hindi lamang ng isang salita na nagsisimula sa B. Kaya
sa kasong ito, kung namin biglang makakuha ng "isang itlog ng isda,"
at gusto naming ilagay ito sa aming hash table,
at nakita namin, oh, hindi, banana ay pa doon, kung ano ang gonna namin gawin?
>> Well, mayroon kaming dalawang mga pagpipilian.
Ang unang opsyon ay linear probing, na
Nangangahulugan lamang sasamang hanapin sa susunod na walang laman bucket.
Pumunta mahanap ang susunod na walang laman ang entry ng array.
At ilagay lamang ang "isang itlog ng isda" doon.
Kaya alam ko ito ay dapat pumunta sa saging sa bucket isa.
Ngunit ilagay lang ito sa tatlong bucket, dahil bucket tatlong ay walang laman.
Ang isa pang pagpipilian ay marahil kung ano ang ipapatupad
sa iyong p-set, kung saan mo Nagkaroon hiwalay na chaining.
Kaya bawat isa sa iyong mga bucket, bawat isa sa iyong mga elemento array,
pagpipigil hindi lamang ng isang salita, pero sa totoo hold ang isang pointer sa isang listahan ng mga salita.
Kaya kung mayroon kang saging sa iyong talahanayan ng hash
at biglang na gusto mo upang magdagdag ng isang itlog ng isda, walang problema.
Magdagdag lamang ng isang itlog ng isda sa sa dulo, o sa sa simula, ng iyong listahan ng naka-link.
OK,-hanga.
Mga Tanong may hash mga talahanayan bago kami pumunta sa?
>> Lahat ng karapatan.
Mga Puno at pagsubok.
OK, kaya ito ay isa pang pagpipilian para sa pagpapatupad ng diksyunaryo.
Maaari mo pa nakakagawa ng try.
Kaya ito ay isang espesyal na uri ng puno na behaves tulad ng isang multi-level hash talahanayan.
Kaya makikita mo ang larawan kung saan mayroon kang isang array na
tumuturo sa isang bungkos ng array puntong iyon sa isang bungkos ng array
puntong iyon sa isang bungkos ng array.
At kami makita kung ano mismo na magiging ganito ang hitsura sa isang susunod na slide.
At higit pa sa pangkalahatan, ng isang puno lamang ang anumang mga istraktura ng data
kung saan ang data ay nakaayos sa ilang hierarchy.
Kaya kung saan nakita natin na mayroon kami isang uri ng pag-unawa
ng isang tuktok na antas, ang susunod na antas, isang susunod na antas, ang susunod na antas.
Kaya ito ay marahil pinaka malinaw may ilang mga tukoy na halimbawa.
Kaya narito ang aming tree.
Maaari mong makita na ito May partikular na mga antas
na sisimulan namin ang may ugat na node, isa.
At maaari naming bumaba sa pamamagitan ng aming tree.
>> Ang isang binary puno ay isang partikular na uri ng tree.
At ang tanging pagtutukoy para sa isang binary puno
ay na ang bawat node ay hindi hihigit sa dalawang dahon.
Kaya hindi ka pagpunta upang makita ang anumang ng mga node ay may tatlo o apat
o ilang iba pang mga bilang ng mga dahon.
At pagkatapos ay kahit na mas tiyak ay isang binary paghahanap puno
kung saan ang bawat node sa kaliwa ng mga node ay pagpunta sa may mas maliit ng halaga.
At ang bawat halaga sa kanan ay magiging mas malaki.
Kaya kung makikita mo ang 44 ay sa aming mga ugat, sa kaliwa, 11, 22, at 33
ang lahat na mas mababa sa aming mga ugat.
At sa kanan ay ang lahat numero bigger-- 66, 55, at 77.
At ari-arian na ito pagpipigil totoo sa bawat antas ng tree.
>> Kaya kapag pumunta kami pababa sa 22, 11, at 33, 11 pa rin
Mas maliit sa 22 at 33 ay mas malaki kaysa 22.
At ito ginagawang mas madali upang maghanap dahil kung kaming naghahanap para sa isang numero,
alam namin eksakto kung aling mga sangay upang sundin pababa.
Kaya ito ay dapat ipaalala sa iyo ng Medyo ng binary paghahanap.
Oo?
>> Madla: Kaya kapag ikaw ay naglalarawan ng binary,
ang sinabi mo ito ay hindi hihigit sa dalawang dahon?
Hannah: MM-Hm.
Madla: Puwede itong magkaroon ng mas kaunting?
Hannah: Oo.
Kaya sabihin nating, halimbawa, Hindi magkaroon ng isang kahit na bilang ng mga bagay
at hindi ka maaaring punan up ang lahat ng iyong dahon, ito ay pinong kung ang isa ay may isa.
OK?
Kahanga-hanga.
Anumang iba pang mga katanungan sa mga puno?
OK.
>> Bumalik sa aming pagsubok bilang ako ay pakikipag-usap tungkol sa isang kaunti mas maaga,
kung paano namin may mga array multi-level.
Kaya sa kasong ito, sisimulan namin sa tuktok.
At maaari naming sundin ang anumang ibinigay na salita pababa.
Kaya sabihin nating gusto naming upang tumingin para sa Turing.
Simulan namin sa T, sundin ito pababa sa isang array na naglalaman U,
at sundin ito pababa hanggang namin maabot ang maliit na delta na
Sinasabi sa atin, oo, nakita mo ang isang salita.
I-clear sa pagsubok?
Kahit ano upang pumunta doon?
Oo?
Madla: ba ang simbolo ng delta mag-ookupa espasyo sa loob ng try?
Hannah: Oo, kaya hindi talaga kahit kailangan na maging isang delta.
Ngunit kailangan namin ng ilang paraan upang sasabihin natin sa ating computer-- ng paumanhin,
kaya na alam namin na Tur ay hindi isang salita.
Dahil sabihin nating hindi namin ginawa magkaroon ito konsepto ng isang delta, konseptong ito
ng pagbati, ang nahanap mo ang isang salita, Gusto ito pumunta sa pamamagitan at umulit T-U-R,
at pagkatapos ay sabihin, kahanga-hangang, nakita ko ito!
Dapat din itong maging isang salita.
Ngunit ito ay talagang hindi.
Gusto naming buong Turing na isang salita.
Kaya dapat mayroon kaming isang bagay sa end na nagsasabing, binabati kita,
nakakita ka ng lehitimong salita.
Madla: Kaya kung mayroon ka na tulad ng 26 titik sa alpabeto,
Gusto talaga mayroon kang 27 mga susi sa iyong try?
>> Hannah: Galing, oo.
Kaya talaga, sa tingin ko na Magiging sa susunod na slide.
Ta-da!
Saan kung mayroon kang isang node sa iyong try, handa ka
pagpunta sa magkaroon ng 27 mga bata sa halip na 26.
Ang anumang mga katanungan na may na?
Oo?
Madla: Bakit pagsubok tumagal ng hanggang kaya magkano ang espasyo [hindi marinig] bilang ka pumunta?
Bakit itinuturing na ito upang maging [hindi marinig]?
Hannah: Oo naman.
Sabihin bumalik.
Ang tanong ay, kung bakit mga pagsubok kaya magkano ang mas malaking
kaysa sa isang bagay tulad ng isang hash table.
Kaya para sa bawat isa sa mga antas, kahit na hindi sila iginuhit dito,
kailangan mong magkaroon ang lahat ng 26 mga character.
At ang dahilan na hindi magagawa sabihin, oh, ngunit tulad ng para sa Turing, ako
Hindi kailangang magkaroon ng alinman sa mga parehong bagay sa antas ng U. Well,
kung biglang gusto mong idagdag isang bagay na tulad ng T-H,
Gusto kailangan mong magkaroon ng kakayahan ng pagdagdag ng naturang salita.
Kaya para sa bawat solong titik, ka ng pagpunta sa may
na magkaroon ng isang bungkos ng array na nanggagaling off ng mga ito.
Kaya maaari mong makita kung paano gusto ito makakuha ng talagang malaki, talagang mabilis.
Anumang iba pang mga katanungan?
Lahat ng karapatan.
Oo?
>> Madla: Kapag pagsubok mas mabilis kaysa sa hash talahanayan?
>> Hannah: Kapag pagsubok mas mabilis kaysa sa hash talahanayan?
Kaya kung mayroon kang isang talagang masamang hash.
Kaya sabihin nating ako ay tulad, narito ang iyong hash.
Anuman ang salita bigyan mo ako, lagi ako
pagpunta sa ilagay ito sa array entry 0.
At kaya napupunta kami sa pamamagitan lamang ng paglalagay ng lahat sa isang malaking listahan ng mahaba-link.
At kaya ng lookup oras ay tumagal sa pinakamalala n kung ito ay sa pinakadulo ng aming listahan.
Gamit ang try, mayroon lang namin na umulit sa pamamagitan ng mga titik sa salita.
Kaya kahit na nagdagdag kami ng isang bungkos higit pang mga salita sa aming try,
ito ay hindi kumuha sa amin anumang mas mahaba upang mahanap ang isang partikular na salita.
>> Ang lahat ng mayroon kaming gawin ay, para sa Halimbawa, sa kasong ito,
sabihin nating kaming naghahanap ng mga zoom, Gusto naming mayroon lamang upang umulit sa paglipas ng
Z-O-O-M, apat na titik.
Kaya ito lamang ang haba ng salita zoom.
Hindi mahalaga kung gaano karaming higit pang mga salita naming ilagay sa try.
Maaari Palagi kaming makakuha ng mga ito sa mga apat na hakbang.
Kahanga-hanga.
Oo?
>> Madla: Kaya [hindi marinig] ay isang array, tama?
>> Hannah: MM-Hm.
Madla: Kung ikaw ay naghahanap ng [hindi marinig],
Gusto kailangan mong pumunta sa pamamagitan ng ang iyong array upang mahanap ang [hindi marinig]?
Hannah: Oo naman.
Madla: Hindi na kumuha ng mas maraming oras?
Hannah: Kung pupuntahan ko sabihin na ang aking array ay palaging
magiging A, B, C, D, E, F, G, blah blah blah,
kaya kung lagi kong malaman ito sa parehong eksaktong pagkakasunod-sunod,
kung palagi kong malaman ito sa alpabetikong pagkakasunod-sunod,
Maaari ko lang sabihin O ang numero ng sa gayon sa alpabeto.
Tumalon lamang sa lugar na iyon.
Dahil tandaan, may array, maaari naming ma-access ang
anumang elemento ng array na sa pare-pareho oras kung alam namin kung saan kami hinahanap.
Oo?
>> Madla: Sa nakaraang -slide [hindi marinig] 27,
ngunit 26 para sa unang isa.
>> Hannah: Paumanhin?
>> Madla: Ay hindi ang unang isa 0, nito ay hindi ito 26?
>> Hannah: Oo naman, kaya kapag sinabi naming 27, na pagpunta sa bigyan kami ng mga indeks ng 0 sa pamamagitan ng 26.
Ngunit kung aktwal mong bilangin mga palabas, ito ay magiging 27.
Magandang katanungan.
Ano pa?
Oo?
>> Madla: Kaya ang mga pagsubok mas mabagal kaysa sa hash talahanayan?
>> Hannah: sinusubukan ay magiging, sa teorya, mas mabilis kaysa sa hash talahanayan
pero mas maraming memory.
Oo?
Madla: [hindi marinig]?
>> Hannah: Sorry, hindi ko narinig mo.
Madla: [hindi marinig].
0-25 ay nagbibigay sa iyo 26.
>> Hannah: 0-25 gagawin magbibigay sa iyo ng 26, i-right.
>> Madla: At pagkatapos ay [hindi marinig].
Hannah: I-right.
Kaya ang bilang namin na tumutukoy ay ang bilang ng mga bagay sa aming array.
Kaya kung mayroon kaming 27, ito ay pagpunta sa magbibigay sa amin ng 0
sa pamamagitan ng 26, na kung saan ay magbibigay sa amin kuwarto para sa, sa kasong ito,
Hindi ako kabilang ang isang kudlit.
Kaya namin ang nakukuha 0 hanggang 25 ay ang unang 26 titik ng alpabeto ng,
o ang lahat ng 26 titik ng alpabeto.
At pagkatapos ay ang huling bagay, sa entry 26, ay
magiging sa check mark, o ang delta.
Ano pa?
Kahanga-hanga.
Nawala ang aking espasyo.
OK, cool.
>> Kaya namin na hinawakan sa ito.
Ngunit ang malaking kalakalan-off sa pagitan ng pagsubok at hash talahanayan
ay na pagsubok magbigay ng, sa teorya, pare-pareho hanapin
beses ngunit gumamit ng isang buong maraming memory.
Ang lahat ng mga karapatan, ngayon kami ay may bahagyang mas komplikadong mga kaayusan,
at makikita gawin namin sa C, at kami ilipat ang karapatan kasama.
>> Kaya stack, nakita namin na ito magbigay ng panayam sa kung saan mo
May isang bagay tulad ng isang stack ng mga trays kung saan
ang huling bagay na inilagay mo sa stack ay pagpunta
upang maging ang unang bagay na magdadala sa iyo off.
Kaya iyon ang talagang tumutukoy sa isang stack ay ang huling bagay na inilagay mo sa
ay magiging unang bagay na magdadala sa iyo off.
At ang mga terminolohiya na ginagamit namin kung kami ay pagpunta sa ilagay ang isang bagay,
kung kami ay pagpunta sa magdagdag ng isang bagay sa ang aming stack, tinatawag namin na pagtulak.
At kung tumagal kami ng isang bagay -off, tinatawag namin itong popping.
At kung kami ay pagpunta sa ipatupad ang stack, namin
kailangan mong siguraduhin na subaybayan ang mga pareho ang laki at ang kapasidad.
Kaya ang kabuuang bilang ng mga elemento ng aming makakaya matagal at ang kasalukuyang numero ng mga elemento
na aming hinahawakan.
>> At napaka katulad, mayroon kaming queues.
At ang tanging pagkakaiba ay sa halip na sa mga stack,
Sinabi namin ang huling bagay ilalagay namin sa ay ang unang bagay na lubos naming off.
Kaya sa queues, ang ang unang bagay na inilalagay namin sa
ay magiging ang ang unang bagay na lubos naming out.
Kaya ito ay tulad ng kung ikaw ay talaga lining up sa isang tindahan
at na kayo ay nakatulong, pagkatapos ay ang unang tao sa linya
ay dapat na ang unang tao na nakatulong.
Kaya na ay magiging isang queue.
>> Kaya kailangan namin upang subaybayan ang laki, kakayahan, at ulo dahil hindi kami
pagpunta sa tumagal ng lahat ng tao sa may unahan ng listahan sa halip na sa likod.
Mga Tanong sa iyon?
Anumang C mga tanong na Iniistorbo iyo?
Mga istraktura ng data, alinman sa na nakakatuwang bagay?
Ang lahat ng mga karapatan, cool.
Kaya makikita ipasa ko ito sa paglipas ng sa Alison sa tumalon sa ilang higit pang mga programming.
>> Alison: Oh, ipapakita namin makita.
Susubukan naming makita kung gaano kahusay ang gagawin ko dito.
OK, pupunta ako upang subukan at lumipad sa pamamagitan ng mga bagay-bagay na ito, guys.
Nagpunta Hannah napaka sa lalim sa lahat ng kanyang mga bagay.
Pupunta ako sa subukan upang bigyan ka ng isang mabilis na pangkalahatang-ideya sabog
upang maaari naming makapunta sa Davin sa lahat ang saya ng JavaScript at seguridad bagay
na siguro mo talaga nais na makarinig nang higit pa tungkol.
>> OK, tulad ng sinabi Hannah, kung mayroon kang anumang mga katanungan,
Pupunta ako masyadong mabilis, mangyaring, ipaalam sa akin.
Ako ay sagutin ang mga tanong kung kinakailangan.
Kaya upang simulan, kami ay pagpunta sa magsimula sa Marahil isa sa mga unang bagay
Natutunan mo sa web programming, na pahintulot.
Dapat pa kaya chmod, mo guys Masters sa ito sa lahat ng mga web
programming na iyong Na-paggawa kani-kanina lamang.
Ito ay isa lamang na utos lamang na nagbabago ang mga pahintulot
o ang mga pahintulot ng access sa aming mga bagay na file system.
Siyempre, sa aktwal makita ang mga ito, kung ikaw ay
pagkakaroon ng anumang mga problema sa mga sa panahon ng iyong mga hanay ng problema,
maaaring ginamit mo l -l, na kung saan ay mahaba, upang makuha ang uri ng view ng tulad nito,
kung saan mo talaga makita ang lahat ng ang mga pahintulot para sa isang file.
>> At talagang, kami ay lamang ng pagpunta sa pumunta sa pamamagitan ng medyo mabilis na medyo lamang
magkano kung ano ang ibig sabihin ng bawat isa sa mga ito.
Kaya na d namin dito mismo, na lamang ay kumakatawan sa direktoryo.
Malinaw dito mismo, makikita natin rwx, na ay nababasa, writeable, at executable.
Ang mga ay maaari ring katawanin bilang mga piraso, na aming makakuha sa sa susunod na pahina.
Kaya sa bawat isang bagay na may tatlong bahagi na nakita natin dito, kaya tatlong triads.
Kami ay rwx, r walang x at r walang x para sa unang file.
Ito ay ang pangkalahatang istraktura.
>> Kaya mayroon kaming ilang mga direktoryo.
Mayroon kaming ilang mga grupo ng gumagamit may mga pahintulot na ito.
Ang ilang mga pangkat na may mga pahintulot na ito, at isang mundo na may pahintulot.
Maaari mong isipin na ito bilang isang isang bagay na may tatlong bahagi.
Maaari mong isipin na ito bilang mga tatlong piraso.
Kaya maaari silang hawakan halaga kahit saan mula 0 hanggang
hanggang 7, na ang dahilan kung bakit minsan namin ay may gawin mo chmod
600 sa halip ng chmod RW kahit anong.
Susubukan naming makakuha ng sa isang halimbawa doon.
Ngunit isa lamang, maaari mong isipin ng mga bilang alinman sa rwx lamang,
o maaari mong isipin ang mga ito bilang ilang mga numero kung saan ang unang isa dito
ay kumakatawan sa isang numero sa pagitan ng 0 at 7, ang pangalawang isa
ay kumakatawan sa isang numero sa pagitan ng 0 at 7, at ang ikatlong isa
ay kumakatawan sa isang numero sa pagitan ng 0 at 7, OK?
>> May halaga ng 4. w r May isang halaga ng 2, at x
May isang halaga ng 1, na siyang dahilan kung bakit ito pahintulot dito ay chmod 700.
Dahil sa kasong ito dito, sinasabi nito na tayo na ang unang bit doon ay Binaligtad nang on.
Kaya mayroon kaming 4 para nabasa na.
Ang pangalawang bit ay Binaligtad nang sa para sa w, na 2, kaya ngayon ay mayroon kaming 6.
At ang ikatlong bit ay Binaligtad nang sa para sa x, na kung saan ay 1, kaya makakakuha tayo ng pitong.
At siyempre, ang aming grupo at ating mundo ay bawat 0.
Kaya ito rin ang katumbas ng chmod 700.
At gusto kong subukan Siguradong sa maunawaan ang pagma-map sa pagitan ng mga iyon.
Hindi ako sigurado kung ito ay may makabuo ng sa isang pagsusulit bago,
ngunit magiging isang tanong na maaaring kong tanungin.
>> Lang nang kaunti ng pagpunta kahit higit sa chmod dito, dito
ay ang napaka-general istraktura ng chmod tawag.
Kaya siyempre, na-chmod namin dito.
Mga sanggunian, ano ito ay tumutukoy sa ay na binibigyan namin ang mga pahintulot sa
o na namin ang pagkuha mga pahintulot ang layo mula sa.
Kaya mayroon kaming dito sa pahintulot, tulad ng binigyan ka namin ng chmod ng plus x,
dahil kakailanganin namin makita sa lalong madaling panahon.
isang lamang ay nangangahulugan na nagbibigay sa mga partikular na mga pahintulot sa lahat.
Bigyan ang mga ito sa lahat.
Kaya na maaari mong nang mahusay may u plus x o g plus x o o plus x o maramihang
hinggil doon.
Kaya ang unang bahagi ay palaging magiging mga sanggunian.
Sino binibigyan namin ang mga pahintulot sa, o na namin ang pagkuha sa kanila ang layo mula sa?
>> Ang ikalawang isa ay ang operator.
Kaya mo guys na karamihan ay Aaksyunan plus.
Ito ay nagbibigay sa mga pahintulot sa kahit sino ka pagbibigay sa kanila,
samantalang ang minus, lohikal, inaalis ang mga ito.
Kaya masyadong kakila-kilabot wala doon.
At pagkatapos mode ay kung ano usapan natin ang tungkol sa pagbabasa, pagsusulat, o e-execute.
Kaya plus x nangangahulugan bigyan executable mga pahintulot sa lahat.
At pagkatapos ay, siyempre, kung saan tiyak na file o direktoryo.
OK?
Ang bawat tao'y maganda sa chmod?
Huwag masyadong masama?
>> OK, kaya ang HTML, alinman sa iyo ay hustong gulang to-- edad MySpace?
Ipinadala ko ito sa aking seksyon, at literal kalahati ng mga tao
tumingin sa akin tulad ng ako ay mabaliw.
At ako ay tulad ng, guys, hindi namin na gulang.
Halika sa.
Kaya Hypertext Markup Language, ito ay totoo lang ng paraan para sa iyo
upang ipakita ang ilang mga bagay sa web.
Kaya ito ay isang markup language.
Ito ay hindi isang wika scripting.
Walang logic sa loob nito.
Ito ay simpleng upang baguhin ang paraan ng isang bagay ay ipinapakita.
OK, kaya na ang isang mahalagang pagtatangi dapat gawin.
Ito ay itinuturing na isang markup language, hindi isang wika scripting.
>> Kaya dito mayroon kaming mga tag na HTML.
Sa slide na ito ay malamang na ang karamihan sa mga mga na dapat ay pamilyar sa
at maging tunay na maginhawa para sa iyo.
Kaya malinaw naman, mayroon kaming ang aming HTML tag, na
designates na ang lahat sa sa pagitan ng dalawang ay magiging HTML.
Mayroon kaming ilang mga link, na malinaw naman ay magbibigay sa iyo
ng isang link sa isang panlabas na web page.
Ang ilang mga pamagat, sa loob ng aming ulo dito.
At mayroon kaming katawan na may h1, na isang header,
kaya makikita ito gawin itong maganda at naka-bold at mas malaki.
At pagkatapos, mayroon kaming ilang mga p, na isang talata.
Dapat mong malamang alam at maging pamilyar sa mga bagay
tulad ng kung paano mo ipasok ang isang imahe, ay Mayroon bang anumang iba pang header ng klase?
Gusto ko talagang maging kumportable sa div.
Kaya ang mga may karamihan ng mga tag na dapat ay pamilyar sa iyo.
Ngunit siyempre, tulad ng sa lahat ng bagay sa CS 50, ang listahan ay hindi malawakan.
Kaya tiyaking ka mag-ayos sa iyon.
>> CSS, kaya CSS, kung ang alinman sa mong panoorin ang aking mga seminar mula sa dalawang linggo nakaraan,
ay talagang lamang ng isang paraan Estilo sa iyong web page?
OK, kaya mayroon kaming ilang mga markup language.
HTML, na tumatagal ng pag-aalaga ng lang ang teksto at kung saan maaari itong maging sa pahina.
Ngunit CSS ay talagang kung ano ang ginagawang mas kaakit-akit.
Maaari kang magkaroon ng mga ito sa iyong HTML mga file, ngunit bilang ay namin makipag-usap tungkol sa ibang pagkakataon,
Ako ay medyo sigurado maaari itong ang susunod na slide, ito
karaniwang kasanayan, at talagang kasanayan na namin talagang hinihikayat,
para sa iyo upang panatilihin pinaghiwalay ang mga ito kapag namin makipag-usap tungkol sa MVC at ang buong tularan.
Iyan ay talagang kung ano ang feed sa.
>> Kaya ang CSS ay isang paraan lamang upang gumawa ng mga bagay na tumingin kaakit-akit.
Ang mga bagay dito, tulad ng katawan at #title at .info,
ito ay tinatawag na tagapili at kung ano ang ginagawa nila ay piliin ang mga ito tukoy na bagay
sa loob ng iyong HTML file at ilapat ang anumang estilo,
kahit anong uri ng mga bagay na gusto mo, sa partikular na elemento ng iyong web
na pahina.
Kaya dito, mayroon kaming kulay ng background at kulay
at isang pamilya ng font na pagiging mailapat sa anumang ay sa katawan.
Kaya kung kami ay tumingin muli rito, hindi umaaplay sa mga pamagat.
Ito ay nalalapat lamang sa kung ano ang sa mga katawan tagapili, OK?
>> Gamit ang pamagat dito, ito ay magiging ang parehong bagay,
ang kulay ng teksto pagiging asul ay pupunta lamang
upang maapektuhan kung ano ang loob ang tagapili pamagat.
Pati na rin ang impormasyon dito, ang teksto ay magiging kulay-rosas,
kahit anong ng impormasyon, na dito mismo.
Kaya ang tanging bagay na ay magiging kulay rosas sa pahinang ito
ay petsa, Lunes Nobyembre 17, 2014.
OK, kaya CSS ay isang paraan lamang upang Mayroon oo mas higit na kontrol over--?
>> Madla: Bakit kailangan mo gamitin ang hash na may pamagat?
>> Hannah: Susunod na slide, ipinapangako!
Susubukan naming makarating doon.
Kaya ito ang dahilan kung bakit mayroon kaming upang gamitin ang hash.
Kaya tagapili tumagal sa tatlong pangunahing mga form na makipag-usap namin sa iyo guys tungkol sa.
Fyou ko nais upang matuto nang higit pa, napakaraming out doon.
May mahusay na dokumentasyon ng CSS.
Mayroong isang name tag, na kung saan ay gawin sa pamamagitan lamang ng iyong normal na mga tag sa HTML.
Kaya h1, p, div, h2, mga uri ng mga bagay.
At maaari naming lamang pangalanan ang mga ito nang walang pagbabago.
Kaya bilang makita namin dito sa katawan, ito ay isang normal na tag.
Kaya maaari lamang naming ilagay katawan kapag kami ay pakikipag-usap sa aming mga CSS file.
>> Gamit ang pamagat, ang buong dahilan namin Mayroon ito ng hash ay mayroon kaming kung ano ang
isinasaalang-alang ng ID.
Kaya isang ID dapat palaging magiging natatanging sa loob ng iyong pahina ng HTML
nang sa gayon ay kapag ikaw ay nagre-refer na ito, ikaw
malaman na lamang ka nagre-refer na sa isang partikular na bagay.
Kaya sa kasong ito dito, gamit ang aming h1 dito, CS 50 review session,
mayroon kaming isang id ng pamagat.
Kaya upang sumangguni lamang sa na piraso ng aming HTML, mayroon kaming isang pamagat hash.
Sa pamamagitan lamang ng convention, mga ID ay itinalagang may hash sa harap ng mga ito.
Sa katulad na paraan, makikita natin impormasyon dito ay isang klase.
At kaya klase sa CSS ay itinalaga bilang isang tuldok klase
o tuldok ang kahit anong klase na.
Kaya sa kasong ito dito, ito ay info.
>> Kaya kumuha ako ng ito pabalik.
Pareho sa mga ito ay magiging Mga kulay rosas na para sa aming mga CSS dito
dahil pareho silang may isang klase ng impormasyon.
At sa aming mga CSS file, na itinalaga kami na kahit ano sa isang klase ng impormasyon
ay dapat pink.
Ba na magkaroon ng kahulugan?
Oo?
>> Madla: Kung kayo ay upang gawing lahat ng bagay sa katawan puti,
at pagkatapos ay subukang mong gumawa ng mga isang bagay sa loob nito ang bughaw,
Gusto na magdulot ng mga problema?
>> Hannah: Kaya CSS ay style cascading sheet.
Kaya kahit anong ay patungo sa ibaba ay ang mananaig.
Kaya kung gagawin mo ng isang bagay sa katawan, at kang magsagawa ng mga puting lahat,
at pagkatapos ay sa ibang pagkakataon sa mong baguhin ang pamagat o babaguhin mo ang teksto sa loob ng katawan,
overwrites ito na.
Kaya kahit ano patungo sa ibaba ay ang mananaig.
Oo?
>> Madla: At ID ay natatangi, ngunit klase ay maaaring maging higit pa?
Hannah: I-right.
Kaya dapat na natatangi ID, at mga klase ay maaaring -refer sa bilang ng maraming mga bagay hangga't gusto mo.
Anumang iba pang mga katanungan?
Oo.
>> Madla: [hindi marinig].
Ako nagtataka kung na gumagawa ng isang pagkakaiba.
Hannah: Sorry, kung ano ang pinag-uusapan?
Madla: May maliit "F" at capital "F."
Hannah: Kaya ang pagkakaiba sa pagitan ng maliit na "f" at capital "F"
hindi dapat gumawa ng isang pagkakaiba.
Kaya "f" ay magiging 15 alinman paraan.
Mahusay, kahit ano?
Ang bawat tao'y mabuti, CSS?
Oo?
>> Madla: Paumanhin.
Puwede kang isang klase at isang ID?
>> Hannah: Oo, magagawa mo na.
Bagay na maaaring parehong magkaroon ng isang klase at isang ID.
At masidhing kong inirerekumendang sinusubukan ang mga ito sa iyong sariling.
CSS ay pinakamahusay na kang matuto sa pamamagitan lamang ng paggawa ng isang bagay, napaka-simpleng web page,
pagguhit ng ilang CSS, at lamang nakakakita kung paano sila nakikipag-ugnayan.
At magkakaroon ka ng isang magandang, intuitive pakiramdam para sa kung paano ito gumagana.
>> OK, lahat maganda sa CSS?
Handa ka pagpunta sa gawin magandang website na may CSS ngayon.
OK, pinakamahusay na kasanayan, tulad lamang mga bagay na dapat tandaan, mga bagay
that-- ito ang dahilan kung bakit namin i-dock mo para sa designer at watnat.
Kaya isara ang lahat ng iyong mga tag na HTML.
Kaya kung mayroon kang isang bukas na katawan, dapat ay may malapit katawan.
Kung mayroon kang isang bukas na talata, dapat ay may malapit na talata.
Suriin upang makita na napatunayan ang iyong mga pahina.
Dapat maging napaka-pamilyar sa iyo guys may ito mula p-set pitong
may CS 50 pinansya sa W3 validator.
At tulad ng sinabi ko bago, isa sa aming malaking paradigms
ay naghihiwalay sa iyong mga istilo na may CSS mula sa iyong markup, na HTML.
At pagkatapos ay, siyempre, mayroon kaming ang magandang XKCD pababa dito.
Ayos, comic relief!
>> OK, TCP / IP.
Sa pagitan ng mga ito at HTTP, talaga ang mga ito ay parehong mga protocol.
Kaya maaari mong isipin lamang sa kanila bilang isang hanay ng mga panuntunan
na namamahala sa kung paano bagay ilipat sa buong internet.
Kaya transmisyon control protocol, o internet protocol,
ay isang paraan lamang upang matiyak nakakakuha na data kung saan ito ang nangyayari
at alam namin kung kailanman namin ang nawawalang data.
Kaya kung guys sa tingin pabalik sa panayam ilang linggo na nakalipas na may David
kung saan namin ay may apat na sobre, ang mga ito ay lahat ng bilang na tulad ng isa sa apat na,
dalawa sa apat, tatlo sa apat, apat sa apat, ito ay isang hanay lamang ng mga panuntunan.
Sinabi namin, OK, sa tuwing kami ay pagpapadala ng higit sa isang packet,
kami ay pagpunta sa numero ito sa kung ano ang numero ng ito ay
at kung gaano karaming mga kabuuang na dapat makuha ng gumagamit.
>> At ito ay lamang na nagsasabi kung sinuman ay tumatanggap sa data kung sila
nakuha mo ang lahat o kung isang bagay Kaka nawala sa kahabaan ng paraan.
At kailangan nila upang humingi itong muli.
Ito ay talagang isang hanay lamang ng mga panuntunan.
Iyon ay kung paano mo maaaring isipin na ito, OK?
At din, tinutukoy nito ang port, na ka guys can-- alam ko sa panahon ng panayam,
sila ay nagkaroon ng isang buong listahan ng mga daungan.
Ngunit wala kaming sila dito ngayon.
>> Kaya hypertext transfer protocol ay, muli, ito ay isa pang protocol.
Kaya isa pang hanay ng mga panuntunan na namamahala, sa kasong ito,
paano hypertext ay inilipat.
Kaya nagbibigay-daan ito lamang browser upang makipag-usap sa mga web server.
At tulad ng sinabi namin dito, ito ay tulad ng handshaking tao.
Ito ay lamang ng isang paraan upang pamahalaan kung paano ang web server ay
pagpunta sa makipag-ugnayan sa iyong browser.
At mayroon kaming lang ng ilang mga halimbawa.
Mayroon kaming ilang mga kahilingan dito kung saan GET ay ang pamamaraan.
Mayroon kaming HTTP 1.1, na bersyon ng protocol para sa amin.
At pagkatapos, ang host, na siya talaga naming sinusubukan mong i-access.
At pagkatapos, tulad ng nakikita mo rito, namin makakuha ng ilang mga tugon sa 200
OK ng aming code ng tugon ng HTTP.
Mayroon kaming isang malaking listahan pupuntahan ko upang hilahin sa isang segundo
na iyong guys ay dapat na pamilyar sa iyo.
At mayroon kaming ito uri ng nilalaman ng teksto / HTML, na lamang ang sinasabi kung anong uri ng data
ay namin natatanggap mula sa server, OK?
Ang host at ang uri ng nilalaman ay bahagi ng header ng HTTP.
Maaari kang magkaroon ng kaunting o kasing liit ng kailangan para sa konteksto ng kung ano
ka pagharap sa.
Minsan magkakaroon ka ng maraming impormasyon na nanggagaling mula sa iyong server.
Siguro sila ay humihiling ng maraming ng impormasyon mula sa user.
Ito ay nag-iiba depende sa konteksto.
Kung tumingin ka sa CS 50 Pag-aaral, maraming higit sa na.
Ngunit kami ay may maraming upang makakuha ng sa pamamagitan ng, kaya ako pupunta
upang pumunta karapatan maaga kung na OK lang sa iyo guys?
Ayos.
Sandali.
Mayroon akong tiyak na buong listahan of-- huh!
Hindi ko alam kung bakit ito ang lahat ng mga paraan sa paglipas dito.
Akala ko literal ko inilipat ito habang ako ay sitting--
>> DAVIN: Nais mo bang magturo ito?
O ang gusto sa akin upang turuan ito?
>> Madla: Akala ko dati namin ipakita lamang ang mga ito na magsimula sa.
Ibig kong sabihin, maaari kang pumunta sa ito pa, ngunit ko
Naisip ginawa itong mas kamalayan dahil ako ay pakikipag-usap lamang tungkol sa mga katayuan ng HTTP.
Kaya narito ang buong listahan.
Sa tingin ko kung ano ang nangyayari sa mangyari ay Davin ay pagpunta sa pumunta sa mga ito sa ibang pagkakataon.
Ngunit mayroong isang buong listahan, isang preview ng panlasa darating.
OK, kami ay pagpunta sa blow-- ito ay pagpunta upang maging isang pag-crash PHP kurso tulad ng walang iba pang mga.
>> Kaya PHP, hypertext preprocessor, ito ay isang recursive backronym,
na nangangahulugan na ito ay pinangalanang ibang bagay.
At pagkatapos ay sila ay tulad, ito Hindi talaga magkaroon ng kahulugan.
Kaya pinangalanan lamang sila it-- at ito ay isang acronym,
kaya ginawa ito PHP lang nila hypertext preprocessor, na
lamang ay hindi gumagawa ng kahulugan.
Masaya kuwento.
Ito ay isang programming language.
Kaya hangga't bigyang-diin ko na HTML ay hindi isang programming language,
ito ay isang markup language, PHP ay isang programming language.
Paano mo malalaman na ito ay dahil may logic.
May conditionals.
Mayroon kaming mga variable, samantalang kami may wala sa mga bagay sa HTML.
>> Ang lahat ng mga karapatan, pagkatapos ay mayroon kaming maliit na ito bit dito na tulad ng isang lasa ng PHP.
Kaya mga pangunahing kaalaman, variable na mga pangalan magsimula sa isang dolyar sign.
Maraming tao ang may gusto nito.
Reminds sa atin ng pera.
Napakaganda lahat.
Namin ang lahat ng nais na PHP.
Kaya hindi namin tukuyin ang isang uri ng variable na ngayon ni.
Ito ay natukoy sa run oras.
Ang interpreter ay magiging tulad ng, naku, makikita tumakbo lang namin sa pamamagitan ng,
at ayon sa konteksto, ipapakita namin makita kung anong uri ng mga uri
ang mga variable na kailangang magkaroon.
Walang pangunahing pag-andar.
Mga bagay ay tatakbo lamang.
Ikaw guys gamit ang iyong pag-import sa iyong huling p-set, mapapansin mo ito.
Nagkaroon hindi talagang isang pangunahing pag-andar.
Nagsulat lang kung ano ang kang gustong mangyari.
At ito lamang ang uri ng nangyari.
Kaya na PHP para sa iyo.
>> Ang mga array ay halos katulad na.
Mayroon pa kaming ito bracket.
Dito, mayroon kaming ilang mga variable tinatawag na arr, at ito ay katumbas ng
to-- mayroon namin ang aming normal bracket pagtatanda.
At mayroon kaming ilang mga pangunahing halaga.
At ang malaking pagkakaiba sa pagitan ng C at PHP array
ay magkaroon kami ng mga ito associate-- maaari naming iugnay ang mga halaga sa mga key.
Kaya sa halip na lamang nagkakaroon isang array na ay na-index
sa pamamagitan ng bilang o ng posisyon ng elemento na sa array,
maaari naming aktwal na iugnay ito sa isang susi.
Kung saan kami maaaring sabihin, OK, gusto kong kahit anong halaga ay kaugnay ng prutas.
At siguro mayroon kaming nagpunta prutas sa saging.
Kaya nais itong bumalik saging sa amin.
>> Ngunit talaga, ang pinaka malakas na bagay tungkol dito
ay kung ikaw guys tandaan ang demo mula sa panayam kung saan kami talaga
rewrote speller sa PHP, at ito was-- lookup ay talagang lamang gusto,
umiiral ang key na ito?
Iyon ay talagang uri ng kapangyarihan nito.
Hindi mo kailangang upang umulit sa pamamagitan ng iyong array.
Hindi mo na kailangang malaman ano na espasyo ito ay nasa.
Ito ay maaaring maging sa dulo o simula.
Hangga't alam mo ang key na kaugnay sa ang halaga,
PHP maaari lamang dumura halaga na kanan-back out sa iyo, OK?
>> At pagkatapos, kami din lamang mayroon dahil lang namin
ay maaaring magkaroon ng mga pares ng key na halaga ay hindi nangangahulugan na ikaw ay may sa.
Maaari ka ring lumikha lamang isang normal na array tulad dito,
sa ibaba, kung saan ito ay lamang ng isa, dalawa, tatlo, apat.
Iyon ang aming mga halaga.
At sa katunayan, ang kanilang mga susi ay ang mga indeks.
Kaya ang susi para sa isa ay zero.
Ang susi para sa dalawang ay magiging isa.
Kaya sa at iba pa, maliban kung kung tahasan mong magtalaga ng isang key,
maaari mong ipalagay na ang halaga ay ang kanilang mga index lamang.
Ba na magkaroon ng kahulugan sa lahat?
Wala pang mga tanong?
Kahanga-hanga.
>> OK, foreach ay isang paraan upang umulit sa pamamagitan ng iyong array.
Kaya mayroon kaming isang bagay dito, lamang ang pangkalahatang istraktura.
Kaya foreach, ang pangalan ng ang aming array, bilang kahit anong
Gusto mo upang tawagan ang isa't sangkap sa iyong array,
at maaari naming gawin ang isang bagay na may na elemento o sa halaga na iyon.
Kaya mayroon kaming isang halimbawa dito.
Mayroon kaming isang nag-uugnay array gamit ang dalawang mga entry
may bar nauugnay sa foo at qux nauugnay sa baz.
Kaya key ay foo at baz.
Ang mga value ay bar at qux.
Kaya foreach, mayroon kaming aming array dito, pati na ang susi pares ng halaga.
Ito ay nagpapahintulot sa amin na i-access pareho ang susi at halaga.
Siguro gusto mo lamang ang halaga, kung saan
maaari mong gawin tulad arr bilang $ halaga, at pagkatapos ay sa iyo
-a-access lamang ang halaga bilang umulit iyo sa pamamagitan ng.
Pero siguro, para sa ilang kadahilanang ito, nais mo ang key,
na ang dahilan kung bakit ko pinili halimbawang ito sa halip.
Kaya maaari mong aktwal na manipulahin susi at halaga sa kasong ito.
OK?
Tanong?
>> Madla: Kung nais mong manipulahin lamang ang susi, ay
kailangan mo lang gawin foreach--
>> Alison: I-right.
Kaya kung nais na manipulahin lang ang key,
mangangailangan ito ka pa rin syntax dahil kung lamang
Mayroon arr bilang isang bagay, bilang isang bagay, ito ay
pagpunta sa ipagpalagay na nais mong ang halaga, hindi ang susi.
Kaya kung sakaling ikaw ay tulad lamang ng arr bilang, marahil ito ay tulad ng $ elemento,
ito ay pagpunta sa ipagpalagay na ikaw ay nagtatanong para lamang sa halaga sa bawat punto.
Kung malinaw na gusto mo upang gawin ang isang bagay gamit ang key,
kahit na hindi ka naka-pagpunta sa gumawa ng anumang bagay na may halaga,
kailangan mo ng istraktura na ito mayroon kaming dito
kung saan tahasan mong hinihiling para sa parehong mga key at ang halaga.
Mahusay na tanong.
Ano pa?
Ayos.
>> Ang lahat ng mga karapatan, PHP at HTML.
Oh, hindi namin pabalik sa p-set muli pitong.
Kaya ito ay dapat magmukhang medyo pamilyar.
Kaya ito ay ilang simpleng form na HTML na may ilang mga pangalan ng halo-input.
At nakita namin na mayroon kami sa aming mga pamamaraan ng GET.
At kung tandaan namin mula sa aming p-set, kapag ang form na ito ay isinumite,
nagpapadala ito ng isang array na tinatawag na $ _GET na may lahat ng mga input o mga variable mula sa
ang form na dapat ay manipulahin sa aming PHP.
Kaya sa kasong ito, ang user ay maglalagay sa kanilang pangalan.
Isumite ang mga ito dito.
At nakita namin na makuha namin ang ilang mga array dito.
Mayroon kaming aming GET array.
At kami ay pag-access ng pangalan.
>> Kaya na nagsasabing, OK, ako ang halaga na kaugnay sa pangalan,
pangalanan ang pagiging key dito.
At na mapa nang direkta sa kung ano Sinabi namin ang aming pangalan input ay.
Kaya ito ay nagbibigay sa iyo ng ang susi sa kung ano ay magiging sa iyong array dito.
Ba na magkaroon ng kahulugan sa lahat?
Oo?
>> Madla: ba ang pangalan sa Kumuha sumangguni sa mga lilang linya sa [hindi marinig]?
>> Alison: Ito ay tumutukoy sa ito dito.
Kaya patlang na ito dito mismo, ito ay tumutukoy sa pangalan na ito dito.
Kaya ito ay maaaring may pangalang tulad ng numero ng telepono, o anumang.
Ang pangalan na ito talaga ang sinasabi, ano mo sa pagtawag patlang na ito?
Paano ka pagpunta sa sumangguni sa patlang na ito?
At ang pangalang ito ay talagang gusto, hindi namin sinasabi ang patlang na ito ay tinatawag na pangalan.
Iyon ay kung paano namin pagpunta upang ma-access ito.
>> Madla: Kaya ay nais na ito, pangalan ng input ay katumbas Bob, and--
>> Alison: I-right, pagkatapos mo Gusto makuha ni Bob down na doon.
Mismong.
Ang bawat tao'y cool?
Ang lahat ng mga karapatan, sa gayon GET kumpara sa POST, ang mga ito ay ang dalawang pangunahing mga paraan
na dumadaan kami ng data sa isang HTTP na kahilingan.
Dapat na nakita mo guys ang parehong mga sana.
Kaya sa GET, ang impormasyon Lumipas pamamagitan ng URL.
Kaya kung sakaling gagawin mo sa Google paghahanap, YouTube, kakailanganin mong
Marahil na ang ilang mga tandang pananong.
At pagkatapos, ang lahat ng mga salita na inilagay mo lamang doon.
At POST dumadaan ang data sa katawan ng HTTP mensahe.
Kaya hindi tulad ng GET, ikaw uri ng isaalang-alang na ang data na nakatago mula sa user.
Ngunit kung ano talaga Mahalagang maunawaan
ay na ito ay pa rin tulad ng hindi ligtas na bilang GET.
Ang pagkakatulad gusto kong gamitin ay kung mayroon kang numero ng iyong account sa bangko
at isulat ito sa labas ng isang sobre, na Kahanga hindi ligtas.
Kung kayo ay upang isulat ito sa isang piraso ng papel at ilagay ito sa loob ng sobre,
talaga hindi ligtas dahil pa rin ang kailangan mo lang gawin ay buksan na up
at tumingin sa aktwal na nilalaman ng mensahe upang makita na.
Kaya ito ay "nakatagong," at mga taong katulad sa sa tingin ito ay ligtas, ngunit ito ay talagang hindi.
At ako sigurado Davin habilin dumapo na higit pa, siguro.
Ngunit ito ay isang mahalagang pagkakaiba upang gumawa ng
at isang bagay na talagang mahusay na maunawaan.
>> OK, SQL, nakabalangkas na Query Wika.
Ang lahat ng mga bagay-bagay na nasaksihan namin sa gayon kamakailan!
Kaya ito ay isa lamang dinisenyo lamang, malinaw naman, para sa pamamahala ng data.
Ikaw guys ay nagkaroon ng maraming karanasan sa ito sa iyong table na may PHP MyAdmin.
At mayroong apat na mga karaniwang katanungan na nais namin sa iyo guys malaman.
Kaya walang update, insert, piliin ang at tanggalin.
Kaya tiyaking alam mo ang mga talagang mahusay.
Kami ay pagpunta sa pumunta sa pamamagitan ng mga ito ay talagang mabilis.
>> Kaya mag-update, talaga, bilang kung ano maaari mong isipin na ginagawa nito,
-a-update ito lamang ang data sa iyong database.
Kaya mayroon kaming ilang mga halimbawa dito.
Ito ang pangkalahatang istraktura ng isang query update.
Kaya naming ina-update ang talahanayan na pinag-uusapan natin ang tungkol.
At gusto naming i-set ang ilang mga mga halaga, ang ilang mga hanay
katumbas ng partikular na halaga.
Kaya ina-update lang ito sa table, pagbabago mga halaga sa lahat ng mga hilera sa kasong ito.
Kaya sa isang ito pababa dito, isang aktwal na Halimbawa, mayroon kaming insert-- paumanhin.
Slide na advanced walang ako napagtatanto ito.
>> Kaya itakda col1 katumbas ito ng mga update talahanayan sa VAL1 kung saan ay katumbas ng house "Currier."
Ano ang isang ito gumagana ay nagbabago lamang ito, ito lamang
-a-update ang mga halagang ito sa partikular na mga lugar.
Kaya sa una, nagbago ang mga mga halaga para sa lahat ng bagay sa iyong talahanayan,
OK?
Ito ay pagpunta upang baguhin ito hanay para sa bawat solong entry,
para sa bawat solong hilera.
Ngunit ito kung saan, maaari mong isipin na ito bilang isang Qualifier.
Kaya itong ibang mapupuntahan kundi upang baguhin ito sa napaka-tukoy na mga lugar.
Kaya sa p-set pitong, kapag nag siguro na-update na ang halaga ng cash
na nagkaroon ng iyong user, malamang na nagkaroon ilang kung saan ay katumbas ng ID ng session ID, tama?
>> Dahil hindi ka nais na baguhin ang halaga ng cash
para sa lahat ng taong ay gumagamit ng iyong website.
Nais mo bang baguhin ito para sa isa partikular na tao, ang taong iyon sa pagiging
kahit sino ay gamitin ito sa oras na iyon.
Mag-right?
OK, kaya magpasok, ipasok ang ang ilang mga halaga sa talahanayan.
Ito ay tulad ng kapag ikaw ay paglikha ng isang bagong tatak ng user.
Ang pangkalahatang istraktura dito ay ipasok sa kahit anong mesa
kami ay pakikipag-usap tungkol sa.
Mga Halaga, pagiging ang mga halaga na talaga namin nais na ipasok.
OK, sa gayon ay makita namin dito, namin Na ipasok sa table.
Ito ay tiyak na mga hanay na may corresponded kanilang mga halaga.
Kaya ito ang sinasabi, insert ng isang bagong hilera na naglalaman ng
mga halaga VAL1 at VAL2 sa ilalim ng ang mga tiyak na hanay.
>> Kaya marahil gusto mo lamang na punan ang kalahati ng mga bagay sa hanay na ito.
Iyon ay kung ano ang nagbibigay-daan dito bahaging ito gawin mo.
Hinahayaan ka nitong talaga matukoy kung aling mga bahagi.
Oo?
>> Madla: Maaari bang mo lamang [hindi marinig] mga cell sa hanay [hindi marinig]?
>> Alison: Kung punan mo lamang sa ilang mga bahagi ng iyong hilera,
ang natitirang bahagi ng mga selula ay lamang walang laman.
Hangga't pinapayagan mo ang mga ito sa walang laman, ito ay hindi isang problema.
Kung sinubukan mong i-access ang mga ito, ito ay pagpunta upang bumalik sa ilang mga walang laman na element.
Pero ito ay mahalagang malaman na sa ilang mga talahanayan,
sila ay pinapahintulutan upang maging null.
Maaaring makatagpo ng isang problema sa panahon ng iyong p-set
dahil hindi namin na ipaalam sa anumang ng iyong mga halaga null.
Ngunit maaari mong tukuyin ang isang opsyonal na halaga sa iyong talahanayan.
>> OK, piliin, kaya ito ay lamang ng isang paraan ng pagkuha ng
partikular na data mula sa isang talahanayan sa ang ilang mga pantukoy na gusto mo.
Kaya piliin ang bituin mula sa talahanayan kung saan siya ay katumbas ng isang bagay lamang ay nangangahulugan na,
bigyan ako ang lahat ng mga data na nauugnay kung saan ang partikular na hanay ay totoo.
Kaya habilin ang bituin sa kasong ito ibalik ang buong hilera sa iyo, OK?
>> At pagkatapos, sa kasong ito, piliin bituin mula sa talahanayan ay nagbibigay lamang sa iyo ang buong table.
At pagkatapos, tanggalin malinaw naman, lamang Tinatanggal ang mga hilera mula sa talahanayan.
Kaya tanggalin mula sa talahanayan, kahit anong mesa kami
na tumutukoy sa, kung saan ang ilang mga tukoy na pantukoy o ilang kondisyon ay totoo.
Oo?
>> Madla: Tanong.
Bakit mo gamit ang double quote, at kung
gawin double quote o single quote, aabutin gumawa ng isang pagkakaiba?
>> Alison: I-double quote o solong quote ay hindi gumagawa ng isang pagkakaiba sa SQL.
Akala ko Nakita ko ng isa pang tanong.
Oo?
>> Madla: Hindi ito makakaapekto sa kung ano ang maipo-escaped mula sa query?
>> Alison: Rob?
>> Rob: Ano ang ibig mong sabihin sa pamamagitan ng escaped mula sa query?
>> Madla: Kung may isang taong may solong query sa anyo of--
>> Rob: Kung may isang tao na para bang ilagay ang isang solong quote sa,
pagkatapos ay bilang hangga't naka-sanitizing iyong input, kung gayon ito ay hindi mahalaga.
Ngunit kung gumagamit ka ng isang solong quote at ikaw ay hindi tama
escaping iyong input, pagkatapos ay oo, kailangan nila
upang ilagay ang isang solong quote upang masira ang iyong code. kung gumagamit ka ng mga double quote,
kailangan nila upang maglagay ng double Ilagay sa mga sipi na putulin ang iyong code.
Ngunit hangga't makatakas sa mga bagay tama, hindi mahalaga.
Ito ang nangyayari lang i-translate sa tamang simbolo pa rin.
>> Madla: Ano ang ibig sabihin ng pagtakas?
Alison: Well, tulad ng sanitizing at makatakas.
Ang pagsusulit na mayroon kami, ang mahusay na XKCD comic na makuha ang mga ito kung saan mayroon kang,
oh--
Rob: Ito ang huling slide.
Alison: Ito ang huling slide, talaga?
Oh aking diyos.
May pumunta kami, perpekto.
OK, kaya isa lamang, maaari kang mag-iniksyon isang bagay sa ito SQL query
kung saan ito Pinaghihiwa iyong code, o bilang Nagpakita si David
sa klase, kung kami ay may ilang mga solong quote 1 ay katumbas ng 1 at kung sa aming code,
lamang direktang kopyahin namin na sa, at mayroon kaming isang pangwakas na single quote,
kung ano ang mangyayari ay makakakuha tayo ng ang ilang mga expression na
sinusuri sa true na habilin hayaan ang sinuman ipasok ang aming database
at kumuha ng data na aming ayaw ang mga ito upang makakuha ng.
Kaya sanitizing ang input Nangangahulugan lamang na tinitiyak
na escaping namin ang mga character at pagtatalaga ng mga ito
bilang char at hindi bagay na dapat na pinapayagan
upang madala literal bilang aming SQL pahayag.
>> Kaya ang sisikat na sinabi namin na iyong guys ay dapat na gamit
mga HTML mga espesyal na karakter, kung saan ay isang bagay
na maaaring gusto mong tingnan.
OK, tanggalin.
Uri ng data, ito ay ang lahat ng naka-online.
Dahil namin 15 minuto ang natitira, ako lamang ng pagpunta sa pumunta karapatan sa pamamagitan ng ito.
PHP at SQL, isa lamang ito lamang nagkaroon kami ng isang function query na
Nakatulong maprotektahan laban mga nakahahamak na pag-atake.
Kaya sa tuwing ginagamit mo ang query, nagsasagawa kami ay sigurado
na mga bagay ay sanitized at watnat.
>> MVC lamang ang disenyo tularan, kaya modelo, view, controller.
Ito ay lamang ng isang paraan upang panatilihin ang mga bagay maganda at maghiwalay sa parehong paraan
na may posibilidad namin upang magfa-factor ang code na ito sa function.
Ito ay lamang ng isang web disenyo balangkas na nagbibigay-daan sa iyo upang gawin ang parehong bagay.
Pupunta ako sa laktawan ito.
>> Ito ay isang bagay na ako ay magiging sobrang umaliw sa.
Ito ay isang mahusay na maliit na talahanayan doon.
Nagbibigay ito sa iyo ng pag-andar Halimbawa ng modelo.
Lamang ako pupunta sa pamamagitan na ito dahil ako Gusto talaga Davin para makapag-usap.
Kung mayroon kang anumang mga katanungan, mangyaring huwag mag-atubiling.
Makikita ko ba dito pagkatapos.
Lang bakit makipag-usap sa akin.
Gamit na, mayroon kaming mga katayuan ng HTTP.
At Davin ng pagpunta sa pumutok sa pamamagitan ng sa 15 minuto.
Ito ay magiging mahusay.
>> DAVIN: OK.
Uh, ang iyong mic?
Oo.
Sorry.
Alison: Way upang maging handa.
DAVIN: Hindi, handa na akong.
Handa na ako.
Ay gawin ito Hayaan.
Ito ay handa na.
OK.
Sorry.
Bubo ko ng kape sa aking sarili.
Hindi ko alam kung ako higit pa Nababahala na tumingin ako nakakatawa,
o na wala akong nakikita kape.
Pa Rin, lamang ng isang mabilis na anunsyo tungkol sa sheet na iyong guys mayroon.
Kaya sheet na ito mayroon kang guys ay hindi ang opisyal kung ano ang nasa mga pagsusulit.
Ito ang opisyal kung ano ang nasa mga pagsusulit.
Gayundin, sa website, sabihin natin mo, OK, ito ay magiging sa pagsusulit.
Kaya sa mga maliit na impostor sheet mayroon ka, hindi opisyal.
At may mga pagkakamali dito.
Kaya pinakamahusay na huwag nang walang taros gamitin lamang ito.
Kaya oo, iyan ay na.
Kaya sabihin makakuha sa ito tunay na mabilis.
>> Kaya katayuan ng HTTP.
Kaya kung ano ang mangyayari kapag ang website, ang lahat ng bagay ay ang lahat ng karapatan.
OK Lahat ng.
Ang lahat ay bumalik sa sa iyo sa paraang gusto mo.
Nakakuha ka ng 200 OK.
301, kung saan naming nakita na 301 bago?
Maghintay, ano mayroon?
Sorry.
Nakita namin i lata panayam sa panahon ng seguridad.
Kaya sa panahon ng seguridad, kaya kung David nai-type sa http at pagkatapos ay sinubukan upang pumunta sa cs50.net,
na iyong pupuntahan upang makita ang 301 nailipat.
Bakit?
Dahil ito ang nangyayari upang i-redirect ikaw ay awtomatikong sa aming HTTPS.
>> Kaya 301 inilipat, lamang ito isa lamang pag-redirect.
At maaari mong isipin ang tungkol dito tulad nito.
Anuman sa mga katayuan na magsimula sa 2, ang mga ay tulad, OK, OK ang lahat ng.
Anuman sa mga katayuan na simulan may 3, ang mga ito ay pag-redirect.
Mga katayuan na magsimula sa 4, na nangangahulugan mayroong ilang mga uri ng error client.
Mga katayuan na magsimula sa 5, na ang ilang uri ng mga error sa server.
Kaya mo uri ng magbuwag ang mga katayuan ng ganyan.
Kaya 304 ay hindi hindi nabago, kaya sa iyong server.c p-set na, kaya hayaan sabihin sa iyo
-load cat.html.
Ang lahat ay bumalik, makakakuha ka ng 200s, OK, mahusay.
>> Sabihin nating refresh ito.
Well, sa loob na cat.html, mayroon kang isang JPEG.
Well, JPEG na hindi pagpunta upang reload.
Hindi ka pagpunta upang mag-post ng isa pang GET kahilingan sa server,
at pagkatapos ay makakuha ng lahat ng impormasyon na bumalik.
Ito ay pagpunta sa be-- lamang na imahe ay pagpunta sa i-cache sa iyong machine.
At upang ang imahe ay magiging isang 304.
Kaya ito ay hindi nabago.
Kung pagkatapos ay isara out ka, malinaw na mga cookies, at pagkatapos ay i-refresh
at subukang i-load ang pahina na muli, na iyong pupuntahan upang makita 200s.
Hindi ka pagpunta upang makita na 304.
>> 400, hindi magandang kahilingan, tunay mabilis, tulad ng kung
ay pagpunta upang magpadala ng JSON object sa server
at ang iyong JSON object ay hindi tama, makikita mo ang isang bagay tulad na.
403, ipinagbabawal.
Kapag gusto mo ang isang ipinagbabawal na?
Marahil Marahil?
Madla: Chmod.
DAVIN: Chmod, oo.
Kaya hindi mo na-set mga pahintulot ng tama.
404, hindi nahanap.
Ito ay hindi lamang doon.
Kaya kung nag-type ka sa maling URL.
500, panloob na error sa server, ang server marahil ay hindi naisaayos nang tama.
Isang bagay na hindi sa iyong pagtatapos, ngunit isang bagay sa gilid ng server.
At 503?
Isang maraming tao ang nakakita 503s sa huling p-set.
Kapag ang mangyayari iyon?
Narinig ko whispers.
>> Madla: Kapag Google Nagpasya ikaw ay isang robot.
DAVIN: Oo, kapag nagpapasya Google isa kang robot, makakakuha ka ng 503s.
Kaya na ang isang labis na karga.
Kung iyong hiniling mula sa server masyadong maraming, ito ay karaniwang pansamantalang.
At ang karamihan sa mga napansin mong ito.
Kaya nakita mo 503.
Maaari mong nakagawa ka ng kaunti pahinga, pagkatapos ay ang 503s nagpunta ang layo,
at lahat ng bagay ay ang lahat ng karapatan.
>> Gabe: Real mabilis, kapag ako makakakuha ka guys 500 sa malamang na itakda ang huling problema?
Oo?
>> Madla: Karaniwan kung ang server ay may file na nailagay sa maling lugar
o [hindi marinig] ang kanilang machine [hindi marinig].
>> Gabe: Kaya maaaring ito ang isang configuration isyu sa iyong PHP sa iyong server.
Ngunit maaari itong maging isang bagay lamang tulad ng isang tuldok-kuwit na iyong nakalimutan.
Kung nagta-type ka PHP, ilang mga hindi tamang syntax
Maaaring makakuha ka ng isang bagay tulad na.
OK?
>> DAVIN: Cool.
Gusto mo sa akin upang gawin up lamang hanggang sa AJAX?
>> Gabe: [hindi marinig].
DAVIN: OK.
Kaya kung ano ang DOM?
Ano ang DOM tumayo para sa?
>> Madla: modelo ng object dokumento.
DAVIN: Nice.
At kung bakit gusto namin ito?
Kahanga-hanga.
Kanan, kaya nagbibigay-daan lamang sa amin upang ma-access ang HTML, i-access ang aming pahina ng masyadong mabilis.
Bakit?
Dahil kami ay pagpapagamot ng aming pahina, pagpapagamot ng aming mga tag na HTML,
pagpapagamot ng lahat ng bagay bilang kung sila bagay.
Kung kami ay pagpapagamot ng mga ito tulad ng mga ito mga bagay, at pagkatapos ay kung ano ang maaari naming gawin?
Well, maaari naming tumawag sa mga function sa mga ito.
At ito ay mahalaga kung bakit?
Well, dahil kami ay pagpunta upang gamitin ang Ang JavaScript upang ma-update ang aming HTML,
-update ang mga bagay na ito.
Kaya kung ituturing namin ang mga ito tulad ng mga bagay, pagkatapos ay maaari naming tumawag sa mga function sa mga ito.
Pupunta ako upang makapunta sa ito ng kaunti higit pa kapag pumunta ako sa JavaScript,
ngunit ang lahat ng iyong nakita tulad ng document.getElementByID.
Kaya dokumento ay ang iyong elemento, kumuha ng mga elemento ng ID,
kaya ka pagpunta sa hitsura para sa ilang mga ID sa isang HTML tag.
At pagkatapos ay, maaari mong gawin ibang bagay na iyon.
Halimbawa, tulad ng document.body, pagkatapos ay maaari mong ikabit ang bata.
Kaya na iyong pupuntahan upang mahanap ang dokumento.
Mayroon kang mga dokumento.
Ikaw ay pagpunta upang mahanap ang katawan.
Nakita mo ang katawan.
At pagkatapos ay, na iyong pupuntahan tumawag sa ilang mga function na ito.
Kaya magkabit ng bata, at maaari mong ikabit ang ang ilang mga HTML sa dulo loob ng iyong katawan.
Kaya talaga, ikaw lamang pagpapagamot ng ito tulad ng isang bagay.
Ikaw ay pagpapagamot ng HTML mga tag tulad ng isang bagay.
At ito ay ginagawang mas madali at mabilis na dumaan sa kanila.
Ngunit nagbibigay-daan din ito sa iyo na tumawag sa mga function sa mga ito
sa gayon maaari mong manipulahin at palitan ang mga elemento.
>> Gabe: Dahil dito, kung bakit ay ang JavaScript tulad gandang wika upang makipag-ugnay sa HTML?
Logro ay, kapag ang pagpili ng mga tao ang wika para sa browser,
para sa mga client gilid, Ang JavaScript ay talagang maganda,
talaga mahusay sa paghawak ng mga bagay.
At ang bagay ay uri ng bang ang mga bagay na lumilitaw sa HTML,
kaya napakadali para sa JavaScript gawin na uri ng handling.
DAVIN: Nice.
Kaya narito lamang ng isang halimbawa.
Kaya tingin ko sa pagsusulit ng nakaraang taon, o marahil dalawang taon na ang nakaraan, aming
tinanong mo upang lumikha ng isang puno.
Kaya ito ay kung ano mismo ang gusto mong gawin.
Kaya ka magsimula sa dokumentong ito.
At pagkatapos mo talaga tingnan lamang sa mga tag.
Kaya't kung tiningnan mo, namin magsimula sa isang HTML tag.
At pagkatapos, makakakuha ka ng mga pahiwatig tungkol sa kung paano gawin ito batay sa mga indentation.
Kaya head uri ng sangay off.
Sa loob ng ulo, mayroon kaming isa pang tag para sa pamagat.
Kaya pagkatapos, mayroon kaming tag na pamagat.
At sa loob na iyon, mayroon kaming ilang mga string.
At kaya kami ay kumakatawan isang string sa isang lupon.
At lahat ng mga tag ay nasa parisukat.
>> At kung titingnan mo, kung namin isipin na ito bilang isang puno,
at sabihin nating na HTML ay isang magulang, pagkatapos ay ulo at katawan
ay magiging kapatid.
Ang mga ito ay parehong magiging anak ng magulang na iyon.
Kaya dahil sila Parehong kapatid, ang mga ito ay
magiging uri ng katabi bawat isa sa aming mga modelo tree.
At pagkatapos, isa lamang sa iyo gawin ang eksaktong parehong bagay.
Kaya hindi mahirap, ngunit hiniling namin mga tanong na tulad nito bago sa pagsusulit.
Gabe: ba ang sinuman May mga tanong sa ngayon?
Magandang ba ito?
DAVIN: Cool.
JavaScript, OK, ang mahusay na mga bagay-bagay.
Kaya ang JavaScript, ano ang JavaScript?
Well, JavaScript is-- ito kumplikado, ngunit ang mga
ang ilang mga highlight na dapat mong tandaan.
Una, maluwag ito ay na-type.
Ano ang ibig sabihin na?
Kaya was-- PHP oo, ano mayroon?
>> Madla: Hindi mo na kailangang tahasang estado anong uri ng variable na ito ay.
DAVIN: Perpekto.
Kaya't sinabi niya hindi mo na kailangang mag malinaw na ihayag ang uri ng variable.
Iyon ang akmang-akma.
Kaya sa C, kung mayroon akong int i ay katumbas ng 50, pagkatapos ay sa PHP, ito ay ganito lamang, $ i,
ay katumbas ng 50.
Pagkatapos, sa JavaScript, kung ano ang magiging tawag?
Var, tama?
Gusto Ito ay tulad ng var i ay katumbas ng 50.
Ngunit hindi mo na kailangang maging tulad ng, OK, ito ay isang int.
OK, ito ay isang string.
Hindi mo na kailangang gawin iyon.
Ito ay isang kahulugan ng wika.
Kaya kung ano ang ibig sabihin na?
>> Madla: Hindi pinagsama-sama.
>> DAVIN: Ano ang hindi nangalap ibig sabihin?
Oo?
>> Madla: Hindi mo kailangang upang restructure ang code
upang makakuha ng mga ito handa na para sa ang computer upang patakbuhin ito.
Lamang Ito ay kinuha sa panahon ng pagpapatupad at ang computer [hindi marinig].
DAVIN: Oo, kaya pupuntahan pumasa sa pamamagitan ng isang interpreter.
Ngunit ikaw ay akmang-akma sa iyo.
Kaya hindi ka pagpunta upang ipunin ito, i-right?
Kapag ang iyong ginagawa sa iyong PHP at JavaScript code,
hindi ka na kailanman na tinatawag na sumulat ng libro.
Hindi ka tinatawag na isang bagay tulad ng gumawa o anumang bagay tulad na.
Iyon ay dahil ito ay binigyang-kahulugan.
Kaya sa tuwing ito ay pumupunta sa pamamagitan ng browser, ito napupunta sa pamamagitan ng interpreter.
At na pupuntahan bigyang-kahulugan ito lamang sa real time kaagad para sa iyo.
Kaya kung ano ang ilang mga positibo at negatibo sa pagkakaroon ng isang kahulugan wika
at pagkakaroon ng pinagsama-sama wika?
Kaya compiling-- oo, ano mayroon?
>> Madla: kahulugan ay mas mabagal.
DAVIN: Sa anong kahulugan?
>> Madla: Matapos mo sumulat ng libro, hindi mo kailangang
gawin ang anumang dagdag na mga hakbang upang maisagawa ito, samantalang ito [hindi marinig].
>> DAVIN: I-right, perpekto.
Kaya kung ano ang sinabi mo ay isa lamang na kino-compile,
kapag makatipon mo, mayroon kang isang maraming tapat mga gastos, i-right?
Ikaw ay pagpunta upang ipunin ito.
Ngunit pagkatapos mong ipunin ito, ang compiler ang nangyayari upang i-optimize ito.
Ito ay pagpunta upang maging mabilis.
Ito ay pagpunta sa isa lamang maging mas mabilis hangga't maaari.
Sa pagbibigay-kahulugan, hindi ka na kailanman mayroon na agad na bayad.
Sa halip, ito ay magiging bahagyang mas mabagal bawat solong oras bigyang-kahulugan mo ito.
At ka ng pagpunta sa mayroon sa -kahulugan ito sa bawat oras.
Kaya sa halip na ito isang beses na halaga, ngayon ikaw ay
pagpunta sa may upang bigyang-kahulugan ito sa bawat oras na pag-render ng pahina.
>> Kaya interprete ang mga magandang dahil hindi mo kailangang i-compile ito,
ngunit ang mga ito ay masamang sa na ang bawat minsan, ang naglo-load ang pahina, ito ay
pagpunta sa mayroon sa bigyang-kahulugan na ito ang JavaScript.
At ito ay pagpunta sa magpatakbo ng bahagyang mas mabagal kaysa sa kung ikaw ay upang ipunin ito.
Binibigyang-daan kang communicate-- oh, maghintay.
Ginagamit upang manipulahin ang nilalaman at hitsura.
Usapan lang natin ang tungkol na.
Ito ay gumagamit ng DOM.
AJAX, susuriin namin sa AJAX sa ilang sandali.
At pagkatapos ay, ito ay bahagi ng kliyente.
Kaya PHP ay server side.
Ang JavaScript ay client gilid.
Ano ang mga positibo sa iyon?
Sinasabi nito na ito.
Ito ay mas mabilis, i-right?
Dahil wala kang to-- mas mabilis ito.
Hindi mo na kailangang ipaalam na may ilang iba pang mga device.
Kung ikaw lamang sa iyong client, ikaw ay hindi kailanman
pagpunta sa may upang pumunta at makita kung ano ang sa server
at pagkatapos ay mag-ulat muli o isang bagay tulad na.
Kaya client gilid ay may gawi na maging isang maliit na bit mas mabilis.
>> Gabe: Oo, ngunit ito ay hindi nangangahulugan na PHP ay
mas mabilis kaysa sa JavaScript o anumang bagay sa mga tulad.
Magpatakbo ng mga ito uri ng sa parehong bilis dahil ang mga ito ay parehong
kahulugan wika.
Ang mga bagay na mabagal dito ay ang kahilingan.
Kaya ka talagang pagpunta ang lahat ng mga paraan sa paglipas ng sa Brazil
upang makakuha ng ilang impormasyon na naninirahan doon.
Ngunit PHP at JavaScript, sila uri ng tumakbo sa parehong bilis.
Ito ay hindi isa na mas mabilis kaysa sa iba pang.
Ito, din, kahanga-hangang gawa tanong dito.
Kaya hindi kailanman naging JavaScript code machine, tama o mali?
>> Madla: Mali.
Gabe: Mali.
Ito ay upang maging machine code dahil machine code
ang tanging bagay naiintindihan ang machine.
Kahit na hindi ito pinagsama-sama, ito pa rin nagiging machine code
dahil ang interpreter lamang isang programa na napupunta linya sa pamamagitan ng linya
at transform na linya sa isang bagay na naiintindihan ang computer.
OK?
Ayos.
>> DAVIN: Narito lamang ang isang napaka-basic JavaScript program mundo halo.
Kaya hindi ko alam if-- na iyong nakita ito.
Ngunit mayroon HTML ka lang dito.
At sa halip na aktwal na paglalagay ang JavaScript sa script tag,
kaya gusto mo normal itong ilagay sa ulo.
Mayroon kang mga script tag.
-Drop mo ito doon.
Lahat kami dito ay na-link namin in-- kaya na-link namin sa isang JavaScript na file
tulad nito.
At lahat ng nagawa mo na ito, i-right?
Kaya kapag gumagamit ka ng jQuery at underscore.js sa huling p-set,
wala kang tonelada ng code sa ang iyong mga script tag, hanggang sa ang inyong ulo.
Maaari mong gawin iyon, ngunit sa halip ay na inuugnay lamang ito sa loob.
At naka-link nito sa lamang gustong mong gawin sa CSS.
Kaya gumagawa lang ito itong mas madaling basahin kaya ang iyong code ay hindi 1,000 mga linya mahaba gusto
may tonelada ng mga pag-andar na baka hindi gumagamit.
>> Sa halip, i-link mo lamang ito sa loob.
Compartmentalizes ito dito.
Ito ay tulad pagsusulat ng ilang mga header ng file, at pagkatapos ay kabilang na header file sa C.
Isipin ito tulad nito lamang.
Kaya kung ano ang ginagawa nito?
Well, ito ay pagpunta upang tumakbo.
Ito ay pagpunta upang alertuhan.
Kaya na iyong pupuntahan upang makakuha ng isang maliit na pop up na tinatawag na kumusta mundo.
Mabilis na pinag-uusapan, lamang ang check kaliwanagan ng isip, kaya nakikita mo dito sa katawan,
sabihin katawan, HTML dito.
Ano ang mauna?
Ako nakakakita ng katawan, HTML dito, o ko makita muna ang mga alerto?
>> Madla: Alert.
>> DAVIN: I-right.
Sabi niya alerto.
Bakit?
>> Madla: Dahil sa iyo pumunta mula sa itaas hanggang sa ibaba.
>> DAVIN: Oo.
Perpekto.
Kaya sabi niya, kang pumunta mula sa itaas hanggang sa ibaba, na kung saan ay ganap na tamang.
Ikaw ay pagpunta sa pumunta mula sa itaas hanggang sa ibaba.
At sa JavaScript, jQuery, mayroon kang isang function na ay tulad onload, o handa na,
at na nagsasabing, OK, maghintay hanggang lahat ng mga ito HTML ay load.
At pagkatapos, tawagan ang JavaScript.
Dahil wala kaming na dito, ang napaka unang bagay na nangyayari sa mangyari
ay ito ay pagpunta sa pumunta mula sa itaas hanggang sa ibaba.
Ito ay pagpunta sa hit na JS tumawag na itong ibang mapupuntahan upang alertuhan.
Pagkatapos na i-click mo ang OK, layo ng alerto na napupunta.
Pagkatapos ito ang nangyayari upang ipakita ang mo ang katawan HTML dito.
Nice.
>> OK, kaya lamang tunay mabilis, pagsusulat sa JavaScript ay sobrang mabilis.
Upang idedeklara isang variable, pangalan var.
Kaya sa C, mayroon kang int i, mayroon kang idedeklara kung anong uri ng uri nito ay.
PHP, $.
JavaScript, var.
Usapan natin ang tungkol dito.
Ang lahat ng mga karapatan, ng pumunta ipaalam.
>> Loop, parehong bagay.
Parehong bagay.
Ang function na pahayag, upang tulad lamang na iyong nakita sa C.
Ang tanging bagay na iba't ibang ay kaya kapag ka ba sa ibang mga wika programming,
tulad ng kapag magdadala sa iyo 51 susunod na semestre at ang iyong ginagawa sa OCAML,
maaari mong harapin ang hindi kilalang function.
Kaya iyon mismo ang mayroon kang dito.
Kaya nais mong ilagay sa kabuuan, ang ilang mga uri ng halagang halaga.
Ngunit maaari ka lamang gawin ito nang isang beses.
Kaya hindi mo gusto pangalanan ito function na suma, bigyan ito ng isang function na pagpapahayag.
Sa halip, gamitin mo lang ito bilang isang hindi nakikilalang function.
At iyong nakita ito ng maraming.
Makikita mo ang isang halimbawa ng ito sa loob ng ilang mga slide.
Oo, ipapakita namin makita.
Gabe: Magandang katanungan.
Kapag maaaring gusto mong gamitin isang hindi nakikilalang pagpapaandar dito?
Talaga, kapag gusto mo ng isang bagay, tulad ng isang kaganapan, mangyari.
Kaya kapag ang mouse ay -click, halimbawa,
Gusto mo ng ilang mga pag-andar na tinatawag.
Kaya pumasa ka sa kaganapan handler, pumasa ka sa kaganapan,
uri ng, ang pag-andar na gusto mong matawag.
At kung ano ang iyong pagpasa ay tulad ng, sa dulo
ng araw, isang pointer lamang na pagtuturo, upang ang pag-andar.
Kaya ito ay hindi nagkagusto ka sa pagpasa ang buong code, tulad ng
isang pointer sa pag-andar.
At pagkatapos ay, kapag ang isang tao ay nag-click ang mouse, pagkatapos na function na ay makakakuha ng tinatawag na.
>> DAVIN: array, kaya mo may isang array na pagpapahayag.
Pagkatapos, isang array upang ilagay ang mga bagay sa.
Real mabilis, ano ang magiging i-print out ito?
Ano ang magiging mga third elemento?
>> Madla: "JS".
>> DAVIN: I-right, magiging "JS."
Maghintay, bumalik.
Ano ang haba?
>> Madla: Tatlong.
DAVIN: Tatlong, tama?
Eksakto kung ano ang sa tingin.
OK, pumunta ngayon.
Ang mga array, maaari kang magdagdag ng mga bagay sa kanila.
Kaya maaari kang pumunta sa ibayo ang kanilang paunang hangganan.
Lamang ng isang bagay na dapat tandaan.
PHP, JavaScript, ang mga ito ay medyo higit pa mapagpatawad bit sa mga tuntunin ng mga bagay
tulad na.
Mga Bagay, napaka tulad ng structs sa C, Sobra
tulad ng nag-uugnay array sa PHP.
Lahat nagkaroon ka karanasan sa ito.
Kaya JSON, kapag ikaw ay pagpasa sa JSON nang pabalik-balik sa p-set walong,
na ang iyong mga bagay.
>> Kaya oo, halimbawa, real mabilis na halimbawa.
Narito ang isang bagay.
Ang paraan isangguni mo ito bagay na ito, kaya lamang tunay mabilis,
sabihin nating nais kong mahanap out, OK, ano ang kurso?
At gayon ang pangalan ng object dito ay CS50.
At pagkatapos ay kung mayroon akong isang nag-uugnay array, paano gagawin ko na?
Kukunin ko ay gamit ang isang key, tama?
Kaya ba akong magkaroon ang pangalan ng array.
Mayroon akong bracket, quote, key, end quote, katapusan bracket,
at na-reference na elemento sa loob ng aking nag-uugnay array.
Paano gumagana ang na-reference ko Siyempre sa loob ng aking object?
Alam Sinuman?
>> Madla: [hindi marinig].
>> DAVIN: Ano ba ang balita?
Madla: CS50.course.
DAVIN: I-right, oo.
Kaya CS50.course.
Kaya ang paraan isangguni ka ng mga bagay sa loob ng isang JSON object ay may tuldok.
>> Madla: Maaari mo ring gamitin array syntax.
>> DAVIN: OK, fine.
>> Gabe: Maaari mo ring gamitin CS50 bracket, string, tulad ng mga panipi.
Madla: Sa tingin ko ito ay kapareho ng PHP.
Gabe: Ito ay ang parehong bagay.
DAVIN: Fine!
Ngunit makikita mo ito sa iba pang mga lugar.
Oo, kaya palaging pagpunta.
Ito ay kung ano lang ang sinabi ko.
Kaya sa isang JavaScript jQuery halimbawa.
Kaya ito ay ang aking DOM, tama?
Real mabilis, kaya Mayroon akong ulo, halo mundo, katawan.
Mayroon akong isang pindutan.
Sinasabi nito na "itulak sa akin," kaya gusto kong itulak ito.
At gusto kong gawin ang isang bagay kapag ito ay na-click.
I-right, sa susunod.
>> Kanan, kaya ito ay ang aking JavaScript.
Kaya jQuery ay isang madali lang paraan upang isulat ang JavaScript.
Kaya ito, at kung ano ako pupunta upang ipakita ang mo susunod, ay magiging jQuery,
ay magkapareho.
Kaya sila ay gawin ang parehong bagay.
Lamang jQuery ay may gawi na maging isang maliit na mas madali.
Mga Tao ay may posibilidad na gusto itong mas.
Ng maraming ng pag-andar Mayroon.
Kaya mga tao ay may posibilidad na gamitin ang jQuery.
Ikaw ang lahat ng mga ginamit jQuery sa huling p-set.
Kaya kung ano ang gawin ito?
Ano ang JavaScript-- ito nang sa gayon ito ay lamang plain JavaScript.
Ano ang gagawin ito?
Ano itong gawin?
>> Kaya una, nakita mo ang window onload.
Mag-right?
Kaya kami ay hindi makita na bago.
Kaya ito ay pagpunta sa maghintay hanggang sa buong naglo-load ang window.
Kaya ito ay pagpunta sa maghintay hanggang sa ang pag-load ng HTML, lahat ng mga larawan
bago ito ginagawa ng kahit ano.
Kaya sabihin nating ang aming DOM ay load.
Lahat naroon.
Pagkatapos ay kung ano ang nangyayari sa mangyayari?
Oo?
>> Madla: Lilitaw Button.
>> DAVIN: Ang pindutan ng kung pa doon.
Oo, sa gayon ang pindutan pa doon.
Ngunit ito ay pagpunta sa sabihin, OK, kung nag-click ako ang pindutan,
kaya ang pindutan nang doon, tulad na HTML tag.
Maghintay, bumalik real mabilis.
Ang tag na ito dito mismo karapatan ay magiging na butones.
Mayroon nang isang pindutan.
Ngunit pagkatapos, ang JavaScript tag, dito mismo,
sinasabi nito, OK, gusto kong upang makakuha ng mga elemento ng ID,
kaya pindutan sa paghahanap lamang sabi, OK, gusto kong upang i-map ito variable sa button na iyon.
Kaya variable na ay isa lamang mas madaling paraan upang ma-access ang button na iyon.
At sinasabi ko, OK, kung nag-click ako na button, kaya kung nag-click ako elemento na,
at ang elementong ito ay tumutukoy sa ang pindutan, kung nag-click ako ito,
pagkatapos ay gusto kong tumawag sa isang function.
Narito ang isa sa mga hindi nakikilalang -andar namin pakikipag-usap ay tungkol sa.
>> Tumawag lamang sa ilang function.
Sa loob na function, talaga isang bagay na nakakita kami ng maraming, alerto.
Click ka sa pindutan ng paghahanap.
Ito ay pagpunta sa isa lamang magkaroon ng isang pindutan.
I-click mo ito.
Makakakuha ka ng alerto na iyon.
X.
Iyan na ang lahat.
Oo?
>> Madla: Kaya kung inilagay mo ang script [Hindi marinig], script na tag sa iyong HTML?
>> DAVIN: Maaari mong ilagay ang script tag diretso sa head
dahil mayroon kang ito onload.
Isa rin na ikaw ay may isang pag-click.
Kaya ito ay pagpunta sa maghintay hanggang sa i-click mo ng isang bagay.
Ngunit onload lamang upang maging ligtas, na gumawa Tiyaking ang lahat ng bagay na naglo-load sa iyong HTML
sa simula pa.
Oo?
Gusto mong sabihin ng isang bagay?
>> Gabe: [hindi marinig].
DAVIN: Oo.
>> Madla: Kaya onload avoids pagtukoy ang pindutan ng variable sa paghahanap
sa pamamagitan lamang na nagsasabi document.getElementByID tuldok sa paghahanap pindutan [hindi marinig].
>> DAVIN: Talagang, ngunit pagkatapos ay ang iyong mga string lamang malaking nakakakuha.
Eksakto, kaya ito ay isa lamang sa gawing mas madali para sa iyo, oo.
Oo?
>> Madla: Saan ginawa namin lumikha window.onload?
O document.ready?
>> DAVIN: Oo, may.
Oo, ay, Sinuri ko doon.
>> Gabe: Hindi para sa kanila na mag-asikaso.
>> DAVIN: OK, kaya ako pupunta upang sabihin sa iyo pa rin.
Kaya talaga, lamang sa pangkalahatan, kaya window.onload naghihintay hanggang ang iyong DOM, ang lahat ng
iyong HTML, naglo-load.
Ito naghihintay ang hanggang sa iyong ng pag-load mga imahe.
Ito naghihintay ang hanggang sa lahat na naglo-load.
document.ready, ito lamang naghihintay ang hanggang sa iyong naglo-load ng DOM.
Sa sandaling ang HTML ay mayroong lahat, sa sandaling ang iyong DOM ay doon, nagsisimula sa pagtakbo.
Iyan ang pagkakaiba lamang.
>> Gabe: Mabilis katinuan suriin dito.
Kaya ito ay maaaring makita uri ng tulad ng isang linya ng code, i-right?
Dahil window.onload ay katumbas ng isang bungkos ng mga bagay-bagay.
Kapag ang JavaScript bumabasa ng ito, totoo o hindi totoo, ang function ay makakakuha pinaandar.
Maling.
OK?
Ano ang mangyayari dito, saan ka pagpasa function na ito bilang isang hindi nakikilalang mga function
sa window.onload.
At pagkatapos ay kapag naman upang aktwal na makakuha ng isagawa?
Kapag nag-load ang window.
Iyon ang isang kaganapan.
Kaya na jus t bagay na hindi namin pakikipag-usap tungkol sa mas maaga, tama?
Kaya kapag nangyari ang kaganapan, ang pag-andar mangyayari.
Parehong bagay sa mga onclick.
>> DAVIN: OK, kaya kinuha ng isang tao layo ng document.ready.
Ngunit ito ay ang eksaktong same--
Madla: Ang dollar sign, na isang document.ready.
Iyon ay isang shortcut.
>> DAVIN: Oh, na?
OK, kaya ito paraan document.ready, shortcut.
Ngunit ito ay kapareho ng window.onload maliban sa mga maliit na pagkakaiba
Sinabi ko sa iyo.
At ito ay jQuery.
Kaya ito ay ang eksaktong parehong thing-- ito ay ang JavaScript.
Ito ay just-- ng ilang mga tao sa tingin ng ito ang isang mas magagaan na timbang, malambot at makintab na bersyon
na may maraming mga pag-andar na malamang na ginagamit mo.
Kaya ito ay ang eksaktong parehong bagay.
>> Kaya bagay na uri ng ituro.
Kaya sa mga iba pang halimbawa, namin Nagkaroon document.getElementByID,
kaya nagkaroon kami ito mahaba string na pupuntahan makakuha ng
ang elemento ng kahit anong ID mayroon itong.
Na mapapalitan ng tawag na ito dito mismo.
Kaya makita mo ang dollar sign, pagkatapos ay makita mo na quote, hashtag.
Hashtag ay palaging isang selector.
Sinasabi nito, OK, ito ay gagawin sa isang ID.
Ano ang tagapili para sa isang klase?
>> Madla: Dot.
>> DAVIN: Dot, i-right.
Kung nagsisimula ka ng pagpunta sa piliin ang tag, ano ito?
Ito ay lamang ang tag, eksakto.
At maaari mong gamitin iyon dito, pati na rin.
>> Gabe: At sa pamamagitan ng tag na, ang ibig sabihin namin tulad ng div, halimbawa, o ulo.
>> DAVIN: O katawan o p o anumang bagay na tulad nang, oo.
Kaya dito, OK, sa halip na sabihing document.getElementByID,
ito lamang ang eksaktong parehong bagay.
In lamang jQuery, ito ay mas maikli.
Kaya mas simple.
Kaya pagkatapos, wala nang mga onclick, i-click lamang.
jQuery function, tawagan ang function na ito.
Alert ay ang eksaktong parehong.
Kaya ito ay isang kaunti mas maliit, o kaunti
mas maikli, may kaunting panahon bit-- mga tao sa tingin ito ay isang maliit na mas madaling isulat,
Medyo mas madaling maunawaan.
Ngunit ito ay jQuery.
Isang maraming mga tao makakuha ng kaunti bit naguguluhan at nag-aalala
at sila sa tingin, OK, jQuery ay iba sa JavaScript.
Kailangan ko bang tandaan ang mga dalawang magkaibang mga bagay.
Hindi ito.
Ibig kong sabihin, ito ay magkakaiba syntax.
Ngunit jQuery ay ang JavaScript.
Ito ay lamang ng isang tila mas mahusay na bersyon na
maaaring maging mas madaling maunawaan na ginagamit ng mga tao.
Gabe: Oo, upang maging tapat, na pag-sign dolyar
na iyong nakikita sa jQuery, ito lamang ay ang pangalanan ng isang function na tumutukoy sa jQuery.
Hindi nito ay may anumang espesyal na.
Ay ito lamang ang pangalan ng isang function, gusto lang maaari mong tukuyin ang dollar sign.
>> DAVIN: Oo, kaya usapan tungkol dito.
Ang ilang mga kapaki-pakinabang na mga bagay.
Ako ay naghahanap pabalik sa lumang pagsusulit.
Sa nakalipas na ilang mga pagsusulit, na sila ang nagkaroon na gamitin ang mga bagay na tulad nito.
Kaya document.ready, kaya tiyakin na ang lahat ng
-load bago mo simulan ang paggawa ng mga bagay-bagay.
Pumili ng isang ID, o piliin ang isang klase, ang nais lamang
maging tuldok ilang mga klase, end quote quote.
Magsumite, kaya kung ikaw ay pagsusumite ng form at tawag
function na ito pagkatapos ng form na isinusumite.
Halaga, kaya sabihin nating Mayroon akong isang form pagsusumite, tulad ng isang user name, email,
kahit anong.
Ako ay nagkaroon ng isang text box.
Kaya ako mag-type sa na text box.
Well, kung gusto mong makuha ang halaga out sa na kahon ng teksto, gamitin mo na tuldok Val.
At pagkatapos, pababa dito, tuldok HTML ay pareho
ay tulad ng tuldok dokumento getElementByID tuldok innerHTML.
Kaya na pupuntahan bumalik mo ang HTML mula sa ID na.
Dito, gagamitin mo lang ang ilang mga ID o kung anumang tuldok HTML.
Na makikita makuha ang HTML mula sa element na iyon.
Kung nais mong pagkatapos ay baguhin na HTML, maaari kang pumasa ito ng isang bagay.
Kaya nais mong maging parang tuldok HTML, at pagkatapos ay loob, mga quote, mga bagong HTML o isang bagay.
>> Gabe: OK, kaya AJAX.
Talagang gusto kong maunawaan AJAX talagang mahusay.
Kaya gusto kong guys sa iyo Nauunawaan AJAX talagang mahusay.
Dahil kung gagawin mo ito, ka halos pagpunta
upang maunawaan ang lahat ng bagay na May gagawin sa HTTP, PHP,
JavaScript dahil ang lahat ng ito ay sama-sama sa AJAX.
AJAX ay hindi isang wika.
AJAX ay isang diskarte.
At ginagamit nito ang maraming iba't ibang mga tool.
AJAX ay kumakatawan sa asynchronous JavaScript XML.
Kaya ang paraan, ang wika, ang data.
>> Kaya ang pangunahing wika na ginagamit namin sa AJAX upang ma-trigger ang lahat ng bagay
at pangasiwaan ang lahat ng bagay sa ibang pagkakataon ay ang JavaScript.
Iyon ang dahilan kung bakit ito ang kaugnayan napakalapit sa JavaScript.
At pagkatapos ay asynchronous dahil hindi namin gawin ito
lahat nang sabay-sabay kapag kami ay paglo-load ng pahina.
Ito ang bagay na aming makakaya gumawa ng mga bagay uri ng kahanay.
Ang pangunahing ideya sa likod AJAX ay na nais mong
ito upang makakuha ng ilang tiyak na impormasyon.
Halimbawa, kapag nagta-type ka ng mga bagong user name kapag nagparehistro ka ng isang user name,
ang aking user name ay abc123.
At pagkatapos, sa dulo ng form na ito, kailangan mong i-click ang Isumite.
At nagkaroon upang pumunta sa server, at pagkatapos ay tingnan kung sa database,
abc123 ay doon.
At kung ito ay nasa doon, sinasabi nito, user name sa database.
At sila, mayroon kang upang punan ang ang buong form muli.
At ito ay tunay, ganap na hindi maayos.
>> At pagkatapos ay sinasabi ng mga tao, OK, hindi kung bakit maaari naming lamang
gawin ang isang maliit na HTTP na kahilingan upang tingnan lamang upang makita kung ang user na ito ay nasa database
bago nagkaroon ng user na isumite ang buong form?
Kaya halimbawa, kapag ang gumagamit matapos ang pag-type ng abc123,
hayaan pumunta lamang sa mga server ng kaunti kaunti at makakuha lamang ng isang true o false
mula sa server upang makita kung iyon ay isang wastong user name o hindi.
OK, kaya na ang isa sa mga pangunahing Ginagamit ng AJAX kasalukuyan pa rin.
>> DAVIN: Kaya tunay mabilis, sa isang Ajax tawag sa jQuery,
maaari mong maipahiwatig na gusto mo itong maging sabaysabay.
Hindi mo dapat gawin ito.
Ngunit maaari mong gawin iyon.
At kung ginawa mo iyon, ano ang mangyayari?
Well, halimbawa, kapag handa ka pagkuha ng balita o anumang,
ang iyong browser ay pupunta lamang na maghintay hanggang sa na buong tawag ay kumpleto na
sa halip na pagpapaalam gawin kang iba pang mga bagay na karapatan pagkatapos mong i-click ito.
>> Gabe: Hindi ito pagpasa sa ngayon.
Oh aking diyos.
Paumanhin!
Yup.
"Sa nakaraan, ang kliyente na kailangan upang kahilingan
ang buong nilalaman ng isang website. "
Iyon ay kung ano ang aking sinabi.
Pinapayagan kami upang magpadala ng karagdagang GET o POST
mga kahilingan nang hindi na kinakailangang upang i-reload ang aming browser.
Kaya sa katapusan ng araw, kami ay talagang sa paggawa ng isang kahilingan ng HTTP
dito gamit ang JavaScript.
Dahil bago, ginagamit lamang namin ang JavaScript upang baguhin ang HTML na na dumating.
At ngayon, kami ay maaaring gamitin upang mag-interface sa mga web server pati na rin.
Ang paraan mangyari ito ay mayroon kaming client.
Davin ay isang client.
At siya ay mayroon ng lahat ng JavaScript sa pagtakbo dahil ang HTML ay pipi.
Ang JavaScript ay smart.
Kaya davin Davin ay may kanyang matalino bahagi at ang kanyang mga pipi bahagi.
Pupuntahan niya gamitin ang kanyang mga smart bahagi ngayon.
Pupuntahan niya gamitin JavaScript sa kahilingan, halimbawa,
kung abc123 ay nasa database o hindi.
>> Kaya Davin, mangyaring, lamang sa iyo padalhan ako ng isang kahilingang HTTP.
Salamat sa inyo.
Kaya kakapadala pa lang niya ng isang HTTP na kahilingan.
Ang makikita mo na?
At ito lamang ang parehong paraan na ang anumang HTTP na kahilingan ay naipadala na.
Ang browser, ang Google Chrome o isang bagay, ay
pagpunta upang makita na Davin ni sinusubukan upang magpadala ng isang HTTP na kahilingan,
pagpunta upang makatulong Hm nang kaunti.
At na pupuntahan pumunta ang lahat ng mga paraan sa server.
Ngayon, ang server ay pagpunta sa may PHP dito, o anumang iba pang mga wika.
Gusto lang sa isang normal na kahilingan ng HTTP.
Ito ay halos isang normal na kahilingan ng HTTP.
>> At pagkatapos, ang server Mawawala na sabihin, OK,
Nais ni sa akin Davin upang suriin kung ito ay abc123 sa database.
Pumunta talk sa modelo.
Sabi modelo hindi. abc123 ay isang mahusay na user name.
At pagkatapos, ang web server ay pagpunta sa gamitin ang PHP upang mag-render ng ilang mga paraan ng file.
Ito ay maaaring maging isang file literal lamang na naglalaman ng "oo" sa loob nito, o "hindi,
o isang bagay tulad na.
Ito ay maaaring maging anumang file.
>> Ito ay maaaring maging tulad ng Pupunta ako sa magpadala Davin isang larawan ng isang pato
kung ito ay sa database at magpadala ng isang larawan ng isang hamster
kung ito ay wala sa database.
Iyon ay magiging uri ng pipi, ngunit ito gumagana.
OK, kaya ko magpadala ng pato sa Davin.
Nakakuha Davin isang pato.
At ngayon, kung sino ang pagpunta upang pangasiwaan ang pato?
Matalino bahagi ng Davin muli, kaya JavaScript, tama?
Ipinadala ang JavaScript sa kahilingan, at JavaScript
Mawawala na matanggap ang kahilingan at bigyang-kahulugan ito sa ilang mga paraan.
>> At sa puntong ito, ay ito pagpunta sa sabihin, OK, kung pato pagkatapos ay ako mabuti.
Kung hamster, pagkatapos ay pupuntahan ko sasabihin, hindi, user name
umiiral sa database.
Ngunit kadalasan, hindi ka pagpunta upang magpadala ng pato.
Ikaw ay pagpunta upang magpadala ng isang bagay na bahagyang mas matalinong.
At kung ano ang ginagamit namin ay XML.
At higit pa kamakailan, ginagamit namin JSON.
JSON lamang ang JavaScript Bagay pagtatanda, na
ay isa lamang ikaw ay nakakakuha ng buong JavaScript object.
At inilagay mo ito sa isang file, i lamang na CS50 bagay na iyon na nakita mo guys.
Inilagay mo ito sa isang file, at ipadala mo ito sa sa Davin.
>> Kaya sa kasong ito, nais ko gumawa ng JavaScript na bagay
at sabihin lang, nang user, oo.
O nang user, hindi.
At ipadala ito pabalik sa kanya.
At bakit JSON?
Dahil ang mga tao sino ang pagtanggap ng mga ito ay
pagpunta sa gumamit ng JavaScript upang pangasiwaan ang tugon.
At JavaScript ay gumagana nang mahusay dahil ang tawag dito JavaScript Bagay pagtatanda.
Mag-right?
Kaya maaari niyang tawagan lamang ng isang function at makakuha ng ito maganda na bagay mula sa pagtugon.
At pagkatapos, pupuntahan niya alam kung gumagamit na iyon ay sa database o hindi.
>> Kaya nakikita mo, lahat ng ito darating magkasama sa mga web server,
at pagkatapos ay mayroong isang HTTP na kahilingan at isa HTTP response at lahat ng bagay.
Kaya tiyaking ka guys Nauunawaan ito ng AJAX tawag
dahil makakatulong ito na maunawaan mo ang lahat ng sa mga konsepto pinag-uusapan natin ang tungkol.
>> Kaya narito ang isang halimbawa ng AJAX na may jQuery.
At dito, aming ginagawa sa get JSON.
Kaya kami ay hindi sinusubukan upang makakuha ng larawan ng isang pusa dito, o isang pato.
Kami ay sinusubukan upang makakuha ng isang JSON na file.
At pagkatapos ay maghintay hanggang namin tapos na ito, tuldok na.
Nangangahulugan iyon na ako paghihintay para sa mga tugon.
Maaaring tumagal ng ilang sandali.
Pagkatapos, makikita mo ang isang maliit na pag-load.
Kung gusto mong gawin iyon sa iyong website.
Kaya tuldok na, at pagkatapos ay kung ano ang mangyayari kapag tapos na ito?
Pumasa ka sa isang hindi nakikilalang function, i lamang nakita natin dati.
Dahil tapos na ang isang kaganapan, tulad lamang tulad ng pag-click ng mouse o anumang,
para sa jQuery.
Kaya pumasa ka sa function na ito sa data, teksto, katayuan, at jqXHR.
At isa lamang, na ang ilang mga variable lamang
na maaari mong gamitin sa susunod na magkaroon ang katayuan ng kahilingan ng HTTP,
ang data na ito ang nangyayari upang magpadala ng pabalik sa iyo.
Kaya pagkatapos ay maaari mong mamaya sa bigyang-kahulugan ito at gawin ang isang bagay makahulugang dito.
At kung nabigo ito, kapag maaari itong mabigo?
Well, kapag nagbibigay sa mga kahilingan ng HTTP ka ng 500 o isang bagay tulad na.
Pagkatapos, ito ay pagpunta sa sabihin sa iyo ang katayuan, kung anong uri ng pagkabigo na noon ay,
at lahat ng uri ng bagay.
Mayroon kang upang matiyak upang pangasiwaan ang parehong mga kaso,
kung hindi man ay sa programa napupunta mabaliw.
>> DAVIN: Kaya oo, ito ay eksaktong kung ano ang iyong nakita sa iyong huling p-set.
Ang aktwal na AJAX tawag ay nasa get JSON.
Iyon ang tawag.
At pagkatapos, tuldok tapos ay tulad ng Sinusuri ng ito kung ito ay matagumpay.
Kung matagumpay ito, nais mong upang gawin ang isang bagay na may data.
Makakakuha ka ng pabalik mula sa na JSON data kahilingan.
Iyon ay kung ano ang makakuha ka pabalik.
Kaya kung iyong naaalala mula sa iyong p-set, Marami sa iyo ay tulad ng bracket data i
o kahit anong, tuldok link o pamagat.
Anuman ang pagbabalik mula sa JSON na, kahit anong
mga patlang ay nasa JSON na bagay, na kung ano ang nakukuha mo pabalik.
Data ay kung ano ang nakukuha mo pabalik.
Katayuan ng teksto, isang bagay lamang na ay nagbibigay-daan alam mo kung ano ang nangyari.
At pagkatapos, ang jqXHR, ito lamang ay ang jQuery kahilingan XML HTTP.
Iyon ay tulad lamang ng isang bagay.
At pagkatapos ay mabibigo, tulad ng sinabi Gabe.
Gabe: Sa aming maliit na halimbawa ng abc123 upang tingnan lamang kung na sa database
o hindi, ang data ay ka ng isang bagay gagawin, kung mayroon na tuldok ang data ng user pangalan,
na kung saan ay kung ano ang iyong binuo para sa PHP mong, kung mayroon na tuldok ang data ng user name, at pagkatapos ay
Pupunta ako upang alertuhan, gumagamit pangalan ay mayroon na.
Iba Pa, lang ako pagpunta upang ipaalam ang magpatuloy gumagamit ng pagpuno sa form.
OK, seguridad, cool.
>> DAVIN: Gusto ako sa?
>> Gabe: gusto ko ang isang ito.
Kaya isang bagay na mukhang pamilyar.
Halos tapos na kami.
Kaya ito ay isa lamang halimbawa sa Nakita mo guys sa klase.
Ikaw ay gumagamit ng argv1 dito.
Iyon ay tulad ng isang argument ng linya ng command.
At kami ay Mem pagkopya na sa isang buffer ng laki 12.
Ano ang problema dito?
Buffer overflow!
Dahil mayroon kaming buffer ng laki 12.
argv1 maaaring magkaroon ng laki ng dalawang bilyong.
Hindi namin gagawin ang anumang mga hangganan checking.
Kaya maaari naming kopyahin ng maraming memorya.
At kami ay lalo masama tungkol dito.
Ano ang magagawa namin iyon napaka, napaka ibig sabihin ng sa kasong ito?
Oo?
Madla: Bahagi ng dalawang bilyong mga bagay Naglalaman executable code na nagbabalik
[Hindi marinig].
Gabe: Mismong.
Kaya iyon ang uri ng bagay na ginagamit ng mga tao
upang jailbreak ang iPhone, halimbawa.
Kaya na uri ng bagay.
Dahil maaari kang gumawa lamang ang aparato isagawa ang anumang code na gusto mo.
Ang pag-aayos, kaya ang pag-aayos ay madali.
Lagyan lamang para sa mga hangganan.
Suriin mo para sa null dahil palagi naming suriin para sa null
kapag kami ay pagharap sa mga string.
At pagkatapos, kunin mo ang haba ng string ng bago.
At kung ang string haba ay isang wastong string
haba, na kung saan ay sa loob ng 0 at 12, pagkatapos kami ay mabuti.
>> DAVIN: Kung hindi mo suriin para sa null, tunay mabilis, kung ano ang mangyayari?
Ito seg fault.
Bakit ay seg ito kapintasan?
Dahil ka pagtawag strlen sa null.
Gabe: Oo.
Tama o mali, gamit ang isang password ay isang magandang ideya.
>> Madla: Mali.
>> Gabe: Mali.
Gamitin ang maraming mga password, at malaki, mahaba ang mga bago.
Icon na padlock matiyak ang seguridad.
>> Madla: Mali.
>> Gabe: Mali.
Hindi ito nangangahulugan ng kahit ano.
Ito ay isang icon lamang.
SSL pinoprotektahan laban sa isang tao sa gitna atake.
Madla: Mali.
Gabe: Mali.
OK, kaya ang lahat ng mga ito ay hindi totoo.
Nice.
[Hindi marinig]
Gustong makipag-usap tungkol dito?
Ikaw naman.
DAVIN: Mga uri ng pag-atake, tao sa gitna.
Ano ang isang tao sa gitna atake?
Madla: [hindi marinig].
DAVIN: Kung magpadala sa iyo ng isang HTTP kahilingan, maaari nilang gawin ito, i-right?
Ngunit kung ipinapadala mo ang HTTPS, sila Marahil ay hindi magagawang upang gawin ito.
Mayroong maraming mga punto kasama ang iyong koneksyon.
Mayroon kang mga router.
Mayroon kang mga DNS server.
Kung ang isang tao ay magagawang pisikal na makita kung ano ang iyong pagpapadala sa,
kaya ang isang tao ay magagawang talagang makakuha sa pagitan mo,
ang client, at ng server, at ito ay magagawang makita kung ano ang iyong pagpapadala sa,
ito ay isang tao sa gitna atake.
Kaya upang makita kung ano ang sinusubukan mong makakuha mula sa sa server, o ay magagawang see-- mas masahol pa,
maaari mong magawang upang makita cookies o isang bagay tulad na.
>> Kaya halimbawa, kung hindi ka gumagamit ng SSL, siya
Maaaring magawang makita ang iyong mga cookies ng session ID.
At ito ay tinatawag na-hijack ng session dahil nakikita niya ang iyong mga cookies ID,
at pagkatapos ay siya magagawang upang pumunta sa na website at magpanggap na iyo.
Dahil gusto lamang sa PHP, tandaan kapag naka-log in kami, ano ang gagawin namin gawin?
Kami magtakda ng session ID katumbas ng ID.
Kaya na kumikilala sa iyo.
Iyon ang dahilan kung bakit makikita mo ang iyong portfolio at portfolio ay hindi lahat ng iba pa.
>> Well, kung ako maaaring makakuha ng cookie na iyon, pagkatapos ay maaari kong mag-log papunta sa pahinang iyon.
At pagkatapos, ang maaari kong makita lamang ang iyong mga bagay-bagay at simulan ang pagbili ng mga bagay-bagay at pagbebenta ng.
Kaya na-hijack ng session.
Ngunit hindi ka dapat ma to-- kaya mo Maaaring gamitin ang tao sa gitna atake
kahit na sila ay gumagamit ng SSL.
Ngunit hindi ka dapat ma-.
Kung sila ay gumagamit ng SSL, hindi maaari mong session hijack.
Bakit?
Dahil ito ay ang lahat ng naka-encrypt, tama? kung ito ay naka-encrypt,
at ako pa rin ang isang tao sa gitna, hindi pa rin nakukuha ko ang iyong data.
Iyon ay pinong.
Ngunit ito ay naka-encrypt.
Kaya hindi ko talaga ito magamit.
Kaya na dalawa.
>> Real mabilis, kahilingan palsipikasyon kalyeng site.
Iyon lamang kung mayroong link at ang link na iyon ang isang bagay
na tingin ninyo ay hindi dapat itong gawin.
Kaya halimbawa, kung ang link ay pagpunta sa bumili ng mga stock o magbenta ng mga stock,
at hindi mo alam kung iyon.
Nag-click ka sa link, nagpadala ng isang kahilingan, binili
o ibenta ng isang bagay na hindi mo sinasadyang gawin.
Iyon na iyon.
>> Cross scripting site, kaya dito, naka pagpasa sa pamamagitan ng variable q,
sa halip ng pagpasa sa ilang mga uri ng halaga, siguro q ay tulad ng isang pangalan.
Kaya sa halip na ang pagpasa q equals Davin o isang bagay tulad na,
kung hindi ka gumagamit ng HTML espesyal na karakter, kung
huwag makatakas ito upang tiyakin na ito ay OK, pagkatapos ay maaari ba akong magpasa sa halip,
sabihin nating in dito ako sinasabi print o isang bagay tulad na,
pagkatapos ay maaari ba akong magpasa ng in dito sa isang script na tawag.
>> Kaya pagkatapos, sa halip na pagkuha lamang ng isang variable,
Gusto ko nang isagawa ang script na ito tawag.
Kaya sa loob ng script na tumawag, ano ba ito gawin?
Lokasyon tuldok dokumento, na pupuntahan baguhin ang lokasyon ng dokumento.
Kaya pupuntahan ko upang i-redirect sa ibang lugar.
Ito ay tinatawag na masamang tao sa halimbawang ito, ang napakagandang.
Hindi ma-isip ng mga salita.
At pagkatapos ay, kung ano ang kahit na mas masahol pa ay na pupuntahan ko
upang pagkatapos ay itakda cookie, na ilang variable kong ilagay sa website na ito.
Pupunta ako sa itakda ito katumbas upang ang tuldok na dokumento cookie.
Samakatuwid, pupunta ako nakawin ang iyong cookie.
At pupuntahan ko upang i-redirect ilang impormasyon sa isang website
na hindi dapat pag-access.
At ito ang lahat ng mangyayari dahil ikaw ay Hindi escaping kung ano ang iyong nakita.
Oo?
>> Madla: Kaya lang sa gumawa ng malinaw na ito,
vulnerable.com na ay mahina sa ito.
Kaya maaaring lumitaw ang link na iyon sa anumang ibinigay na pahina.
May nag-click sa ito, pupunta sa vulnerable.com.
Mayroon kang isang cookie upang vulnerable.com.
Sabihin nating Facebook ay mahina, kaya facebook.com.
Mayroon kang ang iyong cookie sa Facebook.
Ano ang ginagawa, ikaw ay pagpunta sa facebook.com,
agad na ito ay nagre-redirect mong badguy.com,
ngunit kabilang ang impormasyon ng iyong cookie.
Kaya ito ang mabilis na pag-redirect, ngunit ang iyong cookie Facebook
Kasama sa mga na-redirect, at iyon ang kung paano sila [hindi marinig].
Gabe: Oo, may ang ilang mga napaka-masama bagay
na maaaring gawin ng mga tao kung mayroong ito.
Halimbawa, kung pinapayagan Facebook lahat ng tao upang baguhin ang iyong user name,
at hindi nila ginawa ang anumang mga kaliwanagan ng isip sa mga pagsusuri, kaya mo
maaaring magpasok ng isang JavaScript na bagay nagbabago ang iyong mga imahe sa isang hamster.
At na pagsingit sa parehong JavaScript sa lahat ng tao kung sino ang pagtingin sa iyong pahina.
Kaya lahat na pagtingin sa iyong pahina May parehong bagay sa user name.
At dahil ito ay isang virus, ito kumalat exponentially.
DAVIN: Susubukan naming laktawan ang huling isa, at pagkatapos ay tapos na kami.
Kaya ito ay isa lamang halimbawa.
Kaya ito ay hindi sila escaping kanilang SQL table.
Kaya maaari mong i-drop ito.
Kaya gusto mo upang makatakas sa mga bagay.
Iyon ay ang nakaraang halimbawa sa krus site scripting.
Paumanhin tumakbo kami nang kaunti huli na.
Bukas, paumanhin!
Bukas, mayroon kaming oras ng opisina.
Kaya oras ng opisina sa Cabbot 8:00-11:00.
Ang oras ng opisina ay mahigpit na para sa pagsusulit katanungan.