>> DAVID J. Malan: Kull dritt.
Allura merħba lill-ewwel darba Postmortem CS50 għal kwizz.
Ħsibna aħna'd jinawgura din it-tradizzjoni din is-sena.
U dan se jkun opportunità jimxu permezz tal-
soluzzjonijiet għall-kwizz.
U aħna ser tħaffef jew inaqqsu bbażati fuq l-interess ta 'dawk hawn.
>> Allura int probabilment hawn għax int interessati dwar kif jista 'jkollok jew
kellha wkoll tirrispondi xi ta 'dawn il-problemi.
Allura għaliex ma we tagħti ħarsa fuq din it-taqsima l-ewwel?
Allura jkollna kordi.
Dan ħadt tliet verżjonijiet differenti ta 'programm li kien, finalment,
maħsuba biex tikseb string minn utent.
Jew le ma li kien xellug inti biex jiddeterminaw.
>> U aħna mitluba fil-Mistoqsija 0, jissoponi li Verżjoni 1 hija
miġbura u esegwiti.
Għaliex jista 'il-programm segfault?
Ewwel daqqa t'għajn, kwalunkwe suġġerimenti għaliex?
Yeah.
>> UDJENZA: So I remember jaraw dan eżempju preċedenti ta 'tħares lejn l-
char * i u tara l-iskan ta 'l iu jaraw għaliex dan huwa pointer, kif
ma taffettwa dak li inti skanjata fil-?
Huwa s jew l-indirizz ta 'i?
>> DAVID J. Malan: OK.
Tajba.
Allura finalment, is-sors ta 'xi problema huwa preżumibbilment se jitnaqqas
għal dak il-varjabbli s.
U huwa tabilħaqq varjabbli.
Dejta tat-tip ta 'dak il-varjabbli huwa char *, li jfisser li għaddej biex
fihom l-indirizz ta 'karattru.
U fih tinsab l-għarfien.
Huwa ser jinkludi l-indirizz ta ' karattru jew, b'mod aktar ġenerali, il-
indirizz ta 'l-ewwel karattru blokk kollu ta 'karattri.
>> Iżda l-qabda hija li scan s, skop ħajja, huwa jingħata indirizz u mogħtija
kodiċi format, bħal% s, moqri string fil-blokki ta '
memorja f'dak l-indirizz.
Iżda għaliex hemm l-ebda sinjal ugwali quddiem li semicolon fl-ewwel
linja tal-kodiċi, għaliex aħna ma attwalment jalloka memorja ma
malloc, għaliex hija ma attwalment talloka firxa ta 'ċertu daqs, kollha
qed tagħmel huwa qari tal-l-utent input keyboard fis xi kompluta
valur żibel, li huwa s-kontumaċja.
Allura odds huma int ser segfault jekk dak l-indirizz ma biss hekk jiġri
li tkun valur li inti tista ', fil-fatt, jikteb lill.
Daqshekk ħżiena li ma tallokax memorja tiegħek hemmhekk.
>> Allura fid-domanda 1, staqsejna, jissoponi li verżjoni 2 hija
miġbura u esegwiti.
Għaliex jista 'dan il-programm segfault?
Allura dan huwa wieħed inqas Buggy.
U hemm verament biss wieħed mod ovvju fejn tista '
jikkawżaw segfault hawn.
U dan huwa tematika.
Kwalunkwe ħin aħna qed jużaw c fil-memorja, liema inti tista 'tagħmel biex jinduċi segfault
mal-verżjoni 2?
>> UDJENZA: Jekk tuża dan input string li l-itwal minn 49
karattri.
>> DAVID J. Malan: Eżattament.
Kwalunkwe ħin li inti tara xi ħaġa fiss tul meta niġu għall-firxa, tiegħek
radar għandhom imorru off li dan jista 'jkun problematika jekk int ma iċċekkjar tal-
konfini ta 'firxa.
U li l-problema hawnhekk.
Aħna qed għadhom jużaw scanf.
Aħna qed għadhom jużaw% s, li jfisser jippruvaw biex jaqra string mill-utent.
Li għaddej biex jinqraw fis s, li, f'dan il-punt, huwa effettivament il-
indirizz ta 'blokki ta' memorja jew huwa ekwivalenti.
Hu l-isem ta 'firxa ta 'karattri ta' memorja.
>> Imma eżattament dan, jekk inti taqra string dan huwa itwal minn 49 karattri, 49
għaliex għandek bżonn spazju għall-backslash 0, int ser jfur
li buffer.
U inti tista 'tikseb xortik tajba u tkun tista' jiktbu karattru 51, 52, 53.
Iżda f'xi punt, l-OS se ngħid, no.
Dan żgur m'huwiex memorja int permess tmissx.
U l-programm se segfault.
>> Allura hemm, il-heuristics għandu jkun kwalunkwe ħin li inti stajt ltqajna tul fiss, għandek
tagħmel żgur li int iċċekkjar it-tul ta 'kwalunkwe huwa inti qed tipprova
biex jinqara fis dan.
>> UDJENZA: Allura biex issolvi dan, inti tista ' kellhom dikjarazzjoni verifika attwalment
huwa l-aktar fit-tul jew inqas minn?
>> DAVID J. Malan: Assolutament.
Inti sempliċiment għandek kundizzjoni li tgħid, jekk il -
jew pjuttost inti ma neċessarjament jaf bil-quddiem kemm-karattri l-
utent se tip, għaliex għandek tiġieġ u l-bajd.
Mhux sakemm inti stajt taqrah ma scanf inti tista 'figura kemm żmien huwa.
Iżda f'dak il-punt, huwa tard wisq, għaliex inti stajt diġà taqraha fis
xi blokk ta 'memorja.
Allura Bħala twarrib, il jevita librerija CS50 din il-kwistjoni għal kollox, recall
bl-użu fgetc.
U jgħid karattru wieħed fi żmien, flimkien, jafu toeing-ponta li inti
ma tistax overflow karattru jekk inti taqra wieħed kull darba.
>> Il-qabda hija ma recall getstring huwa li għandna kontinwament daqs ri
li blokki ta 'memorja, li huwa biss uġigħ.
Huwa ħafna ta 'linji ta' kodiċi sabiex tagħmel dan.
Allura approċċ ieħor ikun li attwalment jużaw ku, hekk
biex jitkellmu, ta scanf.
Hemm varjanti ta 'lott ta' dawn funzjonijiet li attwalment jikkontrollaw l-
tul ta 'kif ħafna karattri inti tista 'taqra maximally.
U inti tista 'tispeċifika, ma taqra aktar minn 50 karattru.
Allura li jkun approċċ ieħor iżda inqas akkomodazzjoni ta 'inputs akbar.
>> Allura mistoqsija 2 tistaqsi, jissoponi li verżjoni 3 hija miġbura u esegwiti.
Għaliex jista 'dak il-programm segfault?
Allura dan huwa wieħed attwalment l-istess tingħata risposta, anki jekk
jistenna ftit fancier.
Aħna qed tuża malloc, li jħoss simili aħna qed jagħtu lilna nfusna aktar għażliet.
U allura aħna qed ħelsien li memorja fl-aħħar.
Huwa għadu biss 50 bytes ta 'memorja.
Allura aħna xorta tista 'tipprova li jaqra f'51, 52, 1,000 bytes.
Li għaddej biex segfault għal eżattament l-istess raġuni.
>> Iżda hemm raġuni oħra wisq.
X'aktar jista malloc ritorn minbarra l-indirizz ta 'blokki ta' memorja?
Dan jista 'ritorn null.
U għaliex aħna mhux qed iċċekkjar għall- dan, aħna jista 'jkun tagħmel xi ħaġa
stupid għal raġuni oħra, li huwa li aħna jista 'jkun javżak scanf, moqri
input tal-utent mill-keyboard fis 0 lokazzjoni, null AKA.
U li, wisq, definittivament se jikkawżaw segfault.
Allura għall-iskop tal-kwizz, aħna kieku aċċettaw jew ta 'dawk bħala
raġuni valida.
Wieħed huwa identiku.
Wieħed huwa xi ftit aktar sfumata.
>> Fl-aħħar nett, rigward il-tal-programm użu tal-memorja, kif do verżjoni 2 u
Verżjoni 3 differenti?
Allura għal dak li hi ta 'valur, rajna provvista donnu ma jieqaf ta 'possibbli
tweġibiet għal dan.
U fost tweġibiet tan-nies, dak li konna bit-tama għal, iżda aħna aċċettati oħra
affarijiet, kien xi referenza għall- fatt li verżjoni 2 qed tuża
l-hekk imsejħa munzell.
Verżjoni 3 qed tuża l-borġ.
U funzjonalment, dan ma verament jagħmlu dak kollu li ħafna ta 'differenza.
Fl-aħħar tal-ġurnata, aħna qed għadhom biss jkollna 50 bytes ta 'memorja.
>> Iżda dan kien wieħed mis-soluzzjonijiet possibbli li konna tħares lejn.
Imma int ser tara, kif ikollok kwizzijiet tiegħek lura mill-TFS, li għamilna
jaċċettaw diskussjonijiet oħra ta 'tagħhom użi differenti tal-memorja kif ukoll.
Iżda munzell u borġ kien ikun tweġiba faċli li jmorru magħhom.
Kwalunkwe mistoqsijiet?
I jagħtuk Rob.
>> ROB BOWDEN: Allura problema 4.
Dan huwa dak fejn kellek li timla fin-numru ta 'bytes barra minn kull
dawn it-tipi differenti użati.
Allura l-ewwel ħaġa li naraw.
Assumi arkitettura 32-bit, bħal dan appliance CS50.
Allura waħda mill-affarijiet fundamentali dwar Arkitetturi 32-bit, li tgħidilna
eżattament kif big a pointer huwa għaddej li jkun fl-arkitettura.
>> Allura immedjatament, nafu li kull pointer tip huwa 32-bits jew 4 bytes.
Allura tħares lejn din it-tabella, a node * huwa tip pointer.
Li għaddej biex jkun ta '4 bytes.
Node Struct *, li litteralment identika għal star node.
U hekk li għaddej biex jkun ta '4 bytes.
String, u għalhekk ma look like a pointer s'issa, iżda l-typedef, a
string huwa biss char a *, li huwa tip pointer.
Allura li għaddej biex jkun ta '4 bytes.
>> Allura dawn it-tlieta huma 4 bytes kollha.
Issa, node u student huma daqsxejn aktar ikkumplikata.
Allura tħares lejn node u student, naraw node bħala numru sħiħ u pointer.
U student huwa żewġ pointers ġewwa ta 'dan.
Dan bl-inqas għall-każ tagħna hawn, il-mod li aħna jispiċċaw kalkolu tad-daqs tal-
din Struct huwa biss jammontaw kollox dan huwa ġewwa l-Struct.
>> Allura għal node, għandna integer, li huwa 4 bytes.
Għandna pointer, li huwa 4 bytes.
U għalhekk node wieħed ikun ser li jibdew 8 bytes.
U l-istess għall-istudenti, għandna pointer li l-4 bytes u ieħor
pointer li l-4 bytes.
Allura li għaddej biex tintemm jiddiżappuntaw 8 bytes.
Allura node u student huma 8 bytes.
U dawn it-tliet huma 4 bytes kollha.
Mistoqsijiet dwar li?
Iva.
>> UDJENZA: Huwa kien 64-bit arkitettura, kieku dik
tirdoppja kull wieħed minnhom?
>> ROB BOWDEN: ma jkunx tirdoppja kull wieħed minnhom.
Allura arkitettura 64-bit, huwa, għal darb'oħra, bidliet li ħaġa fundamentali li
pointer issa huwa 64 bits.
Yeah.
Allura pointer huwa 8 bytes.
Allura dawn li kienu 4 bytes ser ikunu 8 bytes.
Student, li kien żewġ pointers, ukoll, issa li għaddej biex
jkun 8 bytes, 8 bytes.
Huwa ser jagħmlu 16 bytes.
>> Iżda node xorta huwa 4 bytes.
Allura dan il-werrej huwa għaddej li jkun 8 bytes.
Dan huwa 4 bytes.
Allura node huwa biss se li jkun ta '12 bytes.
Kwalunkwe mistoqsijiet oħra fuq li wieħed?
Allura dak li jmiss, dawn huma il-kodiċijiet ta 'stat HTTP.
U kellek biex tiddeskrivi ċ-ċirkostanzi li taħthom dawn jistgħu
jiġu rritornati lilek.
problema waħda li smajt xi studenti għandhom hija li huma ppruvaw jagħmlu l-
żbalji jkun fuq il-għan tal-klijent.
Allura meta aħna nippruvaw nagħmlu t-talba għall-server, xi ħaġa tmur
ħażin fuq il-għan tagħna.
Iżda ġeneralment, dawn il-kodiċijiet huma jkun mibgħut lura mill-server.
Hekk irridu insemmu x'inhu għaddej żbaljata jew dritt fuq il-server li
tikkawża dawn l-affarijiet jiġu rritornati.
Allura għaliex jista 'server prospetti kodiċi istat 200?
Kwalunkwe ħsibijiet?
>> Yeah.
Allura xi ħaġa dwar b'suċċess it-talba għaddiet.
U dawn qed kapaċi li jirritornaw x'ikun inti mitlub.
Hekk kollox kien multa.
What about 302 misjuba?
Yeah.
>> UDJENZA: Il-server kien qed ifittex għal dak li inti mitlub.
Iżda ma setgħetx issib lilha.
Allura hemm żball.
>> ROB BOWDEN: Allura l-server kien tfittex dak li riedu.
Hekk biss tfittex hawn, 302 misjuba, hija kienet f'pożizzjoni li jsibuha.
>> UDJENZA: Jien sorry.
Misjuba ifisser li huma għamlu jsibuha.
Jiddispjacini.
>> ROB BOWDEN: So 302 misjuba.
Il-server huwa kapaċi li jsibu dak li riedu.
>> UDJENZA: Imma din mhix l-wiri?
>> ROB BOWDEN: Id-differenza bejn dan 302 u 200 huwa li
jaf dak li trid.
Iżda mhuwiex eżattament fejn inti ridt li jistaqsu.
Allura 302 hija direzzjoni ġdida tipiku.
Allura inti mitlub paġna.
Huwa jaf, oh, I jridu li inti tirritorna dan.
Iżda dan huwa bi URL differenti.
Allura ħej, inti fil-fatt tixtieq dan.
>> DAVID J. Malan: Huwa biċċa li qal li aħna taw inti guys direzzjoni ġdida
funzjoni li jintuża l-funzjoni header li, imbagħad, stampata post,
kolon, u allura l-URL li inti tixtieq li tirrifjuta l-utent.
Anke jekk inti ma tara 302 espliċitu hemmhekk, dan huwa dak PHP
se magically daħħal l-header tgħid eżattament dak li Rob qal hemm -
misjuba.
Iżda mur hawn minflok.
>> ROB BOWDEN: OK.
Allura dak dwar 403 pprojbit?
>> UDJENZA: Naħseb li huwa li s-server hija bażikament tgħid li l-klijent
ma jistgħux jaċċessaw il-home page.
>> ROB BOWDEN: Allura iva.
Ukoll, ir-risposta tipiċi konna jistennew xi ħaġa simili, il-fajls
mhumiex chmodded xieraq.
Li probabbilment taħt liema ċirkostanzi inti raw lilhom.
Iżda hemm raġuni li l-klijent jista 'jkun tort hawn.
Hemm attwalment kodiċi ieħor status -
401.
Allura dawn huma simili ħafna.
>> 401 hija mhux awtorizzat.
U 403 huwa pprojbit.
U għalhekk mhux awtorizzat inti esklussivament nikseb jekk int ma logged pulzieri
Iżda qtugħ fil jista 'jfisser li inti huma awtorizzati.
Imma jekk int diġà illoggjat u int xorta ma jkollhomx permess, imbagħad
inti tista 'wkoll tikseb pprojbit.
Mela jekk inti illoggjat u ma jkollhom permess, projbiti wkoll
xi ħaġa li tista 'tikseb.
>> DAVID J. Malan: U l-mekkaniżmu li dawn il-problemi huma normalment
solvuti fuq is-server huwa via liema kmand?
Chmod, jekk huwa, tabilħaqq, permessi joħroġ fuq il-fajl jew direttorju.
>> ROB BOWDEN: Imbagħad 404 ma nstabx.
Yeah.
Allura b'differenza 302 fejn ma kienx eżattament fejn int tistaqsi imma jaf liema
tixtieq, dan, hija biss għandha ebda idea dak li trid.
U inti ma jitlob xi ħaġa valida.
418 jien teapot u mbagħad 500 server intern.
Allura għaliex jista 'ikollok dan?
>> Allura segfault -
I attwalment ma jafux il-gradazzjoni standard għal din.
Iżda jekk il-kodiċi PHP tiegħek kienet xi ħaġa ħażin fiha, fit-teorija, din tista '
attwalment segfault, f'liema każ, dan 500 żball server intern, xi ħaġa
li hu ħażin ma 'l server tiegħek konfigurazzjoni.
Jew hemm żball sintassi fil-kodiċi PHP tiegħek.
Jew xi ħaġa ħażina li qed jiġri.
>> DAVID J. Malan: Aħna ma tara segfault fost tweġibiet ftit tan-nies.
U teknikament, jista 'jiġri.
Iżda li tkun PHP, il-programm miktuba minn nies oħra, attwalment
segfaulted, li biss jekk dawk il-persuni invitat up u kiteb kodiċi Buggy fl
interpretu tagħhom kieku PHP innifsu segfault.
Allura anke jekk 500 huwa bħal segfault fl-ispirtu, huwa kważi dejjem l-
riżultat ta 'kwistjoni fajl konfigurazzjoni ma 'web server tiegħek jew, kif Rob imsemmi,
żball sintassi, bħalek ma jagħlqu kwotazzjoni.
Jew int mitluf virgola x'imkien.
>> UDJENZA: Dan għall-pset Shuttle, I jaħsbu meta I ma kien darba I għafast il-
browser, iżda xejn daħal up, dak li jissejjaħ paġna abjad.
Iżda kien minħabba l-kodiċi.
Naħseb li kien JavaScript, right?
>> ROB BOWDEN: Yeah.
>> UDJENZA: Would dan l-iżball xorta toħroġ?
>> ROB BOWDEN: Allura inti ma gotten dan l-iżball għaliex kollox
mill-perspettiva tal-web server kien kompletament multa.
Imma inti mitlub index.html.
Inti mitlub shuttle.js u service.js.
U kien kapaċi b'suċċess jirritornaw lilek kollha ta 'dawk l-affarijiet -
200.
OK.
Huwa biss meta browser tiegħek ppruvaw tinterpreta l-kodiċi JavaScript li
Huwa simili, stenna, dan mhuwiex żball JavaScript valida.
Kwalunkwe mistoqsijiet oħra?
Kull dritt.
>> DAVID J. Malan: Allura li jmiss up kien numru 11.
U 11 kienet l-scariest għal ħafna nies.
Allura l-aktar ħaġa importanti li wieħed jinnota hawnhekk kienet li dan kien, fil-fatt, dwar
lista marbuta doppjament.
Iżda dan ma kienx l-istess bħal tas-sena loħra problema lista marbuta doppjament,
li ma jagħtuk l-twiddiba li il-lista tista ', fil-fatt, tkun mhux magħżul.
>> Allura l-fatt li l-lista kienet mhux magħżul u l-fatt li din il-kelma kienet
li enfasizzat hemm kienet maħsuba biex twassal li dan huwa effettivament simplifikazzjoni
ta 'dak li kieku kien ikun problema aktar ta 'sfida
u wieħed itwal.
Allura żball komuni hawn kien li poġġew Soluzzjoni tas-sena loħra fuq waħda tiegħek
pager u mbagħad biss bl-addoċċ kopja li stabbiliti bħala r-risposta, li huwa d-dritt
twieġeb għal mistoqsija differenti simili fl-ispirtu.
Iżda l-irqaqat hawn kienu kif ġej.
>> Allura wieħed, aħna għandna node dikjarati u definit fil-mod tas-soltu hawnhekk.
Imbagħad aħna lista definita ta 'jkun globali pointer initialized li null.
Imbagħad apparentement, hemm żewġ funzjonijiet għandna prototipi għall hawn, daħħal
u neħħi.
U allura aħna għandna xi kodiċi tal-kampjun hawn jagħmlu mazz ta 'inserzjonijiet.
U allura aħna nitolbuk biex jitlesta l- implimentazzjoni tal daħħal hawn taħt f'tali
b'mod li huwa introduċa n fil-lista fil-ħin kostanti, enfasizza wkoll,
anki jekk diġà preżenti.
>> Allura l-sbuħija li tkun tista 'daħħal fil-ħin kostanti huwa li jimplika
li inti għandek daħħal l-node ġdid fejn?
Fil-faċċata.
Għalhekk jelimina, B'xorti tajba, għall-inqas wieħed mill-każijiet li jintużaw biex jeħtieġu
saħansitra aktar linji ta 'kodiċi, bhalu għamlet aħħar sena u anke fil-klassi meta aħna
tkellem permezz ta 'dan it-tip ta' ħaġa mal-bnedmin u ma 'xi
kodiċi psewdo verbali.
Allura fis-soluzzjoni hawn, ejja skip fuq għal dak biss li jkollhom fuq viżwali
l-iskrin.
>> Avviż li aħna qed tagħmel dan li ġej.
U wkoll avviż-simplifikazzjonijiet oħrajn kienet li anke jekk huwa
diġà preżenti, għalhekk dan ifisser li anki jekk in-numru huwa diġà hemm, inti tista '
biss bl-addoċċ daħħal ieħor kopja ta 'dan.
U li, wisq, kien intenzjonat li jkun simplifikazzjoni, sabiex inti tista '
tiffoka fuq, verament, xi wħud mill-aktar parti intellettwalment interessanti u
mhux biss xi żball kkontrollar addizzjonali minħabba ż-żmien limitat.
>> Allura f'dan il-soluzzjoni tal-kampjun, aħna jallokaw a pointer fuq il-naħa tax-xellug
ġenb hawn biex node.
Issa, jirrealizzaw li pointer, kif Rob qal, huwa biss 32 bits.
U din attwalment ma fihom indirizz sakemm inti
tassenja din il indirizz.
U nagħmlu dan fuq il-lemin naħa via malloc.
Bħal ċittadin tajba, aħna jivverifikaw li malloc mhuwiex, fil-fatt, null, sabiex
aħna ma joħolqu aċċidentalment a segfault hawn.
U kull darba li tuża malloc fil-ħajja, inti għandu jiġi verifikat għal null, lest
għandek bug sottili.
>> Imbagħad aħna initialize li null minn tassenja n u Preċedenti u li jmiss.
U f'dan il-każ hawnhekk, I initialized preċedenti li null, għaliex dan ġdida
node se tkun l-ġodda bidu tal-lista tiegħi.
Allura hemm għaddej li jkun xejn quddiemha.
U nixtieq li tehmeż essenzjalment l- lista eżistenti għall-node ġdid billi
iffissar li jmiss ugwali għall-lista innifsu.
Imma jien ma jsirx għadha biss.
Allura jekk il-lista nnifisha diġà kienu jeżistu, u kien hemm node mill-inqas wieħed
diġà fis-seħħ, jekk dan huwa l-lista hawn u I daħħal node ġdid hawn, I
għandek bżonn tagħmel ċert li node ex tiegħi punti lura lill node ġdid tiegħi,
għaliex dan huwa, għal darb'oħra, lista marbuta doppjament.
>> Allura aħna tagħmel verifika sanità.
Jekk il-lista ma huwiex null, jekk hemm diġà lymph wieħed jew aktar hemmhekk, allura
jżidu li back referenza biex ngħidu hekk.
U allura l-ħafna aħħar ħaġa li għandna bżonn tagħmel huwa attwalment taġġorna l-globali
lista varjabbli ruħha għall-punt għal dak node ġdid.
Yeah.
>> UDJENZA: Fil-vleġġa pointer [Inaudible] hija ugwali null, ma li
tittratta l-lista għaliex il-lista huwa null?
>> DAVID J. Malan: Nope.
Dan huwa sempliċiment me tkun proattiv bir-reqqa, b'mod li jekk dan huwa tiegħi
lista oriġinali ma forsi xi lymph aktar minn hawn u jien ddaħħal tiegħi
node ġdid hawn, hemm għaddej li tkun xejn hawn.
U nixtieq li jaqbdu l-idea billi jistabbilixxu preċedenti li
null fuq il-node ġdid.
U preżumibbilment, jekk il-kodiċi tiegħi hija korretta u hemm ebda mod ieħor li daħħal
punti strateġiċi oħrajn minn din il-funzjoni, preżumibbilment, anki jekk il-lista diġà
lymph wieħed jew aktar fiha, preżumibbilment l- lista, l-ewwel node, ikollu
pointer preċedenti ta null innifsu.
>> UDJENZA: U biss segwitu.
Ir-raġuni inti tpoġġi pointer ugwali jmiss lista int tagħmel il-pointer
qabel lista li huwa tipponta għall-ieħor, I raden -
I Don -
biss jelenka?
>> DAVID J. Malan: Eżattament.
U hekk ejja attwalment jikkunsidraw żewġ każijiet hawn verament, anki jekk il-
sabiex aħna ser jikkunsidraw lilhom mhix pjuttost l-istess bħall-kodiċi.
Iżda fuq livell għoli, jekk din tirrapreżenta lista u din hija 32-bit
pointer, ix-xenarju sempliċi hija li dan huwa null fil-kontumaċja.
U jissoponi nixtieq li daħħal il- numru 50 kien l-ewwel numru.
Hekk jien ser imorru quddiem u jallokaw node, li se jkun fiha
tliet oqsma -
n, qabel, u li jmiss.
>> Jien ser tpoġġi l-għadd 50 hawn, għaliex dan se jkun n.
Dan se jkun jmiss.
U dan se jkun ta 'qabel.
U hekk x'għandi nagħmel f'dan il-każ?
Well, stajt biss isir linja 1 hawn.
Pointer n gets n.
Jien imbagħad qal, qabel għandhom jingħataw null.
Allura dan se jkun null.
Imbagħad jien se ngħid li jmiss hija se tikseb lista.
>> U dan biss xogħlijiet out ukoll.
Dan huwa null.
U hekk jien qal, il-l-node ġdid li jmiss qasam għandha tikseb xi din hija.
Allura li tpoġġi null ieħor hemmhekk.
U allura l-aħħar ħaġa I do huwa check hawn.
Jekk il-lista mhix ugwali għal null, iżda hija ugwali għal null, hekk aħna skip li
għal kollox.
U hekk kollha I do jmiss huwa lista gets pointer, li pictorially jirriżulta
stampa bħal dik.
Allura dak xenarju wieħed.
>> U dak li inti kienu tistaqsi dwar speċifikament hija sitwazzjoni bħal din,
fejn diġà għandna lista one-node.
U jekk immur lura up fl-oriġinal dikjarazzjoni problema, il-li jmiss aħna ser
daħħal ngħid huwa 34, biss għall- raġunijiet ta 'diskussjoni.
Hekk jien ser biss konvenjenti tfassal dik hawn fuq.
Stajt biss malloced.
Ejja nassumu jien iċċekkjar għall null.
>> Issa, jien ser initialize n li jkun 34.
U dan se jkun n.
Dan se jkun jmiss.
U dan se jkun ta 'qabel.
Ejja jagħmlu ċert I ma tikseb dan lura.
Preċedenti jiġi l-ewwel fid-definizzjoni.
Let me jiffissaw dan.
Dan huwa qabel.
Dan huwa li jmiss.
Anke jekk dawn huma identiċi, ejja tinżamm konsistenti.
>> Preċedenti.
Dan huwa li jmiss.
So I stajt biss malloced nota tiegħi, ikkontrollati għall null, assenjati 34 fil-node.
Preċedenti gets null.
Allura li tagħti me dak.
Next gets lista.
Allura lista hija din.
Allura dan huwa l-istess bħal issa tpinġija dan vleġġa, b'tali mod li dawn jindikaw waħda
fl-istess.
U mbagħad jien iċċekkjar jekk lista mhuwiex ugwali għal null.
U m'humiex dan iż-żmien.
Imbagħad jien ser tagħmel lista preċedenti gets pointer.
>> Allura lista preċedenti gets PTR.
Allura dan għandu l-effett li tpoġġi vleġġa grafika hawn.
U li jkollna ftit immewġin, il-linji.
U mbagħad, fl-aħħarnett, I taġġorna lista għall-punt li pointer.
Hekk issa dan jindika li dan Guy.
U issa, ejja do a quick check sanità.
>> Hawn il-lista, li hija il-varjabbli globali.
L-ewwel node huwa, tabilħaqq, 34, minħabba Jien wara dik vleġġa.
U li korretta għaliex nixtieq li daħħal fil-bidu tal-lista
kollha lymph ġodda.
Qasam li jmiss tiegħu twassalni għal dan Guy.
Jekk I iżommu għaddejjin, I hit li jmiss huwa null.
Hekk hemm ebda lista aktar.
Jekk I hit preċedenti, nasal lura fejn I jistennew.
>> Allura għad hemm ftit indikaturi, ovvjament, li jimmanipulaw.
Imma l-fatt li inti qalulhom li tagħmel din fil-ħin kostanti ifisser li inti biss
għandhom numru finit ta 'affarijiet int permess li tagħmel.
U dak li huwa dak in-numru?
Jista 'jkun pass wieħed.
Jista 'jkun tnejn.
Jista 'jkun 1,000 passi.
Iżda huwa finite, li jfisser li inti ma tistax kwalunkwe tip ta 'looping għaddej
hawn, l-ebda recursion, ebda loops.
Huwa biss ltqajna biex ikunu linji hard-kodifikati ta 'kodiċi kif għandna f'dan kampjun.
>> Allura l-problema li jmiss 12 talabna biex tlesti l-implimentazzjoni tal neħħi
taħt b'tali mod li tneħħi n mil-lista fil-ħin lineari.
Hekk ikollok ftit aktar kamra wiggle issa.
Inti jista 'jassumi li n, jekk preżenti fil-lista, se jkunu preżenti
mhux aktar minn darba.
U li wisq huwa intenzjonat li jkun ibbażat fuq il-kwizz simplifikazzjoni suppożizzjoni, hekk
li jekk issib in-numru 50 x'imkien fil-lista, inti ma wkoll
jkollhom għalfejn tinkwieta dwar tkompli jtenni, tfittex kull possibbli
kopja ta '50, li kien biss jiddevolvu fis xi dettall fil-ħin limitat.
>> Allura ma tneħħi, dan wieħed kien definittivament aktar ta 'sfida u aktar
kodiċi li tikteb.
Iżda fl-ewwel daqqa t'għajn, franchement, huwa jista ' tfittex xi ħaġa kbira u simili
hemm ebda mod inti jista 'jkollhom toħroġ bi fuq kwizz.
Imma jekk aħna niffukaw fuq il-passi individwali, wieħed jittama, se f'daqqa
jolqot lilek li kull wieħed minn dawn individwali passi jagħmel sens ovvju
retrospettivament.
Mela ejja tagħti ħarsa.
>> Allura l-ewwel, aħna initialize pointer li tkun lista innifsu.
Għaliex nixtieq ħin lineari, li l-mezzi Jien ser ikollhom xi loop.
U mod komuni biex jtenni fuq il- nodes fi struttura lista jew kwalunkwe tip
ta 'struttura iteratively huwa li jieħdu pointer lejn il-quddiem tad-data
istruttura u mbagħad biss tibda aġġornament dan u jimxu tiegħek mod
permezz tal-istruttura tad-data.
Hekk jien ser tagħmel eżattament dan.
>> Filwaqt pointer, varjabbli temporanju tiegħi, mhuwiex ugwali għal null, ejja
imorru quddiem u jiċċekkjaw.
Did I nikseb xxurtjati?
Huwa l-qasam n fil-node jien bħalissa tħares lejn ugwali għall-
Numru jien infittxu?
U jekk iva, ejja nagħmlu xi ħaġa.
Issa, avviż dan jekk il-kundizzjoni jdawru l kollu
ġejjin linji ta 'kodiċi.
Dan huwa l-unika ħaġa I jimpurtahom - sejba ta 'numru in kwistjoni.
Allura hemm ebda inkella, li jissimplifika affarijiet kunċettwali ftit.
>> Imma issa, I realizzati, u inti jista 'jkollok biss realizzati dan wara ħsieb
permezz daqsxejn, hemm attwalment żewġ każijiet hawn.
Wieħed huwa fejn il-node huwa fil- bidu tal-lista, li hija
ftit annoying, għaliex thats każ speċjali, għax għandek biex jittrattaw
ma 'dan il-ħaġa, li huwa l-uniku anomalija.
Kullimkien inkella fil-lista, huwa l-istess ħaġa.
Hemm node preċedenti u li jmiss node, node preċedenti, node jmiss.
Iżda dan Guy huwa ftit speċjali jekk hu fil-bidu.
>> Allura jekk il-pointer huwa daqs il-lista nnifisha, hekk jekk jien fil-bidu ta '
il-lista u I sabu n, I bżonn biex jagħmlu ftit affarijiet.
Waħda, I bżonn għall-bidla lista biex punt għall-qasam li jmiss, 50.
So jissoponi li jien jippruvaw biex jitneħħew 34.
Allura li dan Guy ltqajna biex tmur bogħod fi ftit mument.
>> Hekk jien se ngħid, lista gets pointer li jmiss.
Ukoll, dan huwa pointer.
Li jmiss hija li tipponta hawn fuq.
Allura dan qed tinbidel dan id-dritt arrow issa għall-punt li dan Guy hawn.
Issa, ftakar, għandna varjabbli temporanja.
Allura aħna ma orfni xi nodes, minħabba I wkoll ikollhom dan Guy fil tiegħi
implimentazzjoni tal tneħħi.
Allura issa, jekk il-lista nnifisha mhix null, I ħtieġa li jiffissaw ftit xi ħaġa.
>> I bżonn issa tiżgura li dan vleġġa, li qabel kienu tipponta
50-34, dan s'est li jmorru lil hinn, għaliex jekk jien tipprova teħles
ta '34, 50 kienu aħjar ma jżomm kwalunkwe tip ta 'back referenza għalih bħala l-
vleġġa suġġerit.
So I biss ma din il-linja.
Mela allura jien jsir.
F'dak il-każ huwa attwalment pjuttost faċli.
Tqattiegħ off-kap tal-lista huwa relattivament sempliċi.
>> Sfortunatament, hemm dan blokk annoying ieħor.
Allura issa, I għandek tikkunsidra l-każ fejn hemm xi ħaġa fin-nofs.
Iżda mhux wisq terribbli, ħlief għal sintassi bħal dan.
Mela jekk jien ma fil-bidu tal- lista, jien x'imkien fin-nofs.
U din il-linja hawnhekk qed tgħid, bidu fi kwalunkwe node int fuq.
Mur fil-qasam li jmiss tal-node qabel u l-punt li fil-pointer.
>> Ejja nagħmlu dan pictorially.
Li kien qed ikkumplikata.
Mela jekk għandi oqsma preċedenti hawn - ejja tagħmel dan - oqsma li jmiss hawn.
Jien ser tissimplifika pointers tiegħi pjuttost minn jiġbed mazz sħiħ ta '
affarijiet quddiem u lura crisscrossing xulxin.
U issa, ejja biss jgħidu li dan huwa 1, 2, 3 għall-fini ta 'diskussjoni, anke
għalkemm dan ma line up ma ' il-problema inkwistjoni.
>> Allura hawnhekk lista marbuta tiegħi.
I am tipprova tneħħi tnejn f'din verżjoni partikolari ta 'l-istorja.
Hekk stajt aġġornati pointer biex tkun tipponta lejn dan Guy.
Allura dan huwa PTR.
Hu tipponta hawn.
Din hija lista, li teżisti globalment bħal qabel.
U hu tipponta hawn x'ikun.
U issa, jien tipprova tneħħi tnejn.
>> Mela jekk pointer hija li tipponta hawn, jien ser isegwu, apparentement, il-
pointer preċedenti, li jpoġġi lili fl-1.
Jien imbagħad se ngħid li jmiss qasam, li jwassalni fuq għal dan
kaxxa hawn, se pointer ugwali jmiss.
Hekk jekk dan il-werrej, dan huwa li jmiss.
Dan ifisser li dan vleġġa bżonnijiet għall-punt li dan Guy.
>> Allura dak li l-linja tal-kodiċi għandu biss jsir huwa xi ftit ta 'dan.
U issa, dan huwa tfittex bħal pass fid-direzzjoni t-tajba.
Aħna essenzjalment tixtieq snip 2 out tal-nofs ta '1 u 3.
Għalhekk jagħmel sens li rridu rotta din pointer madwaru.
Allura din il-linja li jmiss qed jiċċekkja jekk pointer jmiss ma huwiex null, hemm
tabilħaqq xi ħadd li d-dritt ta '2, li jfisser irridu wkoll tagħmel
ftit snip hawn.
>> So I issa jeħtieġ li jsegwu dan il-werrej u taġġorna l-pointer preċedenti dwar
dan Guy li tagħmel ftit ta ' workaround hawn il-punt hawnhekk.
U issa, viżwalment dan huwa sbieħ.
Huwa ftit messy f'dak hemm ebda waħda tipponta lejn l-2 aktar.
2 hija li tipponta lejn ix-xellug.
U 2 hija li tipponta lejn il-lemin.
Imma hu jista 'jagħmel kull ma trid, għax hu wasal biex tikseb meħlusa.
U ma jimpurtax liema dawk il-valuri huma aktar.
>> X'hemm importanti huwa li l-bqija guys huma routing hawn fuq
u taħt lilu issa.
U fil-fatt, dan huwa dak li nagħmlu jmiss.
Aħna pointer ħielsa, li jfisser li għandna tgħid il- sistema operattiva, inti merħba
li titlob lura dan.
U mbagħad fl-aħħar, nerġgħu lura.
Else impliċitament, jekk aħna ma ġewx lura s'issa,
konna ltqajna biex iżommu tfittex.
Allura pointer ugwali pointer li jmiss biss ifisser jimxu dan Guy hawn.
Nimxu dan Guy hawn.
Nimxu dan Guy hawn jekk, fil-fatt, aħna ma sabx l-għadd
aħna qed tfittex għal darb'oħra.
>> Allura franchement, jidher kompletament kbira, I think, fl-ewwel
daqqa t'għajn, speċjalment jekk inti tħabtu ma 'dan matul l-kwizz mbagħad tara
xi ħaġa bħal din.
U inti pat lilek innifsek fuq id-dahar.
Ukoll, hemm ebda mod I jista 'jkollhom toħroġ ma 'dak fuq il-kwizz.
Iżda nixtieq jargumentaw, inti tista 'jekk inti break isfel lejn dawn individwali
każijiet u biss walk permezz ta 'dan bir-reqqa, għalkemm, ċertament, taħt
ċirkostanzi stressanti.
>> Thankfully, l-istampa magħmula kollox kuntenti.
Inti tista 'tiġbed dan kwalunkwe numru ta 'modi.
Inti ma għandekx tagħmel l crisscrossing ħaġa hawn.
Inti tista 'tagħmel dan ma dritta linji bħal dan.
Iżda l-gist ta 'din il-problema, fil- ġenerali, kien li tirrealizza li l-
stampa fl-aħħar għandha tfittex ftit xi ħaġa bħal din, minħabba li
ħin kostanti implika li inti żżomm disturbazzjoni u disturbazzjoni u disturbazzjoni l-
punti strateġiċi ġodda fil-bidu tal-lista.
Kwalunkwe mistoqsijiet?
Probabbilment l-aktar sfida ta ' ċertament l-mistoqsijiet kodifikazzjoni.
>> UDJENZA: Allura huwa lista simili għal ras eżempji preċedenti.
>> DAVID J. Malan: Eżattament, eżattament.
Just isem differenti għall- varjabbli globali.
Madwar id-dinja liema?
>> ROB BOWDEN: OK.
Allura dan huwa dak fejn inti kellu jikteb il-paragrafu.
Xi nies kiteb esejs għal din il-mistoqsija.
Imma inti biss bżonn jużaw dawn is-sitt termini biex jiddeskrivu dak li jiġri meta
inti tipprova tikkuntattja facebook.com.
So I ser biss jitkellmu permezz tal-proċess jużaw dawn it-termini kollha.
Allura fil-browser tagħna, aħna tip facebook.com u hit Ikteb.
Allura browser tagħna għaddej biex jinbena HTTP titlob li għaddej biex tibgħat
permezz ta 'xi proċess biex Facebook għal Facebook biex jirrispondu lilna mal-
HTML tal-paġna tagħha.
>> Allura dak li huwa l-proċess li t-talba HTTP
attwalment gets Facebook?
Allura l-ewwel, għandna bżonn biex tittraduċi Facebook.com.
Hekk biss minħabba l-isem Facebook.com, fejn attwalment ma t-talba HTTP
bżonn biex tmur?
Għalhekk għandna bżonn li jittraduċu Facebook.com għal indirizz IP, li unikament
jidentifika liema magna għandna attwalment trid tibgħat din it-talba.
Laptop tiegħek ikollu indirizz IP.
Xejn konness mal-internet għandha l-indirizz IP.
>> Allura DNS, Domain Name System, li hija dak li għaddej biex jimmaniġġaw it-traduzzjoni
minn facebook.com għal indirizz IP li inti fil-fatt tixtieq tikkuntattja.
Allura aħna tikkuntattja l-DNS servers u jiġifieri, dak li huwa facebook.com?
Huwa jgħid, oh, huwa IP indirizz 190.212 xi ħaġa, xi ħaġa, xi ħaġa.
Kull dritt.
Issa, naf liema magna I tixtieq tikkuntattja.
>> Mela allura inti tibgħat talba HTTP tiegħek lejn dik magna.
Allura kif ma jiksbu għal dak magna?
Ukoll, it-talba jmur minn router li bouncing router.
Ftakar l-eżempju fil-klassi, fejn għandna attwalment raw ir-rotta li l-
pakketti ħa meta aħna ppruvaw biex jikkomunikaw.
Rajna dan jaqbżu fuq l-Atlantiku Oċean fuq punt wieħed jew ikun x'ikun.
>> Allura l-aħħar port tul.
Allura issa dan huwa fuq il-kompjuter tiegħek.
Inti jista 'jkollhom affarijiet multipli bħalissa komunikazzjoni mal-internet.
So I tista 'tkun qed taħdem, jiġifieri, Skype.
I jista 'jkollhom web browser miftuħa.
I jista 'jkollhom xi ħaġa li torrenting files.
Allura kollha ta 'dawn l-affarijiet huma komunikazzjoni mal-
internet b'xi mod.
>> Allura meta l-kompjuter tiegħek tirċievi xi data mill-internet, kif ma dan
taf liema applikazzjoni attwalment irid li l-data?
Kif tkun taf jekk din partikolari data huwa maħsub għall-
torrenting applikazzjoni għall-kuntrarju għall-web browser?
Allura dan huwa l-iskop tal-portijiet f'dak dawn l-applikazzjonijiet jkollhom
ddikjaraw port fuq il-kompjuter tiegħek.
Allura web browser tiegħek jgħid, ħej, Qiegħda nisma fuq il-port 1000.
U l-programm torrenting tiegħek huwa qal, Qiegħda nisma fuq il-port 3000.
U Skype jgħid, jien jużaw port 4000.
>> Allura meta ikollok xi data li tappartjeni għal waħda minn dawn l-applikazzjonijiet, id-data
huwa mmarkat li magħhom port attwalment għandhom jintbagħtu flimkien biex.
Allura dan jgħid, oh, I jappartjenu port 1000.
Naf imbagħad I bżonn biex jgħaddi din flimkien biex web browser tiegħi.
Allura r-raġuni huwa rilevanti hawnhekk hija li servers mill-web tendenza li
jisimgħu fuq il-port 80.
Allura meta I tikkuntattja Facebook.com, jien komunikazzjoni ma 'xi magna.
Imma I bżonn biex ngħid li port ta 'dak magna Irrid li jikkomunikaw ma.
U servers mill-web tendenza li jkunu jisimgħu fuq il-port 80.
>> Jekk riedu, dawn jistgħu jistabbilixxu li up hekk hija telenka fuq port 7000.
U mbagħad fil-web browser, I tista ' manwalment tip Facebook.com: 7000 sa
tibgħat it-talba lill-port 7000 ta 'web server Facebook.
>> DAVID J. Malan: U f'dan il-każ, anki għalkemm aħna ma jeħtieġu li n-nies
jsemmi dan, f'dan il-każ, liema port kieku t-talba fil-fatt imorru għall?
Erġa 'pprova.
Eżattament.
Ma tfittex għal dan, iżda subtlety li hemm xejn l-aħħar.
>> ROB BOWDEN: Allura l-HTTPS, peress li huwa jisimgħu speċifikament għall-
encrypted, huwa fuq il-port 4430.
>> Udjenza: U emails huma 25, id-dritt?
>> DAVID J. Malan: Outbound emails, 25, Yep.
>> ROB BOWDEN: I lanqas biss jafu aktar ta ' il - kollha ta 'dawk aktar baxxi għandhom tendenza li jkunu
riżervati għall-affarijiet.
I think kollox taħt 1024 hija rriżervata.
>> UDJENZA: Għaliex ma inti tgħid 3 kien in-numru ħażin?
>> ROB BOWDEN: Minħabba fl-indirizz IP, hemm erba 'gruppi ta' numri.
U dawn qed 0-255.
Allura 192.168.2.1 huwa komuni netwerk lokali indirizz IP.
Avviż kollha ta 'dawn huma inqas minn 255.
Allura meta I bdew mal 300, li ma jista 'possibbilment ikollu
kien wieħed mill-numri.
>> DAVID J. Malan: Imma dak clip iblah minn - ma kien CSI, fejn huma kellhom
numru li kienet kbira wisq għall-indirizz IP.
>> ROB BOWDEN: Kwalunkwe mistoqsijiet dwar dan?
Il-wieħed li jmiss, bidla tant komplet fl suġġett, iżda aħna għandna dan array PHP għal
l-djar fil-quad.
U aħna għandna lista unordered.
U rridu li jistampa kull oġġett lista biss li jkun fih l-isem house.
Allura aħna għandna loop foreach.
Mela ftakar, s-sintassi hija foreach array bħala punt fl-array.
Allura permezz ta 'kull iterazzjoni tal-linja, house se jieħu fuq waħda mill-
Valuri ġewwa tal-firxa.
>> Fuq l-ewwel iterazzjoni, house se jkun Cabot House.
Fuq iterazzjoni tieni, house se jkun Courier House u l-bqija.
Allura għal kull quad bħala house, aħna qed biss jmorru għall-istampar -
inti ukoll setgħet ittennew -
l-oġġett lista u mbagħad isem l-dar tal- u mbagħad agħlaq il-partita lista.
Il-braces kaboċċi huma fakultattivi hawn.
>> U allura aħna qal ukoll fil-kwistjoni innifsu, ftakar li tagħlaq il-
tag lista unordered.
Għalhekk għandna bżonn li ħruġ modalità PHP sabiex jagħmlu dan.
Jew jista 'jkollna ittennew l- qrib lista tag unordered.
>> DAVID J. Malan: Ukoll multa hawn kieku kienu jużaw iskola antika għal
loop bi $ i = 0 0 u jużaw għadd sa insemmu l-tul tal-ray.
Totally multa wisq, just a wordier ftit.
>> UDJENZA: Mela jekk inti kienu se [Inaudible], would you do -
I tinsa dak l loop [inaudible] hija.
Would you $ quad i bracket?
>> DAVID J. Malan: Eżattament.
Yeah, eżattament.
>> ROB BOWDEN: Xi ħaġa oħra?
>> DAVID J. Malan: Kull dritt.
Kompromessi.
Allura kien hemm għenieqed ta 'tweġibiet possibbli għal kull wieħed minn dawn.
Konna verament tfittex biss għal xi ħaġa konvinċenti għal rasu u
żvantaġġ.
U n-numru 16 talab, validazzjoni utenti " input client-side, kif ma 'JavaScript,
minflok server-ġenb, kif ma PHP.
Allura x'hemm rasu ta ' tagħmel-naħa tal-klijent?
>> Well, waħda mill-affarijiet aħna proposti huwa li inti tnaqqas latency, għaliex inti
ma għandekx li jolqot tikkuntattja lill- server, li tista 'tieħu ftit
millisekondi jew saħansitra ftit sekondi billi tevita dan u biss
validazzjoni utenti input client-side minn tqajjem fuq jissottomettuh handler u
biss verifika, ma dawn it-tip xi ħaġa għall-isem?
Did xi ħaġa tip fl għal indirizz email?
Ma huma jagħżlu dorm minn il-menu drop-down?
>> Inti tista 'tagħtihom feedback istantanja tuża l-kompjuter gigahertz
jew kwalunkwe ikollhom thats attwalment fuq desk tagħhom.
Allura huwa biss aħjar għall-utent esperjenza tipikament.
Iżda żvantaġġ jagħmlu client-side validazzjoni, jekk inti tagħmel dan mingħajr wkoll
tagħmel validazzjoni server-side hija li xi ħadd aktar li joħorġu ta 'CS50 jaf
li inti tista 'biss tibgħat kwalunkwe informazzjoni li inti tixtieq għal server kwalunkwe numru ta 'modi.
Franchement, fil-maġġoranza f'kull browser, inti tista ' ikklikkja madwar fil-settings u biss
itfi JavaScript, li, Għalhekk, jiskonnettja xi forma ta '
validazzjoni.
>> Imma int wkoll tista 'recall li anke I għamilt xi affarijiet arcane fil-klassi bl-użu
telnet u fil-fatt feint tkun browser billi tibgħat get
talbiet għal server.
U li ċertament mhux tuża kwalunkwe JavaScript.
Li jinsab biss lili ittajpjar jikkmanda fil-keyboard.
Allura verament, kull programmer fi biżżejjed kumdità mal-web u HTTP
tista 'tibgħat kwalunkwe data hu jew hi trid għal server mingħajr validazzjoni.
U jekk server tiegħek ma tkunx ukoll verifika, ma jagħtu me isem, huwa
dan l-indirizz email attwalment validu, għamlet jagħżlu dorm, inti tista 'tispiċċa
up ddaħħal fittizji jew biss data vojt fis database tiegħek, li probabbilment
mhux se tkun ħaġa tajba jekk inti kienu qed jassumu li kien hemm.
>> Allura dan huwa realtà annoying.
Iżda b'mod ġenerali, client-side validazzjoni hija kbira.
Iżda jfisser darbtejn ħafna xogħol.
Għalkemm hemm jeżistu diversi libreriji, JavaScript libreriji għall-
eżempju, li jagħmlu dan ħafna, ħafna inqas ta 'ras.
U inti tista 'użu mill-ġdid xi wħud mill-kodiċi server-ġenb, client-side.
Imma tirrealizza li huwa tipikament xogħol addizzjonali.
Yeah.
>> UDJENZA: Mela jekk aħna biss qal inqas sikura -
>> DAVID J. Malan: [laughs]
Ugh.
Dawk huma dejjem l-aktar diffiċli dawk li tingħata deċiżjoni.
>> ROB BOWDEN: Li kieku ġew aċċettati.
>> DAVID J. Malan: What?
>> ROB BOWDEN: I ħolqot din il-problema.
Li ġew aċċettati.
>> DAVID J. Malan: Yeah.
>> UDJENZA: Kessaħ.
>> ROB BOWDEN: Iżda aħna ma aċċettax għall-ewwel waħda -
ukoll, dak li aħna kienu qed ifittxu huwa xi ħaġa bħal inti ma għandekx
jikkomunikaw mal-server.
Aħna ma jaċċettaw biss aktar malajr.
>> UDJENZA: What about ma rikarigu-paġna?
>> ROB BOWDEN: Iva.
Dan kien risposta aċċettata.
>> DAVID J. Malan: xejn fejn ħassejna kien aktar probabbli milli le probabbli
li inti taf dak li inti kienu qal, li hija iebsa
linja li tiġbed kultant.
Tintuża lista marbut minflok ta 'firxa biex tinżamm
magħżula lista tan-numri interi.
Allura rasu aħna spiss jirreferu bl marbuta listi li mmotivaw kollu tagħhom
introduzzjoni kienet ikollok dinamiżmu.
Huma jistgħu jikbru.
Huma jistgħu tiċkien.
Allura inti ma għandekx biex tiżdied permezz ta 'ċrieki li attwalment joħolqu memorja aktar
ma 'firxa.
Jew inti ma għandekx biss jgħidu, sorry, l-utent.
Il-firxa hija mimlija.
Tkabbir sabiex dinamiku tal-lista.
A negattivi għalkemm listi marbuta?
>> UDJENZA: Huwa lineari.
Tiftix fuq il-lista marbuta hija lineari minflok ta 'dak li inti log pulzieri
>> DAVID J. Malan: Eżattament.
Tiftix fuq lista marbuta ma huwa lineari, anki jekk huwa magħżula, għaliex inti tista '
biss issegwi dawn frak tal-ħobż, dawn pointers, mill-bidu tal-lista
sa l-aħħar.
Inti ma tistax lieva aċċess bl-addoċċ u, B'hekk, it-tiftix binarju, anki jekk huwa
magħżula, li inti tista ' tagħmel ma 'firxa.
U hemm ukoll spejjeż oħra.
Yeah.
>> UDJENZA: Memorja ineffiċjenti?
>> DAVID J. Malan: Yeah.
Well, I mhux bilfors jgħidu ineffiċjenti.
Iżda dan ma jiswik memorja aktar, għaliex ikollok bżonn 32 bits għal kull
node għall-pointer addizzjonali, fi inqas għal lista marbuta weħidhom.
Issa, jekk int biss ħażna interi u int żżid il-pointer, li
fil-fatt tip ta 'non-trivjali.
Huwa irduppjar tal-ammont tal-memorja.
Iżda fir-realtà, jekk int jaħżen lista marbuta ta structs li jista 'jkollhom
8 bytes, 16 bytes, saħansitra aktar minn dan, forsi huwa inqas
ta 'spejjeż marġinali.
Imma hija spiża xorta.
Dan jew ta 'dawk stajt Kien multa bħala negattivi.
>> 18.
Bl-użu PHP minflok C li tikteb programm kmand tal-linja.
So here, huwa spiss aktar malajr li jużaw lingwa bħal PHP jew Ruby jew Python.
Inti biss malajr tiftaħ up editur test.
Inti għandek bosta funzjonijiet aktar disponibbli lilek.
PHP għandha l-sink tal-kċina tal-funzjonijiet, billi fis-C, inti
jkollhom ħafna, ftit li xejn.
Fil-fatt, guys l jafu l-mod iebes li inti ma għandekx tabelli hash.
Inti ma rabtu listi.
Jekk inti tixtieq dawn, inti għandek jimplimentawhom yourself.
>> Allura rasu wieħed mill PHP jew verament xi lingwa interpretat hija l-ħeffa
li magħhom inti tista 'jikteb il-kodiċi.
Iżda żvantaġġ, rajna dan meta I malajr bit-tarjola up a misspeller
implimentazzjoni fl lecture jużaw PHP, huwa li l-użu ta 'lingwa interpretat
huwa normalment aktar kajman.
U rajna li b'mod ċar ma ' żieda fil-ħin minn 0.3 sekondi għal 3
sekondi, minħabba l-interpretazzjoni li attwalment jiġri.
>> Rasu ieħor kien li inti ma għandekx biex jikkompilaw.
Għalhekk wkoll tħaffef l-iżvilupp inċidentalment, għaliex inti ma għandekx
żewġ passi lejn tmexxija ta 'programm.
Inti biss għandek wieħed.
U hekk dan huwa pretty konvinċenti kif ukoll.
Permezz ta 'database SQL minflok fajl CSV li jaħżen data.
Database hekk SQL huwa użat għall pset7.
CSV fajls li inti ma jużawx ħafna.
Imma inti użati indirettament pset7 bħala ukoll billi tkellem lill Yahoo Finanzi.
>> Iżda CSV huwa bħad fajl Excel iżda super sempliċi, fejn il-kolonni huma
biss demarked b'virgoli ġewwa ta 'fajl test mod ieħor.
U l-użu ta 'database SQL hija ftit aktar konvinċenti.
Huwa ta 'rasu, għaliex inti tikseb l-affarijiet bħall tagħżel u daħħal u ħassar.
U ikollok, preżumibbilment, l-indiċi li MySQL u databases oħra, bħal
Oracle, jibnu għalik fil-memorja, li ifisser tagħżel tiegħek probabbilment ma jkunx
se tkun top lineari għal isfel.
Huwa fil-fatt se tkun xi ħaġa bħal tfittxija binarju jew xi ħaġa
simili fl-ispirtu.
Allura dawn qed ġeneralment aktar malajr.
>> Iżda tnaqqis hija li huwa biss aktar xogħol.
Huwa aktar sforz.
Għandek tifhem databases.
Inti għandek li din tintrama.
Ikollok bżonn ta 'server jiddekorri li database fuq.
Inti jeħtieġ li jifhmu kif kkonfigurat.
Allura dawn huma biss dawn tipi ta 'kompromessi.
Billi fajl CSV, inti tista ' joħolqu dan ma gedit.
U int tajba biex tmur.
M'hemm l-ebda kumplessità lil hinn minnha.
>> Permezz ta 'trie minflok ta' tabella hash ma 'chaining separat li jaħżen
dizzjunarju ta 'kliem reminixxenti ta pset5.
Allura jipprova rasu, fit-teorija għall-inqas, huwa dak?
Ħin kostanti, għall-inqas jekk int hashing fuq kull wieħed mill-individwu
ittri fil-kelma, bħalek jista 'jkollhom għall pset5.
Li jista 'jkun ta' ħames hashes, sitt hashes jekk hemm ħames jew sitt
ittri fil-kelma.
U li pjuttost tajba.
U jekk hemm xi rbit għoli dwar kif twil kliem tiegħek jista 'jkun, li l-
żmien tassew asimptotikalment kostanti.
>> Billi tabella hash ma separata ikkatenar, il-problema hemmhekk ma 'dak
tip ta 'struttura data huwa li l- prestazzjoni ta 'algoritmi tiegħek normalment
jiddependi min-numru ta 'affarijiet diġà fl-istruttura tad-data.
U li definittivament il-każ ma ktajjen, fejn l-għalf aktar inti tpoġġi
fis-tabella hash, l-itwal dawk ktajjen imorru, li jfisser fl-agħar
każ, il-ħaġa inti tista 'tfittex għal huwa it-triq kollha fl-aħħar ta 'wieħed
dawn in-netwerks, li effettivament jaqa 'fis xi ħaġa lineari.
>> Issa, fil-prattika, jista assolutament jkun il-każ li tabella hash ma
ktajjen hija aktar mgħaġġla minn korrispondenti implimentazzjoni trie.
Iżda li għal diversi raġunijiet, fost li jipprova juża lott kollu ta '
memorja li jistgħu, fil-fatt, l-affarijiet bil-mod isfel, għaliex inti ma tieħux sbieħ
benefiċċji ta 'xi ħaġa imsejħa caching, fejn l-affarijiet li huma qrib flimkien
fil-memorja tista 'tkun aċċessata spiss aktar malajr.
U xi kultant inti tista 'toħroġ bi funzjoni hash verament tajba.
Anki jekk għandek l-iskart daqsxejn ta ' memorja, inti tista ', tabilħaqq, tkun tista'
isibu affarijiet malajr u mhux ħażin kif linearment.
>> Għalhekk fil-qosor, ma kienx hemm neċessarjament ma 'kwalunkwe minn dawn wieħed jew saħansitra tnejn
affarijiet speċifiċi aħna kienu qed ifittxu.
Really xejn konvinċenti bħala pożittivi u negattivi
ġeneralment maqbuda għajn tagħna.
>> ROB BOWDEN: Dan għall-rasu, għamilna ma jaċċettawx waħdu "aktar malajr." You
kellhom jgħidu xi ħaġa dwar dan.
Anke jekk inti qal teoretikament aktar mgħaġġla, aħna kien jaf li inti tip ta 'mifhuma
li huwa 0 tar 1.
U tabella hash, fit-teorija, mhuwiex 0 ta '1.
Isemmi xejn dwar runtime ġeneralment ltqajna inti l-punti.
Imma "aktar malajr," ħafna mill-soluzzjonijiet fuq il-bord kbir li jipprova kienu ġew
oġġettivament aktar kajman minn soluzzjonijiet li kienu tabelli hash.
Allura aktar mgħaġġel u fih innifsu mhuwiex verament veru.
>> DAVID J. Malan: Dom de dom dom.
Jien probabbilment l-unika waħda li jirrealizza li kif li suppost
jiġi ppronunzjat, right?
>> ROB BOWDEN: I kellhom attwalment l-ebda idea.
>> DAVID J. Malan: Huwa magħmul sens in my head.
>> ROB BOWDEN: jien tagħmel dan wieħed.
OK.
Allura dan huwa l-waħda fejn inti kellha tfassal -dijagramma simili inti tista '
raw fuq eżamijiet passat.
Mela ejja biss ħarsa lejn dan.
Allura mill-node HTML, għandna żewġ tfal, ir-ras u l-ġisem.
Allura aħna fergħa - ras u l-ġisem.
Il-kap għandu tag titolu.
Allura aħna għandna titolu.
>> Issa, l-unika ħaġa li ħafna nies nesa hija li dawn lymph test huma
elementi fi ħdan din is-siġra.
So here we jiġri li tiġbed minnhom bħala ovali li jiddistingwihom minn dawn
tipi ta 'nodes.
Imma avviż wkoll hawnhekk għandna top, tan-nofs, u fil-qiegħ se jispiċċaw
lymph test.
Allura jinsa dawk kien kemmxejn ta 'żball komuni.
>> Il-korp għandu tlett itfal - dawn it-tliet divs.
Allura div, div, div u mbagħad it-test tfal node ta 'dawk divs.
Li pjuttost ħafna huwa għal dak il-mistoqsijiet.
>> DAVID J. Malan: U huwa ta 'min jinnota, anke jekk aħna ma nitkellem fuq dawn
dettalji fil-ħin aħna jonfqu fuq JavaScript, li l-ordni ma, fil-
fatt, kwistjoni teknikament.
Mela jekk head jasal quddiem korp fil- HTML, allura dan għandu jidher li l-
xellug tal-ġisem fil-DOM attwali.
Li tiegħu huwa, b'mod ġenerali, biss FYI, xi ħaġa imsejħa ordni dokument, fejn
dan ma materja.
U jekk inti kienu qed jimplimentaw parser, a program li taqra HTML fil-bini
l-siġra fil-memorja, li tkun onest, dan huwa intuwittivament probabbilment dak li inti
jagħmlu xorta waħda - fuq għal isfel, xellug għal-lemin.
>> ROB BOWDEN: Mistoqsijiet dwar li?
Nagħmel dak li jmiss?
>> DAVID J. Malan: Sure.
>> ROB BOWDEN: OK.
Allura dan huwa l-buffer qbiż kwistjoni attakk.
Il-ħaġa prinċipali li jirrikonoxxu hawnhekk hija, ukoll, kif jista trick avversarju
dan il-programm fis eżekuzzjoni kodiċi arbitrarja?
Allura argv1, l-ewwel linja tal-kmand argument li dan il-programm, li jista 'jkun
twil arbitrarju.
Iżda hawnhekk aħna qed jużaw memcpy li kopja argv1, li hawnhekk huwa bar.
Aħna qed tgħaddi bħala l-argument.
U għalhekk huwa tieħu fuq l-isem bar.
>> Allura aħna qed memcpying bar fis dan buffer c.
Kemm bytes aħna ikkupjar?
Well bytes bar iżda ħafna jiġri li tkun qed tuża, it-tul ta 'dan l-argument.
Iżda c huwa biss 12 bytes wiesgħa.
Allura jekk aħna tip ta 'argument linja tal-kmand dan huwa itwal minn 12 bytes, aħna qed
se jfur dan partikolari buffer.
Issa, kif jista 'avversarju trick l- programm fis eżekuzzjoni kodiċi arbitrarja?
>> Mela ftakar li hawn prinċipali qed titlob foo.
U hekk allura sejħiet ewlenin foo.
Ejja tiġbed.
Allura aħna għandna munzell tagħna.
U prinċipali għandha qafas stack fil-qiegħ.
F'xi punt, sejħiet ewlenin foo.
Well, immedjatament, sejħiet ewlenin foo.
U hekk foo gets frame munzell tagħha stess.
>> Issa, f'xi punt, foo se jirritorna.
U marru prospetti foo, għandna bżonn inkunu nafu fuq liema linja tal-kodiċi ġewwa ta ewlenin li għandna
kienu sabiex tkun taf fejn għandna jerġgħu jibdew fi prinċipali.
Nistgħu sejħa foo minn kollu mazz ta 'postijiet differenti.
Kif inkunu nafu fejn jirritornaw?
Well, għandna bżonn li taħżen din x'imkien.
>> Allura x'imkien dritt madwar hawn, aħna maħżen fejn aħna għandhom imorru lura għal darba
prospetti foo.
U dan huwa l-indirizz ta 'ritorn.
Allura kif avversarju jista 'jieħu vantaġġ ta 'dan huwa l-fatt li
dan buffer c jiġi maħżun, ejja jgħidu, dritt hawn huwa ċ.
Allura konna ltqajna 12 bytes għal c.
Dan huwa ċ.
U dan huwa ċirku munzell foo tal.
Mela jekk l-utent malizzjużi jidħol aktar bytes minn 12 jew jidħlu kmand
argument linja li l-aktar minn 12 karattri, allura aħna qed tmur biex
overflow dan buffer.
>> Nistgħu jibqgħu għaddejjin.
U f'xi punt, aħna tmur ferm biżżejjed li nibdew
kitba fuq dan l-indirizz ta 'ritorn.
Allura ladarba aħna jissostitwixxu l-indirizz ta 'ritorn, dan ifisser li meta foo
prospetti, aħna qed jirritornaw lejn kull fejn il- utent malizzjużi huwa javżak li minn
kwalunkwe valur daħal, b'kull karattru l-utent daħal.
U għalhekk jekk l-utent malizzjużi qed partikolarment għaqlija, huwa jista 'jkollhom dan
ritorn lejn x'imkien fil-printDef funzjoni jew x'imkien fil-malloc
funzjoni, biss kullimkien arbitrarja.
>> Iżda anke aktar għaqlija huwa dak jekk ikollu l-utent ritorn lejn dritt hawn.
U mbagħad tibda eżekuzzjoni dawn bħala linji ta 'kodiċi.
Allura f'dak il-punt, l-utent jista 'jidħol kull ma trid f'dan ir reġjun.
U hu għandu kontroll sħiħ il-programm tiegħek.
Mistoqsijiet dwar li?
Allura l-mistoqsija li jmiss hija kompluta l- implementazzjoni ġdida ta foo b'tali mod
li huwa m'għadux vulnerabbli.
>> Hekk hemm koppja ta 'modi li seta 'jsir dan.
Għad għandna c biss benesseri ta 'tul ta' 12.
Inti tista inbidlu dan bħala parti mill-soluzzjoni tiegħek.
Aħna wkoll miżjuda verifika biex tagħmel żgur bar ma kienx null.
Għalkemm inti ma bżonn li għal kreditu sħiħa.
Allura aħna qed iċċekkjar ewwel l- tul sensiela ta 'bar.
Jekk huwa akbar minn 12, imbagħad ma attwalment jagħmlu l-kopja.
Allura dak mod wieħed ta 'iffissar.
>> Mod ieħor ta 'iffissar huwa minflok jkollhom c jkunu biss ta tul ta '12, li huwa
jkun ta 'tul strlen (bar).
Mod ieħor ta 'iffissar huwa li attwalment biss ritorn.
Mela jekk kellek biss gotten rid ta 'kollha ta' dan, jekk kellek biss mħassra kollha
linji ta 'kodiċi, inti tkun gotten kreditu sħiħa, peress li din il-funzjoni
attwalment ma twettaq xejn.
Huwa ikkupjar kmand tal-linja argument fis xi array b'mod
frame munzell lokali tiegħu.
U allura l-ħaġa huwa jirritorna.
U tkun xi jitlestew hija marret.
Allura ritorn kien ukoll suffiċjenti mod ta 'jkollna kreditu sħiħa.
>> DAVID J. Malan: Mhux pjuttost l-ispirtu ta ' il-kwistjoni iżda aċċettabbli kull l-
spec xorta.
>> ROB BOWDEN: Mistoqsijiet dwar xi li?
L-unika ħaġa li għandek inqas meħtieġa li kompilazzjoni kodiċi.
Allura anke jekk teknikament m'intix vulnerabbli jekk il-kodiċi tiegħek ma
jikkumpilaw, aħna ma jaċċettaw li.
Ebda mistoqsijiet?
OK.
>> DAVID J. Malan: Tixtieq jiġifieri dan it-titolu?
>> ROB BOWDEN: Le
>> DAVID J. Malan: Allura f'dan il-wieħed, dan kien jew aħbar tajba jew aħbar ħażina.
Dan huwa litteralment l-istess problema bħala l-ewwel kwizz.
U huwa kważi l-istess problema pset1.
Iżda kien simplifikata apposta biex ikunu piramida sempliċi, wieħed li jista 'jkun
solvuti bi ftit iterazzjoni sempliċi.
U tassew, dak li konna jkollna fuq hawn ma kienx daqstant il-loġika,
għaliex probabbilment, minn dan il-punt, int aktar komdi milli suppost kienu
fil-ġimgħa ma 'għal loops jew għaliex loops, imma verament tease apparti li
int ftit komda mal- idea li PHP huwa mhux biss dwar dak
programmazzjoni.
Fil-fatt din tista 'tintuża bħala lingwa biex jiktbu programmi linja tal-kmand.
>> U fil-fatt, dan huwa dak li aħna kienu qegħdin jippruvaw niġbidlek l-attenzjoni għall.
Dan huwa programm PHP linja ta 'kmand.
So kodiċi C hawnhekk, filwaqt korretta fis-C, mhux korretta għall PHP.
Iżda l-kodiċi huwa verament l-istess.
Jekk tqabbel l-soluzzjonijiet għall Quiz 0 kontra Quiz 1, inti ser issib li
huwa kważi identiku, ħlief għall- xi sinjali dollaru u għall-
nuqqas ta 'tip data.
B'mod partikolari, jekk nieħdu ħarsa hawn, tkun taf tara li aħna jtenni, f'dan
każ, mill-1 sa permezz 7.
>> Aħna seta 'jsir indiċi 0.
Imma kultant, naħseb huwa biss mentalment aktar faċli li wieħed jaħseb dwar affarijiet
minn 1 sa 7.
Jekk inti tixtieq blokka waħda, imbagħad tnejn blokki, imbagħad tlieta, imbagħad
dot, dot, dot seba.
Aħna j jiġu initialized 1 u mbagħad isserraħ fuq sa i.
U kollox hawnhekk huwa inkella identiċi.
Iżda denja ta 'nota huma koppja ta 'affarijiet.
Aħna nagħtuk dawn iż-żewġ linji, dan l-ewwel waħda, goofily imsemmi bħala shebang
għall bang qawwija.
U li biss jispeċifika il-passaġġ, il- folder, li fiha programm jista 'jkun
sabet li inti tixtieq li tuża li tinterpreta dan il-fajl.
>> U allura l-linja wara li, ta ' naturalment, ifisser jidħol fil-modalità PHP.
U l-linja fil-qiegħ nett ifisser modalità PHP ħruġ.
U dan jaħdem, b'mod ġenerali, ma interpretat lingwi.
Huwa tip ta 'annoying jekk tikteb programm fajl imsejjaħ foo.php.
U mbagħad utenti tiegħek għandek biss ftakar, OK, biex imexxu dan il-programm, I
għandek tip "foo.php ispazju PHP." Kind ta 'annoying jekk xejn.
U wkoll tiżvela dak il-programm tiegħek huwa miktub fil-PHP, li mhux kollox
li jdawwal għall-utent.
>> Allura inti tista 'tneħħi l. PHP kollox recall minn lecture.
U inti tista 'attwalment jagħmlu. / Foo jekk inti stajt chmodded dan billi jagħmilha
eżekutibbli.
Allura chmod a + x foo kien jagħmel dan.
U jekk inti wkoll żżid il-shebang hawn.
Imma verament, il-problema ġiet jkollna fi stampar xi ħaġa bħal din.
Nru HTML, ebda C-kodiċi ċertament, biss ftit PHP.
Allura Milo mbagħad jintbagħat lura fil-problema 25.
U fl-25, inti ngħataw l-segwenti kodiċi iskeletru, li kien
paġna web pretty sempliċi.
U l-parti mmerraq HTML għaqli kien jistabbilixxi hawn, fejn għandna ġewwa tal-ġisem
forma li għandha ID unika ta 'inputs ġewwa li minnhom kien żewġ inputs, wieħed
bl-idea ta 'isem, wieħed bl-idea ta 'buttuna.
>> L-ewwel kien test tip, il- tieni ta 'tip jissottomettu.
U hekk aħna taw inti, attwalment, aktar ingredjenti milli għandek bżonn, biss hekk
inti guys kellhom għażliet li magħhom biex issolvi din il-problema.
Inti ma għandekx bżonn strettament kollha ta 'dawn IDs.
Iżda tippermetti li inti biex isolvu b'modi differenti.
U fil-quċċata, avviż li l-għan kien biex jiġu xprunati
tieqa bħal dan -
Hello, Milo! -
pop up fil-browser użu sempliċi super, jekk
mhux ikrah, funzjoni ta 'twissija.
U għalhekk, finalment, dan jeħodna kunċettwalment li b'xi mod jisimgħu għal
sottomissjonijiet tal-client-side forma , Mhux il-ġenb server, b'xi
jirrispondu għal dik is-sottomissjoni mill- ħtif-valur li l-utent ittajpjat
fil lill-qasam isem, u mbagħad wiri fil-ġisem ta 'twissija.
>> Allura mod wieħed li inti tista 'tagħmel dan huwa ma jQuery, li jistenna ftit
sintattikament mħawda fl-ewwel.
Tista 'tagħmel dan bil-kodiċi DOM pur - document.getelement minn ID.
Iżda ejja tagħti ħarsa lejn din il-verżjoni.
I jkollhom koppja ta 'importanti Linji ewwel.
Allura wieħed, aħna għandna din il-linja, li hija identiku għal dak li inti tista raw
fil, nemmen, form2.html mill-klassi fil-ġimgħa 9.
U dan huwa biss qal, jesegwixxu il-kodiċi li ġejjin meta
d-dokument huwa lest.
Din hija importanti biss minħabba Paġni HTML jinqraw fuq għal
qiegħ, xellug għal-lemin.
>> U għalhekk, jekk inti tipprova tagħmel xi ħaġa fil-kodiċi up hawn biex xi DOM
element, xi tag HTML, li jistabbilixxi hawn, int tagħmel wisq malajr,
minħabba li dan m'għandux lanqas ġie moqri fil-memorja.
Allura billi qal dan document.ready linja, aħna qed tgħid,
hawn xi kodiċi, browser.
Imma ma teżegwixxi dan sakemm il-sħiħ dokument huwa lest, li hija l-DOM
siġra teżisti fil-memorja.
Dan huwa wieħed ftit aktar sempliċi, jekk sintattikament a
daqsxejn differenti, fejn jien qal, grab l-element HTML li unika
identifikatur inputs.
Dak hu l-tikketta hash tindika, l-ID uniku.
U mbagħad jien sejħa. Jissottomettu.
>> So. Jissottomettu hawnhekk hija funzjoni, inkella magħrufa bħala metodu, li l-
ġewwa tal-oġġett fuq it-naħa tax-xellug naħa hemmhekk li I ma jenfasizzaw.
Mela jekk inti taħseb inputs bħala oġġett fil-memorja - u tabilħaqq huwa.
Huwa node fil-siġra -
. Jissottomettu mezzi meta din il-formola ma ' din ID tiġi sottomessa, jesegwixxu
il-kodiċi li ġej.
I ma kura dak l-isem tal- funzjoni huwa jien esekuzzjoni.
So here jien jużaw, bħal qabel, x'hemm imsejjaħ il-funzjoni lambda jew
funzjoni anonima.
Mhuwiex fil-livelli kollha intellettwalment interessanti oħra milli għandu l-ebda isem,
li huwa multa jekk int biss qatt ser sejħa darba.
U hemm ġewwa I attwalment jimmaniġġaw il-preżentazzjoni tal-formola.
I ewwel tiddikjara varjabbli imsejħa valur.
U allura dak huwa l-effett ta 'din enfasizzat porzjon hawn issa?
Dak li ma tagħmel fi livell għoli għalija?
>> UDJENZA: Jiġrilha l-valur li l- utent ma fil-HTML hawn taħt.
Jiġrilha li ID u mbagħad isib il-valur ta 'dan.
>> DAVID J. Malan: Eżattament.
Hija grabs l-node, li l unika identifikatur huwa l-isem.
Jiġrilha l-valur fihom, li huwa, preżumibbilment, dak l-utent
ittajpjat lilu jew lilha nfisha.
U allura huwa jaħżen li fil- varjabbli imsejħa valur.
Bħala twarrib, jista 'jkollok ukoll għamlu dan ftit differenti.
Totally aċċettabbli billi tagħmel xi ħaġa valur jinsabu var gets
document.getElementById.
U dan huwa għaliex huwa ftit tedious li ma jużawx jQuery.
"Name". Valur.
Allura totalment aċċettabbli.
Modi differenti biex jagħmlu dan. jQuery biss tendenza li jkunu ftit aktar konċiż u
definittivament aktar popolari fost programmaturi.
>> Issa, jien tagħmel daqsxejn ta 'sanità jivverifikaw, minħabba fil-problema
dikjarazzjoni aħna espliċitament qal, jekk il- utent għadu ma ittajpjat tiegħu jew tagħha
isem, ma jurux allerti.
Iżda tista 'tiċċekkja għal dan, bi ftit verifika għall-sekwenza vojta għal
quote-unquote jekk hemm xejn fil-fatt hemmhekk.
Imma jekk mhuwiex ugwali għal kwotazzjoni-unquote, I tixtieq li sejħa allerti.
U l-parti interessanti hawnhekk huwa li aħna qed jużaw l-operatur plus, li
ma dak fl JavaScript?
Concatenate.
Allura huwa simili PHPs operatur dot.
Istess idea, sintassi kemmxejn differenti.
U jien biss joħolqu l-sekwenza li inti raw fuq l-isparatura iskrin -
Hello, hekk u hekk.
>> U allura l-aħħar dettall huwa dan.
Why do I ritorn ġewwa falza ta 'din il-funzjoni anonimi?
>> UDJENZA: M'hemm l-ebda valur.
You poġġih fil-forma.
Huwa biss jgħid, jekk il-valur ma jkunx daqs blank, mbagħad jagħmluh.
Kien hemm vojt f'dak sottomissjoni.
>> DAVID J. Malan: OK.
Attenta għalkemm.
M'hemm l-ebda wieħed inkella hawn.
U li falza ritorn hija barra tal-jekk il-kondizzjonijiet.
Allura din il-linja enfasizzat, ritorn foloz, tesegwixxi x'ikun meta
il-formola tiġi sottomessa.
Dak ma jirritornaw ġewwa falza ta 'dan handler avveniment, kif huwa msejjaħ,
l-avveniment inkwistjoni jkunu sottomissjoni?
>> UDJENZA: Minħabba li jiġri darba biss.
>> DAVID J. Malan: Biss jiġri darba.
Mhux pjuttost.
Yeah?
>> UDJENZA: Dan jipprevjeni l-forma minn tippreżenta lill-imġieba default,
li jagħmlu l-rikarigu-paġna.
>> DAVID J. Malan: Eżattament.
Hekk jien tagħbija żejda-terminu jissottomettu hawn, għaliex jien qal, il-formola hija
jiġi sottomess.
Imma kif inti jissuġġerixxu, huwa attwalment mhux ġiet ippreżentata fil-mod HTTP veru.
Meta tikklikkja Submit, minħabba tagħna handler onSubmit, aħna qed jinterċetta
dik is-sottomissjoni formola biex ngħidu hekk.
Aħna qed mbagħad tagħmel ħaġa tagħna bil-kodiċi JavaScript.
Imma jien deliberatament jirritornaw falza, għaliex dak li ma rridx li jiġri
qasma tat-tieni wara huwa għall-forma kollu ruħha li jiġu sottomessi lill-web
server ma 'pari valur ewlenin billi jinbidlu il-URL li tkun xi ħaġa simili
Q = il-qtates jew kwalunkwe għamilna, per eżempju, fil-klassi.
Ma rridx li jiġri, għax m'hemm l-ebda smigħ server għal dan
formola ta 'sottomissjoni.
Huwa purament isir fil-kodiċi JavaScript.
U hu għalhekk li I lanqas ikollhom azzjoni attribut fuq formola tiegħi, minħabba I
ma intenzjoni biex dan qatt tmur għall-server.
>> Għalhekk huwa qed sottomessa.
Iżda aħna qed jinterċetta dik il-formola sottomissjoni u l-prevenzjoni tal-default
imġieba, li huwa li attwalment jmorru it-triq kollha għall-server.
>> UDJENZA: Allura jżommuha client-side.
>> DAVID J. Malan: Żamma -naħa tal-klijent dan.
Eżattament id-dritt.
Up li jmiss kien tiegħi oh MySQL.
>> ROB BOWDEN: OK.
Għalhekk din l-ewwel kwistjoni kienet ġeneralment rough għall-persuni.
Għalkemm dawk aktar tard marru aħjar.
Allura inti kellhom jagħżlu l-data korretta tipi kemm ta 'dawn il-kolonni.
U kemm ta 'dawn għandhom xi affarijiet dwar minnhom li
jagħmlu l-għażla diffiċli.
Allura int ma kinitx valida tip għal numru.
Ir-raġuni li kont 12-il ċifra numru, l-int mhuwiex kbir biżżejjed biex
taħżen numri totali.
Allura għażla valida kien ikun kbir int jekk jiġri li tkun taf li.
Ieħor għażla seta 'kien qasam char ta 'tul ta' 12.
Allura kieku ħadmu waħda minn dawk.
Int ma.
>> Issa, il-bilanċ, think lura għall pset7.
Allura aħna speċifikament użati ta 'informazzjoni biex jaħżnu l-valur tal-ishma jew -
>> DAVID J. Malan: Cash.
>> ROB BOWDEN: Cash.
Aħna użati ta 'informazzjoni biex jaħżnu l-ammont ta' flus kontanti li l-utent bħalissa għandha.
Allura r-raġuni nagħmlu dan huwa għaliex, ftakar, sufruni.
Hemm floating point fil-preċiżjoni.
Ma jistax jaħżen preċiżament l-flus Valuri bħal rridu hawn.
Allura informazzjoni hija kapaċi preċiżament maħżen xi ħaġa li, jgħidu, żewġ postijiet deċimali.
C'est pourquoi bilanċ, irridu li jkunu ta 'informazzjoni u mhux float.
>> DAVID J. Malan: U wkoll, wisq, għalkemm seta 'kien għaqlija f'pajjiżi oħra
kuntesti biex jaħsbu, forsi dan hija opportunità għal int.
I ser biss iżommu kont ta ' affarijiet fil pennies.
Għaliex aħna wera b'mod espliċitu l-default valur li jkunu 100.00, li
ifisser li tista 'biss tkun int.
U subtlety ieħor wisq bin-numru kienet li ma kienx maħsub
li tkun kwistjoni trick.
Iżda tfakkar li int fil MySQL, bħal fil-C, għall-inqas fil-
appliance, huwa 32-bit.
U anke jekk aħna ma jistennew li inti taf eżattament kemm ċifri li
mezzi, do tfakkar li l-akbar numru inti tista 'potenzjalment jirrappreżenta
ma 'numru 32-bit hija bejn wieħed u ieħor dak?
>> What numru nistgħu dejjem ngħid?
2 għall-32, li huwa dak li bejn wieħed u ieħor?
Inti ma għandekx tkun taf b'mod preċiż.
Imma bejn wieħed u ieħor huwa utli fil-ħajja.
Huwa madwar 4 biljuni.
Allura aħna ħadthom qal li għal xi ftit drabi.
I know I qal li għal xi ftit drabi.
U huwa madwar 4 biljuni.
U li l-istat tajjeb ta 'thumb tkun taf.
Jekk għandek 8 bits, 256 huwa n-numru magic.
Jekk għandek 32 bits, 4 biljun jagħtu jew jieħu.
Mela jekk inti biss ikteb 4 biljuni, tkun taf tara li huwa inqas ċifri minn
12, li jfisser li l-ċar ma biżżejjed expressiveness jaqbad
Numru tal-kont 12 figuri.
>> ROB BOWDEN: OK.
Allura l-oħrajn marru aħjar.
Allura jissoponi li l-bank timponi $ 20 kull xahar
ħlas ta 'manteniment fuq il-kontijiet kollha.
Ma 'dak SQL query tista' l-bank tnaqqas $ 20 min kull għadd, anke jekk
jirriżulta f'xi bilanċi negattivi?
Allura bażikament, hemm erba ' tipi ewlenin ta 'mistoqsijiet -
daħħal, tagħżel, jaġġornaw, u ħassar.
Allura dak li aħna naħsbu li aħna qed ser tuża hawn?
Aġġornament.
>> Mela ejja tagħti ħarsa.
So here we qed aġġornament.
Dak tabella huma we aġġornament kontijiet?
Allura aġġornament kontijiet.
U allura l-sintassi jgħid, liema fil-kontijiet aħna aġġornament?
Well, aħna qed jistabbilixxu bilanċ ugwali għad- valur kurrenti ta 'bilanċ minus 20.
Allura dan se taġġorna ringieli kollha tal-kontijiet, jitnaqqas
$ 20 min-bilanċ.
>> DAVID J. Malan: A żball komuni hawn, anke jekk aħna kultant ħaffru dan,
kien li attwalment ikollhom kodiċi PHP hawn ssejjaħ il-funzjoni query jew it-tqegħid
kwotazzjonijiet madwar dak kollu li ma kellhomx bżonn li jkun hemm.
>> ROB BOWDEN: Ftakar li MySQL hija lingwa separat mill PHP.
Aħna jiġri li jkun miktub MySQL fil-PHP.
U PHP huwa mbagħad jibagħtuha trasferiti għas-server MySQL.
Imma inti m'għandekx bżonn PHP sabiex jikkomunikaw ma 'server MySQL.
>> DAVID J. Malan: Eżattament.
Allura l-ebda varjabbli b'sinjali dollaru għandu jkun f'dan il-kuntest.
Hija tista 'biss tagħmel kollha ta' l-matematika fid-database innifsu.
>> ROB BOWDEN: OK.
Allura dak li jmiss.
Huwa dan dak li jmiss?
Yeah.
Allura ma 'dak SQL query tista' l-bank irkuprata l-numri tal-kont ta taghha
klijenti sinjuri, dawk bi bilanċi akbar minn 1,000?
Allura liema mill-erba 'tipi ewlenin aħna se tixtieq hawnhekk?
Agħżel.
Hekk irridu li tagħżel.
What do we trid tagħżel?
What kolonna irridu li tagħżel?
Aħna se tkun trid speċifikament li tagħżel numru.
Imma jekk inti qal star, aħna wkoll ammess.
>> Allura tagħżel numru minn dak tabella?
Kontijiet.
U allura l-kundizzjoni li rridu?
Fejn bilanċ akbar minn 1,000.
Aħna wkoll aċċettata akbar minn jew ugwali.
Aħħar wieħed.
Ma 'dak SQL query tista' l-bank qrib, jiġifieri, iħassru kull kont li
għandha bilanċ ta '$ 0?
Allura liema mill-erba aħna tmur jridu jużaw?
Ħassar.
Allura l-sintassi għal dan?
Ħassar minn dak tabella?
Kontijiet.
U allura l-kondizzjoni li fuqha irridu li jħassru -
fejn bilanċ ugwali żero.
Allura tħassar ringieli kollha mill-kontijiet meta l-bilanċ huwa żero.
Mistoqsijiet dwar xi waħda minn dawn?
Trid kju?
>> DAVID J. Malan: gwida kju.
Allura f'dan il-wieħed, aħna ħadt kemmxejn struttura familjari li aħna esplorati
daqsxejn fil-klassi flimkien ta structs, li kienet data
struttura relatata fl-ispirtu.
Id-differenza għalkemm kju hija li kellna li b'xi mod tiftakar li
kien fuq quddiem tal-kju, fil-kbar parti b'tali mod li nistgħu nagħmlu aktar
użu effiċjenti tal-memorja, mill-inqas jekk aħna kienu qed jużaw firxa.
>> Minħabba recall, jekk ikollna firxa, jekk, per eżempju, dan huwa l-quddiem ta '
-kju, jekk I tikseb fis-kju hawn, u mbagħad xi ħadd gets fil-linja
lura lili, wara me, lura lili, u persuna waħda passi barra tal-linja, inti
tista ', kif rajna xi wħud mill-bniedem tagħna voluntiera fil-klassi, ikollhom kulħadd
shift b'dan il-mod.
Iżda b'mod ġenerali, li jagħmlu kulħadd xi ħaġa mhux l-aħjar użu tal-ħin
fi programm, għaliex dan ikun ifisser tiegħek algoriżmu jkun qed jaħdem f'dak li
running time asintotiku?
Huwa lineari.
>> U inħoss bħal dan huwa tip ta 'stupid.
Jekk il-persuna li jmiss fil-linja huwa li jmiss persuna li suppost li jmorru fil-
maħżen, dawn mhux kollha għandhom li jiċċaqalqu flimkien.
Just let tali persuna tiġi mnittfa off meta jasal iż-żmien, per eżempju.
Allura aħna tista 'tiffranka ftit ta' żmien hemmhekk.
U hekk li tagħmel dan għalkemm, li l-mezzi li l-kap tal-kju jew il-
quddiem tal-kju se timxi progressivament aktar profonda u aktar profonda
fil-firxa u eventwalment tista ' attwalment perimetrika jekk aħna qed jużaw
array biex jaħżnu l-poplu f'dan kju.
Allura inti tista 'kważi think tal- array bħala data ċirkolari
istruttura f'dan is-sens.
>> Allura inti b'xi għandhom iżommu rekord ta 'l- daqs ta 'dan jew verament l-aħħar ta' dan
u mbagħad meta l-bidu ta 'dan huwa.
Allura aħna nipproponu li inti tiddikjara kju waħda tali, li ssejjaħ
it q, biss ittra waħda.
Imbagħad aħna nipproponu li l-front jkun initialized għal żero u li d-daqs
jiġu initialized għal żero.
>> Allura issa dritt, m'hemm xejn ġewwa ta 'dak kju.
U aħna nitolbuk biex jitlesta l- implimentazzjoni ta 'enqueue hawn taħt fil
b'tali mod li l-funzjoni żżid n biex l-aħħar ta 'q u mbagħad jirritornaha vera.
Imma jekk q hija sħiħa jew negattiva, il- funzjoni għandha minflok jirritornaw falza.
U aħna ħadt koppja ta 'suppożizzjonijiet.
Iżda dawn mhux qed verament funzjonalment rilevanti, biss li bool jeżisti,
għaliex, teknikament, bool ma jeżistu C sakemm inti jinkludu
ċerti fajl header.
Allura li kien biss tagħmel ċert li jkun hemm kinux dan huwa trick
kwistjoni tip ta 'ħaġa.
>> Allura enqueue, aħna propost fil-kampjun soluzzjonijiet biex jimplimentaw kif ġej.
Waħda, aħna l-ewwel jivverifika l-faċilità, l-frott jiddendlu baxx.
Jekk il-kju hija sħiħa jew in-numru li int tipprova li daħħal hija anqas
minn żero, li għidna fil- ispeċifikazzjoni tal-problema għandha
ma jitħalliex, għaliex aħna biss trid Valuri mhux negattivi, imbagħad inti għandek
biss ritorn foloz immedjatament.
Allura xi relattivament faċli verifika żball.
Jekk għalkemm inti tixtieq iżżid li attwali numru, inti kellha tagħmel daqsxejn ta '
ħsieb hawnhekk.
U dan huwa fejn huwa ftit annoying mentalment, peress li inti għandek
figura kif jimmaniġġjaw trembil.
>> Iżda l-raħs tal-idea hawnhekk li l-ta interess lilna huwa li trembil
spiss jimplika aritmetika modulari u l-operatur mod, il-ġenb fil-mija,
fejn inti tista 'tmur minn valur ikbar lura għal żero u mbagħad wieħed u tnejn u
tlieta u mbagħad lura madwar għal żero, wieħed u tnejn u tlieta u oħrajn
ġdid u għal darb'oħra.
Allura l-mod kif qed nipproponu isir dan huwa li rridu nagħmlu għall-indiċi fil-
array ċemplu numri fejn interi tagħna jinsabu.
Iżda biex naslu s'hemm, aħna l-ewwel trid tagħmel x'ikun id-daqs tal-kju, iżda huwa
imbagħad żid li tkun xi tkun l- quddiem il-lista hija.
U l-effett ta 'dan huwa li tpoġġi us fi il-pożizzjoni dritt fil-kju u
Ma jassumu li l-ewwel persuna fil-linja huwa fil-bidu, li hu jew
hi assolutament tista 'tkun jekk aħna kienu ċaqliq wkoll kulħadd.
Iżda aħna qed biss ħolqien tax-xogħol għalina jekk aħna ħa
dik it-triq partikolari.
>> Allura nistgħu jżommha relattivament sempliċi.
We do niftakru li aħna biss żiedet int mal-kju.
U allura aħna biss jirritornaw veru.
Sadanittant, fl dequeue, staqsejna inti tagħmel dan li ġej.
Jimplimentawha b'tali mod li dequeues, li hija tneħħi u prospetti,
l-int fuq quddiem tal-kju.
Biex tneħħi l-int, huwa biżżejjed biex tinsa dan.
Inti ma għandekx bżonn li jiskarta daqsxejn tagħha.
Allura huwa għadu attwalment hemm.
Eżatt bħal data dwar hard drive, aħna qed biss jinjora l-fatt
li huwa issa hemmhekk.
U jekk q hija vojta, għandna minflok jirritornaw negattiv 1.
Allura dan iħoss arbitrarja.
Għaliex ritorn negattiv 1 minflok falza?
Yeah.
>> UDJENZA: Q hija l-ħażna valuri pożittivi.
Peress li inti biss żżomm il-valuri pożittivi fil-q, negattiv huwa żball.
>> DAVID J. Malan: OK, veru.
Allura għaliex aħna qed biss ħażna pożittiv valuri jew żero, allura huwa multa li
ritorn valur negattiv bħala sentinella valur, simbolu speċjali.
Imma int riskrittura istorja hemmhekk, minħabba r-raġuni aħna qed biss
jirritornaw valuri negattivi mhux huwa għaliex irridu li
għandhom valur sentinella.
Allura aktar speċifiku, għaliex mhux biss ritorn foloz f'każijiet ta 'żbalji?
Yeah.
>> UDJENZA: You ħadthom fallew li jirritorna numru sħiħ.
>> DAVID J. Malan: Eżattament.
U dan huwa fejn C gets jillimita pretty.
Jekk inti qed tgħid int ser li jirritorna l int, inti stajt ltqajna
li jirritorna l int.
Inti ma tistax tikseb fancy u jibdew jirritornaw a bool jew float jew
string jew xi ħaġa bħal dik.
Issa, sadanittant, JavaScript u PHP u xi lingwi oħra jista ', fil-fatt,
usted jirritornaw differenti tipi ta 'valuri.
U li jista 'effettivament tkun utli, fejn inti tista 'ritorn ints pożittivi, żerijiet,
ints negattivi, jew falz jew null anki li turi żball.
Iżda aħna ma jkollhomx dak versatilità C.
>> Allura ma dequeue, dak li aħna tipproponi li tagħmel huwa -
>> ROB BOWDEN: Inti tista 'ritorn foloz.
Huwa biss li foloz hija hash jiddefinixxu falza għal żero.
Mela jekk inti tirritorna falza, int jirritornaw żero.
U żero hija ħaġa valida fil-kju tagħna, billi negattiva 1 mhix jekk
falza li jkun ġara negattiv 1.
Imma inti m'għandekx anki bżonn tkun taf li.
>> DAVID J. Malan: C'est għaliex I ma jgħidu li din.
>> ROB BOWDEN: Iżda dan ma kienx veru li inti ma jistgħux jirritornaw falza.
>> DAVID J. Malan: Sure.
Allura dequeue, avviż naċċettaw null bħala argument tagħha.
U dan għaliex aħna mhux qed tgħaddi xejn pulzieri
Aħna biss tixtieq li tneħħi l-element fuq quddiem tal-kju.
Allura kif tista we go dwar kif isir dan?
Ukoll, l-ewwel, ejja tagħmel dan check sanità malajr.
Jekk id-daqs kju hija 0, hemm ebda xogħol li għandu jsir.
Ritorn negattiv 1.
Magħmul.
Allura dak ftit linji tal-programm tiegħi.
Allura biss erba 'linji jibqgħu.
>> So here I tiddeċiedi li decrement id-daqs.
U decrementing-daqs effettiv ifisser li jien jinsa
xi ħaġa fil hemm.
I iżda wkoll ikollhom jaġġornaw fejn quddiem tal-numri huma.
Allura biex tagħmel dan, għandi bżonn li tagħmel żewġ affarijiet.
I ewwel jeħtieġ li jiftakru dak in-numru hija fuq quddiem tal-kju,
minħabba I bżonn li jirritornaw li ħaġa.
So I ma tridx aċċidentalment tinsa dwar dan u mbagħad jissostitwixxu dan.
Jien biss se tiftakar fi int.
>> U issa, nixtieq li taġġorna q.front li jiġu q.front +1.
Hekk jekk dan kien l-ewwel persuna fil- linja, issa, I trid tagħmel plus 1
punt fuq il-persuna li jmiss fil-linja.
Imma I jkollhom biex jimmaniġġaw dak trembil.
U jekk il-kapaċità hi kostanti globali, li għaddej biex jippermettu nagħmel ċert
kif I punt li l-ħafna aħħar persuna line, l-operazzjoni modulo se jġib
me lura għal żero fil- quddiem tal-kju.
U li mankijiet-trembil hawn.
U mbagħad I tipproċedi biex jirritorna n.
>> Issa, strettament, I ma jkollha tiddikjara n.
I ma kellhomx biex grab u jaħżnu temporanjament, għaliex il-valur huwa
għadha hemm.
So I tista 'biss tagħmel l-aritmetika dritt biex jirritorna l-eks kap
tal-kju.
Imma I biss ħassew li dan kien aktar ċar li attwalment grab l-int, poġġih
fil-n, u mbagħad jirritornaw li f'ġieħ iċ-ċarezza iżda
mhux strettament neċessarju.
PSST.
Huma qed kollha pronunċabbli my head.
>> ROB BOWDEN: Allura l-ewwel domanda hija l-problema siġra binarju.
Allura l-ewwel kwistjoni hija, aħna qed minħabba dawn in-numri.
U rridu li b'xi mod daħħal minnhom fil dawn in-nodi tali li huwa
siġra tfittxija binarja valida.
Allura l-unika ħaġa li tiftakar dwar siġar tat-tiftix binarju huwa li mhuwiex
biss li l-ħaġa ix-xellug huwa inqas u l-ħaġa li
id-dritt huwa akbar.
Jeħtieġ li jkun li s-siġra kollu biex ix-xellug huwa inqas, u l-siġra kollu
lejn il-lemin huwa akbar.
>> Mela jekk nressaq 34 hawn fil-quċċata, u mbagħad Nressaq 20 hawn, b'tali mod li validu hekk
ferm, għaliex 34 up here.
20 huwa għaddej ix-xellug.
Hekk li l-anqas.
Imma ma nistax mbagħad titqiegħed 59 hawn, għaliex għalkemm 59 dwar id-dritt ta '20,
huwa għadu fuq ix-xellug ta '34.
Allura ma din ir-restrizzjoni fil-moħħ, il- eħfef mod ta 'probabbilment isolvi din
problema hija biss tip ta 'dawn in-numri -
hekk 20, 34, 36, 52, 59, 106.
U mbagħad daħħal dawk mix-xellug għal-lemin.
>> So 20 tmur hawn.
34 tmur hawn.
36 tmur hawn.
52, 59, 106.
U inti tista 'wkoll dehret ma xi ħofor fil u t-twettiq,
oh, stenna, jien ma jkollhom numri biżżejjed biex timla dan hawn fuq.
So I bżonn reshift dak tiegħi nota rotta se tkun.
Iżda tinnota li fit-tliet finali, jekk taqra mix-xellug għal-lemin, huwa fl
tiżdied ordni.
>> Allura issa, irridu li tiddikjara dak il- Struct se tkun għall-
punti strateġiċi din is-siġra.
Allura dak li għandna bżonn fil-siġra binarju?
Allura aħna jkollhom valur ta 'tip int, hekk xi valur int.
I do not know dak li aħna imsejjaħ fil-soluzzjoni -
int n.
Għandna bżonn pointer lill-wild xellug u pointer lill-wild dritt.
Allura li għaddej biex teżamina bħal dan.
U inneħħu fatt tfittex qabel meta għamlet il-doppjament-linked
Jittieħed lista, hekk avviż -
Jien ser ikollhom biex tiskrollja l- mod lura għal problema 11.
>> Allura tinnota li tidher identika għall-dan, ħlief aħna biss jiġri li jsejħu dawn
ismijiet differenti.
Għad għandna integer valur u żewġ pointers.
Huwa biss li minflok ta 'trattament l- pointers dwar tipponta lejn il-ħaġa li jmiss
u l-ħaġa qabel, aħna qed trattament l-pointers għall-punt li tifel xellug
u tfal dritt.
OK.
Allura dak node Struct tagħna.
U issa, l-unika funzjoni għandna bżonn li jimplimentaw għal dan hija travers, li
irridu li jmorru fuq il-siġra, l-istampar il-valuri tas-siġra fil-ordni.
>> Allura tfittex hawn, aħna rridu li jistampaw out 20, 34, 36, 52, 59, u 106.
Kif nistgħu tlesti dan?
Allura huwa pjuttost simili.
Jekk inti raw fil-eżami passat il-problema li inti ridt li jistampa
l-siġra sħiħa ma virgoli fl bejn kollox, kien effettivament anke
eħfef minn dak.
Allura hawnhekk huwa s-soluzzjoni.
Dan kien b'mod sinifikanti aktar faċli jekk inti ma kien recursively.
I do not know jekk xi ħadd attentat biex tagħmel dan iteratively.
>> Iżda l-ewwel, għandna każ bażi tagħna.
X'jiġri jekk l-għerq huwa null?
Imbagħad aħna qed biss ser jirritornaw.
Aħna ma rridux li jistampaw xejn.
Else aħna qed tmur biex travers recursively isfel.
Stampa l-subtree xellug kollu.
Allura print kollox inqas mill-valur kurrenti tiegħi.
U allura jien ser jistampaw myself.
U allura jien ser recurse down tiegħi subtree dritt kollu, hekk kollox
akbar mill-valur tiegħi.
U dan se jistampaw kollox fl-ordni.
Mistoqsijiet dwar kif dan attwalment accomplishes dan?
>> UDJENZA: Għandi mistoqsija fuq il-[inaudible].
>> ROB BOWDEN: Allura mod wieħed joqrob kwalunkwe problema rikursivi huwa li jaħsbu biss
dwar dan simili trid taħseb dwar il-każijiet kantuniera.
Għalhekk tikkunsidra li rridu Stampa din il-siġra kollu.
Allura kollha aħna ser tiffoka fuq huwa dan node partikolari -
36.
Is-sejħiet rikursivi, aħna nippretendu dawk biss xogħol.
Allura hawn, din is-sejħa rikursivi li travers, aħna mingħajr ma jaħsbu
dwar dan, biss jaqsmu ix-xellug tlieta, jimmaġina li diġà prints 20
u 34 għalina.
U mbagħad meta aħna eventwalment recursively sejħa travers fuq il-
dritt, li se print korrett 52, 59, u 106 għalina.
>> Allura peress li dan jista 'jistampa 20, 34, u l-ieħor jistgħu jistampaw 52, ​​59, 108,
kollha għandna bżonn li tkun tista 'tagħmel huwa istampar ourself fin-nofs ta 'dak.
Allura jistampa kollox quddiemna.
Stampa ourself, hekk l-istampar node attwali 36, printf regolari, u mbagħad
print kollox wara us.
>> DAVID J. Malan: Dan huwa fejn recursion gets tassew sbieħ.
Huwa dan qabża aqwa ta 'fidi fejn inti tagħmel l-tiniest daqsxejn ta 'xogħol.
U mbagħad inti let xi ħadd inkella tagħmel l-bqija.
U li xi ħadd ieħor hija, ironikament, inti.
Allura għal punti brownie serji, jekk inti iscroll fuq il-mistoqsijiet -
>> ROB BOWDEN: Fuq id-domandi?
>> DAVID J. Malan: U jistabbilixxi ftit li in-numri, ħadd ma jaf fejn
dawn in-numri jiġu minn?
>> ROB BOWDEN: I jkollhom litteralment ebda idea.
>> DAVID J. Malan: Huma jidhru matul il-kwizz.
>> UDJENZA: Dawn huma l-istess numri?
>> DAVID J. Malan: Dawk in-numri.
A bajd tal-Għid ftit.
Għalhekk għal dawk minnkom jaraw online fuq dar, jekk inti tista 'tgħidilna via email
heads@CS50.net dak is-sinifikat ta 'dawn is-sitt numri rikorrenti huma
matul Quiz 1, aħna se doċċa inti b'attenzjoni aqwa fil-finali
lecture u ballun stress.
Nizza, sottili.
>> ROB Bowden: Kwalunkwe mistoqsijiet aħħar dwar xi ħaġa fuq l-kwizz?