[Revizyon: Kwiz 1] [Ali nam, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard University] [Sa a se CS50.] [CS50.TV] [Lucas Freitas] Byenveni tout moun. Sa a se revizyon pou egzamen 1. Menm jan yon avètisman, sa a se - Mwen vle di, nou pral eseye kouvri kòm anpil materyèl ke posib, men sa pa vle di ke nou pral kouvri tout bagay sa yo ke yo ka nan egzamen 1. Se konsa, asire w ke ou tou pran yon gade nan konferans, seksyon, tout bagay ki ou kapab. Egzamen 1 a pwal nan Mèkredi, Mèkredi pwochen. Se konsa, asire w ke ou etidye. Li pral fè, bèl anpil, tankou egzamen an premye konsènan fòma li yo, men li la pwobableman ale nan ka pi pi rèd. Omwen, ane pase a lè m 'te pran 50, mwen te panse li te pi pi rèd. Se konsa, etidye anpil. Mwen pral kouvri done estrikti yo epi Huffman kodaj. Sa a se yon bagay ki yon anpil nan moun ki panse se konplèks, men mwen pral eseye fè li kòm fasil tankou sa posib. Premye a tout, ki sa nou vle ou nèg yo konnen pou egzamen 1 se yo konprann deskripsyon yo konseptyèl ekspresyon nan chak nan estrikti yo done ki mwen pral prezante. Sa vle di ke ou pa bezwen aktyèlman aplike yon tab hash nan egzamen ou an 1. Nou pa ta vle nou aplike yon tab hash antye; petèt nou ap eseye fè ou aplike kèk fonksyon, operasyon ki pi komen, men nou pa pwal fè ou aplike tout bagay. Se konsa, li enpòtan ke ou konprann konsèp la dèyè chak estrikti done epi tou li ke ou se kapab kòd nan C, jis operasyon ki pi komen yo gen pou chak estrikti done. Epi tou li kapab revize endikasyon ak strukt, paske yo parèt yon anpil nan sa yo estrikti done. Premye >>, lye lis. Bay lis Te lye yo aktyèlman trè menm jan ak ranje, men diferans ki genyen ant yon lis lye ak yon etalaj, premye nan tout, se ke yon lis lye gen yon gwosè fleksib anpil, yo pandan ke yo nan ranje ou gen swa chwazi yon gwosè gwo anpil pou etalaj la, Se konsa, ou konnen ke w ap ale nan kapab nan magazen tout done ou a nan ki pozisyon, oswa si w gen yo sèvi ak malok gen yon longè fleksib nan etalaj. Nan lis lye li a trè fasil jis jwenn plis eleman, mete plis eleman nan lis la lye oswa retire eleman. Apre sa, aktyèlman, si ou pa vle lis la lye nan dwe klase, ou kapab fè rechèch epi retire eleman nan tan konstan, Se konsa, O (1) tan, donk li trè pratik. Ou jis dwe fè atansyon toujou sonje yo malok ak gratis nœuds yo, jis paske si ou pa fè sa, ou pral gen fwit memwa. Bay lis Se konsa, lye - definisyon an nan yon ne se jis tankou sa nou gen dwa la. Mwen mete Int n, men ou ka magazen nenpòt done ou vle. Se konsa, si ou vle nan magazen yon kòd, li la amann. Si ou vle nan magazen yon konstri, li nan amann, yon doub, kèlkeswa sa ou vle. Mwen jis mete Int n la pou egzanp yo isit la. Epi ou gen yon konsèy ne nan pwochen an. Se konsa, fondamantalman, yon lis lye gen kèk done, ak Lè sa a, li lonje dwèt nan ne nan pwochen an. Si li nan eleman ki sot pase a nan lis la lye, li ale nan pwen nan nil. Se konsa, sa a se yon egzanp yon lis lye. Oke, kidonk kounye a kite a wè sa nou dwe fè si mwen vle insert yon eleman nan yon lis lye. Premyèman, yon insert fonksyon yo pral nan kalite anile paske mwen pa vle retounen anyen. Apre sa, mwen pral pran yon Int kòm yon diskisyon, paske mwen vle konnen ki sa mwen vle insert. Se konsa, sa ki nan premye bagay la mwen ta dwe fè? Oke, m 'ta dwe malok sou newnode, se konsa ke se liy la an premye. Mwen jis kreye yon nouvo ne yo mete nan yon lis lye. Se konsa, sa mwen kapab fè? Bon, nou konnen ke nan en nou nan lis lye nan klas, nou toujou mete tèt la kòm yon varyab mondyal la. Se konsa, sa nou kapab fè se chanje tèt la. Mwen ka fè nouvo ne sa a k'ap chèf nan nouvo, epi li ale nan pwen nan tèt la anvan yo. Ki jan nou ka fè sa? Premye bagay mwen dwe fè se chanje 'N' la nan ne an nouvo nan valè, ki te pase bay fonksyon an. Lè sa a, newnode nan pwochen a pwal tèt la. Tèt la se yo pral newnode. Se konsa, li trè senp. Pou efase yon ne, nou ka fè l 'tankou - Youn nan fason nou ka fè sa sa a vle di, oke, si mwen te vle efase, pou egzanp, 3, sa m 'ta ka fè se jis pwen ne a anvan ne nan pwochen nan 3. Se konsa, mwen ta jis fè yon bagay tankou sa. Men, sa ki se pwoblèm nan ak fè sa? Mwen gen yon fwit memwa, se konsa mwen pa gen aksè a nimewo a 3 ankò. Pwoblèm nan ak se sa ki ke mwen pa pral pou kapab gratis ki ne. Mwen pral gen fwit memwa ak (enkonpreansibl) ki pral rayi m '. Se konsa, olye pou yo fè sa, mwen ta pwobableman gen yon konsèy pou yon ti tan. Se konsa, mwen mete temp. Li se ale nan pwen nan ne a ke mwen vle efase. Lè sa a, mwen kapab deplase nœuds yo anvan nan pwen ne nan pwochen nan ne a ke mwen vle efase. E finalman, mwen ka libere konsèy la. Mwen gen yo gratis konsèy la ke mwen te kreye dwa a? Mwen pa oblije, jis paske - diferans lan se ke te kreye ne sa a lè l sèvi avèk malok, se konsa li a nan pil wòch la, pandan y ap yon sèl sa a te jis te deklare kòm yon switch NULL nan chemine a. Se konsa, mwen pa bezwen gratis li. Okay. Se konsa, kounye a kite a pale sou pil. Pil yo trè senp. Nou te fè pil ak ke moun kap kriye nan klas jis lè l sèvi avèk ranje, men ou ta dwe abitye - jis dwe konnen ke ou ka tou fè pil nan ke moun kap kriye lè l sèvi avèk lis lye kòm byen. Se konsa, si ou gen yon etalaj, sa ki ta yon pil? Yon pil, an premye, ap gen gen yon gwosè. Ou gen nan magazen ki sa ki gwosè a nan chemine a ki di ou gen kounye a. Epi tou ou ta gen yon etalaj, nan ka sa a nan nimewo, men si ou vle, li kapab yon etalaj nan strings, yon etalaj de konstri, nenpòt ki bagay ki ou vle nan magazen. Sou chemine a: Diferans ki genyen ant yon pil ak yon lis lye se ke nan chemine a ou sèlman gen aksè a eleman ki sot pase a ki te mete nan chemine a. Sa yo rele li sot pase a nan, premye deyò. Jis tankou ou gen yon pil nan plato, si ou mete yon plato sou tèt la nan chemine a, ou genyen yo retire ke plato premye gen aksè a lòt plato yo. Li nan menm bagay la ak pil. Se konsa, si mwen vle, pou egzanp, ajoute yon eleman nan yon chemine, ki sa mwen ta dwe fè? Sa yo rele li pouse, ak li a trè senp. Premye bagay ou dwe fè se tcheke si gwosè a nan chemine a pa janm pi grannèg oswa egal a kapasite nan chemine a. Paske si ou deja yo se sou kapasite plen, ou pa ka ajoute nenpòt lòt bagay. Lè sa a, si se pa, ou jis gen ajoute eleman nan chemine a. E finalman, enkreman gwosè a. Se konsa, li trè senp. Se konsa, mwen jis ajoute nimewo 2. Men, si mwen vle pòp, ki vle di ke mwen vle retire eleman ki sot pase a ki te ajoute epi retounen valè a nan eleman an, premye bagay la mwen gen yo tcheke se ke chemine a se pa vid. Paske si li nan vid, mwen pa ka retounen anyen. Nan ka sa a, mwen retounen -1. Sinon, mwen pral dekrwasans gwosè a nan espèk a, epi retounen nimewo (s.size). Poukisa mwen dekrwasans gwosè a ak Lè sa a, retounen s.size? Li nan paske, nan ka sa a, espèk a gen gwosè 4, e mwen vle retounen eleman nan katriyèm, dwa? Men, sa ki se endèks la nan eleman nan katriyèm? Twa. Depi mwen gwosè - a pwal 3, mwen ka jis retounen s.numbers (s.size) paske li se 3. Se konsa, li jis endèks la. Koulye a, ke moun kap kriye. Ke moun kap kriye yo se bèl anpil menm bagay la. Sèl diferans ki genyen se ke olye pou yo gen sot pase a nan, premye soti, ou gen an premye nan, premye deyò. Pwobableman si ou ap tann pou yo ale nan yon konsè, ou pa ta fè kè ou kontan si ou te gen yon pil olye pou yo yon keu. Pou ou kab vin moun ki sot pase a ap vini ta dwe premye moun ki te antre nan konsè a. Ou pwobableman pa ta gen kè kontan. Nan keu a, premye moun ki jwenn nan tou se premye moun ki jwenn deyò. Se konsa, nan definisyon an nan yon keu, san konte gen gwosè a nan etalaj la, ou gen tou yo gen tèt la, ki se endèks la nan tèt la nan chemine a. Se konsa, eleman nan premye kounye a. Enqueue se menm bagay la kòm pouse pou pil. Si ou yo te trè nayif, ou ta jis di, byen, mwen ka jis fè egzakteman menm bagay la menm jan mwen te fè pou pouse. Mwen ka jis tcheke si li pa pi lwen pase kapasite la. Si li se, mwen retounen fo, otreman mwen ka jis ekspòtasyon valè nan nouvo ak Lè sa a, enkreman gwosè a. Men, poukisa nonm sa a mal? Ann wè egzanp sa a. M ap eseye enqueue yon pakèt moun sou bagay, ak Lè sa a, mwen pral dequeue ak enqueue. Genyen yon anpil nan kòmandman, men li la trè senp. Mwen pral enqueue 5, se konsa ajoute 5, ak Lè sa a, 7, 1, 4, 6, ak Lè sa a, mwen vle dequeue yon bagay, ki vle di ke mwen pral retire eleman a an premye. Se konsa, mwen pral retire nimewo a 3, dwa? Eleman a an premye. Oke. Koulye a, si mwen eseye enqueue yon lòt bagay, ki sa ki pwal rive? Dapre aplikasyon m 'yo, Mwen te ale nan mete pwochen nonb nan q.size nan endèks. Nan ka sa a, gwosè a se 8, Se konsa, endèks la 8 yo pral dwa isit la nan yon pozisyon nan sot pase a. Si m 'eseye enqueue 1 dwa isit la, mwen ta dwe ranplasan pozisyon ki sot pase a nan nimewo a 1, ki se konplètman sa ki mal. Ki sa mwen vle fè se vlope toutotou epi ale nan pozisyon a an premye. Petèt ou ta jis di, byen, mwen jis gen yo tcheke si mwen ka aktyèlman mete yon bagay la. Si ou pa, mwen jis di, o, nouvo kapasite an plen se aktyèlman kapasite - 1, epi ou pa ka mete yon eleman la. Men, sa ki se pwoblèm lan? Pwoblèm lan se ke si mwen jis dequeue tout bagay dwa isit la ak Lè sa a, mwen eseye ajoute yon lòt bagay, li ta jis di, byen, ou te nan kapasite plen, ki se 0. Se konsa, keu ou ale. Ou gen vlope alantou li, ak yon fason pou vlope toutotou ke ou nèg te aprann sa nan vizyonè ak lòt psets te lè l sèvi avèk mod. Ou ka eseye li nan lakay yo nan konprann pou ki sa ou ta fè q.size + q.head kapasite mod, men si ou tcheke dwa isit la, nou ka wè ke li travay. Se konsa, nan dènye egzanp lan, q.size te 8 ak tèt la, te 1 paske li te nan pozisyon sa a isit la nan etalaj la. Se konsa, li yo pral 8 + 1, 9. Mod kapasite 9 ta dwe 0. Li ta ale nan endèks la 0. Nou pral nan yon pozisyon nan dwa. Lè sa a, eseye keu a nan kay la. Men kèk bagay enpòtan: eseye konprann diferans ki genyen ant yon pil ak yon keu. Nan lakay, eseye jwenn trè abitye ak mete ann aplikasyon enqueue, dequeue, pouse ak pòp. Epi tou li konprann lè ou ta sèvi ak chak nan yo. Se konsa, kite a detann pou 10 segonn ak yon pakèt moun sou Pokemons. Epi, koulye a kite a tounen nan done estrikti. Hash tab. Yon anpil moun yo te pè a tab hash. nan pwoblèm mete 6, yon korektè. Tab Hash ak ap eseye, yon anpil moun ki jwenn pè nan yo. Yo panse yo ap tèlman difisil a konprann. Yeah? [Rob Bowden] Pwoblèm mete 5. Pwoblèm mete 5, yeah. Mèsi Rob. Yeah. Sis te Huff n 'soufle, yeah. Pwoblèm mete 5 te korektè òtograf, epi ou te sèvi ak swa yon tab hash oswa yon eseye. Yon anpil moun te panse ke yo te super difisil a konprann, men yo ap aktyèlman trè senp. Ki sa ki se yon tab hash, fondamantalman? Yon tab hash se yon etalaj de lis lye. Sèl diferans ki genyen ant yon etalaj ak yon tablo hash se ke nan tablo a hash ou gen yon bagay yo rele yon fonksyon hash. Ki sa ki se yon fonksyon hash? Mwen pa konnen si ou nèg ka li isit la. Sa a se yon egzanp sou yon tab hash. Se konsa, ou ka wè ke ou gen yon etalaj ak 31 eleman. Ak sa nou fè nan yon tablo hash se gen yon fonksyon hash ki se ale nan tradui yon kle, chak int nan yon endèks. Si, pou egzanp, si mwen vle chwazi pou B. Harrison, Mwen ta ka mete B. Harrison nan fonksyon hash m 'yo, ak fonksyon an hash ta retounen 24. Se konsa, mwen konnen se mwen vle nan magazen B. Harrison nan 24. Se konsa, sa a, se diferans ki genyen ant jis ki gen yon etalaj epi ki gen yon tab hash. Nan tablo ki hash ou pral gen yon fonksyon ki pral di ou kote nan magazen done yo ke w vle nan magazen. Pou fonksyon an hash, ou vle gade pou yon fonksyon hash ki se detèrminist ak byen-distribye yo. Kòm ou ka wè isit la, ou wè ke yon anpil nan done a ke mwen te vle nan magazen te aktyèlman 19 olye pou yo lè l sèvi avèk 31 ak 30 ak 29, ki tout te gratis. Se konsa, fonksyon an hash ke mwen itilize pa t 'trè byen-distribye yo. Lè nou di byen-distribye, sa vle di ke nou vle genyen, apeprè, omwen 1 oswa 2 pou chak nan a - tankou, yon diferans nan 1 oswa 2 pou chak nan endis yo nan ranje yo. Ou vle gen, apeprè, menm kantite eleman nan chak lis lye nan etalaj la. Apre sa, li fasil yo tcheke si li nan ki valab nan tablo a hash, wè kòm tab hash. Lè sa a, pye bwa. Sa a se yon pyebwa. Pye bwa nan syans òdinatè yo tèt anba pou kèk rezon. Se konsa, isit la ou gen rasin lan nan pye bwa a ak Lè sa a, fèy li yo yo. Ou ta dwe jis konnen nomanklatur la pou paran yo ak timoun. Chak ne gen timoun li yo, ki se nœuds yo ki anba a paran an. Se konsa, pou egzanp, 2 a pwal paran an pou 3 ak pou lòt timoun nan dwa a, pandan y ap 3 a pwal paran an pou 1 ak lòt timoun yo ke la tou. Ak 1 a pwal pitit 3 a, ak sou sa. Nou gen yon bagay pi plis enteresan, ki rele yon pye bwa rechèch binè, nan kote tout valè yo sou bò dwat la nan yon ne yo pral yo dwe sou bò dwat la, dwa isit la - sou bò dwat la, yo ale nan pral pi grannèg pase eleman an nan rasin lan. Se konsa, si mwen gen nimewo a 5 dwa isit la, tout eleman ki sou bò dwat la yo ale nan pral pi grannèg pase 5, ak sou bò gòch la tout eleman ki yo ale nan dwe mwens pase 5. Poukisa sa a se itil? Oke, si mwen vle tcheke si nimewo a 7 se isit la, pou egzanp, Mwen jis ale nan 5 premye ak mwen pral wè la a, se 7 pi plis oswa mwens pase 5? Li nan pi gwo, se konsa mwen konnen li nan ale nan gen yo dwe sou bò dwat la nan pye bwa an. Se konsa, mwen gen anpil mwens bagay fè yon gade nan. Nan egzekisyon pou yon pye bwa rechèch binè, ne la, mwen jis pral fè yo gen done, Se konsa, Int n; ou ta ka genyen tou yon fisèl oswa nenpòt bagay ou te vle. Ou jis dwe fè atansyon sou defini ki sa ki pi gwo, ki sa ki mwens. Se konsa, si ou te gen strings, pou egzanp, ou ta ka defini ke tout bagay sa yo sou bò dwat la yo ale nan gen pi gwo longè, bò gòch la yo ale nan gen pi ba longè, se konsa li vrèman moute nan ou. Kouman mwen ka aplike jwenn pou le? Premye bagay nou pral gen fè se tcheke si rasin lan se NULL. Si li nan NULL, sa vle di ke bagay la se pa la paske ou pa menm gen yon pye bwa, dwa? Se konsa, mwen tounen bay manti. Sinon, mwen pral tcheke si nimewo a gen plis pouvwa pase valè a nan rasin lan. Mwen pral eseye jwenn eleman ki sou bò dwat la nan pyebwa a. Ou wè ke mwen lè l sèvi avèk rkursyon isit la. Lè sa a, si li nan mwens, mwen pral fè yon gade nan bò gòch la. E finalman, otreman, si li pa mwens oswa pa janm pi grannèg, sa vle di ke li nan valè nan tèt li. Se konsa, mwen jis retounen vre. Ou ka wè isit la ke mwen itilize si, si, si. Epi sonje, nan egzamen 0, nou te gen yon pwoblèm ki te gen si, si, si, epi ou te sipoze jwenn ensifizans la, ak ensifizans la te ke ou itilize si. Ou ta dwe te itilize si, lòt moun si, lòt moun si, ak lòt bagay. Se konsa, mwen ta dwe sèvi ak lòt moun si ak lòt moun si ak lòt moun isit la? Èske yon moun - wi? [Pale elèv, fèbl] Sa a pafè. Se konsa, li te di ke li pa gen pwoblèm, jis paske ensifizans la ke nou te genyen anvan te ke, paske, petèt si yo te gen kèk kondisyon satisfè, konsa ou te fè yon aksyon, men Lè sa a, ou te ale nan tcheke tout lòt kondisyon yo. Men, nan ka sa a, li tounen touswit, se konsa li pa gen pwoblèm. Se konsa, ou pa bezwen sèvi ak lòt moun si. Epi finalman, se pou yo pale sou ap eseye, ki se pi renmen sou tout moun. Yon eseye se yon pyebwa ki nan ranje. Li trè vit yo gade jiska valè, men li sèvi ak yon anpil nan memwa. Apre sa, li la anjeneral filtre mo, Se konsa, lè ou vle aplike, pou egzanp, mwen pa konnen, tankou yon liv telefòn nan telefòn ou epi ou vle pou kapab tape B ak jis gen non moun ki gen B. Li trè fasil aplike ke lè l sèvi avèk yon eseye, pou egzanp. Ki jan ou fè defini yon ne nan yon eseye? Ou jis bezwen gen yon bouleen ki se yo pral is_word. Ki reprezante ki lè l sèvi avèk tout karaktè yo anvan sa ne, ou te kapab fòme yon mo, ak Lè sa a, ou pral gen yon etalaj de pwent nœuds. Èske ou ka wè ke nou gen yon etalaj de nœuds paran, se konsa ne * etalaj? Yeah? Se konsa, kite a wè ki jan ki pral travay. Pou chèk la eple, nou gen yon etalaj de 27 eleman, paske nou gen tout lèt yo plis apostwòf la. Anvan isit la mwen jis pwal itilize 2 paske mwen vle pou kapab ekri sou tablo a. Oke. Se konsa, sa a se yon egzanp nan yon eseye. Si mwen jis defini ne a an premye, mwen pral gen yon etalaj de 2 eleman ki se 2 endikasyon NULL, se konsa mwen jis mete 'yon' ak 'b'. Apre sa, mwen pral gen yon bouleen ki di is_word. Li pral fè fo pou yon a an premye, jis paske, anvan ke ou pa gen okenn karaktè. Se konsa, yon pawòl ki vid se pa yon mo. Se konsa, li bay manti. Si m 'vle ajoute' yon 'yo diksyonè sa a, sa ki ta mwen gen fè? Mwen ta jis gen nan malok yon nouvo ne pou 'yon', ak lè sa a ajoute pawòl li nan vre. Se konsa, li jis reprezante ki gen 'yon' ki pral yo dwe vre. Fè sans? Lè sa a, si mwen vle ajoute 'ba', mwen pral oblije malok 1 pou 'b', ak Lè sa a, mwen pral yo mete kanpe Boolean a ak fo, paske 'B' pou kont li se pa yon mo. Lè sa a, mwen pral malok yon lòt pou 'yon', se konsa 'ba', ak Lè sa a, mwen pral yo mete kanpe li nan yon mo ki vre. Paske 'ba' se yon mo. Lè sa a, si mwen vle wè si 'B' se an nan diksyonè sa a, Mwen ka jis ale nan youn nan premye, 'B'. M 'desann, epi mwen gade nan se pawòl Bondye, epi li di fo. Se konsa, li pa di yon mo. Si m 'vle yo tcheke' ba ', M 'ale nan yon sèl la an premye,' B ', ak Lè sa a, ale nan' yon ', epi mwen wè vre, kidonk li se yon mo. Fè sans? Yon anpil moun jwenn mele nan ap eseye. Pa gen okenn? Finalman, Huffman kodaj. Huffman kodaj se trè itil pou konsève pou memwa ak konpresyon fichye tèks, jis paske yon anpil nan fwa ou itilize 'yon' ak 'e', ​​pou egzanp, nan dokiman ou, men mwen pa konnen si w mesye sèvi ak 'q' oswa 'z' kòm anpil. Èske w gen jis 1 multiple pou chak karaktè yon sèl, chak yon sèl - 256 karaktè yo ke nou gen nan tablo a ASCII se pa trè pi bon, jis paske gen kèk karaktè ke ou itilize pi plis, Se konsa, ou ta dwe pwobableman sèvi ak mwens memwa pou sa yo. Kijan pou m itilize Huffman kodaj? Nou dwe fè yon pye bwa Huffman.  Yon pye bwa Huffman gen nœuds ki gen yon senbòl ki pral fè tankou, 'yon', 'b', 'c', lèt la, tou sa lèt ou genyen, yon frekans ki se frekans lan ki pawòl Bondye a parèt nan tèks la, ke ou te kreye pye bwa a Huffman pou li a, ak Lè sa a, yon ne ki se ale nan pwen sou bò goch la nan pye bwa a Huffman ak yon lòt ne ki se ale nan pwen a dwat la. Se konsa, jis tankou yon pye bwa. Ki jan ou fè bati yon pye bwa Huffman? W ap ale nan chwazi nœuds yo 2 ki gen frekans ki pi ba. Si ou gen yon menm kantite vòt w ap ale nan chwazi nœuds yo 2 ki gen valè ki pi ba ASCII kòm byen. Lè sa a, w ap ale nan kreye yon nouvo pyebwa nan sa yo 2 nœuds ki se pral gen frekans lan konbine nan ne paran an. Lè sa a, w ap ale nan retire timoun yo 2 soti nan forè a epi ranplase yo ak paran an. Apre sa, w ap ale nan repete sa jouk lè ou gen sèlman 1 pye bwa nan forè an. Se konsa, kite a wè ki jan ou ta fè yon pye bwa Huffman pou ZAMYLA. Ou ka wè isit la ke tout lèt yo gen frekans 1 eksepte pou 'A'; ki gen frekans 2. Se konsa, mwen te kreye nœuds pou tout lèt yo mwen mete yo nan lòd ki gen valè ASCII ak frekans. Se konsa, si mwen vle kreye premye pye bwa a, li pral ak 'L' ak 'M'. Se konsa, li isit la. Frekans nan pè a pral 2 paske li nan 1 + 1, Lè sa a, pwochen 2 a ak fwekans yo ki pi ba yo se 'Y' ak 'Z'. Lè sa a, mwen gen tout nan yo ke yo te - gen yon frekans nan 2. Se konsa, ki sa yo se yo menm ki gen menm valè a ASCII ki pi ba pou youn nan pwochen? 'A' ak 'L'. Se konsa, mwen kreye ne nan nouvo, epi finalman, li nan 4 ak 2, se konsa 2 a pwal sou bò gòch la. Lè sa a se pye bwa a Huffman. Lè sa a, si mwen vle ekri kèk tèks, tankou nan binè konvèti nan tèks, lè l sèvi avèk pye bwa a Huffman se trè fasil. Pou egzanp, si m 'di sa k ap deplase sou bò goch la se yon 0 ak deplase sou bò dwat la se yon 1, Ki sa ki se ke ale nan reprezante? Se konsa, tankou 1, 1, se konsa dwat, dwat, ak Lè sa a, 0, se konsa kite ta dwe L, ak Lè sa a, 1, 0, 0. Se konsa, 1, 0, Se konsa, jis 1, 0, 'A'. Lè sa a, 0, 1, se konsa 'Z'. Lè sa a, 1, 0, 0 - pa gen okenn. 0, 0 pral 'Y', se konsa parese. Se konsa, ki nan tout pou m ', Rob a pral pran sou. [Rob Bowden] Se konsa, semèn 7 bagay. Nou te gen yon anpil ale sou reyèlman vit. Operatè lojik, tanpon debòde, Bibliyotèk CS50, lè sa a HTML, HTTP, CSS. Tout moun nan tankou 15 a 20 minit. Lojik operatè yo. Gen 6 nan yo ke ou bezwen konnen. Lojik, epi, lojik oswa, or, yo kite chanjman, dwa chanjman, epi yo pa. Dwa chanjman epi yo pa ou apèn te wè nan konferans nan tout. Nou pral ale sou li byen vit isit la, men li bon konnen ke sa yo, se 6 la ki egziste. Sonje ke operatè lojik yo tankou lè ou fè 3 + 4. Ou pa ap fè fas ak binè la nan 3 ak 4. Ak operatè lojik ou yo aktyèlman fè fas ak Bits endividyèl yo nan nimewo ki 3 ak 4. Se konsa, yon sèl nan premye ke nou pral di se lojik se pa sa, ansanm ak tout sa li fè a se Flip tout Bits yo. Se konsa, isit la, si w ap ekri sa a nan C, ou ta pa ekri li kòm ~ 11011 oswa kèlkeswa sa, ou ta ekri li renmen ~ 4, ak Lè sa a, li ta baskile reprezantasyon an binè nan 4. Se konsa, isit la, ~ nan kèk nimewo binè 1101101 ki pral egzakteman baskile tout 1 a nan 0 a ansanm ak tout 0 a nan 1 an. Kòm mwen di la, itilize a souvan nan sa a, epi nou pral wè l 'nan yon ti jan, se tankou nou vle vini ak kèk nimewo kote tout Bits yo se 1, eksepte pou youn nan yo. Se konsa, li anjeneral pi fasil eksprime sa yo panse nimewo a ki kote sèlman sa ti jan yon sèl mete, ak Lè sa a, pran ~ a nan li, se konsa se chak ti jan lòt mete eksepte pou yon sèl. Se konsa, sa a, se sa nou ap ale nan sèvi ak plis nan yon ti jan. Lojik oswa. Isit la yo se 2 nimewo binè, ak nimewo 2 sa yo yo trè reprezantan, depi yo reprezante tout sa posib konbinezon de Bits ou ta ka bezwen opere sou. Isit la, lè m 'or'd chak ti jan, nou ap jis ale nan konpare dwat desann. Se konsa, ki sou bò gòch nou gen yon 1 ak yon 1. Lè m 'lojik | sa yo, ki sa mwen pral jwenn? Yon sèl. Lè sa a, lojik | 0 ak 1 ki pral ban mwen? Yon sèl. Lojik 1 ak 0 a pwal menm bagay la, yon sèl. Lojik 0 | 0 ki pral ban m '0. Se konsa, ka a sèlman kote mwen jwenn 0 a se nan 0 a | 0 ka. Apre sa, ou ka panse a ki jis tankou sewòm oral ki lojik ou. Se konsa, si ou panse a 1 kòm vrè ak 0 kòm fo, menm bagay la aplike isit la. Se konsa, laverite oswa vre se vre; vre oubyen fo a se vre. Ki fo oswa ki vre se vre; ki fo oswa ki fo se bagay la sèlman ki la aktyèlman bay manti. Isit la nan egzanp lan ke ou ta dwe konnen kòm yon trè bon egzanp nan lè operatè lojik ap itilize yo. Isit la si nou oswa kapital 'A' ak Ox20, epi n ap gade nan sa yo nan yon dezyèm fwa, nou jwenn yon bagay. Men, si nou oswa miniskil 'yon' ak Ox20, nou jwenn yon bagay. Se konsa, kite a rale moute tab ASCII. Oke. Isit la nou wè ke 'A' se - isit la nou gen 'A' se desimal 65. Men, mwen pral ale ak ekzadesimal, ki se Ox41. Trè asire w nou te wè l 'nan klas la. Mwen panse ke nou wè sa nan klas ke li nan trè fasil konvèti soti nan ekzadesimal binè. Se konsa, isit la, si mwen vle mete 4 nan binè, Se jis pral fè 0100. Sa a se 1 an plas, kote 2 a, kote 4 la, kidonk sa a se 4. Lè sa a, mwen ka separe 1 nan binè, ki se pral fè 0001. Se konsa, sa a se pral yo dwe reprezantasyon nan 'A' nan binè. Lè w ap pran miniskil 'yon', li la kounye a pral fè Ox61, kote, divize sa yo moute nan binè li yo, se konsa yon 6 - Se pou yo aktyèlman fè li - ki gen la pa gen gonm? Gonm. Ox61. Se konsa, divize 6 nan binè a pwal 0 + 4 + 2 + 0. Apre sa, divize 1 a pwal 0001. Gade nan diferans ki genyen ant sa yo 2, nou wè ke diferans la sèlman ant yon miniskil ak yon kapital 'A' se ti jan sa a yon sèl. Se konsa, vini tounen nan isit la - oke. Vini tounen nan isit la, si nou gade a sa ki ti jan nan Ox20 se, Se konsa, divize Ox20 nan binè li yo, se 0010, 0000. Ox20, ti jan a sèlman ki se mete sa a ti jan ke nou ap konsène ak, ak oblije chanje ant kapital ak miniskil 'yon'. Si m 'oswa' A ', ki se yon sèl sa a,' A ', si mwen oswa 'A' ak Ox20, sa m 'pral jwenn? [Elèv, fèbl] 'yon' minuskul, paske li nan ale nan baskile sa a ti jan nan yon 1. Men, si mwen 'oswa' yon 'ak Ox20, ki sa ki mwen pral jwenn? Miniskil yon, paske jis oring 'yon' ak Ox20, Mwen jis yo pral oring ti jan sa a yon sèl nan yon 1; li a deja yon 1, se konsa li pa gen pwoblèm. Se konsa, nou jwenn 'yon' ak 'yon'. Lojik ak. Yon fwa ankò, nou ka panse a sa a kòm nou kontrepati ki lojik e. Ki sou bò gòch nou gen vre & vre. Li pral yo dwe vre, epi pou tout moun nan ka yo, fo & laverite oswa vre & fo, oswa fo & fo, Pa gen yonn nan bagay sa yo yo se verite. Se konsa, sa nou fini ap resevwa a se 1000. Se konsa, kounye a, isit la, isit la nan kote mwen te itilize lojik la konfyans se pa sa, kote nou te gen Ox20. Se konsa, sa a se Ox20. Koulye a, sa m 'vle fè a, lojik ~ nan Ox20. Sa ki pral baskile tout Bits yo. Se konsa, mwen gen 1101, 1111. Se konsa, 'A' anded ak ~ Ox20 ki pral ban m 'ki sa? Ti jan a sèlman nou vrèman bezwen panse osijè de se yon sèl sa a, depi, si tout nan Bits sa yo yo mete nan 1, Lè sa a, nou pral jwenn ekzakteman ki sa 'A' te ye a, eksepte pou, petèt, ki sa ki sa a ti jan se. Paske si li te yon 1, kounye a li pral yo dwe mete nan yon 0, paske tou sa sa a se, anded ak sa-a a pwal 0. Se konsa, sa se 'A' & ~ Ox20 pral bay m 'konsa? [Elèv yo reponn, fèbl] Ak sa ki 'yon' ak - li a 'A'. Ak sa ki se 'yon' & ~ Ox20 pral bay m 'konsa? 'A.' Paske sa a se kounye a yon 1. Anding ak sa-a 0 ki pral fè l 'yon 0, e kounye a, nou pral yo ka resevwa yon 'A'. Tou de se 'A', 'ak dènye men pa piti nan kalite sa a, nou gen or. Li trè anpil tankou oswa, eksepte sa vle di sèlman oswa. Sa a se tankou sa ki anjeneral ou panse a kòm oswa nan mond reyèl la. Se konsa, ou fè swa 'x' oswa 'y', men pa toulède. Isit la 1 ^ 1 a pwal 0. Paske vre, sa a se - li pa travay kòm byen ak vre a ki lojik ak fo kòm lojik & ak oswa fè sa, men vre ^ vre se bay manti. Paske nou sèlman vle retounen vre si se sèlman youn nan yo se verite. Se konsa, 1 ^ 1 se 0. Ki sa ki sou 0 ^ 1? Se 1. 1 ^ 0 se 1, 0 ^ 0 se 0. Se konsa, anba tout sikonstans, 0 bit yon bagay 0 a pwal 0. 1 lojik yon bagay 0 oswa 0 bit 1, si li nan | oswa ^, li pral yon 1, ak si li nan & li pral 0. Epi ka-a sèlman kote 1 lojik 1 se pa 1 a la avèk san konte oswa. Sa a 0110. Se konsa, isit la kounye a, lè l sèvi avèk or - Se konsa, nou ap tounen nan 20. 'A' ^ Ox20 se sa yo 2 Bits nou ap konpare. Se konsa, yon 1 ^ 0 ki pral ban m 'yon ki sa? Yon yon sèl. 'A' ^ Ox20 ki pral ban mwen? Miniskil yon. 'A' ^ Ox20 ki pral ban mwen? Kapital A. Paske tou sa sa a ap fè, XORing sa a ak Ox20 se efektivman ranvèrsan tou sa sa a ti jan se. Si sa a se yon 0, li la kounye a ale nan vin tounen yon 1. Depi sa a se yon 1, 1 ^ 1 se 0. Se konsa, nou yo yon 'te vin devni' A ', epi li te' A 'nou vin' yon '. Se konsa, or se yon fason reyèlman bon nan jis ranvèrsan ka-a. Ou jis vle repňte sou yon afè de lèt ak altènatif ka a nan chak karaktè yon sèl, ou jis or tout bagay ak Ox20. Koulye a, nou te kite chanjman. Kite chanjman se jis ale nan, fondamantalman, pouse tout nan nimewo ki nan, oswa sou bò goch la, ak insert 0 a dèyè yo. Se konsa, isit la nou gen 00001101. Nou pral pouse 3 0 a nan de dwat la, e nou jwenn 01101000. An tèm nonbinary, nou wè ke sa ki nan vrèman fè fas 13 kite-deplase ak 3, ki bay nou 104. Se konsa, bò gòch déplacement, nou wè isit la, x << y se fondamantalman x * 2 ^ y. 13 * 2 ^ 3, 2 ^ 3 se 8, se konsa 13 * 8 se 104. Si ou jis panse osijè de binè an jeneral, ki jan chak chif, si nou kòmanse soti nan bò dwat la, li nan 1 nan plas, Lè sa a, kote 2 a, Lè sa a, kote 4 la. Se konsa, pa pouse nan 0 a soti nan bò dwat la, nou ap jis pouse bagay ki te nan plas 4 an nan plas 8 la, ak bagay ki te nan plas 8 la nan plas 16 la. Chak chanjman anplwaye jis miltipliye pa 2. Yeah? [Elèv] Kisa k ap pase si ou deplase pa 5? [Bowden] Si ou deplase pa 5 ou ta jis pèdi chif. Fatalman, li nan menm bagay la. Tankou, nonm antye yo, se sèlman 32 Bits, Se konsa, si ou ajoute 2 reyèlman gwo nonm antye yo, li jis pa anfòm nan yon nonb antye relatif. Se konsa, li menm bagay la isit la. Si ou deplase nan 5, nou ta jis pèdi ke yon moun. Epi sa a, kalite sa mwen vle di pa "apeprè," kote si ou chanjman twò lwen, ou pèdi miyèt moso. Ki dwat chanjman pral fè opoze a, kote nou ap ale nan bouskile 0 a nan fen a, ak pou objektif nou an, ranpli nan 0 a soti nan bò gòch la. Se konsa, fè sa, n ap fondamantalman ranvèse sa nou te deja fè. Apre sa, nou wè ke twa 0 la a sou bò dwat la gen sèlman tonbe, epi nou te pouse tout wout la nan 1101 a dwat la. Sa a se fè 104 3, ki se, efektivman, x / 2 ^ y. Se konsa, kounye a, isit la, li nan yon lide menm jan an. Poukisa se li jis apeprè x / 2 ^ y, epi yo pa aktyèlman x / 2 ^ y? Paske si m 'te deplase pa 4, mwen ta gen tan pèdi yon 1. Fondamantalman, ki sa ou panse nan, jis panse divizyon nonb antye ki pè an jeneral. Se konsa, tankou 5/2 se 2. Li pa 2.5. Li nan lide la menm isit la. Lè nou divize pa 2, nou ka pèdi Bits enpè sou wout la. Se konsa, kounye a - sa a, se li pou lojik. Sa a tout sa ou bezwen konnen. Sonje sèvi ak ka yo nou te wè nan klas la, tankou yon mask ti jan se itil pou operatè lojik, oswa ou sèvi ak yo pou mask ti jan. Lèt majiskil ak lèt ​​miniskil, konvèsyon se yon egzanp trè Prototype. Oke, kidonk pezib atak debòde. Nenpòt moun ki sonje sa ki te mal ak fonksyon sa a? Avi nou te deklare yon etalaj de 12 bytes, 12 charaktèr, ak Lè sa a, nou kopye nan zòn de defans nou nan 12 charaktèr ba a fisèl tout antye. Se konsa, sa ki nan pwoblèm nan isit la? Nimewo a majik 12 yo ta dwe bèl anpil imedyatman pòp deyò kòm - poukisa 12? E si bar k ap pase yo plis pase 12 karaktè? E si bar se dè milyon de karaktè? Isit la pwoblèm nan se manki. Si ba a se lontan ase, li pral jis konplètman - 'c', 'C' pa pran swen ke li te sèlman 12 karaktè; 'C' pa pran swen ke li pa ka anfòm ke anpil bytes. Li pral jis konplètman recouvrir Char, 12 bytes yo nou te resevwa lajan pou li, ak tout bagay sot pase l 'nan memwa ki pa aktyèlman fè pati nan ki zòn de defans ak tou sa ba a fisèl se. Se konsa, sa a te foto a nou te wè nan klas kote nou gen chemine nou an ap grandi. Ou ta dwe dwe itilize yo foto sa yo oswa pou w jwenn abitye ak yo ankò. Nou te pil nou an ap grandi, adrès memwa kòmanse nan 0 nan tèt la ak grandi desann nan renmen 4 milya de dola nan pati anba a. Nou gen nou etalaj 'C' yon kote nan memwa, Lè sa a, nou gen konsèy nou yo defann dwa anba li, ak Lè sa a, nou gen sa a sove konsèy ankadreman nan adrès retou nou yo ak chemine woutin paran nou an. Sonje sa adrès la retounen se? Se lè prensipal apèl yon foo fonksyon, rele yon bar fonksyon, inevitableman, ba retounen. Se konsa, lè ba retounen yo, yo bezwen konnen ke li la pral tounen nan foo ki rele l '. Se konsa, adrès la retounen se adrès ki nan fonksyon an ke li gen pou li retounen nan lè retounen yo fonksyon. Rezon ki fè li enpòtan pou atak debòde tanpon a se paske, yon bon, entru renmen chanje sa adrès retou. Olye pou yo ale tounen nan foo, mwen pral tounen nan tout kote HACKER a vle m 'pou tounen nan. Epi, yon bon, kote HACKER la souvan vle ale tounen nan se kòmanse nan zòn de defans la ke nou orijinal te fè. Se konsa, avi, ankò, Little Ameriken. Aparèy la ki se yon egzanp yon sistèm Ameriken mwen yo, Se konsa, se yon nonb antye oswa yon konsèy ki estoke ak bytes yo ranvèse. Se konsa, isit la nou wè - se sa a? Yeah. Nou wè Ox80, OxC0, Ox35, OxO8. Sonje ekzadesimal chif yo? Nou pa ranvèse ekzadesimal chif yo nan Little Ameriken, paske 2 ekzadesimal chif fè yon multiple yon sèl, epi nou ranvèse bytes yo. Se poutèt sa nou pa sere, tankou, 80530CO8. Nou sere, olye de sa, chak pè nan 2 chif, kòmanse nan bò dwat la. Adrès ki vle di adrès ki nan kòmansman an nan zòn de defans nou ke nou aktyèlman te vle kopi nan an plas an premye. Rezon ki fè la sa a, se itil se paske, sa ki si atakè a rive, olye pou yo gen yon kòd ki te jis yon kòd inonsan nan tankou, non yo oubyen yon bagay, sa ki si, olye de sa, ki fil yo te sèlman kèk kòd abitrè ki te tou sa yo te vle li fè? Se konsa, yo te kapab - Mwen pa ka panse a okenn lòt Kòd fre. Li ta ka anyen, menm si. Nenpòt Kòd dezas. Si yo te vle, yo te kapab jis fè yon bagay nan defo seg, men ki ta ka gratui. Yo toujou fè l 'bay Hack sistèm ou an. Okay. CS50 bibliyotèk la. Sa a se, fondamantalman, getInt, getString yo, tout moun ki fonksyon nou bay pou ou. Se konsa, nou gen Char fisèl *, e ke sa a distraksyon a ke nou pran kònen lwen nan kèk pwen pandan semès la. Sonje ke yon kòd se jis yon etalaj de karaktè. Se konsa, isit la nou wè yon vèsyon abreje nan getString. Ou ta dwe gade tounen nan li a sonje ki jan li la aktyèlman aplike. Detay kle yo, remake nou jwenn nan yon karaktè yon sèl nan yon moman soti nan estanda nan, ki se jis tankou nou sezisman nan klavye la. Se konsa, yon karaktè yon sèl nan yon moman, epi si nou jwenn karaktè twòp, Se konsa, si n + 1 gen plis pouvwa pase kapasite, Lè sa a, nou bezwen ogmante kapasite a nan zòn de defans nou an. Se konsa, isit la nou ap double gwosè a nan zòn de defans nou an. Epi ki kontinye ap mache, nou insert karaktè a nan zòn de defans nou an jiskaske nou resevwa yon nouvo liy oswa nan fen dosye oswa kèlkeswa sa, nan ka sa a, n ap fè ak fisèl la ak Lè sa a, getString a reyèl rkul memwa a, tankou si nou resevwa lajan twòp memwa li pral tounen ladan l epi retresi yon ti jan. Se konsa, nou pa montre ke, men lide prensipal la se li te li nan yon karaktè yon sèl nan yon tan. Li pa ka jis li nan yon bagay tout nan yon fwa, paske tanpon yo se sèlman ki gen yon gwosè sèten. Se konsa, si fisèl la ke li ap eseye antre nan zòn de defans la twò gwo, Lè sa a, li ta debòde. Se konsa, isit la nou anpeche ke pa sèlman lekti nan yon karaktè yon sèl nan yon lè ak ap grandi chak fwa nou bezwen. Se konsa, getInt ak lòt fonksyon yo bibliyotèk CS50 yo gen tandans sèvi ak getString nan en yo. Se konsa, mwen make bagay sa yo enpòtan isit la. Li rele getString yo ka resevwa yon fisèl. Si getString echwe pou pou retounen memwa, sonje ke getString mallocs yon bagay, se konsa nenpòt lè ou rele getString ou pa ta dwe (enkonpreansibl) gratis ki fil ke ou te resevwa. Se konsa, isit la, si li echwe pou pou malok yon bagay, nou retounen INT_MAX kòm jis yon drapo sa a, hey, nou pa t 'aktyèlman kapab jwenn yon nonb antye relatif. Ou ta dwe inyore sa m 'tounen vin jwenn ou, oswa ou pa ta dwe konsidere sa tankou yon opinyon ki valid. Finalman, an konsideran ke t 'reyisi, nou itilize sskanf ak sa drapo espesyal, ki vle di, premye matche ak yon nonb antye relatif, Lè sa a, matche ak nenpòt karaktè apre sa nonb antye ki pè. Se konsa, remake nou vle l 'bay egal a 1. Retounen Se konsa, sskanf konbyen alimèt si siksè te fè? Li pral retounen 1 si li avèk siksè matche yon nonb antye relatif, li pral retounen 0 si li pa t 'matche ak yon nonb antye, epi li pral retounen 2 si li matche yon nonb antye relatif ki te swiv pa kèk karaktè. Se konsa, remake nou rekoumanse si nou matche ak anyen men 1. Se konsa, si nou antre nan 1, 2, 3, C, oswa 1, 2, 3, X, Lè sa a, 1, 2, 3 ta jwenn ki estoke nan nonb antye ki pè a, X ta jwenn ki estoke nan karaktè a, sskanf ta retounen 2, e nou ta rekoumanse, paske nou sèlman vle yon nonb antye relatif. Byen vit mouche nan HTML, HTTP, CSS. Ipèrtèkst markeup lang se estrikti a ak Semantics nan entènèt la. Isit la se egzanp ki soti nan konferans kote nou gen HTML Tags. Nou gen Tags tèt, plak kò, nou gen egzanp sou etikèt vid kote nou aktyèlman pa gen yon kòmansman ak fèmen tag, nou jis gen lyen ak imaj. Pa gen okenn tag imaj fèmen; gen nan jis yon tag sèl ki akonpli tout bagay tag a bezwen fè. Lyen ki se yon egzanp; nou pral wè ki jan w an kontak ak CSS, script la ki se yon egzanp ki jan ou genyen lyen nan yon JavaScript ekstèn. Li trè senp, epi sonje, HTML se pa yon lang programmation. Isit la, sonje ki jan ou ta defini yon fòm oswa omwen ki sa sa a ap fè? Tankou yon fòm gen yon aksyon ak yon metòd. Metòd yo ou pral sèlman janm wè yo jwenn ak POST. Se konsa, jwenn se vèsyon an kote vin bagay la mete yo nan URL la. POST se kote ki sa li pa mete nan URL la. Olye de sa, nenpòt done ki sòti nan fòm nan se eleman pi plis kache nan demann lan HTTP. Se konsa, isit la, aksyon defini kote demann lan HTTP ale. Ki kote li pral se google.com / rechèch la. Metòd. Sonje diferans ki genyen ant jwenn ak POST, , epi, jis di kòm yon egzanp, si ou vle makè yon bagay. Ou pa janm yo pral kapab bookmark yon URL POST paske done yo pa enkli nan URL la. HTTP, kounye a, se Pwotokòl Transfè ipèrtèkst. Pwotokòl la Transfè ipèrtèkst, ou ta atann li yo transfere Ipèrtèkst markeup lang, epi li fè. Men, li tou transfere nenpòt ki imaj ou jwenn sou entènèt la, nenpòt ki downloads ou fè kòmanse kòm yon demann HTTP. Se konsa, HTTP se jis lang lan nan World Wide Web la. Ak isit la ou bezwen rekonèt sa a kalite yon demann HTTP. Isit la HTTP/1.1 sou bò jis di sa a, se vèsyon an nan pwotokòl la mwen lè l sèvi avèk. Li nan bèl anpil toujou pral fè HTTP/1.1, menm jan ou ap wè li. Lè sa a, nou wè ke sa a te jwenn, altènatif la ke yo te POST, ke ou ta ka wè. Apre sa, URL la ke mwen te ap eseye ale nan te www.google.com/search?q = bla, bla, bla. Se konsa, sonje ke sa a, q nan kesyon mak = bla bla bla, se sòt nan bagay ki soumèt pa yon fòm. Repons lan li ta ka tounen vin jwenn mwen ta gade yon bagay tankou sa a. Yon fwa ankò, kòmanse avèk pwotokòl la, ki se pral fè sa, ki te swiv pa kòd la estati. Isit la li nan 200 OK. E finalman, ap paj wèb la pou m 'aktyèlman mande pou dwe swiv. Kòd la sitiyasyon posib ou ta ka wè, epi ou ta dwe konnen plizyè nan yo. 200 OK ou te pwobableman gen wè anvan. 403 entèdi, 404 pa jwenn, 500 Entèn sèvè Erè se nòmalman si ou ale nan yon sit entènèt ak yon bagay nan kase oubyen yon aksidan Kòd PHP yo, Lè nou konsidere ke nan aparèy la nou gen ki gwo bwat zoranj ki vini leve, li di, tankou, yon bagay ki mal, kòd sa a pa travay oswa sa a fonksyon a move. Anjeneral sou sit entènèt pa ta vle nou konnen sa fonksyon yo aktyèlman move, Se konsa, olye yo pral jis ba ou 500 Erè sèvè Entèn. TCP / IP se 1 kouch anba HTTP. Sonje ke gen entènèt deyò nan World Wide Web la. Menm jan ak si ou jwe yon jwèt sou entènèt ki pa ale nan HTTP, li pral nan yon diferan - li la toujou lè l sèvi avèk entènèt la, men li pa sèvi ak HTTP. HTTP se jis yon egzanp sou pwotokòl bati sou TCP / IP. IP literalman vle di pwotokòl entènèt. Chak òdinatè gen yon adrès IP, yo moun sa yo ki 4-chif bagay tankou 192.168.2.1, oswa kèlkeswa sa; ki gen tandans yo dwe yon yon sèl nan zòn nan. Men sa se modèl la nan yon adrès IP. Se konsa, dns a, Domèn Non Sèvis, se sa ki tradui bagay sa yo tankou google.com nan yon adrès aktyèl IP. Se konsa, si ou tape ke IP adrès nan yon URL, ki ta mennen nou tounen nan Google, men ou yo gen tandans pa sonje bagay sa yo. Ou gen tandans sonje google.com pito. Bagay la pase nou gen se pò yo, kote sa a se pati nan tchp nan IP. Tchp fè plis ankò. Reflechi sou, tankou, ou gen ou navigatè kouri sou entènèt. Petèt ou gen kèk kouri aplikasyon imel; petèt ou gen kèk lòt pwogram ki sèvi ak kouri sou entènèt la. Yo tout bezwen aksè a entènèt la, men òdinatè w lan sèlman gen 1 kat fil oswa kèlkeswa sa. Se konsa, pò yo se wout la ke nou ap kapab fann moute ki jan aplikasyon sa yo, se kapab sèvi ak entènèt la. Chak aplikasyon vin 1 pò espesifik ke li ka koute sou li a, ak pa default, HTTP sèvi ak pò 80. Gen sèten sèvis imel sèvi ak 25. Yo menm ki ba-resansman gen tandans yo dwe rezève. Ou se anjeneral kapab jwenn pi wo-konte yo menm pou tèt ou. CSS, Dra Style kaskad. Nou style paj wèb ak CSS, pa avèk HTML. Genyen 3 kote ou ka mete CSS ou. Li kapab aliye, ant Tags style, oswa nan yon dosye konplètman separe ak Lè sa a lye pous Ak isit la se jis yon egzanp nan CSS. Ou ta dwe rekonèt modèl sa a, kote premye egzanp lan se nou ap matche tag nan kò, ak isit la nou ap Santralizasyon tag nan kò. Dezyèm Egzanp lan, nou ap matche bagay la ak footer ID, epi nou ap aplike kèk Styles nan sa. Remake ID footer tèks ki sarmoniz sou bò goch la, Lè nou konsidere ke kò tèks-sarmoniz sant. Footer se anndan kò a. Li pral, olye de sa, tèks-aliman kite, menm si kò di sant tèks-aliman. Sa a se pati nan kaskad tout nan li. Ou ka gen - ou ka presize estil pou kò a, ak Lè sa a, bagay sa yo nan kò a ou ka presize estil ki gen plis detay, ak bagay sa yo travay menm jan ou atann. Prèskripteur CSS ki gen plis detay gen priyorite. Mwen panse ke sa a, se li. [Ali nam] Hi tout moun. Si mwen ka jwenn atansyon ou. Mwen se Ali ak mwen pral yo ale nan PHP ak SQL reyèlman vit. Se konsa, nou kapab kòmanse. PHP se kout pou PHP: ipèrtèks preproseseur. Apre sa, kòm nou tout ta dwe konnen, li nan yon sèvè-bò lang scripting, epi nou sèvi ak li pou fen a tounen nan sit entènèt, ak ki jan li fè sa yon anpil nan kalkil yo, yon pati nan dèyè-sèn. Sentaks. Li pa nan renmen C, sipriz, sipriz. Li toujou gen kòmanse ak, si ou ka wè, - Mwen pa ka deplase nan la devan yo. Ou ka wè ou bezwen kalite yo nan nouvo aparèy òtopedik ak Lè sa a, ou bezwen tou php a?. Sa a toujou ki jan ou gen ankadreman tèks PHP ou a, kòd PHP ou. Se konsa, li pa ka jis fè tankou C, kote ou kalite mete l 'sou premye. Ou bezwen toujou antoure li. Koulye a, pi gwo sentaks la se ke tout varyab bezwen kòmanse ak karaktè nan $. Ou bezwen fè li lè w ap defini yo; sa ou bezwen fè li lè w ap refere li a yo pita sou. Ou toujou bezwen ke $. Li nan nouvo pi bon zanmi ou a, bèl anpil. Ou pa - kontrèman ak C, ou pa bezwen mete ki kalite kalite varyab li ye. Se konsa, pandan w ap fè bezwen $ a, ou pa bezwen mete, tankou, x Int oswa fisèl y, ètchetra, ètchetra. Se konsa, yon diferans ti tay. Kòm yon rezilta nan sa a, sa vle di ke PHP se yon kalite chetif. PHP se yon lang di ki kalite chetif, e li te chetif tape varyab. Nan lòt mo, sa vle di ke ou ka chanje ant diferan kalite kalite varyab. Ou ka magazen nimewo ou 1 kòm yon Int, ou ka magazen li kòm yon fisèl, epi ou ka magazen li kòm yon flote, ak tout bagay sa yo pral ladan nimewo 1. Menm si w ap estoke l 'nan diferan fòm, li la toujou - ki kalite varyab yo ap toujou kenbe nan fen an. Se konsa, si ou gade isit la, si ou sonje soti nan pset 7, anpil nan pwobableman ou te gen pwoblèm ak sa. De mirak egal, 3 siy egal, 4 siy egal-ego. Oke, pa gen okenn 4 siy egal, men gen 2 ak 3. Ou sèvi ak 2 siy egal a tcheke valè yo. Li ka tcheke nan tout kalite. Se konsa, si ou ka wè nan premye egzanp lan, Mwen gen num_int num_string ==. Se konsa, Int ou ak fil ou yo tou de, teknikman, 1, men yo ap diferan. Men, pou egal a doub, li pral toujou pase. Sepandan, pou egal a trip, li tcheke valè kòm byen ke kalite yo diferan. Sa vle di ke li pa k ap pase yo pase nan ka sa a dezyèm isit la, kote ou te lè l sèvi avèk 3 siy egal pito. Se konsa, sa a, se yon gwo diferans ke ou ta dwe tout yo te montre kounye a. Chèn seri a se yon lòt bagay pwisan ou ka itilize nan PHP. Li nan fondamantalman jis sa a notasyon dot sou lamen, e ke sa a kouman ou ka mare strings yo ansanm. Se konsa, si ou gen chat epi ou gen chen, epi ou vle mete strings yo 2 ansanm, ou ka itilize peryòd la, e ke sa a kalite kijan li fonksyone. Ou kapab tou jis mete yo pwochen youn ak lòt, jan ou ka wè isit la nan egzanp anba a, kote mwen te repete fisèl 1, fisèl espas 2. PHP pral konnen ranplase yo tankou sa yo. Ranje. Koulye a, nan PHP, gen 2 diferan kalite ranje. Ou ka gen ranje regilye, epi ou ka genyen tou ranje asosyatif, e nou pral yo ale nan yo kounye a. Ranje regilye yo se jis sa a nan C, yo ak pou ou gen endis ki konte. Kounye a, nou ap jis ale nan kreye youn, li mete - Se konsa, sa a se ki jan nou kreye yon etalaj vid, lè sa a nou ap ale nan mete nan nimewo a endèks 0. Nou pral mete nimewo a 6, valè a 6. Ou ka wè li nan pati anba a isit la. Where's - nan nimewo endèks 1 nou pral mete nimewo valè 4, yo ak pou ou ka wè gen yon 6, gen yon 4, ak Lè sa a, kòm nou ap enprime bagay sa yo, lè nou eseye ak ekri ak lèt ​​detache valè a ki estoke nan nimewo endèks 0, Lè sa a, nou pral wè valè a 6 ke yo te enprime deyò. Cool? Se konsa, sa a, se ranje regilye pou ou. Yon lòt fason ou ka tou ajoute bagay sa yo ranje regilye kounye a se ou ka jis kole yo nan fen an. Sa vle di ke ou pa bezwen presize endèks la espesifik. Ou ka wè nimewo, ak Lè sa a, nan parantèz yo kare gen nan pa gen endèks espesifye. Epi li pral konnen - PHP pral konnen jis ajoute li nan fen a nan lis la, pwochen plas la gratis. Se konsa, ou ka wè 1 nan dwa gen nan ke 0 tach, 2 an te ale dwa gen nan plas la an premye. 3 a ale - se te ajoute gen kòm byen. Se konsa, ki kalite fè sans. W ap sèlman toujou ap ajoute li, ak Lè sa a, lè nou ap eko endèks la nan nimewo 1, li pral enprime soti valè a 2. Lè sa a, nou gen ranje ki gen ranje asosyatif. Ranje asosyatif, olye pou yo gen endis nimerik, sa yo fè a se yo, yo gen endis ki pa fisèl. Ou ka wè, olye pou yo - Mwen te debarase m de tout moun sa yo endis nimewo, e kounye a, li la key1, key2, key3, epi yo ap nan quotes doub yo siyifi ke yo ap tout strings. Se konsa, nou ka gen yon egzanp sou sa a. Egzanp lan nan sa a se ke nou gen tf a, e ke sa a non an Konpayi paran yo. Nou pral mete "Ali" kòm non an, nan endèks la, kalori manje, nou ka mete yon Int tan sa a olye pou yo yon kòd, ak Lè sa a, nan renmen nan endèks, nou ka mete yon etalaj tout andedan nan li. Se konsa, sa a se kalite - li nan yon konsèp ki sanble ak ki jan nou te gen endis ak nimewo, men kounye a nou kapab chanje endis yo alantou fè yo kòm strings pito. Ou kapab tou fè sa, san konte jis fè li endividyèlman, ou ka fè li tout nan yon sèl moso. Se konsa, ou ka wè ke tf nan ki etalaj, ak Lè sa a, nou mete yo tout nan yon sèl jeyan fikse bracket kare. Se konsa, ki kapab ale pi vit sou bagay yo. Li nan plis nan yon chwa stylistic pase pa. Nou gen pasan tou. Nan C nou gen pasan ki travay tankou sa a. Nou te gen etalaj nou an, epi nou te ale soti nan endèks 0 a nan fen lis la, epi nou ekri ak lèt ​​detache li tout, dwa? Eksepte pwoblèm nan se, pou ranje asosyatif, nou pa nesesèman konnen sa yo endis nimerik paske kounye a nou gen endis yo fisèl. Koulye a, nou sèvi ak pasan fortch, ki, ankò, ou èspere ke yo itilize nan pset 7. Pasan fortch pral jis konnen chak pati yon sèl nan lis la. Apre sa, li pa gen yo konnen egzakteman nimerik endèks la ki di ou gen. Se konsa, ou gen sentaks la fortch, donk li fortch, ou mete etalaj la. Se konsa, etalaj mwen rele pset, ak Lè sa a, kòm, pawòl Bondye a kòm, ak Lè sa a, ou mete sa a varyab lokal pou yon ti tan ke ou ap ale nan sèvi ak jis pou bagay la espesifik ki k ap pase yo kenbe espesifik la - yon sèl egzanp oswa yon sèl seksyon nan etalaj la. Pset NUM pral kenbe 1, ak Lè sa a, petèt li ap kenbe nimewo a 6, ak Lè sa a li pral kenbe nimewo 2. Men, li la garanti yo ale nan tout valè yon sèl sa a, se nan etalaj la. Fonksyon ki itil ke ou ta dwe konnen nan PHP se mande pou la, Se konsa, ki fè asire w ke w ap ki gen ladan sèten dosye, eko, sòti, vid. Mwen trè rekòmande pou ou gade nan pset 7 ak gade nan fonksyon sa yo. Ou ta ka gen konnen sa yo, Se konsa, mwen ta definitivman konnen ki sa, egzakteman, sa yo ki, yo tout fè. Epi, koulye a nou pral yo ale nan sijè ki abòde vrèman byen vit. Nan sijè ki abòde, PHP se kalite yon bagay Funky, kontrèman ak C, yo ak pou nou ap jis ale yo ale nan li byen vit. Se konsa, kite a di nou kòmanse nan ki flèch ke nou gen la. Apre sa, nou pral kòmanse ak $ mwen. Se konsa, varyab la 'mwen' a pwal 0, e nou jis ale nan kenbe enprime l 'nan ke gwo bwat blan sou la. Nou pwal kòmanse ak i0, ak Lè sa a, nou pral repete l '. Se konsa, gen nan 0 a. Lè sa a, nou pral enkreman li pa pou bouk la, ak Lè sa a, li pral yo dwe valè de 1. Youn nan se pi piti pase 3, se konsa li pral pase nan ke pou bouk, ak Lè sa a, nou pral wè l 'enprime ankò. Nou pral enkreman l 'ankò nan 2, ak 2 se mwens pase 3, se konsa li pral pase a pou bouk, epi li pral ekri ak lèt ​​detache 2 a. Lè sa a, ou pral sonje ke 3 se pa mwens pase 3, se konsa nou pral kraze soti nan la pou bouk. Se konsa, kounye a nou te quitté, ak Lè sa a, nou pral ale nan aFunction. Oke. Se konsa, ou gen sonje ke varyab sa a ke nou te kreye, 'mwen' varyab la, se pa sa lokalman scoped. Sa vle di ke li pa lokal yo bouk la, ak varyab sa a nou ka toujou jwenn aksè nan ak chanje apre sa, epi li ap toujou gen efikas. Se konsa, si ou ale nan fonksyon an kounye a, ou ap wè ke nou menm tou nou sèvi ak 'mwen' varyab la, epi nou ap ale nan enkreman 'mwen' + +. Ou ta panse, an premye, ki baze sou C, ki sa a, se yon kopi 'mwen' varyab la. Li se yon bagay totalman diferan, ki se kòrèk. Se konsa, lè nou enprime li, nou ap ale nan ekri ak lèt ​​detache 'mwen' + +, ki se ale nan ekri ak lèt ​​detache soti ke 4, ak Lè sa a, nou pral - regrèt. Lè sa a, nou pral fini soti nan ki fonksyon, e nou pral yo dwe kote ki flèch se kounye a. Sa vle di ke lè sa a, sepandan, menm si fonksyon an chanje valè a nan 'mwen', li pa t 'chanje deyò nan fonksyon an, paske fonksyon an gen yon sijè ki abòde apa a. Sa vle di ke lè nou eko 'mwen', li pa te chanje nan sijè ki abòde lan fonksyon an, yo ak pou Lè sa a, nou pral ekri an lèt detache 3 ankò. Bagay diferan sou sijè ki abòde nan PHP pase nan C. Koulye a, nan PHP ak HTML. PHP se sèvi ak fè paj wèb dinamik. Li kalite fè bagay diferan. Nou gen li diferan de HTML. Avèk HTML, nou toujou jis gen menm bagay la estatik, tankou ki jan Rob te montre, Lè nou konsidere ke PHP, ou kapab chanje bagay sa yo ki baze sou ki moun ki itilizatè a se. Se konsa, si mwen gen sa a, mwen te, "Ou gen louvri sesyon an kòm -" ak Lè sa a, non an, e mwen kapab chanje non an. Se konsa, kounye a Non a se Jozèf, epi li gen "sou la m '", men Lè sa a, mwen kapab tou chanje non an gen Tommy. Apre sa, ki ta ka yon bagay diferan. Se konsa, lè sa a nou kapab tou chanje bagay diferan sou li, , li pral montre diferan kontni ki baze sou non an. Se konsa, PHP ka kalite chanje sa k ap pase nan sit entènèt ou. Menm isit la. Toujou, sonje ke yo gen diferan kontni, menm si w ap teknikman toujou gen aksè nan ki paj entènèt menm sou sifas la. Génération HTML. Gen 2 diferan fason ke ou ka fè sa. Se konsa, nou pral ale nan ki kounye a. Fason an premye se, ou gen - yeah, regrèt. Se konsa, ou jis gen regilye ou pou bouk nan PHP, ak Lè sa a, ou repete nan PHP, epi ou repete soti HTML. Lè l sèvi avèk sa ki Rob te montre ou nan HTML script ak Lè sa a, lè l sèvi avèk ekri ak lèt ​​detache nan PHP jis enprime li soti nan paj wèb la. Wout la altènatif se fè li kòm si ou separe soti PHP a ak HTML la. Se konsa, ou ka gen yon liy nan PHP ki kòmanse pou la bouk, Lè sa a, ou ka gen liy lan nan HTML a nan yon bagay ki apa a, ak Lè sa a, ou fini bouk la, ankò, ak yon PHP. Se konsa, li nan kalite separe li soti. Ki sou bò gòch, ou ka ke ou gen tout - an li nan jis 1 ti moso nan PHP. Sou bò dwat la ou ka wè ke ou gen yon liy nan PHP, ou gen yon liy nan HTML, epi ou gen yon liy nan PHP ankò. Se konsa, separe li soti nan sa y ap fè a. Apre sa, ou pral sonje ke swa fason, pou swa nan yo, yo toujou enprime soti imaj la, imaj la, imaj la, se konsa ke HTML toujou se enprime menm jan an. Lè sa a, ou pral toujou gade 3 imaj yo montre moute sou sit entènèt ou. Se konsa, li 2 diferan fason pou fè menm bagay la. Koulye a, nou gen fòm ak demann. Kòm Rob te montre ou, gen fòm HTML, epi nou pral jis briz atravè sa a. Ou gen yon aksyon epi ou gen yon metòd, ak aksyon ou kalite montre ou kote w ap ale nan voye l ', ak metòd la se si wi ou non li pral gen yon jwenn oswa yon POST. Apre sa, yon demann jwenn, menm jan Rob te di, vle di ke w ap ale nan mete l 'nan yon fòm epi ou ap wè li kòm yon URL, Lè nou konsidere ke yon demann POST ou pa pral wè nan yon URL. Se konsa, yon diferans ti tay. Sepandan, yon sèl bagay ki nan yon bagay ki sanble se ke POST epi pou yo jwenn se menm sekirite. Se konsa, ou ka panse ke jis paske w pa wè l 'nan URL la, sa vle di POST a se pi plis sekirite, men ou ka toujou wè li nan bonbon ou a nan enfòmasyon an ki w ap voye. Se konsa, pa panse ke sou youn oswa lòt la. Yon lòt bagay sonje se ke ou yo te genyen tou seksyon varyab. Ou mesye yo itilize sa a nan pset 7 jwenn enfòmasyon non itilizatè ou an. Kisa ki te pase te ke ou ka itilize etalaj sa a asosyatif, a $ _SESSION, ak Lè sa a, w ap kapab gen aksè a bagay diferan ak magazen bagay diferan nan tout paj yo. Dènye bagay se ke nou gen SQL, estriktire rekèt Lang, ak sa a se yon lang programmation nan jere baz done. Ki sa ki, egzakteman, se baz done? Yo ap koleksyon nan tab, ak chak tab ka gen kalite ki sanble nan objè yo. Se konsa, nou te gen yon tab nan itilizatè nan pset finans ou an. Epi poukisa yo se yo itil? Paske li nan yon fason pou tout tan estoke enfòmasyon. Li se yon fason pou swiv bagay sa yo ak jere bagay sa yo ak aktyèlman wè sa nan paj diferan ak kenbe tras. Lè nou konsidere ke si ou jis sere l 'nan ke youn moman sa imedya ak Lè sa a, sèvi ak li pita, ou pa yo pral kapab jwenn aksè nan anyen ke ou te sove. Nou gen 4 gwo bagay sa yo ke nou itilize pou kòmandman SQL. Nou gen chwazi, insert, efase, epi mete ajou. Moun sa yo ki se reyèlman enpòtan pou ou mesye yo konnen pou egzamen ou an. Nou pral byen vit ale sou chwazi kounye a. Fondamantalman, w ap chwazi ranje ki sòti nan yon baz done. Se konsa, si ou genyen, dwa isit la - nou gen 2 bagay sa yo diferan, e nou vle chwazi soti bò tab la kou kote pè - kote nan kolòn nan pè valè a se 1. Se konsa, ou ka wè isit la, nou gen sa yo 2 bagay sa yo nan Non klas, CS50 ak Stat110, epi nou gen kat idantite ki gen klas yo ak eslogan la. Se konsa, nou vle chwazi tout enfòmasyon sa a. Lè sa a, ou ka wè dwa isit la ke li nan kalite davwa soti nan ke kolòn pè, kote tout bagay sa yo yo se 1, ak Lè sa a, li gen ID klas, non an klas-la ak eslogan ke li kapab chwazi soti. Ki jan egzakteman ou fè sa nan kòd? Ou gen yo sèvi ak PHP. Se konsa, sa a, se kalite ki jan PHP ak SQL yo ki gen rapò youn ak lòt. Koulye a, nou gen Kòd nou, epi nou ap ale nan sèvi avèk fonksyon rechèch nou an jan nou te fè nan pset 7, epi nou ap ale nan kouri rechèch la SQL. Lè sa a, nou pral genyen - nou toujou gen yo tcheke si trip egal ranje a si fo. Se konsa, ankò, ou vle tcheke kalite ak valè a, ak Lè sa a, si li pa travay, Lè sa a, ou vle eskize, kòm dabitid, jan nou te fè nan pset 7. Sinon, ou vle bouk nan tout bagay ak sa yo sou la men fortch pasan ke nou jis te ale sou. Kounye a ke nou ap loupin nan e nou te fè l 'sot pase yo, kite a sipoze ke rechèch nou an te pase, kounye a nou gen bouk fortch nou an. Apre sa, premye ranje a li gen, se konsa isit la nan ranje a, yo isit la; li nan bwat. Li ale nan ekri ak lèt ​​detache soti tout enfòmasyon ki ke li nan vinn. Se konsa, li pral ekri ak lèt ​​detache soti nan pati anba a "vle Aprann HTML?" Lè sa a, li pral pou yo ale nan pwochen ranje a, paske li te ranpli premye a pou bouk, yo ak pou Lè sa a, li pral ekri ak lèt ​​detache soti liy nan dezyèm nan li, ki se pral fè STAT110, Jwenn tout moman yo. Youn nan bagay pase a se sou SQL Feblès. Mwen konnen David manyen sou sa a yon ti jan nan konferans. Ou ka li sa pi ta. Li nan reyèlman amizan. SQL Underground se yon kalite bagay difisil. Se pou nou di ke ou jis bwa sa yo varyab dwa nan rechèch ou an, jan ou ka wè nan ki liy an premye. Se konsa, li sanble amann, dwa? W ap sèlman mete nan non itilizatè ak modpas rechèch SQL ou, epi ou vle yon bato li koupe epi pou yo jwenn tou sa ki nan tablo done ou. Ki sanble trè senp. Se konsa, pèmèt di yon moun mete nan, pou modpas la, sa a oswa tèks dwa isit la - ta dwe aktyèlman ap nan ti bwat la wouj. Se konsa, kite a di yo ke yo mete sa modpas nan - sa a ki sa yo antre. Se konsa, yo ap mete OSWA "1" = 1. Kalite yon modpas komik genyen. Koulye a, kite a jis ranplase l 'nan, epi ou pral sonje ke nan ki sijè rechèch SQL kounye a, li evalye toujou vre, paske ou pral sonje ke ou ka sijè rechèch SQL chwazi tout enfòmasyon sa a oswa ou ka jis gen 1 = 1. Se konsa, ki la toujou ale nan evalye vre. Ki pa nan ale nan reyèlman travay, paske men sa vle di ke HACKER a ka kraze nan sistèm ou an. Solisyon la sa a se ke ou gen yo sèvi ak sistèm nan apelasyon, ki vle di ke ou gen yo sèvi ak mak kesyon, ki se ki sa ou mesye yo itilize nan pset 7, kote w ap ale nan sèvi ak yon mak kesyon nan plas kote ou vle mete yon bagay, ak Lè sa a, w ap ale nan gen yon vigil, ak Lè sa a, ou pral gen apre sa, apre fisèl ou a, varyab yo diferan ke ou vle ranplase nan mak kesyon ou yo. Se konsa, ou pral sonje isit la ke koulye a, mwen gen mak sa yo kesyon wouj. Lè sa a, mwen mete varyab yo apre yo fin strings mwen Se konsa, mwen konnen yo ranplase yo nan ki lòd apre sa. Ki pral asire w ke si yon moun fè li tankou sa a, epi yo gen sitiyasyon an oswa 1 = 1, ki pral asire w ke, nan fen a tounen, asire w ke li pa pral aktyèlman kraze rechèch la SQL. Oke, kidonk sa a, se bèl anpil l ', yon gwo toubouyon nan PHP ak SQL. Pi bon nan chans pou pou nou tout, epi kounye a Ore. [Oreoluwatomiwa Babarinsa] Okay tout moun. Tan ale sou kèk JavaScript ak kèk lòt bagay sa yo trè byen vit pou nou pa kenbe ou leve aswè a. JavaScript. Wi. JavaScript se kalite yon bagay fre, pretanduman. Bagay sa yo ou reyèlman bezwen konnen sou JavaScript, li nan sòt de tankou fen a kliyan-kòt nan sa ki app entènèt ou an se yo pral fè. Genyen kèk bagay ou jis pa vle pran swen nan tout tan tout tan a sou bò sèvè. Tout entè-aksyon yo ti kras, en se yon sèl bagay, fè yon bagay disparèt. Ou reyèlman pa vle gen pou pale ak sèvè ou tout tan tout tan an pou sa. Se konsa, kèk nan ki se pa menm posib fè sou bò sèvè. Sa a se poukisa nou bezwen yon bagay tankou JavaScript. Bagay sa yo fre sou JavaScript: Li se dynamique tape. Ki sa sa vle di se ke pwogram ou an pa bezwen konnen sa, egzakteman, varyab yo se lè ou ekri li soti. Li pral jis sòt de figi li soti jan li ap kouri. Lòt bagay ki fre sou li: Li se yon lang atèl Curly, ki vle di sentaks la se menm jan ak C ak PHP. Ou pa oblije fè anpil rivork lè w ap aprann JavaScript. Isit la nou gen yon ti kras nan JavaScript. Enteresan bagay dwa isit la se ke, si ou gade nan li, nou gen yon ti jan nan JavaScript dwa gen nan tag nan tèt yo. Ki sa ki se se fondamantalman jis genyen ladan yo yon dosye JavaScript. Sa a se yon fason ou ka gen ladan JavaScript nan pwogram ou an. Lè sa a, dezyèm ti jan a ti kras se aktyèlman kèk aliye JavaScript, trè menm jan ak yon style aliye ak CSS, , epi ou ap jis ekri kèk Kòd trè byen vit la. JavaScript gen ranje. Jis yon lòt fason yo kenbe done alantou li, trè itil. Trè bèl ak fasil sentaks. Ou sèvi ak kwochè gen aksè a tout bagay epi kenbe tout bagay ansanm. Pa gen anyen twò konplèks. Bagay la fre sou JavaScript ak lang scripting an jeneral se ke ou pa gen enkyete sou gwosè etalaj. Ou ka jis sèvi ak array.length ak kenbe tras nan li, epi tou li etalaj la ka grandi oswa retresi jan ou bezwen li yo. Se konsa, ou pa menm bezwen enkyete sou nenpòt ki sòt de, Oh okenn, I bezwen asiyen plis bagay sa yo, oswa nenpòt bagay tankou sa. Bagay la fre isit la se ke JavaScript gen yon bagay yo rele objè yo. Se yon lang objè-oryante, Se konsa, sa li te ye, se esansyèlman, yon fason pou ou pou w done gwoup ansanm, yon ti jan ki sanble ak yon konstri, men ou ka jwenn aksè nan li tankou yon konstri oswa nan yon sentaks etalaj asosyatif. Li trè senp ak sa ou kapab fè ak sa a se done gwoup ansanm si ou gen yon pakèt moun sou done ki nan ki gen rapò. Paske li nan tout bagay sa yo ou bezwen dekri yon machin, ou pa bezwen genyen li nan yon pakèt moun sou diferan kote. Ou ka jis bwa l 'nan 1 objè nan JavaScript. Kòm pwobableman ou konnen, iteration se youn nan moun travay fatigan. Ou jis fè l 'sou yon lòt peyi sou ankò. Ou bezwen pale ak chak objè nan machin nan, oswa ou bezwen yo ale nan chak atik nan yon lis oswa yon bagay tankou sa. Se konsa, JavaScript gen, menm jan ak PHP, yon sentaks fortch. Nan ka sa a, li nan yon pou nan bouk. Ou vle itilize sa a sèlman sou objè yo. Gen kèk pwoblèm ki rive si ou itilize sa a sou ranje. Li jeneralman se youn nan bagay sa yo, menm si, se sa ki trè itil, paske ou elimine yon anpil nan sou tèt paske ou pa bezwen rale moute tout bagay nan objè ou nan tèt ou. Ou pa oblije sonje tout non yo kle. Ou jis sòt de jwenn yo tounen nan sentaks sa a. Nan sa a, ak pou li a, ou jis vle yo sonje ke w ap resevwa tounen tout kle yo, nan yon fason trè menm jan ak Hash tab. Si ou sonje de sa, lè ou ta mete nan yon fisèl ou ta ka pran yon bagay ki soti ki ta gen yon valè ki asosye ak li. Kisa w ka fè ak sa a se ou ka di yo, tout dwat, Mwen mete nan yon machin, epi mwen rele li yon Ferrari. Se konsa, ou ka mete nan fisèl Ferrari an ankò apre sa, epi ou ka jwenn ki soti. Epi ou ka fè sa nan yon bouk, ak pou la nan bouk. Se konsa, jis plis enfòmasyon sou objè yo. Bagay la kle nan sa a ou bezwen sonje se ke ou ka itilize konstri nan objè tankou sentaks nenpòt lè ou vle ak sa yo, eksepte si sa ou pwal itilize kòm yon fil se pa yon Non varyab ki valid. Se konsa, si ou gade nan ki di ke gen, nou gen kle ak espas. Oke, si ou te mete object.key, espas, ak, espas, espas, ki jis pa t 'vle fè sans syntactically. Se konsa, ou sèlman ka fè sa ak sa a sòt de bracket sentaks. Epitou, JavaScript se yon bagay ki sijè ki abòde-gen bon konprann PHP. Ou gen 2 fason pou adrese sijè ki abòde. Ou pa ka gen var a nan devan yon varyab, e ke jis vle di sa a se mondyal la. Ou ka wè li nan men nenpòt kote. Menm si nou ta mete sa a nan yon si deklarasyon, nenpòt lòt kote nan Kòd ou apre ou fin pwen sa ou te kapab wè varyab sa a. Yon lòt bagay, menm si, se ak var lan, li la limite a sa sèlman sa fonksyon w ap pous Si ou pa nan yon fonksyon, byen, li la mondyal la. Men, si ou se nan yon fonksyon li a sèlman vizib nan ki fonksyon. Mwen pa gen yon egzanp, men, yeah. Se youn nan bagay sa yo kote ou ka jere sa ki varyab ou vle mondyal, sa ki varyab ou vle lokal yo, men ou bezwen dwe fè atansyon sou sa, paske ou pa gen kalite a nan kontwòl amann grenn jaden ou fè nan C, kote si yon bagay ki te deklare nan yon pou bouk, li pral rete nan ke pou bouk. Bagay la nou aktyèlman pran swen sou lè l sèvi avèk JavaScript pou se manipile paj wèb, dwa? Mwen vle di, Se poutèt sa nou ap fè sa a. Pou fè sa, nou itilize yon bagay yo rele Dom la. Dokiman objè ki gen konpòtman egzanplè la. Fondamantalman, ki sa li fè a se li pran tout HTML ou ak modèl li soti nan yon pakèt moun sou objè ki yo pare solèy nan youn ak lòt. Ou kòmanse soti ak yon bagay tankou sa a. Ou gen, sou bò dwat la pou m ', yon pakèt moun sou Kòd deyò sa a, se sòt de - Ou ta panse ke ta dwe trè difisil manipile, paske ou ta ka analyse nan yon pakèt moun sou tèks epi ki gen moso apa bagay sa yo. Ak sa ki si li pa te fòma kòrèkteman? Bagay sa yo Move ta rive. Se konsa, JavaScript pran swen de sa a pou ou, epi ou jwenn yon estrikti done bèl, tankou sa yo sou bò gòch mwen an, kote ou jis gen yon dokiman, ak andedan ke ou gen yon bagay yo rele HTML, ak andedan ke ou gen yon tèt li ak yon kò, ak andedan ke tèt ou gen yon tit, ètchetra, ètchetra, ètchetra. Sa a senplifye manipile yon paj wèb pou ke li nan jis, oh, mwen jis vle pale ak sa a objè. Sòt de yon fason trè menm jan an ou ta pale ak yon lòt objè ou te fè tèt ou. Tankou mwen te di yo, tout Dom a se nan dokiman objè a. Swa li nan jis yon sèl kote ak Lè sa a, ou ka ale nan li jwenn bagay sa yo, epi ou ka fè li - sa a se style la fin vye granmoun nan fè li, moute a, ki kote ou fè document.getElementById, ak Lè sa a, non an, ak jan ou ka pwobableman di, sa a vin trè maladwa apre yon ti tan. Se konsa, ou pwobableman pa vle fè sa. Se poutèt sa nou gen bagay la pwochen nou pral pale sou apre sa a. Bagay kle a isit la se ke yo, tout dwat, ou gen tout eleman sa yo, dwa? Se konsa, petèt mwen ka chanje koulè a ​​nan yon bagay lè charj yo paj. Se konsa, sa? E si itilizatè mwen an klik yon bagay? Mwen vle li fè yon bagay ki enteresan yo lè yo klike sou yon bagay. Se poutèt sa nou gen evènman yo. Ou ka, fondamantalman, jwenn nenpòt eleman nan Dom ou a, ak Lè sa a, di, hey. Lè sa a charj oswa yon moun klik li, oswa yo lè yo sourit sou li, fè yon bagay ak li. Ak ki sa ou genyen se pou ou, ou gen fonksyon ki okipe sa a pou ou. Fonksyon sa yo se pòtè evènman. Ki sa ki they're - li nan jis yon fason anpenpan nan li di yo: Se fonksyon sa a sèlman egzekite lè evènman sa a rive. Se konsa, li kenbe evènman an ki rive. Sa a se kijan ou ta mete deyò yon Handler evènman. Mwen gen kèk bouton, ak ki lè ou klike sou li, li te eksploze. Se konsa, pa klike sou bouton an. Sa a se youn fason pou apwoche li, dwa? Ou gen yon tag bouton yo, epi sou klike sou ou gen yon kòd ki di, oh, bò wout la, m 'fè bagay eksploze sa a pou mwen. Sinon, li nan jis tankou yon bouton regilye ou jis fè fè yo. Ou kapab tou fè sa yon lòt fason, pa arachman eleman ki Dom, men nou pral sove ke apre nou pale sou jQuery. JQuery: Li se yon bibliyotèk ki se kwa-navigatè. Ou ka sèvi ak li nan bèl anpil anyen. Apre sa, li jis ba ou yon anpil nan zouti yo travay avèk. Paske JavaScript, pandan y ap pwisan, pa gen tout zouti ou bezwen soti nan bwat la reyèlman atake yon app web ou ta ka vle fè. Se konsa, li senplifye yon anpil nan bagay sa yo, ba ou yon anpil nan fonksyon soti nan bwat la ke ou ta nòmalman gen yo ekri tèt ou, sou yo ak sou yo ak sou ankò. Epi jis fè bagay trè senp. Ou gen tou seleksyon, ki kite ou pran tout eleman sa yo soti nan Dom ou pi plis tou senpleman, olye pou yo gen yo sèvi ak sa yo apèl fonksyon trè long. Plis sou seleksyon sa yo. Ou gen, moute gen ou te, se pou yo di Mwen vle jwenn yon eleman ki gen ID "twou wòch la." Oke, nan jQuery, li nan jis $ ak Lè sa a, yon kòd ki gen yon liv, ak Lè sa a, "wòch." Li trè senp ak yon anpil pi vit pase tradisyonèl wout la JavaScript pou abòde pwoblèm sa a. Apre sa, ou gen bagay sa yo menm jan an pou klas ak kalite eleman. jQuery se - youn nan karakteristik yo ki fre se ou ka sòt de konpresyon desann demann ou sou Dom ou trè, trè vit. Koulye a, nou ap tounen nan evènman manyen, e sa se ki jan ou ta okipe yon sèl evènman nan jQuery. Se konsa, sa nou pral isit la se nou ap li di yo: tout dwa. Mwen gen yon tag script, dwa? Se konsa, mwen gen sa a aliye JavaScript. Ki sa nou ap ale nan fè se nou pral di, tout dwa. Lè dokiman an se pare, ki vle di dokiman an a te chaje, nou pral yo ale nan ak sa yo ki fonksyon, e nou pral vle di, tout dwa, fonksyon sa a aktyèlman fè yon bagay lòt moun. Li fondamantalman li di yo: tout dwa, pran m 'eleman an ak ID "myid la." Lè sa a, bay sa a yon Handler fonksyon ki ègzekutra lè ou klike sou li. Fondamantalman ki sa sa a fè se, li di, tout dwa. Se paj la chaje, se konsa mwen pral nan, jwenn eleman sa a, bay li sa a Handler evènman, epi li fondamantalman kouche moute paj ou a pou ou. Men ki jan ou vle panse osijè de evènman manyen. Ou jis vle panse osijè de, tout dwa, lè yon bagay rive, sa m 'vle rive? Ou pa vle panse osijè de, oke, mwen bezwen asire w ke chita pale sa a bagay yo bagay sa a, bagay sa a bla bla bla, paske ou jis vle pale bagay an tèm de evènman yo. Lè sa rive, sa rive. Lè sa rive, sa ki ap pase. Men, si bagay sa yo deklanche lòt bagay, sa a, se gwo. Men, ou pa vle eseye epi fè konplike Kòd kote w ap lakòz plizyè bagay sa yo an menm tan an, paske w ap sèlman ale nan bay tèt ou yon tèt fè mal. Tout dwa. Koulye a, nou ka jwenn paj nou an okipe evènman yo, Men, kite a di itilizatè mwen an klik yon bouton. E si mwen vle voye ke demann tounen nan sèvè a, men mwen pa vle Reload paj la, paske li te gen Reload yon nouvo paj chak fwa yon sèl vin kalite fatigan, e poukisa mwen bezwen ki rale desann lento a ankò, epi footer a ankò, ak tout eleman ki nan paj la ankò jis rafrechi bonjou a oswa lè a? Se konsa, sa a, se rezon sa a genyen yon bagay tankou Ajax. Kisa nou ka fè isit la ak Ajax se nou ka di, tout dwa, Mwen vle voye kèk done nan sèvè a, e mwen vle yo ka resevwa yon repons tounen pou m ka mete paj m 'yo, oswa petèt jis fè kèk kalkil algoritmik ki pa nesesèman montre anyen yo itilizatè a. Ki sa ou bezwen fè sa? Oke, ou bezwen yon URL ou bezwen pou pale. Sèvè ou pa ka jis maji koute nan soti nan okenn kote. Ou bezwen gen yon kote espesifik w ap voye done sa a. Apre sa, ou bezwen tou gen kèk done yo voye, oswa petèt li nan yon rechèch dataless. Ou jis vle Ping tounen nan sèvè a ak di, hey, mwen se, tou vivan, oswa yon bagay tankou sa. Lè sa a, ou vle yon fonksyon ki fondamantalman trete ak siksè. Se pou nou di ou jwenn tounen kèk enfòmasyon ki soti nan sèvè ou a, epi ou ta vle chanje tit itilizatè a nan paj yo. Se konsa, ou ta jwenn enfòmasyon an tounen, Se ou ki ta pouse ke yo ekran an. Kisa k ap pase se, lè paj a se pare, ou kreye yon sou fonksyon klike sou pou bouton sa-a rele greeter. Ki sa sa Lè sa a, fè se sa, lè se ke bouton pouse, ou pale ak greetings.php, ou fè yon demann POST, epi ou di, hey, jwenn m 'yon bagay soti nan paj ou yo. Nou pa vrèman bezwen dekri sa, men greetings.php, kite yo jis di yo, li bay tounen "alo nan lemonn." Se konsa, nou jwenn tounen sa a "alo mond lan," ak sou siksè nan sa a, asepte pa gen anyen ale sa ki mal, lè sa a nou jis ale nan plas sib sa a ke nou espesifye ak nou jis bwa repons lan an la. Lè sa a se yon fason trè senp nan mete kanpe yon rechèch Ajax. Trè byen vit, Rob sòt de mansyone sa a deja, bagay sa yo ka ale mal, move bagay ka rive, Se konsa, ou vle familyarize w avèk kòd repons HTTP sa yo. Ki sa ki sa yo, se yo se jis, tankou, 200, tout bagay te ale oke. Yon lòt bagay, move bagay rive. Li nan jeneralman bagay la ou vle sonje. Men, li la bèl konnen tout moun sa yo. E finalman, yon fwa nou te ale nan nan tout sa, nou bezwen pale trè byen vit sou konsepsyon, ak Lè sa a, nou ka kite ou tout kite kay la. Konsepsyon. Bagay sa yo ou vle sonje. Poze tèt ou kesyon sa yo: Ki moun ki pral lè l sèvi avèk sa a? Ki sa ki pral yo dwe lè l sèvi avèk li pou? Ki sa ki itilizatè mwen an pran swen sou? Kisa ki pa yo pran swen sou? Ou jis pa vle fè yon app epi kite li jis grandi yo epi yo vin jeyan sa a, tout-konsome bagay ki ou pa menm ka fini. Ou vle gen objektif disrè ak plan ak bagay ou vle adrese. Fè li fasil. Tout sa di, fondamantalman, fè li fasil pou itilizatè a yo sèvi ak li, pa fè l 'yon pate jeyan nan tèks tankou glise sa a se, aktyèlman. Ou jis vle li nan dwe yon bagay kote li trè fasil pou yon moun yo ale nan ak fè sa yo vle fè. Ou pa vle yo gen navige 5 paj pou li ale nan fonksyon pwemye ou nan sit ou. Si Google te gen 5 paj anvan ou ta ka menm fè rechèch yon bagay, pesonn pa ta sèvi ak li. Epi anfen, pwototip papye, gwoup konsantre. Gen yon bon konsepsyon ak pratik tès. Jis paske ou panse ke li ap travay pou ou, pa vle di nenpòt lòt moun panse li fonksyone. Men, yeah, ki nan li. [CS50.TV]