[Reviżjoni: Quiz 1] [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard University] [Dan huwa CS50.] [CS50.TV] [Lucas Freitas] Merħba kulħadd. Dan huwa ta 'reviżjoni għall-kwizz 1. Just bħala ċaħda, din hija - I mean, aħna qed tmur biex tipprova tkopri materjal kemm jista 'jkun, iżda dan ma jfissirx li aħna qed tmur biex ikopru l-affarijiet li jistgħu jkunu fil-kwizz 1. Allura jkun żgur ukoll tagħti ħarsa lejn lecture, sezzjonijiet, dak kollu li tista '. Quiz 1 se tkun nhar l-Erbgħa, l-Erbgħa li jmiss. Sabiex ikun żgur li l-istudju. Li għaddej biex tkun, pretty ħafna, bħall-ewwel kwizz dwar format tagħha, imma hija probabbilment se jkun aktar diffiċli. Mill-inqas, is-sena meta I ħa 50, ħsibt li kien aktar diffiċli. Allura tistudja ħafna. Jien ser tkopri data strutturi u Huffman kodifikazzjoni. Din hija xi ħaġa li ħafna nies jaħsbu huwa kumpless, imma jien ser jippruvaw jagħmluha faċli kemm possibbli. L-ewwelnett, dak li rridu inti guys tkun taf għall-kwizz 1 huwa li jifhmu d-deskrizzjonijiet kunċettwali ta 'kull strutturi ta' dejta li jien ser tippreżenta. Dan ifisser li inti ma għandekx biex effettivament jimplimentaw tabella hash fil-kwizz tiegħek 1. Aħna ma rridux li inti timplimenta tabella hash kollu; forsi aħna ser nippruvaw li tagħmel inti jimplimentaw xi funzjonijiet, l-operazzjonijiet l-aktar komuni, iżda aħna mhux se tagħmel inti jimplimentaw kollox. Allura huwa importanti li inti tifhem il-kunċett wara kull struttura data u wkoll li inti kapaċi għall-kodiċi fis-C, biss l-operazzjonijiet l-aktar komuni huma għandhom għal kull struttura tad-data. U wkoll tkun tista 'tirrevedi pointers u structs, għax jidher ħafna f'dawn l-istrutturi tad-data. L-ewwel, listi marbuta. Listi Linked huma attwalment simili ħafna għal arrays, iżda d-differenza bejn lista marbuta u firxa, ewwel nett, hija li lista marbut għandu daqs flessibbli ħafna, filwaqt li fil arrays inti għandek tagħżel jew daqs kbir ħafna għall-array, sabiex inti taf li int ser jkun kapaċi li jaħżen id-data kollha tiegħek f'dan il-firxa, jew inti għandek tuża malloc li jkollhom tul flessibbli ta 'firxa. Fil-listi marbutin huwa faċli ħafna li tikseb biss aktar elementi, tpoġġi aktar elementi fil-lista marbuta jew ineħħu elementi. U fil-fatt, jekk inti ma tridx il-lista marbuta ma jiġu magħżula, inti tista 'tfittex u neħħi l-elementi fil-ħin kostanti, hekk O (1) ħin, dan huwa konvenjenti ħafna. Inti sempliċiment għandek tkun attenta li dejjem tiftakar li malloc u ħielsa l-lymph, sempliċiment għaliex jekk inti ma, inti ser ikollok tnixxijiet memorja. Listi hekk marbutin - id-definizzjoni ta 'node huwa biss bħal dak li għandna hemm dritt. Nressaq int n, iżda inti jista 'jaħżen kwalunkwe informazzjoni li inti tixtieq. Mela jekk inti tixtieq li taħżen string, huwa multa. Jekk inti tixtieq li taħżen Struct, huwa multa, doppja, tkun xi tkun trid. I biss jitqiegħed int n għall-eżempji hawn. U inti għandek pointer għall-node li jmiss. Allura, bażikament, lista marbuta għandha xi data, u allura jinnota l-node li jmiss. Jekk huwa l-aħħar element fil-lista marbuta, li għaddej għall-punt li NULL. Allura dan huwa eżempju ta 'lista marbuta. Okay, hekk issa ejja ara dak li għandna nagħmlu jekk irrid li daħħal element f'lista marbuta. L-ewwel, daħħal funzjoni se jkunu tat-tip null minħabba I ma jridux li jirritornaw xejn. U jien ser jieħdu int bħala argument, minħabba I trid tkun taf dak li nixtieq li daħħal. Allura x'inhu l-ewwel ħaġa I għandha tagħmel? Well, I għandu malloc fuq newnode, b'tali mod li huwa l-ewwel linja. Jien biss toħloq node ġdid biex jitqiegħdu fil-lista marbuta. Allura x'nista 'nagħmel? Well, nafu li fl-implimentazzjonijiet tagħna ta 'listi marbuta fil-klassi, aħna dejjem tpoġġi l-ras bħala varjabbli globali. Allura dak li nistgħu nagħmlu huwa jibdlu l-head. I tista 'tagħmel dan node ġdid jkun il-kap il-ġdid, u li għaddej biex jindikaw lill-kap ta 'qabel. Kif nistgħu nagħmlu dan? L-ewwel ħaġa li nagħmel hija l-bidla l-"n" fil-node ġdid għall-valur, li għaddiet għall-funzjoni. Imbagħad l newnode jmiss se jkun il-kap. Il-kap se tkun newnode. Allura huwa pjuttost sempliċi. Għal tħassar node, nistgħu nagħmlu dan simili - Mod wieħed stajna nagħmlu jiġifieri, okay, jekk jien ridt li tħassar, per eżempju, 3, dak I tista 'tagħmel huwa biss il-punt l-node preċedenti l-node li jmiss ta '3. So I se biss tagħmel xi ħaġa bħal dik. Imma x'inhi l-problema ma tagħmel dan? I jkollhom nixxija memorja, so I ma jkollhomx aċċess għan-numru 3 jibqgħalu. Il-problema ma 'dan huwa li jien mhux se jkun jista' jeħles dak node. Jien ser ikollhom tnixxija memorja u (mhux intelliġibbli) se mibegħda lili. Allura minflok tagħmel dan, I għandu probabilment jkollhom pointer temporanju. So I tpoġġi temp. Huwa se punt li l-node li nixtieq li tħassar. U mbagħad I tista 'timxi l-lymph preċedenti biex jindikaw il-node li jmiss tal-node li nixtieq li tħassar. U fl-aħħarnett, I jista 'b'xejn il-pointer. Għandi ħielsa l-pointer li I maħluqa hemm dritt? I ma jkollhom, sempliċement minħabba - id-differenza hija li din node ġiet maħluqa bl-użu malloc, dan huwa fil-borġ, filwaqt li dan wieħed kien biss iddikjarata bħala swiċċ NULL fil-ċmieni. So I ma jkollhomx biex ħielsa minnha. Okay. Allura issa ejja nitkellmu dwar stacks. Stacks huma pjuttost sempliċi. Aħna ma stacks u kjuwijiet fil-klassi biss bl-użu arrays, iżda inti għandek tkun familjari - biss ikunu konxji li inti tista 'ukoll tagħmel stacks fil-kjuwijiet li jużaw listi konnessi kif ukoll. Mela jekk għandek firxa, dak li jkun stack? A munzell, l-ewwel, ser jibqa 'jkollhom daqs. Int għandek taħżen x'inhu d-daqs tal-munzell li inti għandek id-dritt issa. U wkoll inti jkollha firxa, f'dan il-każ ta 'numri, imma jekk inti tixtieq, tista 'tkun firxa ta 'spag, firxa ta' Struct, xi ħaġa li inti tixtieq li taħżen. Dwar il-munzell: Id-differenza bejn munzell u lista marbuta hija li fil-munzell inti biss ikollhom aċċess għall-aħħar element li tqiegħed fil-ċmieni. Huwa sejjaħ l-aħħar fl-ewwel out. Eżatt bħal inti għandek munzell ta 'dixxijiet, jekk inti tpoġġi trej fuq il-quċċata tal-munzell, għandek tneħħi l-trej ewwel li jkollhom aċċess għall-trejs oħra. Huwa l-istess ħaġa ma stacks. Mela jekk jien tixtieq li, per eżempju, iżidu element li munzell, x'għandi nagħmel? Huwa sejjaħ timbotta, u huwa pjuttost sempliċi. L-ewwel ħaġa li għandek tagħmel huwa check jekk id-daqs tal-munzell ma tkunx ikbar jew daqs il-kapaċità tal-munzell. Għaliex jekk inti diġà fuq il-kapaċità sħiħa, inti ma tista 'żżid kull ħaġ'oħra. U mbagħad jekk le, inti biss għandek biex iżidu l-element li l-munzell. U fl-aħħarnett, inkrement-daqs. Allura huwa pjuttost sempliċi. So I biss żid in-numru 2. U jekk irrid li pop, li jfisser li nixtieq li tneħħi l-aħħar element li kien miżjud u jirritorna l-valur tal-element, l-ewwel ħaġa I għandhom jiċċekkjaw hija li l-munzell ma tkunx vojta. Għaliex jekk huwa vojt, I ma jistgħux jirritornaw xejn. F'dak il-każ, jien jirritornaw -1. Inkella, jien ser decrement-daqs tal-spec, u r-ritorn numri (s.size). Għaliex ma I decrement-daqs u mbagħad jirritornaw s.size? Huwa minħabba, f'dan il-każ, il-spec għandu daqs 4, u nixtieq li jirritorna l-raba 'element, id-dritt? Imma dak li hu l-indiċi tar-raba 'element? Tlieta. Peress I do daqs - se tkun 3, I tista 'biss s.numbers ritorn (s.size) għaliex dan huwa 3. Allura huwa biss l-indiċi. Issa kjuwijiet. Kjuwijiet huma pjuttost l-istess ħaġa. L-unika differenza hija li minflok li għadda, l-ewwel barra, għandek l-ewwel fl-ewwel out. Probabbilment jekk inti qed jistennew biex tmur għal kunċert, inti mhux se jkunu kuntenti jekk kellek munzell minflok kju. Li l-aħħar persuna li ġejjin ikun l-ewwel persuna li jidħlu fil-kunċert. Inti probabilment mhux se jkunu kuntenti. Fil-kju, l-ewwel persuna li tikseb fl huwa wkoll l-ewwel persuna li toħroġ. Allura fid-definizzjoni ta 'kju, minbarra li jkollhom id-daqs l-array, inti wkoll trid li jkollha l-ras, li hija l-indiċi għall-kap tal-munzell. Allura l-ewwel element dritt issa. Enqueue huwa l-istess ħaġa bħat push għall stacks. Jekk inti kienu naive ħafna, inti biss jgħidu, ukoll, I tista 'biss tagħmel eżattament l-istess ħaġa kif għamilt għall push. I tista 'biss tivverifika jekk mhuwiex lil hinn mill-kapaċità. Jekk huwa, I-ritorn foloz, inkella I tista 'biss tesporta il-valur il-ġdid u mbagħad inkrement-daqs. Iżda għaliex dan huwa ħażin? Ejja ara dan l-eżempju. Jien tipprova enqueue mazz ta 'għalf, u mbagħad jien ser dequeue u enqueue. Hemm ħafna ta 'kmandi, imma hija sempliċi ħafna. Jien ser enqueue 5, hekk żid 5, u mbagħad 7, 1, 4, 6, u mbagħad nixtieq li dequeue xi ħaġa, li jfisser li jien ser tneħħi l-ewwel element. Hekk jien ser ineħħi n-numru 3, id-dritt? L-ewwel element. Okay. Issa jekk nipprova enqueue xi ħaġa oħra, dak li qed jiġri? Skond implimentazzjoni tiegħi, I kienet se tqiegħed in-numru li jmiss fil-q.size indiċi. F'dan il-każ, id-daqs huwa ta '8, hekk l-indiċi 8 se jkun dritt hawn fl-aħħar pożizzjoni. Jekk nipprova enqueue 1 dritt hawn, inkun kitba fuq l-aħħar pożizzjoni għan-numru 1, li hija kompletament żbaljata. What I trid tagħmel hu around u jmorru l-ewwel pożizzjoni. Forsi inti biss jgħidu, ukoll, I biss għandhom jiċċekkjaw jekk I jistgħu attwalment tpoġġi xi ħaġa hemmhekk. Jekk le, I biss jgħidu, oh, il-kapaċità sħiħa ġdida huwa attwalment kapaċità - 1, u inti ma tistax tpoġġi element hemmhekk. Imma x'inhi l-problema? Il-problema hija li jekk jien biss dequeue kollox dritt hawn u mbagħad I tipprova żżid xi ħaġa oħra, ikun biss jgħidu, ukoll, inti kienu bil-kapaċità sħiħa, li hija 0. Allura kju tiegħek hija marret. Inti għandek biex nagħlaq madwar, u mod ta 'kisi madwar li inti guys tgħallmu fil psets viżjonarju u oħra kienet qed tuża mod. Tista 'tipprova dan fid-dar li wieħed jifhem għaliex inti se tagħmel q.size + q.head kapaċità mod, imma jekk inti tiċċekkja dritt hawn, nistgħu naraw li taħdem. Għalhekk fl-aħħar eżempju, kien q.size 8 u l-kap kien 1, minħabba li kienet din il-pożizzjoni hawn mill-firxa. Għalhekk se jkun 8 + 1, 9. Kapaċità Mod 9 tkun 0. Dan imur għall-indiċi 0. Aħna ser ikunu fil-pożizzjoni dritt. U mbagħad jippruvaw-kju fid-dar. Xi affarijiet importanti: jippruvaw jifhmu d-differenza bejn munzell u kju. Fid-dar, nipprova nikseb familjari ħafna mal-implimentazzjoni enqueue, dequeue, push u pop. U wkoll jifhmu meta inti tuża kull wieħed minnhom. Mela ejja jirrilassaw għal 10 sekonda bil-mazz ta 'Pokemons. U issa ejja mmorru lura għall strutturi ta 'dejta. Hash tabelli. Ħafna nies kienu jibżgħu ta 'tabelli hash. fil-problema sett 6, Jifformulaw Checker. Tabelli hash u tentattivi, ħafna nies jibżgħu minnhom. Huma jaħsbu li qed hekk diffiċli li wieħed jifhem. Yeah? [Rob Bowden] Problem stabbiliti 5. Problem stabbiliti 5, yeah. Grazzi Rob. Yeah. Six kien Huff n "Puff, yeah. Problema stabbiliti 5 kien Jifformulaw Checker, u inti kellha tuża jew tabella hash jew jipprova. Ħafna nies ħasbu li kienu super diffiċli li wieħed jifhem, iżda dawn qed attwalment pjuttost sempliċi. X'inhu tabella hash, bażikament? A tabella hash firxa ta 'listi marbuta. L-unika differenza bejn firxa u tabella hash hija li fil-tabella hash ikollok xi ħaġa imsejħa funzjoni hash. X'inhu funzjoni hash? I do not know jekk inti guys tista 'taqra hawn. Dan huwa eżempju ta 'tabella hash. Allura tista 'tara li għandek firxa b'31 elementi. U dak li nagħmlu fit-tabella hash hija jkollha funzjoni hash li ser jittraduċu ewlenin, kull int għal indiċi. Jekk, per eżempju, jekk irrid li jagħżlu għal B. Harrison, I iqiegħed B. Harrison fil-funzjonijiet hash tiegħi, u l-funzjoni hash se jerġa 'lura 24. So I jafu li nixtieq li jaħżen B. Harrison f'24. Allura dak hu d-differenza bejn biss li firxa u jkollhom tabella hash. Fit-tabella hash inti ser ikollhom funzjoni li se jgħidlek fejn jaħżen id-data li inti tixtieq li taħżen. Għall-funzjoni hash, inti trid tfittex għal funzjoni hash jiġifieri deterministic u sew distribwiti. Kif tistgħu taraw hawn, tara li ħafna tad-dejta li xtaqt li jaħżnu kien effettivament 19 minflok li jużaw 31 u 30 u 29, li kienu kollha b'xejn. Allura l-funzjoni hash I li jintużaw ma kienx tajjeb ħafna mqassma. Meta ngħidu sew distribwiti, dan ifisser li rridu li jkollhom, bejn wieħed u ieħor, mill-inqas 1 jew 2 għal kull - bħal, differenza ta '1 jew 2 għal kull wieħed mill-indiċijiet fil-matriċi. Inti tixtieq li jkollok, bejn wieħed u ieħor, l-istess numru ta 'elementi f'kull lista marbuta fis-array. U huwa faċli biex jiċċekkjaw jekk huwa validu fit-tabella hash, jikkunsidraw bħala tabelli hash. Imbagħad siġar. Din hija siġra. Siġar fil-xjenza tal-kompjuter huma rasu 'l isfel għal xi raġuni. Allura dritt hawn inti għandek l-għerq tal-siġra u mbagħad l-weraq. Inti għandek biss tkun taf in-nomenklatura għall-ġenituri u tfal. Kull node għandu tfal tagħha, li huma l-għoqiedi li huma taħt l-ġenitur. Għalhekk, per eżempju, 2 se tkun il-ġenitur għat-3 u għat-tfal l-oħra hemm dritt, filwaqt 3 se tkun il-ġenitur għall-1 u t-tfal oħra li huma hemmhekk. U 1 se jkun ta '3-tfal, u l-bqija. Aħna għandna xi ħaġa ferm aktar interessanti, imsejħa siġra tfittxija binarju, li fiha l-valuri dwar id-dritt ta 'node ser ikunu fuq il-lemin, dritt hawn - fuq il-lemin ser ikunu akbar mill-element fl-għerq. Hekk jekk I jkollhom in-numru 5 dritt hawn, l-elementi kollha dwar id-dritt ser ikunu akbar minn 5, u fuq ix-xellug l-elementi kollha ser ikunu inqas minn 5. Għaliex dan huwa utli? Ukoll, jekk I jridu jiċċekkjaw jekk in-numru 7 huwa hawn, per eżempju, I biss jmorru sa 5 l-ewwel u jien ser tara, huwa 7 ikbar jew inqas minn 5? Huwa akbar, hekk naf li għaddej biex għandek tkun fuq il-lemin tas-siġra. So I għandhom ħafna inqas Jittieħed li tħares lejn. Fl-implimentazzjoni ta 'siġra tfittxija binarju, il-node, jien biss ser ikollhom jkollhom data, hekk int n, inti tista 'wkoll ikollha string jew xejn int riedu. Inti sempliċiment għandek tkun attenta fuq jiddefinixxu dak huwa akbar, dak li huwa inqas. Mela jekk kellek kordi, per eżempju, inti tista 'tiddefinixxi li dawk kollha affarijiet dwar id-dritt huma ser ikollhom tul akbar, ix-xellug se jkollhom tulijiet aktar baxxi, hekk huwa verament sa inti. Kif nista jimplimentaw ssib għal BST? L-ewwel ħaġa aħna ser ikollok tagħmel huwa li jiċċekkja jekk il-għeruq huwa NULL. Jekk huwa NULL, dan ifisser li l-ħaġa ma jkunx hemm għaliex inti ma jkollhomx siġra, id-dritt? So I ritorn foloz. Inkella, jien ser jiċċekkja jekk in-numru huwa akbar mill-valur fil-għerq. Jien ser tipprova ssib l-element fuq il-lemin tas-siġra. Tara li jien jużaw recursion hawn. U allura jekk huwa inqas, jien ser tħares lejn ix-xellug. U fl-aħħarnett, inkella, jekk mhuwiex inqas jew le akbar, dan ifisser li huwa l-valur innifsu. So I biss ritorn vera. Tista 'tara hawn I li jintużaw jekk, jekk, jekk. U ftakar, fil-kwizz 0, kellna problema li kieku, jekk, jekk, u inti suppost kellhom isibu l-ineffiċjenza, u l-ineffiċjenza kien li inti jintuża jekk. Għandek użaw jekk, inkella jekk, inkella jekk, u ieħor. Għalhekk, għandi nuża inkella jekk u inkella jekk u ieħor hawn? Hawn xi ħadd - yeah? [Student speaking, inaudible] Li perfett. Hekk hi kien qal li ma jimpurtax, biss minħabba l-ineffiċjenza li kellna qabel kienet li minħabba, forsi jekk xi kundizzjoni ġiet sodisfatta, hekk ikollok mwettqa azzjoni, iżda imbagħad inti kienu ser jiċċekkja l-kondizzjonijiet kollha l-oħra. Iżda f'dan il-każ, huwa lura dritt bogħod, hekk ma jimpurtax. Allura inti ma għandekx tuża inkella jekk. U fl-aħħarnett, ejja nitkellmu dwar tentattivi, li huwa favorit ta 'kulħadd. A jippruvaw hija siġra ta 'arrays. Huwa mgħaġġel ħafna biex tfittex up valuri, iżda juża ħafna ta 'memorja. U huwa normalment biex filtru kliem, hekk meta inti jridu jimplimentaw, per eżempju, I do not know, bħal ktieb tat-telefon fil-telefon tiegħek u inti tixtieq li tkun tista 'tip B u biss ikollhom ismijiet ta 'nies li jkollhom B. Huwa faċli ħafna li jimplimentaw dik użu jipprova, per eżempju. Kif inti tiddefinixxi node fi jipprova? Inti sempliċiment għandek jkollhom bool li se tkun is_word. Li jirrappreżenta li l-użu l-karattri qabel dik node, inti kienu kapaċi li jiffurmaw kelma, u allura inti ser ikollok firxa ta 'pointers għal lymph. Tista 'tara li aħna għandna firxa ta' punti ta 'konġunzjoni prinċipali, hekk node * firxa? Yeah? Mela ejja ara kif dan se taħdem. Għall-kontroll jespliċitaw, għandna firxa ta '27 elementi, għaliex għandna l-ittri flimkien mal-apostrophe. Qabel hawn jien biss ser tuża 2 għaliex nixtieq li tkun tista 'tikteb fuq il-bord. Okay. Allura dan huwa eżempju ta 'jipprova. Jekk I biss jiddefinixxu l-ewwel node, I ser ikollhom firxa ta '2 elementi li huma 2 pointers għall NULL, so I biss jitqiegħed "a" u "b". U jien se jkollhom bool li tgħid is_word. Li għaddej biex tkun falza għall-ewwel waħda, biss għaliex, qabel li inti ma għandekx xi karattri. Allura kelma vojta mhijiex kelma. Allura huwa falz. Jekk I tixtieq iżżid "a" għal din il-dizzjunarju, dak li nagħmel? I biss għandhom malloc node ġdid għal "a", u mbagħad żid kelma tiegħu li veru. Allura hija biss jirrappreżenta dak li 'a' se jkun veru. Jagħmel sens? Imbagħad jekk I trid iżżid "ba", I ser ikollhom malloc 1 għal 'b', u mbagħad jien ser twaqqaf il Boolean biex falza, għaliex "b" fiha nnifisha mhijiex kelma. Imbagħad jien ser malloc xulxin għal "a", hekk "ba", u mbagħad jien ser jitwaqqaf huwa kelma li veru. Minħabba "ba" hija kelma. U mbagħad jekk irrid biex tara jekk "b" huwa f'dan dizzjunarju, I tista 'biss tmur għall-ewwel waħda, "b". I jinżlu, u nħares lejn kelma, u jgħid falza. Hekk mhuwiex kelma. Jekk I tixtieq li jiċċekkjaw "ba", Mmur għall-ewwel waħda, "b", u mbagħad mur "a", u nara vera, għalhekk huwa kelma. Jagħmel sens? Ħafna nies jiksbu konfuż bid jipprova. Nru? Aħħarnett, Huffman kodifikazzjoni. Huffman kodifikazzjoni huwa utli ħafna biex jiffrankaw memorja u kkompressat fajls test, biss minħabba ħafna drabi tuża "a" u "e", per eżempju, fid-dokumenti tiegħek, imma jien ma nafx jekk inti guys jużaw "q" jew "z" kemm. Wara biss 1 byte għal kull karattru wieħed, kull waħda - il-karattri 256 li għandna fit-tabella ASCII mhuwiex l-aħjar ħafna, sempliċiment minħabba li hemm xi karattri li tuża ħafna aktar, allura inti għandek probabbilment tuża memorja inqas għal dawk. Kif nista 'użu Huffman kodifika? Għandna nagħmlu siġra Huffman.  A siġra Huffman għandha lymph li jkollhom simbolu li se tkun simili, "a", "b", "c", l-ittra, kwalunkwe ittra għandek, frekwenza li hija l-frekwenza li l-kelma tidher fit-test, li inti kienu joħolqu l-siġra Huffman għal, u mbagħad node li se punt għall-xellug tal-siġra Huffman u ieħor node li se punt lejn il-lemin. Hekk biss bħal siġra. Kif inti tibni siġra Huffman? Int ser pick-lymph 2 li jkollhom l-frekwenzi baxxi. Jekk għandek rabta int ser pick-lymph 2 li jkollhom l-valuri ASCII aktar baxx ukoll. Imbagħad int ser toħloq siġra ġdida out ta'dawk il-lymph 2 li ser ikollhom il-frekwenza magħquda fl-node ġenitur. U allura int ser ineħħu lit-tfal 2 mill-foresta u jibdilhom mal-ġenitur. U int ser nirrepeti li sakemm inti biss għandek 1 siġar fil-foresti. Mela ejja ara kemm inti tagħmel siġra Huffman għall ZAMYLA. Tista 'tara hawnhekk li l-ittri jkollhom frekwenza 1 ħlief għas "A", li għandu frekwenza ta' 2. So I maħluqa nodes għal-ittri kollha nressaq fl-ordni tal-valur ASCII u l-frekwenza. Mela jekk jien tixtieq li joħolqu l-ewwel siġra, se jkun ma '"L" u "M". Allura huwa hawnhekk. Il-frekwenza tal-par se jkun 2 għaliex dan huwa 1 + 1, allura l-2 li jmiss mal-frekwenzi aktar baxxi huma "Y" u "Z". U mbagħad I kollha minnhom tkun - ikollhom frekwenza ta '2. Iva, liema huma dawk li għandhom il-valur ASCII aktar baxx għall-wieħed li jmiss? "A" u "L". So I joħolqu l-node ġdid, u finalment, huwa 4 u 2, so 2 se tkun fuq ix-xellug. U dan huwa l-siġra Huffman. Imbagħad jekk I jridu jiktbu xi test, bħal fil binarja li jikkonvertu test, bl-użu siġra Huffman huwa faċli ħafna. Per eżempju, jekk ngħid li jiċċaqalqu lejn ix-xellug huwa ta '0 u jimxu lejn il-lemin huwa 1, X'inhu li se jirrappreżenta? Allura simili 1, 1, hekk id-dritt, id-dritt, u mbagħad 0, sabiex titħalla tkun L, u mbagħad 1, 0, 0. Allura 1, 0, hekk biss 1, 0, "A". U mbagħad 0, 1, sabiex "Z". U mbagħad 1, 0, 0 - l-ebda. 0, 0 se tkun "Y", hekk għażżien. Hekk li kollox għalija, Rob għaddej biex tieħu f'idejha. [Rob Bowden] Għalhekk, Ġimgħa 7 Jittieħed. Imxejna ltqajna ħafna li jmorru fuq verament mgħaġġel. Operaturi bitwise, overflow buffer, Librerija CS50, imbagħad HTML, HTTP, CSS. Kollox bħal 15 sa 20 minuta. Operaturi bitwise. Hemm 6 minnhom li għandek bżonn tkun taf. Bitwise u, bitwise jew, XOR, shift xellug, shift dritt, u mhux. Dritt shift u ma jkunx inti bilkemm raw lecture fil-livelli kollha. Aħna ser jmorru fuq dan malajr hawnhekk, iżda huwa tajjeb li tkun taf li dawn huma l-6 li jeżistu. Ftakar li l-operaturi bitwise huma simili meta inti tagħmel 3 + 4. M'intix jittrattaw il-binarju ta '3 u 4. Mal-operaturi bitwise int attwalment jittrattaw il-bits individwali tan-numri 3 u 4. Allura l-ewwel waħda li aħna ser ngħid huwa bitwise le, u kull ma huwa flip l-bits. Allura hawnhekk, jekk int bil-miktub dan fis-C, inti ma jiktbu bħala ~ 11011 jew kwalunkwe, inti tiktibha tixtieq ~ 4, u allura flip-rappreżentazzjoni binarja ta '4. Allura hawnhekk, ~ ta 'xi numru binarju 1101101 se eżattament flip tal kollha 1 għal 0 u tan 0 kollha 1 ta. Kif jgħidu li hemm, l-użu frekwenti ta 'dan, u aħna ser tara dan fil-bit, huwa simili irridu li toħroġ bi xi numru fejn kollha tal-bits huma 1, ħlief għal wieħed minnhom. Allura huwa ġeneralment aktar faċli biex jesprimu n-numru fejn biss li ftit wieħed huwa stabbilit, u imbagħad ħu l-~ ta 'dan, sabiex kull daqsxejn oħra huwa stabbilit ħlief għal li wieħed. Allura dak hu li aħna qed tmur biex jużaw aktar fil-daqsxejn. Bitwise jew. Hawnhekk huma 2 numri binarja, u dawn in-numri 2 huma pjuttost rappreżentattivi, peress li tirrappreżenta kull possibbli kombinazzjoni ta 'bits inti tista bżonn biex joperaw fuq. Hawnhekk, meta I or'd kull bit, aħna qed biss ser tqabbel dritta stabbiliti. Allura fuq ix-xellug għandna 1 u 1. Meta I bitwise | dawk, dak li jien se tikseb? One. Imbagħad bitwise | 0 u 1 huwa ser jagħti me? One. Bitwise 1 u 0 se tkun l-istess ħaġa, wieħed. Bitwise 0 | 0 ser jagħti lili 0. Allura l-uniku każ fejn nista 'nikseb 0 hija fil-0 | 0 każ. U inti tista 'taħseb li biss bħal ORs loġiku tiegħek. Mela jekk inti taħseb 1 kif vera u 0 falza, l-istess ħaġa tapplika hawnhekk. Hekk vera jew vera hija vera; vera jew falza huwa veru. Falza jew vera hija vera; falza jew foloz hija l-unika ħaġa li fil-fatt falza. Hawn l-eżempju li inti għandek tkun taf bħala eżempju pjuttost tajba ta 'meta l-operaturi bitwise huma użati. Hawnhekk jekk aħna jew kapital "A" ma Ox20, u aħna ser tħares lejn dawn fit-tieni, irridu jiksbu xi ħaġa. U jekk aħna jew zghar "a" ma Ox20, irridu jiksbu xi ħaġa. Mela ejja pull up tabella ASCII. Okay. Hawnhekk naraw li "A" hija - hawnhekk għandna "A" hija informazzjoni 65. Imma jien ser jmorru ma hexadecimal, li huwa Ox41. Pretty żgur aħna raw dan fil-klassi. I think we raw dan fil-klassi li huwa pjuttost faċli li wieħed jaqleb minn hexadecimal għal binarja. So here, jekk jien tixtieq li tqiegħed 4 fis binarju, li jinsab biss ser ikunu 0100. Dan huwa 1 tal-post, post 2, l-4 ta 'post, għalhekk dan huwa 4. Imbagħad I tista 'tinqasam 1 fis binarju, li se tkun 0001. U hekk dan se jkun ir-rappreżentanza ta 'A "fl binarja. Teħid zghar "a", huwa issa se tkun Ox61, fejn, qsim dawn up fis binarju tagħha, so a 6 - Ejja filfatt jagħmlu dan - m'hemmx Eraser? Eraser. Ox61. Allura qsim 6 fis binarja se tkun 0 + 4 + 2 + 0. U qsim 1 se tkun 0001. Ħarsa lejn id-differenza bejn dawn 2, naraw li l-unika differenza bejn zghar u kapital "A" huwa dan bitsingle. Allura ġejjin lura hawn - okay. Niġu lura għal hawn, jekk inħarsu lejn dak il bit Ox20 hija, Ox20 hekk qsim fis binarju tagħha, huwa 0010, 0000. Ox20, l-uniku ftit li huwa stabbilit huwa dan daqsxejn li ninsabu kkonċernati, ma 'bidla bejn il-kapital u zghar "a". Jekk I jew "A", li huwa dan wieħed, "A", jekk I jew "A" ma Ox20, dak li jien se tikseb? [Student, inaudible] zghar "a", minħabba li għaddej biex flip din id-daqsxejn għal 1. U jekk I jew "a" ma Ox20, dak li jien se tikseb? Zghar a, għaliex biss oring "a" ma Ox20, Jien biss se tkun oring din id-daqsxejn waħda għal 1, huwa diġà 1, hekk ma jimpurtax. Allura irridu jiksbu "a" u "a". Bitwise u. Għal darb'oħra, nistgħu naħsbu ta 'dan bħala kontroparti loġiku u tagħna. Fuq ix-xellug għandna veru & veru. Li għaddej biex ikunu vera, u għall-każijiet kollha, falza & vera jew vera u falza, jew falza & falza, ebda wieħed minn dawk l-affarijiet huma veri. Allura dak li aħna jispiċċaw jkollna huwa 1000. Allura issa, hawn, hawn fejn stajt użat il-bitwise trusty le, fejn kellna Ox20. Allura dan huwa Ox20. Issa dak I trid tagħmel, bitwise ~ ta Ox20. Li ser flip l-bits. So I jkollhom 1101, 1111. U hekk "A" anded mal ~ Ox20 ser jagħti lili dak? L-unika bit aħna verament bżonn biex jaħsbu dwar huwa dan wieħed, peress li, jekk dawn il bits huma stabbiliti għal 1, allura aħna qed tmur biex tikseb eżattament dak "A" kien, ħlief għal, possibilment, dak li dan bit hija. Għaliex jekk kien 1, issa li għaddej biex jiġu stabbiliti għal 0, għaliex dak kollu dan huwa, anded ma 'dan se tkun 0. Allura dak li huwa "A" & ~ Ox20 ser jagħti me? [Studenti twieġeb, inaudible] U dak huwa 'a' u - huwa "A". U dak li huwa 'a' & ~ Ox20 ser jagħti me? "A." Minħabba li bħalissa dan huwa ta '1. Anding ma 'din 0 se jagħmilha 0, u issa aħna qed tmur biex tikseb "A". Kemm huma "A," u l-aħħar iżda mhux l-inqas ta 'dan it-tip, għandna XOR. Huwa simili ħafna jew, ħlief dan ifisser esklussivament jew. Dan huwa simili dak li inti normalment jaħsbu bħala jew fid-dinja reali. Allura inti tagħmel jew "x" jew "y", iżda mhux it-tnejn. Hawnhekk 1 ^ 1 se tkun 0. Minħabba vera, dan huwa - din ma taħdimx kif ukoll mal-veru loġiku u falza bħala bitwise & u jew jagħmlu, imma veru ^ vera hija falza. Għaliex aħna biss jridu jirritornaw veru jekk wieħed biss minnhom huwa veru. Allura 1 ^ 1 hija 0. What about 0 ^ 1? Huwa 1. 1 ^ 0 hija l-1, 0 ^ 0 hija 0. Allura fiċ-ċirkustanzi kollha, 0 bitwise xi ħaġa 0 se tkun 0. 1 bitwise xi ħaġa 0 jew 0 bitwise 1, jekk huwa | jew ^, dan ser ikun ta '1, u jekk huwa & inneħħu ikunu 0. U l-uniku każ fejn 1 bitwise 1 mhuwiex 1 huwa ma esklussiva jew. C'est 0110. Allura hawn issa, jużaw XOR - hekk aħna qed lura fi 20. "A" ^ Ox20 huwa dawn bits 2 aħna qed jitqabblu. Allura 1 ^ 0 ser jagħti me a liema? A waħda. "A" ^ Ox20 ser jagħti me? Zghar a. "A" ^ Ox20 ser jagħti me? Kapital A. Minħabba dak kollu din qed tagħmel, dan XORing ma Ox20 effettivament flipping x'ikun dan bit hija. Jekk dan huwa ta '0, issa għaddej biex issir 1. Peress li din hija 1, 1 ^ 1 hija 0. Allura tagħna "a" saret "A", u "A" tagħna saret "a". Allura XOR huwa mod verament konvenjenti ta 'ftit flipping-każ. Inti biss jixtiequ jtenni fuq serje ta 'ittri u supplenti-każ ta 'kull karattru wieħed, inti biss XOR kollox ma Ox20. Issa fadlilna shift. Bidla xellug huwa biss se, bażikament, imbotta kollha tal-numri fi, jew lejn ix-xellug, u daħħal 0 tal warajhom. Allura hawnhekk għandna 00001101. Aħna qed tmur biex timbotta 3 0 tal-lemin, u nikbru 01101000. F'termini nonbinary, naraw li din verament jittrattaw 13 left-jixxaqleb bi 3, li jagħtina 104. Ċaqliq Allura xellug, naraw hawn, x << y hija bażikament x * 2 ^ y. 13 * 2 ^ 3, 2 ^ 3 hija 8, so 13 * 8 huwa 104. Jekk inti biss jaħsbu dwar binarju b'mod ġenerali, kif kull ċifri, jekk nibdew mid-dritt, huwa l-1 ta 'post, imbagħad poġġi l-2, allura l-4 ta' post. Allura billi timbotta 0 tal-lemin, aħna qed biss timbotta l-affarijiet li kienu fil-4 ta 'post għall-post tal-8, il- u affarijiet li kienu fis-seħħ 8 għall-16 ta 'post. Kull bidla biss timmultiplika bi 2. Yeah? [Student] X'jiġri jekk inti qalbu minn 5? [Bowden] Jekk inti qalbu minn 5 inti biss titlef ċifri. Inevitabbilment, huwa l-istess ħaġa. Bħal, interi huma biss 32 bits, hekk jekk inti żid 2 interi verament kbir, hija biss ma tajbin fil integer. Allura huwa l-istess ħaġa hawn. Jekk inti qalbu minn 5, aħna biss jitilfu dan wieħed. U dan huwa tip ta 'dak li jfisser bi "bejn wieħed u ieħor," fejn jekk inti shift wisq, inti titlef bits. Shift Dritt se tkun l-oppost, fejn aħna qed tmur biex shove 0 off-aħħar, u għall-għanijiet tagħna, imla 0'S MILL-xellug. Allura tagħmel dan, aħna qed bażikament rivers dak li aħna kienu diġà għamlu. U naraw li t-tliet 0 dwar id-dritt għadek waqa off, u għandna imbuttat il-1101 it-triq kollha lejn il-lemin. Dan qed tagħmel 104 3, li huwa, effettivament, x / 2 ^ y. Allura issa, hawn, din hija idea simili. Għaliex huwa biss madwar x / 2 ^ y, u mhux fil-fatt x / 2 ^ y? Għaliex jekk I kien qaleb b'4, nixtieq tilfu 1. Bażikament, dak li inti taħseb, just think ta 'diviżjoni numru sħiħ b'mod ġenerali. Allura, bħal 5/2 huwa 2. Mhuwiex 2.5. Huwa l-istess idea hawnhekk. Meta aħna iddividi 2, nistgħu jitilfu bits fard tul it-triq. Allura issa - li hija għall bitwise. Li kollox għandek bżonn tkun taf. Ftakar il-każijiet ta 'użu rajna fil-klassi, bħal maskra bit hija utli għall-operaturi bitwise, jew inti jużawhom għal maskri bit. Ittri kapitali u ittri zghar, konverżjonijiet huwa eżempju pjuttost prototip. Okay, so buffer overflow attakki. Kulħadd tiftakar dak li kien ħażin ma 'din il-funzjoni? Avviż aħna ddikjarat firxa ta '12 bytes, 12 Chars, u allura aħna kopja fis buffer tagħna ta '12 Chars l-bar string kollu. Allura x'inhu l-problema hawn? In-numru magic 12 għandhom pretty ħafna immedjatament pop out kif - għaliex 12? X'jiġri jekk bar jiġri li jkun aktar minn 12-il karattru? X'jiġri jekk bar huwa miljuni ta 'karattri? Hawnhekk il-kwistjoni hija memcpy. Jekk bar huwa twil biżżejjed, se biss kompletament - "c", "c" ma 'kura li kien biss 12 karattri; "C" ma 'kura li ma jistgħux jitwaħħlu li ħafna bytes. Hija se jissostitwixxu biss kompletament char, 12-il bytes konna allokati għal dan, u kollox passat fil-memorja li attwalment ma jappartjenix għal dak buffer bi kwalunkwe-bar sekwenza hu. Allura dan kien l-istampa rajna fil-klassi fejn għandna munzell tagħna jikbru. Għandek jintużaw biex dawn l-istampi jew tikseb familjari magħhom mill-ġdid. Aħna munzell tagħna jikbru, indirizzi memorja tibda b'0 fil-quċċata u jikbru sa tixtieq 4 biljuni fil-qiegħ. Għandna firxa tagħna "c" x'imkien fil-memorja, allura għandna pointer tagħna biex bar dritt taħtu, u allura għandna dan il-werrej qafas salvati indirizz ta 'ritorn tagħna u munzell ta' rutina ġenitur tagħna. Ftakar dak l-indirizz ta 'ritorn huwa? Huwa meta prinċipali sejħiet foo funzjoni, jitlob bar funzjoni, inevitabbilment, bar prospetti. Allura meta jerġa bar, jeħtieġ li tkun taf li sejjer lura l-foo li hija imsejħa. Allura l-indirizz ta 'ritorn huwa l-indirizz tal-funzjoni li għandu li jirritornaw għall meta l-funzjoni terġa' lura. Ir-raġuni li l-importanti għal attakki tifwir buffer għaliex, konvenjenti, hackers tixtieq li bidla f'dak l-indirizz ta 'ritorn. Minflok tmur lura għall foo, jien ser jmorru lura għall kull fejn il-Hacker trid lili li jmorru lura għall. U, konvenjenti, fejn il-Hacker spiss trid tmur lura għall- huwa l-bidu tal-buffer li aħna oriġinarjament kien. Allura avviż, għal darb'oħra, Little Indjan. L-apparat huwa eżempju ta 'sistema Indjan Little, hekk integer jew pointer hija maħżuna mal-bytes maqluba. Allura hawnhekk naraw - huwa dan? Yeah. Naraw Ox80, OxC0, Ox35, OxO8. Ftakar il-numri hexadecimal? Aħna ma jaqleb l-ċifri hexadeċimali fl Little Indjan, għaliex 2 numri hexadecimal jiffurmaw byte waħda, u aħna jaqilbu l-bytes. C'est pourquoi aħna ma taħżen, bħal, 80530CO8. Aħna taħżen, minflok, kull par ta '2 numri, li jibdew mid-dritt. Li indirizz jirreferi għall-indirizz tal-bidu ta 'buffer tagħna li aħna fil-fatt riedu kopja fil fl-ewwel post. Ir-raġuni li utli huwa minħabba, jekk dak l-attakkant ġara li, minflok li string li kien biss sensiela jagħmlux ħsara ta 'prodotti simili, l-isem tagħhom jew xi ħaġa, dak jekk, minflok, li string kienu biss xi kodiċi arbitrarja li għamilt dak kollu li riedu li tagħmel? Sabiex ikunu jistgħu - I ma tistax think ta 'kull kodiċi jibred. Dan jista 'jkun xejn, għalkemm. Kwalunkwe kodiċi diżastruż. Jekk riedu, dawn jistgħu biss jagħmlu xi ħaġa fuq difetti seg, iżda li jkunu inutli. Dawn normalment jagħmlu dan Hack sistema tiegħek. Okay. Librerija CS50. Dan huwa, bażikament, getInt, getString, dawk il-funzjonijiet kollha we pprovduti għalik. Allura aħna għandna * string char, u dak l-estrazzjoni li aħna nefaħ bogħod f'xi punt matul is-semestru. Ftakar li string huwa biss firxa ta 'karattri. Allura hawnhekk naraw verżjoni mqassra ta getString. Għandek tfittex lura lejn din li tiftakar kif huwa attwalment implimentati. Dettalji ewlenin huma, avviż nikbru fil karattru wieħed fi żmien minn standard, li huwa biss bħalna ittajpjar fuq il-keyboard. Allura karattru wieħed fi żmien, u jekk irridu jiksbu wisq karattri, hekk jekk n + 1 hi akbar mill-kapaċità, allura għandna bżonn li tiżdied il-kapaċità ta 'buffer tagħna. Allura hawnhekk aħna qed jirdoppja d-daqs ta 'buffer tagħna. U li jżomm għaddejjin; aħna daħħal il-karattru fil-buffer tagħna sakemm nirċievu linja ġdida jew tmiem tal-fajl jew kwalunkwe, f'liema każ, aħna qed isir mal-spag u mbagħad l getString reali jiċkien l-memorja, bħal jekk aħna allokati memorja wisq inneħħu mur lura u tiċkien a bit. Allura aħna ma jurux li, imma l-idea prinċipali huwa għandu jinqara karattru wieħed fi żmien. Hija ma tistax biss jinqraw ħaġa sħiħa f'daqqa, minħabba buffer tagħhom hija biss ta 'ċertu daqs. Allura jekk il-string li tipprova ddaħħal fil buffer hija kbira wisq, allura overflow. So here we jiġi evitat li biss qari karattru wieħed fi żmien u li qed jikber kull meta għandna bżonn. Allura getInt u l-funzjonijiet l-oħra tal-librerija CS50 għandhom tendenza li jużaw getString fil-implimentazzjonijiet tagħhom. So I enfasizzat l-affarijiet importanti hawn. Huwa jappella getString tikseb string. Jekk getString naqas milli jirritornaw memorja, ftakar li getString mallocs xi ħaġa, sabiex kull meta inti sejħa getString inti m'għandekx (mhux intelliġibbli) ħielsa li string li inti ltqajna. Allura hawnhekk, jekk hija naqset milli malloc xi ħaġa, nerġgħu lura INT_MAX biss bħala bandiera li, ħej, aħna ma kinux verament kapaċi li tikseb numru sħiħ. Għandek jinjora kwalunkwe I ritorn lilek, jew inti ma għandhom jittrattaw dan bħala input valida. Fl-aħħarnett, jekk wieħed jassumi li ma tirnexxi, nużaw sscanf ma 'dik il-bandiera speċjali, li tfisser, l-ewwel jaqblu integer, mbagħad iqabblu xi karattri wara li numru sħiħ. Allura avviż irridu li ugwali 1. Prospetti Allura sscanf kemm logħbiet jekk magħmul b'suċċess? Huwa ser jerġa 1 jekk imqabbla b'suċċess integer, huwa ser jerġa u 0 jekk ma jaqblux ma 'numru sħiħ, u ser jirritorna 2 jekk mqabbla integer segwit minn xi karattru. Allura avviż aħna retry jekk aħna jaqblu xejn iżda 1. Hekk jekk dħalna 1, 2, 3, C, jew 1, 2, 3, X, imbagħad 1, 2, 3 se tikseb maħżuna fil-numru sħiħ, X se tikseb maħżuna fil-karattru, sscanf se jerġa 'lura 2, u aħna se retry, għaliex aħna biss trid integer. Malajr blowing permezz HTML, HTTP, CSS. HyperText Markup Language hija l-istruttura u semantika tal-web. Hawn hu l-eżempju minn lecture fejn għandna tags HTML. Għandna tags ras, tags ġisem, għandna eżempji ta 'tikketti vojta fejn aħna fil-fatt ma jkollhomx bidu u tag qrib, aħna biss għandhom rabta u l-immaġni. M'hemm l-ebda għeluq image tag; hemm biss tag waħda li accomplishes kollox l-tikketta teħtieġ li tagħmel. Il-link huwa eżempju; aħna ser tara kif inti link għal CSS, l-iskrittura huwa eżempju ta 'kif inti link għal JavaScript estern. Huwa pjuttost sempliċi, u ftakar, HTML mhix lingwa ta 'programmar. Hawnhekk, tiftakar kif inti tiddefinixxi forma jew għall-inqas dak li dan se tagħmel? Tali formola għandu azzjoni u metodu. Il-metodi inti se biss qatt tara huma IKOLLOK u POST. Allura IKOLLOK hija l-verżjoni fejn il-ħaġa gets jitqiegħdu fil-URL. POST huwa meta ma jitqiegħdu fil-URL. Minflok, kwalunkwe data mill-formola huwa mdaħħal aktar moħbi fit-talba HTTP. So here, azzjoni jiddefinixxi fejn it-talba HTTP tmur. Fejn għaddej huwa google.com / search. Metodu. Ftakar id-differenzi bejn IKOLLOK u POST, u, biss jgħidu bħala eżempju, jekk inti tixtieq li xi ħaġa bookmark. Qatt m'int se tkun kapaċi li jimmarka URL POST għaliex id-data mhijiex inkluża fil-URL. HTTP, issa, huwa HyperText Transfer Protocol. Il Transfer Protocol HyperText, inti tistenna li tittrasferixxi HyperText Markup Language, u ma. Iżda huwa jittrasferixxi wkoll xi ritratti li inti ssib fuq il-Web, xi downloads inti tagħmel tibda bħala talba HTTP. Allura HTTP huwa biss il-lingwa tal-World Wide Web. U hawn għandek bżonn biex jirrikonoxxu dan it-tip ta 'talba HTTP. Hawnhekk HTTP/1.1 fuq in-naħa biss jgħid li l-verżjoni tal-protokoll jien jużaw. Huwa pretty ħafna dejjem se jkunu HTTP/1.1, kif tkun taf tara dan. Imbagħad naraw li dan kien IKOLLOK, l-alternattiva tkun POST, li inti tista 'tara. U l-URL li I kien qed jipprova iżuru kien www.google.com/search?q = blah, blah, blah. Mela ftakar li dan, il-kwistjoni mark q = blah blah blah, huwa t-tip ta 'għalf li tiġi ppreżentata minn formola. Ir-rispons jista 'ritorn lejn lili se tfittex xi ħaġa bħal din. Għal darb'oħra, li tibda bil-protokoll, li se tkun li, segwita mill-kodiċi istat. Hawnhekk huwa 200 OK. U fl-aħħarnett, il-paġna web li I attwalment talab se jiġu segwiti. Il-kodiċi istat possibbli inti tista 'tara, u inti għandek tkun taf diversi minnhom. 200 OK probabilment ikollok dehru qabel. 403 Projbit, 404 Mhux Found, Error 500 Server Intern huwa normalment jekk inti tmur għal websajt u xi ħaġa imkisser jew ġġarrfu kodiċi PHP tagħhom, billi fil-appliance għandna dik il-kaxxa oranġjo big li jitla 'u jgħid, bħal, xi ħaġa ħażina, dan il-kodiċi ma taħdimx jew din il-funzjoni tal-bad. Normalment websajts ma tridx inti taf liema funzjonijiet huma ħżiena, Allura minflok dawn ser biss jagħtuk 500 Żbalji Server Intern. TCP / IP huwa 1 saff taħt HTTP. Ftakar li hemm Internet barra tal-World Wide Web. Bħal jekk inti tilgħab logħba online li ma jgħaddu HTTP, huwa għaddejjin minn differenti - huwa għadu jużaw l-Internet, iżda ma tuża HTTP. HTTP huwa biss eżempju wieħed ta 'protokoll mibnija fuq TCP / IP. IP letteralment tfisser Internet Protocol. Kull kompjuter għandu l-indirizz IP, iżda huma dawk l-affarijiet ta '4 ċifri bħal 192.168.2.1, jew tkun liema tkun; li għandha tendenza li tkun waħda lokali. Iżda dan huwa l-mudell ta 'indirizz IP. Allura l-DNS, Isem ta 'Dominju Service, dak hu li jittraduċi affarijiet simili google.com għal indirizz attwali IP. Mela jekk inti tip li l-indirizz IP fis-URL, li ġġib inti Google, iżda inti għandek tendenza li ma tiftakar dawk l-affarijiet. Inti għandek tendenza li tiftakar google.com minflok. L-aħħar ħaġa li għandna huwa portijiet, fejn dan huwa l-parti TCP ta 'IP. TCP ma aktar. Aħseb dwar, bħal, ikollok web browser tiegħek running. Forsi inti għandek xi applikazzjoni email running; forsi ikollok xi programm ieħor li juża l-Internet running. Dawn kollha għandhom bżonn aċċess għall-Internet, imma kompjuter tiegħek biss tkun 1 card WiFi jew ikun x'ikun. Allura portijiet huma l-mod li aħna qed kapaċi li jifred kif dawn l-applikazzjonijiet huma kapaċi li jużaw l-Internet. Kull applikazzjoni gets 1 port speċifiku li jistgħu jisimgħu fuq, u fil-kontumaċja, HTTP użi port 80. Xi servizzi email jużaw 25. Dawk baxx nnumerati tendenza li għandhom jiġu rriżervati. Inti normalment tista 'tikseb dawk ogħla numerati għalik innifsek. CSS, Cascading Style Sheets. Paġni web Aħna istil ma CSS, mhux ma HTML. Hemm 3 postijiet inti tista 'tpoġġi CSS tiegħek. Hija tista 'tkun inline, bejn tags stil, jew fil-fajl separat kompletament u mbagħad marbuta pulzieri U hawn huwa biss eżempju ta 'CSS. Għandek jirrikonoxxu dan il-mudell, fejn l-ewwel eżempju huwa aħna qed taqbel mal-tag ġisem, u hawn aħna qed tiffoka l-tikketta ġisem. It-tieni eżempju, aħna qed taqbel mal-ħaġa ma footer ID, u aħna qed tapplika xi stili għal dan. Avviż li ID footer test tallinja lejn ix-xellug, billi korp test tallinja center. Footer hija ġewwa l-korp. Hija se, minflok, test tallinja xellug, anke jekk korp jgħid center test tallinja. Din hija l-parti cascading kollu kemm hu. Inti jista 'jkollhom - inti tista' tispeċifika stili għall-korp, u mbagħad l-affarijiet fil-ġisem inti tista 'tispeċifika stili aktar speċifiċi, u jaħdmu l-affarijiet kif inti tistenna. Specifiers aktar speċifiċi CSS jieħdu preċedenza. Naħseb li hu. [Ali Nahm] Hi kulħadd. Jekk I tista 'biss tikseb l-attenzjoni tiegħek. Jien Ali u jien se jmorru permezz PHP u SQL verament mgħaġġel. Allura nistgħu nibdew. PHP huwa qasir għall PHP: Portugues Preprocessor. U kif inti kollha tkun taf, huwa scripting lingwa server-ġenb, u nużawha għall-aħħar lura ta 'websajts, u kif tagħmlu lott tal-komputazzjonijiet, il-parti behind-kwinti. Sintassi. Mhuwiex simili C, sorpriża, sorpriża. Hija dejjem għandha tibda bil-, jekk inti tista 'tara, l - I ma tistax timxi' l quddiem. Tista 'tara li għandek bżonn it-tipi ġodda ta' braces u allura inti wkoll bżonn l-? PHP. Li dejjem kif ikollok biex jinkwadra test PHP tiegħek, kodiċi PHP tiegħek. Għalhekk ma tistax biss tkun simili C, fejn inti tip ta 'poġġih fuq l-ewwel. Ikollok bżonn li dejjem madwaru. U issa, il-sintassi ewlenija hija li l-fatturi kollha bżonn biex tibda bil-karattru $. Ikollok bżonn tagħmel dan meta int jiddefinixxu lilhom, inti għandek bżonn tagħmel dan meta int jirreferu għall lilhom aktar tard. Inti dejjem bżonn li $. Huwa aqwa ħabib ġdid tiegħek, pretty ħafna. Inti ma - b'differenza C, inti m'għandekx bżonn biex liema tip ta 'tip varjabbli huwa. Għalhekk, filwaqt li inti tagħmel bżonn l-$, inti m'għandekx bżonn biex, bħal, int x jew y string, etcetera, etcetera. Allura differenza żgħira. Bħala riżultat ta 'dan, dan ifisser li PHP huwa tip dgħajjef. PHP hija lingwa tip dgħajjef, u dan dgħajjef varjabbli ittajpjat. Fi kliem ieħor, dan ifisser li inti tista 'taqleb bejn tipi differenti ta' tipi varjabbli. Inti jista 'jaħżen numru tiegħek 1 bħala int, inti jista 'jaħżen bħala string, u inti jista' jaħżen bħala float, u dan kollu se jkun dak in-numru 1. Anki jekk int maħżuna fil-forom differenti, huwa għadu - it-tipi varjabbli għadhom azjenda fl-aħħar. Mela jekk inti tfittex hawn, jekk tiftakar minn pset 7, ħafna minnkom probabbilment kellha kwistjonijiet b'din. Żewġ sinjali ugwali, 3 sinjali ugwali, 4 sinjali indaqs. Okay, m'hemmx 4 sinjali ugwali, imma hemm 2 u 3. Tuża 2 sinjali ugwali biex jiċċekkja l-valuri. Hija tista 'tiċċekkja madwar tipi. Hekk jekk inti tista 'tara fl-ewwel eżempju, Għandi num_string == num_int. Allura int tiegħek u string tiegħek huma t-tnejn, teknikament, 1, iżda dawn qed tipi differenti. Iżda għall-partijiet ugwali doppja, xorta ser jgħaddu. Madankollu, għall-partijiet ugwali tripla, hija għandha tivverifika valur kif ukoll it-tipi differenti. Dan ifisser li mhuwiex ser jgħaddu f'dan it-tieni każ hawnhekk, fejn inti qed tuża 3 sinjali ugwali minflok. Allura dak differenza kbira li inti għandek kollha wrew issa. Konkatenazzjoni String hija ħaġa oħra qawwija tista 'tuża fil-PHP. Huwa bażikament biss dan handy dot notazzjoni, u li kif inti tista 'torbot kordi flimkien. Mela jekk għandek Cat u ikollok Dog, u inti tixtieq li tqiegħed il-kordi 2 flimkien, inti tista 'tuża il-perjodu, u li tip ta' kif taħdem. Tista 'wkoll biss tpoġġihom ħdejn xulxin, kif tistgħu taraw hawn fl-eżempju tal-qiegħ, fejn I eku string 1, l-ispazju string 2. PHP se tkun taf biex jissostitwuhom bħala tali. Arrays. Issa, fil-PHP, hemm 2 tipi differenti ta 'arrays. Inti jista 'jkollhom arrays regolari, u inti jista' jkollhom ukoll arrays assoċjattiva, u aħna qed tmur biex jgħaddu minnhom dritt issa. Arrays regolari huma biss dan fis-C, u hekk ikollok indiċijiet li huma nnumerati. Dritt issa aħna qed biss ser toħloq waħda u mqiegħda - għalhekk dan huwa kif aħna toħloq firxa vojta, allura aħna qed tmur biex tqiegħed fil-numru tal-indiċi 0. Aħna ser tpoġġi l-numru 6, il-valur 6. Tista 'tara fil-qiegħ hawn. Where's - fil-numru indiċi 1 aħna qed tmur biex tpoġġi valur numru 4, u sabiex inti tista 'tara hemm 6, hemm 4, u allura kif aħna qed affarijiet istampar, meta nippruvaw u pprintja l-valur maħżun fl-indiċi numru 0, allura aħna ser tara l-valur 6 jiġi stampat. Kessaħ? Allura dak arrays regolari għalik. Mod ieħor inti tista 'wkoll żżid affarijiet li arrays regolari issa hija tista 'biss tehmeż minnhom fl-aħħar. Dan ifisser li inti ma għandekx biex tispeċifika l-indiċi speċifika. Tista 'tara numru, u mbagħad fil-parentesi kwadri hemm ebda indiċi speċifikat. U se tkun taf - PHP se tkun taf li biss iżżidhiex mal-aħħar tal-lista, il-post liberu li jmiss. Allura tista 'tara l-1 hemm dritt f'dak 0 spot, 2 marru hemm dritt fl-ewwel post. 3 tmur - hija miżjuda hemm ukoll. Allura dak it-tip ta 'jagħmel sens. Int biss constantly żżid dan, u mbagħad meta aħna qed b'repetizzjoni l-indiċi ta 'numru 1, se jistampa l-valur 2. Imbagħad għandna arrays li huma arrays assoċjattiva. Arrays assoċjattiva, minflok li jkollhom indiċi numeriċi, dak li tagħmel huwa, huma jkollhom indiċijiet li huma mill string. Tista 'tara, minflok - I ħassar dawk l-indiċijiet kollha numru, u issa huwa key1, key2, key3, u dawn qed fil-kwotazzjonijiet doppja li turi li dawn qed kordi kollha. Allura jista 'jkollna eżempju ta' dan. L-eżempju ta 'dan huwa li aħna għandna l-tf, u dak l-isem indiċi. Aħna ser tpoġġi "Ali" bħala l-isem, fl-indiċi, kaloriji jittiekel, nistgħu tpoġġi int f'dan il-ħin minflok ta 'spag, u mbagħad fil-jħobb indiċi, nistgħu npoġġu firxa sħiħa ġewwa ta 'dan. Allura dan huwa tip ta '- huwa kunċett simili għal kif kellna indiċi bin-numri, iżda issa nistgħu nbiddlu l-indiċi madwar li jkollhom magħhom bħala kordi minflok. Tista 'wkoll tagħmel dan, minbarra biss tagħmel dan b'mod individwali, inti tista 'tagħmel dan kollu fil-blokki waħda. Allura tista 'tara li tf' dak array, u mbagħad aħna waqqafna lilhom kollha f 'sett wieħed ġgant parentesi kwadri. Allura li tista 'tħaffef affarijiet up. Huwa aktar ta 'għażla stilistika milli le. Għandna wkoll loops. Fl C għandna loops li jaħdmu bħal dan. Kellna firxa tagħna, u aħna marru minn indiċi 0 sa l-aħħar tal-lista, u aħna jistampaw kollox, id-dritt? Ħlief l-problema hija, għall-arrays assoċjattiva, aħna ma neċessarjament jaf dawk indiċi numeriċi għaliex issa għandna l-indiċijiet string. Issa nużaw loops foreach, li, għal darb'oħra, inti nisperaw użati fil pset 7. Loops foreach se biss jafu kull parti waħda tal-lista. U ma għandek tkun taf eżattament l-indiċi numeriku li għandek. Allura inti għandek l-sintassi foreach, dan huwa foreach, inti tpoġġi l-array. Allura firxa tiegħi huwa msejjaħ pset, u mbagħad, tal-kelma bħala, u allura inti tpoġġi dan il-varjabbli temporanja lokali li int ser tuża biss għall-ħaġa speċifika li għaddej biex iżommu l-speċifiku - eżempju wieħed jew sezzjoni waħda ta 'l-array. Num Pset se torganizza 1, u mbagħad forsi se żżomm in-numru 6, u mbagħad se żżomm in-numru 2. Iżda huwa garantit li jmorru permezz ta 'kull valur wieħed li fil-array. Funzjonijiet utli li inti għandek tkun taf fil-PHP huma jeħtieġu, sabiex jagħmel ċert li int inklużi ċerti files, eku, ħruġ, vojta. I jirrakkomanda ħafna li inti tħares lejn pset 7 u tħares lejn dawk il-funzjonijiet. Inti jista 'jkollhom taf dawk, so I definittivament taf liema, eżattament, dawk qed jagħmlu kollha. U issa aħna qed tmur biex jmorru permezz ambitu verament malajr. Fl-ambitu, PHP huwa tip ta 'ħaġa funky, b'differenza C, u hekk aħna qed biss se jgħaddu malajr. Mela ejja ngħidu nibdew f'dak vleġġa li għandna hemmhekk. U aħna qed tmur biex tibda bil $ i. Allura l-varjabbli "i" se tkun 0, u aħna qed biss ser iżommu l-istampar li f'dik il-kaxxa bajda kbira hemmhekk. Aħna qed tmur biex tibda bil i0, u allura aħna qed tmur biex eku. Allura hemm l-0. U allura aħna qed tmur biex inkrement lilha mill-għall-loop, u mbagħad li għaddej biex jkun il-valur ta '1. Wieħed huwa inqas minn 3, u għalhekk għaddej biex jgħaddi li għal loop, u allura aħna qed tmur biex tara stampata mill-ġdid. Aħna ser inkrement darb'oħra għal 2, u 2 ikun anqas minn 3, u għalhekk ser jgħaddu l-għall-loop, u inneħħu jistampaw il-2. Imbagħad inti ser jinnota li 3 ma tkunx anqas minn 3, hekk aħna ser toħroġ 'il barra għal loop. Allura issa konna ħareġ, u allura aħna qed tmur biex tmur fil aFunction. Okay. Allura inti għandek li wieħed jinnota li dan il-varjabbli li ħloqna, l-'i' tvarja, mhux scoped lokalment. Dan ifisser li mhuwiex lokali għal-linja, u dak il-varjabbli aħna xorta tista 'aċċess u l-bidla wara, u xorta se tkun effettiva. Mela jekk inti tmur fil-funzjoni issa, int ser tara li aħna wkoll tuża l-"i" varjabbli, u aħna qed tmur biex inkrement "i" + +. Inti ser jaħseb, fl-ewwel, ibbażat fuq C, li din l-kopja tal-"i" varjabbli. Hija ħaġa totalment differenti, li hija korretta. Allura meta aħna jistampaw, aħna qed tmur biex jistampaw "i" + +, li se jistampa li 4, u allura aħna qed tmur biex - sorry. Imbagħad aħna qed tmur biex jispiċċa barra ta 'dik il-funzjoni, u aħna qed tmur biex tkun fejn dik vleġġa huwa dritt issa. Dan ifisser li mbagħad, madankollu, anki jekk il-funzjoni biddel il-valur ta '"i", hija ma biddlitx barra tal-funzjoni, minħabba l-funzjoni għandu skop separat. Dan ifisser li meta aħna eku "i", din ma nbidlitx fl-ambitu tal-funzjoni, u hekk allura aħna qed tmur biex jistampaw 3 ġdid. Affarijiet differenti madwar ambitu PHP milli C. Issa fil-PHP u HTML. PHP hija użata biex tagħmel paġni web dinamiku. Huwa tip ta 'jagħmel l-affarijiet differenti. Aħna għandna hija differenti minn HTML. Bil HTML, aħna dejjem biss ikollhom l-istess ħaġa statika, bħal kif Rob wera, billi PHP, tista 'tbiddel l-affarijiet bbażata fuq min l-utent huwa. Hekk jekk I jkollhom din, jien, "Inti illoggjat bħala -" u mbagħad l-isem, u I tista 'tibdel l-isem. Allura issa dritt l-isem huwa Joseph, u għandha l-"dwar me," iżda mbagħad I tista 'wkoll tbiddel l-isem li jkollhom Tommy. U li tkun ħaġa differenti. Hekk allura nistgħu wkoll ibiddlu l-affarijiet differenti dwar lilu, u se juri kontenut differenti bbażat fuq l-isem. Allura PHP tista 'tip ta' bidla x'inhu għaddej fil-website tiegħek. Istess hawn. Still, jinnotaw li għandhom kontenut differenti, anki jekk inti teknikament xorta aċċess l-istess paġna web fuq il-wiċċ. Jiġġeneraw HTML. Hemm 2 modi differenti li inti tista 'tagħmel dan. Allura aħna ser jgħaddu dan id-dritt issa. L-ewwel mod huwa, ikollok - yeah, sorry. Allura inti biss għandek regolari tiegħek għal loop fil-PHP, u allura inti eku fil-PHP u inti eku out HTML. Bl-użu dak li Rob wera inti ta 'iskrittura HTML u mbagħad tuża l-istampar PHP biss ipprintjaha għall-paġna web. Il-mod alternattiv huwa li tagħmel dan jekk inti separati l-PHP u l-HTML. Allura inti jista 'jkollhom linja ta' PHP li jibda l-għal loop, allura inti jista 'jkollhom l-linja ta' l-HTML ħaġa separata, u mbagħad inti tispiċċa l-loop, għal darb'oħra, bil-PHP. Allura huwa tip ta 'separazzjoni out. Fuq in-naħa tax-xellug, inti tista 'li inti għandek l-- huwa biss 1 blokki ta 'PHP. Dwar id-dritt tista 'tara li għandek linja ta' PHP, għandek linja ta 'HTML, u inti għandek linja ta' PHP darb'oħra. Allura separazzjoni out fil dak li qed isir. U inti ser jinnota li kemm il-mod, għal wieħed minnhom, dawn xorta jistampa l-immaġni, l-immaġni, l-immaġni, sabiex HTML xorta huwa stampat bl-istess mod. U allura inti taf xorta tara l-3 immaġini juru up fuq website tiegħek. Allura huwa 2 modi differenti ta 'kif isir l-istess ħaġa. Issa għandna forom u t-talbiet. Kif Rob wera inti, hemm forom ta HTML, u aħna se biss riħ permezz ta 'dan. Inti għandek l-azzjoni u inti għandek metodu, u l-azzjoni tiegħek tip ta 'turi li inti fejn int ser tibgħat, u l-metodu hija jekk li għaddej biex tkun IKOLLOK jew POST. U IKOLLOK talba, kif Rob qal, ifisser li int ser poġġih fil-forma u tkun taf tara bħala URL, billi talba POST inti mhux se tara fil-URL. Allura differenza żgħira. Madankollu, ħaġa waħda li l-ħaġa simili hija li POST u IKOLLOK huma ugwalment siguri. Allura inti tista 'taħseb li sempliċiment għaliex inti ma tara fil-URL, li tfisser il-POST hija aktar sikura, imma inti xorta tista 'tara fil cookies tiegħek fl-informazzjoni li int tibgħat. Allura ma naħsibx li madwar wieħed jew l-oħra. Ħaġa oħra li wieħed jinnota huwa li inti ukoll għandek varjabbli taqsima. Inti guys użat dan pset 7 li tinkiseb informazzjoni tiegħek user ID. Dak li ġara kien li inti tista 'tuża dan firxa assoċjattiva, l $ _SESSION, u allura int tista 'aċċess affarijiet differenti u jaħżnu l-affarijiet differenti madwar il-paġni. Last ħaġa hija li għandna SQL, Strutturat Mistoqsija Lingwa, u din hija lingwa ta 'programmar biex jamministraw databases. X'inhuma, eżattament, huma databases? Huma qed kollezzjonijiet ta 'tabelli, u kull tabella jista 'jkollhom tipi simili ta' oġġetti. Allura kellna tabella ta 'utenti pset finanzi tiegħek. U għaliex dawn huma utli? Għaliex dan huwa mod ta 'ħażna permanenti informazzjoni. Huwa mod ta 'tracking l-affarijiet u l-ġestjoni affarijiet u fil-fatt dan iqisuh fuq il-paġni differenti u żamma track. Billi jekk inti biss jaħżnu f'dak il-mument immedjat wieħed u mbagħad jużaw dan aktar tard, inti mhux ser ikunu jistgħu jkollhom aċċess kwalunkwe ħaġa li inti stajt salvati. Aħna 4 affarijiet kbar li nużaw għal kmandijiet SQL. Għandna tagħżel, daħħal, tħassar, u aġġornament. Dawk huma verament importanti għalik guys li jkunu jafu għal kwizz tiegħek. Aħna ser malajr jmorru fuq agħżel dritt issa. Bażikament, int tagħżel ringieli minn database. Mela jekk għandek, dritt hawn - għandna dawn 2 affarijiet differenti, u rridu li tagħżel mill-tabella klassijiet fejn biża - fejn fil-kolonna tal-biża il-valur huwa 1. Allura tista 'tara hawn, aħna għandna dawn l-affarijiet 2 ta' isem il-klassi, CS50 u Stat110, u aħna għandna l-IDs klassi u l-islogan. Hekk irridu tagħżel kollha ta 'dik l-informazzjoni. Imbagħad int tista 'tara dritt hawn li huwa tip ta' picking 'dak kolonna tal-biża, fejn l-affarijiet huma 1, u allura għandu l-klassi ID, l-isem tal-klassi u slogan li tista 'pick out. Kif eżattament do inti tagħmel dan fil-kodiċi? Inti għandek tuża PHP. Allura dak it-tip ta 'kif PHP u SQL huma relatati ma' xulxin. Issa għandna kodiċi tagħna, u aħna qed tmur biex jużaw funzjoni query tagħna kif għamilna fil pset 7, u aħna qed tmur biex imexxu l-mistoqsija SQL. Imbagħad aħna qed tmur biex ikollhom - aħna dejjem ikollhom jiċċekkjaw jekk ugwali triple ringiela jekk falza. Għalhekk għal darb'oħra, inti tixtieq li jiċċekkjaw it-tip u l-valur, u mbagħad jekk din ma taħdimx, allura inti tixtieq li ruhna, bħas-soltu, kif għamilna fil pset 7. Inkella, inti tixtieq li loop permezz kollox ma 'dawk handy foreach loops li aħna biss marru fuq. Issa li aħna qed looping permezz u aħna ħadna passat, ejja nassumu li mistoqsija tagħna għaddew, issa għandna loop foreach tagħna. U l-ewwel ringiela hija għandha, hekk hawn l-ringiela, dritt hawn, huwa ppakkjata. Huwa ser jistampa l-informazzjoni kollha li huwa gotten. Allura li għaddej biex jistampa fil-qiegħ "Trid Tgħallem HTML?" Imbagħad li għaddej biex tmur fil-filliera li jmiss, għaliex dan huwa temm l-ewwel għall-loop, u hekk allura li għaddej biex jistampa l-tieni linja ta 'dan, li se tkun STAT110, Sib l-mumenti. Ħaġa waħda aħħar huwa fuq SQL Vulnerabilitajiet. Naf David ttrattaw din ftit fil-lecture. Tista 'taqra dan aktar tard. Huwa verament umoristiċi. SQL Injezzjoni huwa tip ta 'ħaġa delikata. Ejja ngħidu li inti biss twaħħal dawk il-varjabbli dritt fis-mistoqsija tiegħek, kif tistgħu taraw f'dan l-ewwel linja. Għalhekk jidher multa, right? Inti biss it-tqegħid fl-isem l-utent u password għall-mistoqsija SQL tiegħek, u inti tixtieq li vapur off u jiksbu dak kollu li huwa fit-tabella tad-data tiegħek. Dan jidher pjuttost sempliċi. Allura tikri say xi ħadd ipoġġi fi, għall-password, dan jew test dritt hawn - għandu attwalment ikun fil-kaxxa aħmar. Mela ejja ngħidu li dawn jitqiegħdu li password fi - dan huwa dak li jidħol. Allura dawn qed tqegħid jew "1" = 1. Tip ta 'password iblah li jkollhom. Issa ejja biss tibdilha fi, u tkun taf josservaw li f'dik mistoqsija SQL issa, tevalwa l li dejjem veru, għaliex inti ser jinnota li inti tista mistoqsija SQL tagħżel kollha ta 'din l-informazzjoni jew tista 'biss ikollha 1 = 1. Allura li dejjem għaddej biex jevalwa veru. Li mhux se verament ix-xogħol, għaliex dan ifisser li l-Hacker jistgħu jidħlu fis-sistema tiegħek. Is-soluzzjoni għal dan huwa li inti għandek tuża s-sistema PDO, li jfisser li inti għandek tuża trade marks in kwistjoni, li huwa dak li inti guys użati fil pset 7, fejn int ser tuża marka kwistjoni fil-post ta 'fejn inti tixtieq li tqiegħed xi ħaġa, u allura int se jkollhom comma, u allura inti ser ikollok wara, wara string tiegħek, il-varjabbli differenti li inti tixtieq li tieħu post in kwistjoni mark tiegħek. Allura inti ser jinnota hawnhekk li issa għandi dawn trade marks in kwistjoni aħmar. Imbagħad nressaq-varjabbli wara kordi tiegħi hekk naf li jibdilhom f'dik l-ordni wara. Li se jagħmel ċert li jekk xi ħadd ma dan bħal dan, u dawn ikollhom l jew 1 = 1 sitwazzjoni, li se tiżgura ruħha, fl-aħħar lura, kun żgur li mhux se attwalment jiksru l-mistoqsija SQL. Okay, hekk li pjuttost ħafna dan, whirlwind ta 'PHP u SQL. Aħjar ta 'xortih kollu inti, u issa biex Ore [Oreoluwatomiwa Babarinsa] kulħadd Okay. Ħin biex tmur fuq xi JavaScript u xi affarijiet oħra malajr ħafna hekk aħna ma inti żżomm up tonight. JavaScript. Iva. JavaScript huwa tip ta 'ħaġa jibred, allegatament. L-affarijiet int verament bżonn tkun taf dwar JavaScript, huwa tip simili l-aħħar client-side 'dak app web tiegħek se tkun qiegħda tagħmel. Hemm xi affarijiet li inti biss ma tixtieq li tieħu kura ta 'l-ħin kollu fuq in-naħa server. L-interazzjonijiet ftit, li tenfasizza ħaġa waħda, jagħmel xi ħaġa jisparixxu. Int verament ma jridux li jkollhom biex jitkellem server tiegħek il-ħin kollu għal dan. U xi wħud li lanqas ma huwa possibbli li jsir fuq in-naħa server. Dan huwa għaliex għandna bżonn xi ħaġa bħal JavaScript. Affarijiet jibred dwar JavaScript: Huwa huwa dinamikament ittajpjat. X'inhu dan ifisser huwa li programm tiegħek ma bżonn tkun taf dak, eżattament, il-varjabbli huma meta tikteb it out. Hija ser biss tip ta 'figura hija out kif huwa taħdem. Affarijiet oħra li huma jibred dwar dan: Huwa lingwa Brace kaboċċi, li tfisser il-sintassi huwa simili għal C u PHP. Inti ma għandekx tagħmel ħafna tinħadem mill-ġdid meta int tagħlim JavaScript. Hawnhekk għandna ftit ta 'JavaScript. Interessanti ħaġa dritt hawnhekk hija li, jekk inti tħares lejn din, għandna daqsxejn ta 'JavaScript hemm dritt fil-tag ras. X'inhu ma huwa bażikament biss jinkludu fajl JavaScript. Dan huwa mod wieħed li inti tista 'tinkludi JavaScript fil-programm tiegħek. Imbagħad it-tieni ftit huwa attwalment ftit JavaScript inline, simili ħafna għal stil inline CSS, u int biss bil-miktub xi kodiċi ħafna malajr hemmhekk. JavaScript għandha arrays. Biss mod ieħor biex iżommu data madwar, utli ħafna. Sintassi sabiħ ħafna u faċli. Tuża parentesi kwadri aċċess kollox u jżomm kollox flimkien. Xejn wisq kumplessi. Il-ħaġa jibred dwar JavaScript u lingwi scripting b'mod ġenerali hija li inti ma għandekx għalfejn tinkwieta dwar daqsijiet array. Tista 'biss tuża array.length u jżommu rekord ta' dan, u wkoll il-firxa tista 'tikber jew tiċkien kif għandek bżonn li. Allura inti lanqas biss bżonn ninkwetaw dwar xi tip ta ', oh no, I bżonn jallokaw aktar affarijiet, jew xi ħaġa bħal dik. Il-ħaġa jibred hawnhekk hija li JavaScript għandu xi ħaġa imsejħa oġġetti. Huwa ta 'lingwa oġġett orjentati lejn, sabiex dak li jkun huwa, essenzjalment, mod għalik biex data grupp flimkien, kemmxejn simili għal Istituzzjonjijiet, imma int tista 'aċċess bħal Struct jew fi sintassi firxa assoċjattiva. Huwa pjuttost sempliċi u x'tista 'tagħmel ma' dan huwa tagħrif grupp flimkien jekk għandek mazz ta 'data thats relatati. Għaliex dan huwa l-affarijiet kollha li għandek bżonn biex jiddeskrivu karozza, inti m'għandekx bżonn li jkollhom fil-mazz ta 'postijiet differenti. Tista 'biss stick fis 1 oġġett fil JavaScript. As you know probabbilment, iterazzjoni hija waħda minn dawk il-kompiti tedious. Inti biss tagħmel dan fuq aktar mill-ġdid. Għandek bżonn biex jitkellmu ma 'kull oġġett fil-karozza, jew għandek bżonn li jmorru permezz ta 'kull oġġett fil-lista jew xi ħaġa bħal dik. Allura JavaScript għandha, simili għal PHP, sintassi foreach. F'dan il-każ, huwa fl loop. Inti tixtieq li tuża dan biss fuq oġġetti. Hemm xi problemi li jseħħu jekk tuża dan fuq arrays. Huwa ġeneralment hija waħda minn dawk l-affarijiet, madankollu, li huwa utli ħafna, għaliex inti telimina ħafna ta 'overhead għaliex inti ma għandekx pull up kollox fil-għan tiegħek mill yourself. Inti ma għandek tiftakar l-ismijiet kollha ewlenin. Inti biss tip ta tikseb lura f'dan sintassi. F'dan, ma, inti biss trid tiftakar li int jkollna lura l-ċwievet, b'mod simili ħafna għall hash tabella. Jekk tiftakar minn dan, meta inti tpoġġi fil string inti tista 'tikseb xi ħaġa out li jkollha valur assoċjat miegħu. X'tista 'tagħmel ma' dan huwa inti tista 'tgħid, id-dritt, I tpoġġi fil-karozza, u I sejħitilha Ferrari. Allura inti tista 'tpoġġi fis-sekwenza Ferrari again later, u tista' tikseb dan out. U inti tista 'tagħmel dan fil-linja, bil-fil loop. Hekk biss aktar dwar oġġetti. Il-ħaġa importanti minn dan għandek bżonn biex tiftakar hija li inti tista 'tuża l-Struct oġġett simili sintassi kull meta trid ma' dawn, ħlief jekk dak tiegħek ser tuża bħala string mhuwiex isem varjabbli valida. Mela jekk inti tħares lejn li hemm, għandna ewlenin bi spazji. Ukoll, jekk ġejt biex tpoġġi object.key, ispazju, bil, ispazju, spazji, biss li ma tkunx tagħmel sens sintattikament. Allura inti biss tista 'tagħmel dan ma' dan it-tip ta 'sintassi bracket. Ukoll, JavaScript huwa ferm 'ambitu għaqli li PHP. Għandek 2 modi kif jiġu indirizzati ambitu. Ma jistax ikollok il-var quddiem ta 'varjabbli, u li ifisser biss dan huwa globali. Tista 'tara minn kullimkien. Anki jekk ġejt biex tpoġġi dan fi jekk id-dikjarazzjoni, imkien ieħor fil-kodiċi tiegħek wara dak il-punt inti tista 'tara dak il-varjabbli. Ħaġa oħra, għalkemm, huwa bl-var, huwa limitat għal dak kollu funzjoni int pulzieri Jekk int mhux fil-funzjoni, ukoll, huwa globali. Imma jekk inti fil-funzjoni huwa viżibbli biss fi ħdan dik il-funzjoni. I m'għandhomx eżempju, iżda, yeah. Huwa wieħed minn dawk l-affarijiet fejn inti tista 'tmexxi dak varjabbli inti tixtieq li tkun globali, dak varjabbli inti tixtieq li tkun lokali, imma inti jeħtieġ li tkun attenta dwar dan, għaliex inti ma għandekx it-tip ta 'kontroll qamħ fin tagħmel fl C, fejn jekk xi ħaġa hija dikjarata għall-loop, li għaddej biex joqogħdu f'dak l għal loop. Il-ħaġa li għandna attwalment kura dwar l-użu JavaScript għall huwa manipulazzjoni paġni web, right? I mean, huwa għalhekk li għandna qed tagħmel dan. Biex tagħmel dan, aħna nużaw xi ħaġa imsejħa l-DOM. Il-Mudell Għan Dokument. Bażikament, dak li ma huwa jieħu kollha HTML tiegħek u mudelli out fis-mazz ta 'oġġetti li huma nested fi ħdan xulxin. Tibda ma 'xi ħaġa bħal din. Inti għandek, dwar id-dritt għalija, mazz ta 'kodiċi hemmhekk li tip ta' prodotti - Inti ser jaħseb li d jkun diffiċli ħafna biex jimmanipulaw, għaliex youd tkun parsing permezz mazz ta 'test u li għall-biċċa apparti affarijiet. U jekk dak ma kienx formattjati b'mod korrett? Affarijiet ħżiena jiġri. Allura JavaScript jieħu ħsieb ta 'dan għalik, u ikollok struttura data sabiħ, bħal dik fuq xellug tiegħi, fejn inti biss għandek dokument, u ġewwa li għandek xi ħaġa imsejħa HTML, u ġewwa li għandek ras u korp, u ġewwa li ras għandek titolu, etcetera, etcetera, etcetera. Dan jissimplifika manipulazzjoni paġna web b'tali mod li huwa biss, oh, I biss trid titkellem ma 'dan l-oġġett. Sort ta 'mod simili ħafna inti tkellem oġġett ieħor li tkun għamilt yourself. Like I said, l-DOM huwa fid-dokument oġġett. Jew huwa biss f'post wieħed u mbagħad inti tista 'tmur fi ħdanu biex isibu affarijiet, u inti tista 'tagħmel dan - dan huwa l-istil antik ta' nagħmilx hekk, hemm, fejn inti tagħmel document.getElementById, u mbagħad l-isem, u kif inti tista 'probabbilment tgħid, din gets dens ħafna wara ftit żmien. Allura inti probabilment ma tridx tagħmel dan. C'est pourquoi għandna il-ħaġa li jmiss aħna qed tmur biex jitkellmu dwar wara dan. Il-ħaġa prinċipali hawnhekk hija li, id-dritt, inti għandek dawn l-elementi kollha, id-dritt? Hekk forsi I jistgħu jibdlu l-kulur ta 'xi ħaġa meta l-tagħbijiet paġna. Allura dak? X'jiġri jekk l-utent tiegħi klikks xi ħaġa? I tixtieq li tagħmel xi ħaġa interessanti meta ikklikkja xi ħaġa. C'est pourquoi għandna avvenimenti. Tista ', bażikament, issib xi element fil DOM tiegħek, u mbagħad jgħidu, ħej. Meta dan tagħbijiet jew xi ħadd klikks, jew meta maws fuqha, tagħmel xi ħaġa magħha. U dak li għandek huwa, inti għandek funzjonijiet li jimmaniġġaw dan għalik. Dawn il-funzjonijiet huma handlers avveniment. What they're - huwa biss mod fancy ta 'tgħid, din il-funzjoni hija esegwita biss meta jiġri dan l-avveniment. Għalhekk mankijiet l-avveniment li jseħħ. Dan huwa kif inti jistabbilixxu avveniment handler. Għandi xi buttuna, u meta inti ikklikkja, tisplodi. Allura ma ikklikkja l-buttuna. Dan huwa mod wieħed ta 'toqrob dan, id-dritt? Għandek tag buttuna, u fuq ikklikkja inti għandek string li tgħid, oh, mill-mod, I do dan ħaġa jisplodi għalija. Inkella, huwa biss bħal buttuna regolari inti biss magħmula. Tista 'wkoll tagħmel dan il-mod ieħor, billi ħtif l-element DOM, iżda aħna ser tiffranka li wara nitkellmu dwar jQuery. JQuery: Huwa librerija li huwa cross-browser. Tista 'tużah fil xi ħaġa pjuttost ħafna. U hija biss jagħtik ħafna ta 'għodod li jaħdmu magħhom. Minħabba JavaScript, filwaqt qawwija, ma jkollhom l-għodda kollha li għandek bżonn barra mill-kaxxa li verament jindirizzaw app web inti tista 'tixtieq li tagħmel. Għalhekk tissimplifika ħafna affarijiet, jagħtik ħafna ta 'funzjonijiet barra mill-kaxxa li inti normalment għandek tikteb lilek innifsek, aktar u aktar u aktar mill-ġdid. U biss tagħmel affarijiet sempliċi ħafna. Inti ukoll għandek seletturi, li tavżak jitneħħew dawk l-elementi kollha mill DOM tiegħek ħafna aktar sempliċi, minflok li jużaw dawn is-sejħiet funzjoni twal ħafna. Aktar dwar dawn seletturi. Inti għandek, up hemm ikollok, ejja ngħidu I rridu nġibu element bl-ID "rock." Ukoll, fil jQuery, huwa biss $ u mbagħad string li għandha lira, u mbagħad "rock." Huwa sempliċi ħafna u ħafna aktar malajr milli l-mod JavaScript tradizzjonali ta 'indirizzar din il-problema. U inti għandek affarijiet simili għall-klassijiet u t-tipi element. jQuery huwa - waħda mill-karatteristiċi jibred huwa inti tista 'tip ta' kkompressat down mistoqsijiet tiegħek dwar DOM tiegħek ħafna, malajr ħafna. Issa aħna qed lura għall-immaniġġjar-każ, u dan huwa kif inti jimmaniġġaw avveniment wieħed fil jQuery. Allura dak li aħna qed tmur hawnhekk huwa li aħna qed tgħid, id-dritt. I jkollhom tikketta iskript, id-dritt? So I jkollhom din inline JavaScript. Dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex ngħid, id-dritt. Meta d-dokument huwa lest, li tfisser id-dokument kien mgħobbi, aħna se jmorru fl għal dik il-funzjoni, u aħna qed tmur biex ngħid, id-dritt, din il-funzjoni fil-fatt tagħmel xi ħaġa oħra. Huwa bażikament qal, id-dritt, jiksbu me-element bl-ID "myid." U mbagħad tagħti dan handler funzjoni li tesegwixxi meta inti ikklikkja dan. Bażikament dak li dan ma huwa, huwa jgħid, id-dritt. Il-paġna hija mgħobbija, hekk jien ser fi, isibu dan l-element, tagħtiha din handler avveniment, u huwa bażikament tistabbilixxi page tiegħek għalik. U dan huwa kif inti tixtieq li jaħsbu dwar tqandil avveniment. Inti biss tixtieq li jaħsbu dwar, id-dritt, meta jseħħ xi ħaġa, dak li nixtieq li jiġri? Inti ma tridx li wieħed jaħseb dwar, okay, I bżonn tagħmel ċert taħdidiet dan ħaġa li dan il-ħaġa, dan ħaġa blah blah blah, għaliex inti biss trid titkellem ħaġa f'termini ta 'avvenimenti. Meta jiġri dan, dan jiġri. Meta jiġri dan, li jiġri. U jekk l-affarijiet jikkawżaw affarijiet oħra, li l-kbir. Imma inti ma tridx tipprova tagħmel kodiċi kkumplikata fejn int triggering affarijiet multipli fl-istess ħin, għax int biss ser tagħti lilek innifsek ras. Id-dritt. Issa nistgħu nibdew page tagħna biex jimmaniġġaw avvenimenti, imma ejja ngħidu utent tiegħi klikks buttuna. X'jiġri jekk I trid tibgħat dik it-talba lura lill-server, imma ma rridx li rikarigu-paġna, minħabba li jkollhom biex jerġgħu jitgħabbew paġna ġdida kull wieħed ħin gets tip ta 'tedious, u għaliex għandi bżonn biex jiġbdu l-header-ġdid, u l-footer għal darb'oħra, u l-elementi kollha tal-paġna darb'oħra biss li jġedded l-greeting jew il-ħin? Allura hu għalhekk li aħna għandna xi ħaġa bħal Ajax. Dak li nistgħu nagħmlu hawn ma Ajax huwa nistgħu ngħidu, id-dritt, Irrid li jibgħat xi data lill-server, u nixtieq li tikseb rispons lura sabiex I tista 'taġġorna paġna tiegħi, jew forsi ftit jagħmlu xi kalkolu algorithmic li mhux bilfors juri xejn għall-utent. What do għandek bżonn tagħmel dan? Well, inti għandek bżonn URL għandek bżonn biex jitkellem. Server tiegħek tista 'mhux biss magically jisimgħu minn imkien. Ikollok bżonn li jkollhom post speċifiku int tibgħat din id-data li. U inti wkoll bżonn xi data li tibgħat, jew forsi huwa a query dataless. Biss inti tixtieq li ping lura lill-server u jgħidu, ħej, jien ħaj, jew xi ħaġa bħal dik. U allura inti tixtieq funzjoni li bażikament mankijiet ta 'suċċess. Ejja ngħidu ikollok lura xi informazzjoni minn server tiegħek, u inti tixtieq li tibdel it-titolu l-utent fuq il-paġna tagħhom. Allura inti se tikseb l-informazzjoni lura, u inti timbotta li l-iskrin. Dak li jiġri huwa, meta l-paġna hija lesta, inti toħloq ikklikkja fuq il-funzjoni għal din il-buttuna imsejħa greeter. X'inhu dan allura ma huwa, meta dik buttuna hu imbuttata, tkellem lill greetings.php, inti tagħmel talba POST, u inti tgħidli, ħej, nikseb me xi ħaġa mill-paġna tiegħek. Aħna ma verament bżonn biex jiddeskrivu, iżda greetings.php, ejja biss jgħidu, jagħti lura "bonjour dinja." Allura aħna terġa 'lura dan "bonjour dinja," u fuq is-suċċess ta' dan, jekk wieħed jassumi xejn tmur ħażin, allura aħna biss jmorru għal dan il-post fil-mira li aħna speċifikat u aħna biss stick-rispons fil hemmhekk. U dan huwa mod sempliċi ħafna li jitwaqqaf query Ajax. Malajr ħafna, Rob tip ta jissemma dan diġà, affarijiet jistgħu imorru ħażin, affarijiet ħżiena jista 'jiġri, sabiex inti tixtieq li tiffamiljarizza ruħek ma 'dawn il-kodiċijiet ta' rispons HTTP. X'inhuma dawn huma huma biss, bħal, 200, kollox mexa okay. Xi ħaġa oħra, affarijiet ħżiena li ġara. Huwa ġeneralment l-ħaġa li trid tiftakar. Iżda huwa sbieħ li tkun taf dawn kollha. U fl-aħħarnett, ladarba aħna ħadthom marret kollha permezz ta 'li, għandna bżonn biex jitkellmu malajr ħafna dwar id-disinn, u allura nistgħu tavżak kollha leave. Disinn. Affarijiet inti trid tiftakar. Staqsi lilek innifsek dawn il-mistoqsijiet: Min ser tkun qed tuża dan? Liema se jkunu huma li tkun qed tuża lilha għall? What do utenti tiegħi jimpurtahom? What ma li jimpurtahom? Inti biss ma jridux li tagħmel app u ħalliha biss jikbru u jsiru dan il-ġgant, ħaġa kollha li jikkunsmaw li inti ma tistax anki finitura. Inti tixtieq li jkollha għanijiet diskreti u l-pjanijiet u l-affarijiet inti trid tindirizza. Jagħmluha effortless. Kollha ta 'dan jgħid, bażikament, tagħmilha faċli għall-utent biex jużawha; ma jagħmilhiex blob ġgant ta 'test bħal dan slide hija, fil-fatt. Inti biss jixtiequ li din tkun xi ħaġa fejn huwa faċli ħafna għal xi ħadd li jmorru fl u jagħmlu dak li jridu jagħmlu. Inti ma tridx li jkollhom biex jinnaviga 5 paġni biex jiksbu l-funzjoni ewlenija tiegħek ta 'sit tiegħek. Jekk Google kellhom 5 paġni qabel ma inti tista 'anki tfittxija xi ħaġa, ebda wieħed jużaha. U fl-aħħarnett, prototip karta, focus group. Jkollhom disinn tajba u prattika ta 'ittestjar. Just għaliex taħseb li jaħdem għalik, ma jfissirx xi ħadd ieħor jaħseb taħdem. Iżda yeah, thats it. [CS50.TV]